<?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>193603</bug_id>
          
          <creation_ts>2019-01-18 18:23:13 -0800</creation_ts>
          <short_desc>[JSC] Invalidate old scope operations using global lexical binding epoch</short_desc>
          <delta_ts>2019-01-22 22:21:46 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1496137</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 18:23:13 -0800</bug_when>
    <thetext>[JSC] Invalidate old scope operations using global lexical binding epoch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496143</commentid>
    <comment_count>1</comment_count>
      <attachid>359573</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 18:49:15 -0800</bug_when>
    <thetext>Created attachment 359573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496144</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 18:51:12 -0800</bug_when>
    <thetext>Attachment 359573 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496146</commentid>
    <comment_count>3</comment_count>
      <attachid>359575</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 18:58:25 -0800</bug_when>
    <thetext>Created attachment 359575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496147</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 18:59:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/47380869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496148</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 19:00:28 -0800</bug_when>
    <thetext>Attachment 359575 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496149</commentid>
    <comment_count>6</comment_count>
      <attachid>359576</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 19:00:49 -0800</bug_when>
    <thetext>Created attachment 359576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496150</commentid>
    <comment_count>7</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 19:02:50 -0800</bug_when>
    <thetext>Attachment 359576 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496157</commentid>
    <comment_count>8</comment_count>
      <attachid>359578</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 19:13:37 -0800</bug_when>
    <thetext>Created attachment 359578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496158</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 19:16:14 -0800</bug_when>
    <thetext>Attachment 359578 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496159</commentid>
    <comment_count>10</comment_count>
      <attachid>359579</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 19:20:34 -0800</bug_when>
    <thetext>Created attachment 359579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496160</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 19:22:48 -0800</bug_when>
    <thetext>Attachment 359579 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496161</commentid>
    <comment_count>12</comment_count>
      <attachid>359580</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-18 19:25:26 -0800</bug_when>
    <thetext>Created attachment 359580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496163</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-18 19:28:09 -0800</bug_when>
    <thetext>Attachment 359580 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 24 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>1496278</commentid>
    <comment_count>14</comment_count>
      <attachid>359580</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-19 15:29:46 -0800</bug_when>
    <thetext>Comment on attachment 359580
Patch

Attachment 359580 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/10813221

New failing tests:
stress/scope-operation-cache-global-property-before-deleting.js.ftl-eager-no-cjit-b3o1
stress/let-lexical-binding-shadow-existing-global-property-ftl.js.ftl-eager-no-cjit-b3o1
stress/const-lexical-binding-shadow-existing-global-property-ftl.js.dfg-eager-no-cjit-validate
stress/const-lexical-binding-shadow-existing-global-property-ftl.js.no-llint
stress/scope-operation-cache-global-property-before-deleting.js.no-llint
stress/let-lexical-binding-shadow-existing-global-property-ftl.js.ftl-eager-no-cjit
stress/scope-operation-cache-global-property-before-deleting.js.ftl-eager-no-cjit
stress/const-lexical-binding-shadow-existing-global-property-ftl.js.ftl-eager-no-cjit-b3o1
stress/let-lexical-binding-shadow-existing-global-property-ftl.js.dfg-eager-no-cjit-validate
stress/let-lexical-binding-shadow-existing-global-property-ftl.js.no-llint
stress/scope-operation-cache-global-property-before-deleting.js.dfg-eager-no-cjit-validate
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496283</commentid>
    <comment_count>15</comment_count>
      <attachid>359625</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-19 16:31:35 -0800</bug_when>
    <thetext>Created attachment 359625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496284</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-19 16:33:39 -0800</bug_when>
    <thetext>Attachment 359625 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 25 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>1496419</commentid>
    <comment_count>17</comment_count>
      <attachid>359625</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 15:18:43 -0800</bug_when>
    <thetext>Comment on attachment 359625
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGDesiredGlobalProperties.cpp:52
&gt; +        property.globalObject()-&gt;ensureReferencedPropertyWatchpointSet(uid).fireAll(vm, &quot;Lexical binding shadows the existing global properties&quot;);

&quot;shadows the existing global properties&quot; =&gt; &quot;shadows an existing global property&quot;

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1065
&gt; +    // but this is not done yet since we do not execute this op again. Just emitting ForceOSRExit to update the metadata when it reaches to this code.

&quot;but this is not done yet since we do not execute this op again&quot; =&gt; something like... &quot;but we still have stale metadata here since we have not yet executed this bytecode operation since the invalidation&quot;

&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:815
&gt;          JSScope** constantScopeSlot = metadata.m_constantScope.slot();
&gt;          emitVarInjectionCheck(needsVarInjectionChecks(resolveType));
&gt;          loadPtr(constantScopeSlot, regT0);

I don&apos;t think this code makes sense any more. I think it just works if you call emitCode(resolveType) since that will do the epoch check.

&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1072
&gt; +    case GlobalPropertyWithVarInjectionChecks: // Global Lexical Binding Epoch is changed. Update op_resolve_scope.

Don&apos;t think this comment adds much.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1889
&gt; +WatchpointSet* JSGlobalObject::getReferencedPropertyWatchpointSetConcurrently(UniquedStringImpl* uid)

Why call this &quot;concurrently&quot; if that&apos;s the only option? Seems like we just call it with the old name.

&gt; Source/JavaScriptCore/runtime/Options.h:511
&gt; +    v(unsigned, thresholdForGlobalLexicalBindingEpoch, UINT_MAX, Normal, &quot;Threshold for global lexical binding epoch. If the epoch reaches to this value, CodeBlock metadata for scope operations will be revised globally. It needs to be greater than 1.&quot;) \

Let&apos;s add a RELEASE_ASSERT in Options.cpp or just bump it to UINT_MAX if this is zero. I think I prefer the latter solution

&gt; Source/JavaScriptCore/runtime/ProgramExecutable.cpp:210
&gt; +            // So that we do not create WatchpointSet here. DFG will create if necessary on the main thread.

And it will only create it if the global lexical environment binding doesn&apos;t exist, which is why this code works.

^ I&apos;d add something like that to this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496432</commentid>
    <comment_count>18</comment_count>
      <attachid>359625</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 16:08:51 -0800</bug_when>
    <thetext>Comment on attachment 359625
Patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGDesiredGlobalProperties.cpp:52
&gt;&gt; +        property.globalObject()-&gt;ensureReferencedPropertyWatchpointSet(uid).fireAll(vm, &quot;Lexical binding shadows the existing global properties&quot;);
&gt; 
&gt; &quot;shadows the existing global properties&quot; =&gt; &quot;shadows an existing global property&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1065
&gt;&gt; +    // but this is not done yet since we do not execute this op again. Just emitting ForceOSRExit to update the metadata when it reaches to this code.
&gt; 
&gt; &quot;but this is not done yet since we do not execute this op again&quot; =&gt; something like... &quot;but we still have stale metadata here since we have not yet executed this bytecode operation since the invalidation&quot;

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess.cpp:815
&gt;&gt;          loadPtr(constantScopeSlot, regT0);
&gt; 
&gt; I don&apos;t think this code makes sense any more. I think it just works if you call emitCode(resolveType) since that will do the epoch check.

OK, use emitCode to construct this code path. We still need to switch the code based on metadata.resolveType since op_resolve_scope+GlobalProperty would be updated to op_resolve_scope+GlobalLexicalVar.

&gt;&gt; Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:1072
&gt;&gt; +    case GlobalPropertyWithVarInjectionChecks: // Global Lexical Binding Epoch is changed. Update op_resolve_scope.
&gt; 
&gt; Don&apos;t think this comment adds much.

Dropped.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1889
&gt;&gt; +WatchpointSet* JSGlobalObject::getReferencedPropertyWatchpointSetConcurrently(UniquedStringImpl* uid)
&gt; 
&gt; Why call this &quot;concurrently&quot; if that&apos;s the only option? Seems like we just call it with the old name.

OK, fixed.

&gt;&gt; Source/JavaScriptCore/runtime/Options.h:511
&gt;&gt; +    v(unsigned, thresholdForGlobalLexicalBindingEpoch, UINT_MAX, Normal, &quot;Threshold for global lexical binding epoch. If the epoch reaches to this value, CodeBlock metadata for scope operations will be revised globally. It needs to be greater than 1.&quot;) \
&gt; 
&gt; Let&apos;s add a RELEASE_ASSERT in Options.cpp or just bump it to UINT_MAX if this is zero. I think I prefer the latter solution

OK, added correctOptions() function which corrects option values if it is out of range.

&gt;&gt; Source/JavaScriptCore/runtime/ProgramExecutable.cpp:210
&gt;&gt; +            // So that we do not create WatchpointSet here. DFG will create if necessary on the main thread.
&gt; 
&gt; And it will only create it if the global lexical environment binding doesn&apos;t exist, which is why this code works.
&gt; 
&gt; ^ I&apos;d add something like that to this comment.

Added it. DFG will create not-invalidated watchpoint set only if the global lexical environment binding doesn&apos;t exist. (to avoid compile-and-fail loop, DFG also creates invalidated watchpoint set if it attempted to watch the GlobalProperty that is shadowed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496433</commentid>
    <comment_count>19</comment_count>
      <attachid>359657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 16:09:58 -0800</bug_when>
    <thetext>Created attachment 359657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496434</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-20 16:11:40 -0800</bug_when>
    <thetext>Attachment 359657 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 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>1496444</commentid>
    <comment_count>21</comment_count>
      <attachid>359657</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 16:45:54 -0800</bug_when>
    <thetext>Comment on attachment 359657
Patch

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

&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:818
&gt;          JSScope** constantScopeSlot = metadata.m_constantScope.slot();

might as well do the same thing here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496445</commentid>
    <comment_count>22</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-01-20 16:46:09 -0800</bug_when>
    <thetext>r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496446</commentid>
    <comment_count>23</comment_count>
      <attachid>359657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 16:46:59 -0800</bug_when>
    <thetext>Comment on attachment 359657
Patch

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

&gt;&gt; Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp:818
&gt;&gt;          JSScope** constantScopeSlot = metadata.m_constantScope.slot();
&gt; 
&gt; might as well do the same thing here

Oops, right. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496447</commentid>
    <comment_count>24</comment_count>
      <attachid>359661</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 16:50:50 -0800</bug_when>
    <thetext>Created attachment 359661
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496448</commentid>
    <comment_count>25</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-20 16:53:32 -0800</bug_when>
    <thetext>Attachment 359661 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 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>1496449</commentid>
    <comment_count>26</comment_count>
      <attachid>359661</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-20 16:55:03 -0800</bug_when>
    <thetext>Comment on attachment 359661
Patch for landing

Rejecting attachment 359661 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 359661, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in JSTests/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/10823482</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496450</commentid>
    <comment_count>27</comment_count>
      <attachid>359662</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-20 17:01:08 -0800</bug_when>
    <thetext>Created attachment 359662
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496451</commentid>
    <comment_count>28</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-20 17:02:56 -0800</bug_when>
    <thetext>Attachment 359662 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 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>1496458</commentid>
    <comment_count>29</comment_count>
      <attachid>359662</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-20 17:39:12 -0800</bug_when>
    <thetext>Comment on attachment 359662
Patch for landing

Clearing flags on attachment: 359662

Committed r240220: &lt;https://trac.webkit.org/changeset/240220&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496699</commentid>
    <comment_count>30</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 21:28:41 -0800</bug_when>
    <thetext>Committed r240248: &lt;https://trac.webkit.org/changeset/240248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496704</commentid>
    <comment_count>31</comment_count>
      <attachid>359657</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 22:36:22 -0800</bug_when>
    <thetext>Comment on attachment 359657
Patch

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

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:2163
&gt; +        loadi OpResolveScope::Metadata::m_globalLexicalBindingEpoch[globalObject], scratch

This was wrong. It should be `t5` for metadata table here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496705</commentid>
    <comment_count>32</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 22:42:26 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496706</commentid>
    <comment_count>33</comment_count>
      <attachid>359720</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 22:42:27 -0800</bug_when>
    <thetext>Created attachment 359720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496707</commentid>
    <comment_count>34</comment_count>
      <attachid>359720</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-21 22:44:07 -0800</bug_when>
    <thetext>Comment on attachment 359720
Patch

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

Annotated the changes from the previous one.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:629
&gt; +                    metadata.m_globalLexicalBindingEpoch = m_globalObject-&gt;globalLexicalBindingEpoch();

Set the current epoch, since JSScope::abstractResolve already ensured this is correct.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:2105
&gt; +        loadi OpResolveScope::Metadata::m_globalLexicalBindingEpoch[t5], scratch

Ditto.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:2163
&gt; +        loadi OpResolveScope::Metadata::m_globalLexicalBindingEpoch[t5], scratch

This `t5` was previously `globalObject`, but it was wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496708</commentid>
    <comment_count>35</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-21 22:44:23 -0800</bug_when>
    <thetext>Attachment 359720 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:142:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.h:204:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/runtime/Options.cpp:382:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 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>1496714</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-22 00:16:52 -0800</bug_when>
    <thetext>                                           ToT                     Patched
SunSpider:
   3d-cube                            4.6991+-0.0880     ?      4.7298+-0.0750        ?
   3d-morph                           5.3163+-0.0393            5.2699+-0.0391
   3d-raytrace                        4.9223+-0.0675     ?      4.9307+-0.0567        ?
   access-binary-trees                2.0875+-0.0325     ?      2.1027+-0.0332        ?
   access-fannkuch                    5.1875+-0.1310            5.0740+-0.1209          might be 1.0224x faster
   access-nbody                       2.8640+-0.0419     ?      2.8751+-0.0358        ?
   access-nsieve                      2.6054+-0.1617            2.5496+-0.1412          might be 1.0219x faster
   bitops-3bit-bits-in-byte           1.4706+-0.0284     ?      1.4765+-0.0285        ?
   bitops-bits-in-byte                2.7107+-0.0381            2.6668+-0.0329          might be 1.0165x faster
   bitops-bitwise-and                 2.3497+-0.0372     ?      2.3927+-0.0334        ? might be 1.0183x slower
   bitops-nsieve-bits                 3.6324+-0.0260            3.6200+-0.0297
   controlflow-recursive              2.3468+-0.0371     ?      2.3478+-0.0337        ?
   crypto-aes                         4.1436+-0.0492            4.1068+-0.0515
   crypto-md5                         2.7557+-0.0348     ?      2.7578+-0.0387        ?
   crypto-sha1                        3.0644+-0.1375            2.9451+-0.0418          might be 1.0405x faster
   date-format-tofte                  7.0749+-0.0944            7.0373+-0.0595
   date-format-xparb                  5.7545+-0.0401     ?      5.8003+-0.0873        ?
   math-cordic                        3.0190+-0.0345            3.0072+-0.0342
   math-partial-sums                  4.2980+-0.0398     ?      4.3634+-0.0377        ? might be 1.0152x slower
   math-spectral-norm                 2.0313+-0.0342     ?      2.0389+-0.0312        ?
   regexp-dna                         7.5687+-0.0900     ?      7.6086+-0.1278        ?
   string-base64                      4.2967+-0.0419     ?      4.3243+-0.0527        ?
   string-fasta                       6.2167+-0.0621     ?      6.2472+-0.1422        ?
   string-tagcloud                    8.1186+-0.0805            8.1171+-0.0849
   string-unpack-code                16.7391+-0.2687           16.6323+-0.2328
   string-validate-input              4.9366+-0.0780     ?      4.9824+-0.0758        ?

   &lt;arithmetic&gt;                       4.6235+-0.0195            4.6155+-0.0139          might be 1.0017x faster

                                           ToT                     Patched
Octane:
   encrypt                           0.14941+-0.00059    ?     0.14975+-0.00064       ?
   decrypt                           2.95386+-0.01838    ?     2.96075+-0.01959       ?
   deltablue                x2       0.12588+-0.00362    ?     0.12637+-0.00306       ?
   earley                            0.21826+-0.00137          0.21666+-0.00097
   boyer                             3.58181+-0.02607          3.56802+-0.02056
   navier-stokes            x2       4.22469+-0.06589          4.18124+-0.02478         might be 1.0104x faster
   raytrace                 x2       0.73508+-0.00516          0.73258+-0.00245
   richards                 x2       0.08183+-0.00103          0.08158+-0.00079
   splay                    x2       0.22986+-0.00233          0.22856+-0.00127
   regexp                   x2      12.87470+-0.11864         12.73747+-0.10437         might be 1.0108x faster
   pdfjs                    x2      26.95156+-0.24909    ?    27.16141+-0.23212       ?
   mandreel                 x2      33.07604+-0.13692    ?    33.43279+-0.34674       ? might be 1.0108x slower
   gbemu                    x2      23.06035+-0.16657    ?    23.27870+-0.26941       ?
   closure                           0.40390+-0.00103    ?     0.40686+-0.00300       ?
   jquery                            5.28154+-0.07343          5.24535+-0.02954
   box2d                    x2       6.67657+-0.03759          6.65511+-0.03653
   zlib                     x2     269.18828+-5.31932        266.83823+-1.74256
   typescript               x2     486.49224+-4.01904    ?   492.18654+-9.78357       ? might be 1.0117x slower
   splay-latency                     1.78478+-0.02078    ?     1.79133+-0.02318       ?

   &lt;geometric&gt;                       3.97328+-0.01269          3.97296+-0.01141         might be 1.0001x faster

                                           ToT                     Patched
Geomean of preferred means:
   &lt;scaled-result&gt;                   13.5534+-0.0363           13.5414+-0.0329          might be 1.0009x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496797</commentid>
    <comment_count>37</comment_count>
      <attachid>359720</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-22 09:48:14 -0800</bug_when>
    <thetext>Comment on attachment 359720
Patch

Clearing flags on attachment: 359720

Committed r240254: &lt;https://trac.webkit.org/changeset/240254&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496798</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-22 09:48:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497207</commentid>
    <comment_count>39</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-22 21:12:31 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497208</commentid>
    <comment_count>40</comment_count>
      <attachid>359846</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-22 21:12:32 -0800</bug_when>
    <thetext>Created attachment 359846
Follow-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497241</commentid>
    <comment_count>41</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-22 22:18:28 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #40)
&gt; Created attachment 359846 [details]
&gt; Follow-up

Discussed with Saam offline, and we agree that this is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497242</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-01-22 22:21:46 -0800</bug_when>
    <thetext>Committed r240329: &lt;https://trac.webkit.org/changeset/240329&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359573</attachid>
            <date>2019-01-18 18:49:15 -0800</date>
            <delta_ts>2019-01-18 18:58:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118184914.patch</filename>
            <type>text/plain</type>
            <size>53095</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5kMmFkZDE1MTFlYWMxYTE1
MTUzZGIzNjYwNmRlYWMxYjc5ZmQ3NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZlbiBpZiB0aGUgZ2xvYmFsIGxleGljYWwg
YmluZGluZyBkb2VzIG5vdCBzaGFkb3cgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhdCB0aGF0IHRpbWUs
IHdlIG5lZWQgdG8gY2xlYXIgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbgorICAgICAgICBzY29w
ZSByZWxhdGVkIG9wZXJhdGlvbnMgc2luY2Ugd2UgbWF5IGhhdmUgYSBnbG9iYWwgcHJvcGVydHkg
cHJldmlvdXNseS4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLAorCisgICAgICAgICAg
ICBmb28gPSAwOworICAgICAgICAgICAgZnVuY3Rpb24gZ2V0KCkgeyByZXR1cm4gZm9vOyB9Cisg
ICAgICAgICAgICBwcmludChnZXQoKSk7IC8vIDAKKyAgICAgICAgICAgIHByaW50KGdldCgpKTsg
Ly8gMAorICAgICAgICAgICAgZGVsZXRlIGdsb2JhbFRoaXMuZm9vOworICAgICAgICAgICAgJC5l
dmFsU2NyaXB0KGBjb25zdCBmb28gPSA0MjtgKTsKKyAgICAgICAgICAgIHByaW50KGdldCgpKTsg
Ly8gU2hvdWxkIGJlIDQyLCBidXQgaXQgcmV0dXJucyAwIGlmIHRoZSBjYWNoZWQgaW5mb3JtYXRp
b24gaW4gZ2V0KCkgaXMgbm90IGNsZWFyZWQuCisKKyAgICAgICAgVG8gaW52YWxpZGF0ZSB0aGUg
Y2FjaGUgZWFzaWx5LCB3ZSBpbnRyb2R1Y2UgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4g
SXQgaXMgYnVtcGVkIGV2ZXJ5IHRpbWUgd2UgaW50cm9kdWNlIGEgbmV3IGxleGljYWwgYmluZGlu
ZworICAgICAgICBpbnRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBzaW5jZSB0aGF0IG5h
bWUgY291bGQgc2hhZG93IHRoZSBnbG9iYWwgcHJvcGVydHkgbmFtZSBwcmV2aW91c2x5LiBJbiBv
cF9yZXNvbHZlX3Njb3BlLCB3ZSBmaXJzdCBjaGVjaworICAgICAgICB0aGUgZXBvY2ggc3RvcmVk
IGluIHRoZSBtZXRhZGF0YSwgYW5kIGdvIHRvIHNsb3cgcGF0aCBpZiBpdCBpcyBub3QgZXF1YWwg
dG8gdGhlIGN1cnJlbnQgZXBvY2guIE91ciBzbG93IHBhdGggY29kZSBjb252ZXJ0IHRoZSBzY29w
ZQorICAgICAgICBvcGVyYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIG9uZSBldmVuIGlmIHRoZSBy
ZXNvbHZlIHR5cGUgaXMgbm90IFVucmVzb2x2ZWRQcm9wZXJ0eSB0eXBlLiBBZnRlciB1cGRhdGlu
ZyB0aGUgcmVzb2x2ZSB0eXBlIG9mIHRoZSBieXRlY29kZSwKKyAgICAgICAgd2UgdXBkYXRlIHRo
ZSBjYWNoZWQgZXBvY2ggdG8gdGhlIGN1cnJlbnQgb25lLCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhl
IGNhY2hlZCBpbmZvcm1hdGlvbiBhcyBsb25nIGFzIHdlIHN0YXkgaW4gdGhlIHNhbWUgZXBvY2gu
CisKKyAgICAgICAgSW4gb3BfZ2V0X2Zyb21fc2NvcGUgYW5kIG9wX3B1dF90b19zY29wZSwgd2Ug
ZG8gbm90IHVzZSB0aGlzIGVwb2NoIHNpbmNlIFN0cnVjdHVyZSBjaGVjayBjYW4gZG8gdGhlIHNh
bWUgdGhpbmcgaW5zdGVhZC4gSWYgb3BfcmVzb2x2ZV90eXBlCisgICAgICAgIGlzIHVwZGF0ZWQg
YnkgdGhlIGVwb2NoLCBhbmQgaWYgaXQgc3RhcnRzIHJldHVybmluZyBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCBpbnN0ZWFkIEpTR2xvYmFsT2JqZWN0LCBvYnZpb3VzbHkgdGhlIHN0cnVjdHVy
ZSBjaGVjayBmYWlscy4KKyAgICAgICAgQW5kIGluIHRoZSBzbG93IHBhdGgsIHdlIHVwZGF0ZSBv
cF9nZXRfZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlIGFwcHJvcHJpYXRlbHkuCisKKyAg
ICAgICAgU28sIHRoZSBtZXRhZGF0YSBmb3Igc2NvcGUgcmVsYXRlZCBieXRlY29kZXMgYXJlIGV2
ZW50dWFsbHkgdXBkYXRlZCB0byB0aGUgYXBwcm9wcmlhdGUgb25lLiBJbiBERkcgYW5kIEZUTCwg
d2UgdXNlIHRoZSB3YXRjaHBvaW50IGJhc2VkIGFwcHJvYWNoLgorICAgICAgICBJbiBERkcgYW5k
IEZUTCwgd2UgY29uY3VycmVudGx5IGF0dGVtcHQgdG8gZ2V0IHRoZSB3YXRjaHBvaW50IGZvciB0
aGUgbGV4aWNhbCBiaW5kaW5nIGFuZCBsb29rIGludG8gaXQgYnkgdXNpbmcgYGlzU3RpbGxWYWxp
ZCgpYCB0byBhdm9pZAorICAgICAgICBpbmZpbml0ZSBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisK
KyAgICAgICAgV2hlbiB0aGUgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaCBvdmVyZmxvd3Mg
d2UgaXRlcmF0ZSBhbGwgdGhlIGxpdmUgQ29kZUJsb2NrIGFuZCB1cGRhdGUgdGhlIG9wX3Jlc29s
dmVfc2NvcGUncyBlcG9jaC4gRXZlbiBpZiB0aGUgc2hhZG93aW5nCisgICAgICAgIGhhcHBlbnMs
IGl0IGlzIE9LIGlmIHdlIGJ1bXAgdGhlIGVwb2NoLCBzaW5jZSBvcF9yZXNvbHZlX3Njb3BlIHdp
bGwgcmV0dXJuIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgb2YgSlNHbG9iYWxP
YmplY3QsIGFuZCBmb2xsb3dpbmcKKyAgICAgICAgc3RydWN0dXJlIGNoZWNrIGluIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgZmFpbC4gV2UgZG8gbm90IG5lZWQgdG8gdXBk
YXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBvcF9wdXRfdG9fc2NvcGUgYmVjYXVzZSBvZiB0aGUg
c2FtZQorICAgICAgICByZWFzb24uCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6RGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZCk6
CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6d2F0Y2hHbG9iYWxQ
cm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR1Bs
YW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmlzU3RpbGxWYWxpZE9uTWFpblRocmVh
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93
UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNs
b3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YnVtcEds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldENvbmN1cnJlbnRseSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5n
U2hhZG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldFJl
ZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKToKKyAgICAgICAg
KiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQ
cm9wZXJ0aWVzKToKKwogMjAxOS0wMS0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQXVkaXQgYnl0ZWNvZGUgZmllbGRzIGFuZCBlbnN1cmUgdGhhdCBMTEludCBp
bnN0cnVjdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGVtIGFyZSBhcHByb3ByaWF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGJiNWYxMjYx
NjAwZTVmZGIxOTRlYWU5OGMwOGI1NDY0N2Q3ZDNiN2QuLjExNWJkM2IwNjVkNjUwMzE3NzNjYzFm
MzEyNmQzM2ZkNTU3NTQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtODMzLDggKzgzMywxMSBAQAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgcmVzb2x2ZVR5cGU6IFJlc29sdmVUeXBlLCAjIG9mZnNldCA0Ci0gICAg
ICAgIGxvY2FsU2NvcGVEZXB0aDogdW5zaWduZWQsICMgb2Zmc2V0IDUKLSAgICAgICAgXzogeyAj
IG9mZnNldCA2CisgICAgICAgIF8wOiB7ICMgb2Zmc2V0IDUKKyAgICAgICAgICAgIGxvY2FsU2Nv
cGVEZXB0aDogdW5zaWduZWQsCisgICAgICAgICAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
OiB1bnNpZ25lZCwKKyAgICAgICAgfSwKKyAgICAgICAgXzE6IHsgIyBvZmZzZXQgNgogICAgICAg
ICAgICAgICMgd3JpdHRlbiBkdXJpbmcgbGlua2luZwogICAgICAgICAgICAgIGxleGljYWxFbnZp
cm9ubWVudDogV3JpdGVCYXJyaWVyQmFzZVtKU0NlbGxdLCAjIGxleGljYWxFbnZpcm9ubWVudCAm
JiB0eXBlID09IE1vZHVsZVZhcgogICAgICAgICAgICAgIHN5bWJvbFRhYmxlOiBXcml0ZUJhcnJp
ZXJCYXNlW1N5bWJvbFRhYmxlXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSAhPSBNb2R1
bGVWYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggMGM2MzQ1Njg2ZmExZTUzZDUzYzQ5MzM4NTk3ZTdjMWUzNTU1ZTIxYy4uMmIyOGJmOGQxZDk3
NzcwYWE0NjU0NDZjNWVhNDM4MDk5NWVjMmYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTI2NjgsMTggKzI2NjgsMjUgQEAgdm9pZCBDb2Rl
QmxvY2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogfQogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogCi12b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0m
IHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCit2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4
aWNhbEJpbmRpbmdVcGRhdGUoVk0mIHZtKQogewogICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1v
ZHVsZSBjb2RlIGRvIG5vdCBxdWVyeSB0byBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC4gU28g
dGhpcyBjYXNlIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgaXQgaXMgZml4ZWQuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwogICAgIGlmIChzY3Jp
cHRNb2RlKCkgPT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCiAgICAgICAgIHJldHVybjsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7
CisgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGUoKSk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwogCisgICAgYXV0byBpc1NoYWRvd2VkID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKSB7
CisgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7
CisgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpOworICAg
IH07CisKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25z
KSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7
CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKQEAgLTI2ODksNzIgKzI2OTYsMTMgQEAgdm9p
ZCBDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3Qg
SWRlbnRpZmllclNldCYgc2V0KQogICAgICAgICAgICAgUmVzb2x2ZVR5cGUgb3JpZ2luYWxSZXNv
bHZlVHlwZSA9IG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGU7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
YWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBw
b2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3Vs
ZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhl
IHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAg
ICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX3Jlc29sdmVUeXBlLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmlnaW5hbFJl
c29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9sb2NhbFNjb3Bl
RGVwdGggPSAwOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW9wLmxleGljYWxFbnZpcm9u
bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Nj
b3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUsIHRo
aXMpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY29uc3RhbnRTY29wZSA9PSBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2Nv
bnN0YW50U2NvcGUuc2V0KHZtLCB0aGlzLCBjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2NrSW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9w
X3Jlc29sdmVfc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIsIG1ldGFk
YXRhLm1fcmVzb2x2ZVR5cGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9z
Y29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdl
dEZyb21TY29wZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBl
ID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAo
b3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zh
cik7Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBz
dGFydCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0
IHNob3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0
J3MgdGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAg
ICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhv
cmlnaW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIDogR2xvYmFsTGV4aWNhbFZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0
ID0gb3Aud2F0Y2hwb2ludFNldDsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVy
YW5kID0gb3Aub3BlcmFuZDsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJs
b2NrSW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwg
b3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRv
d2VkKGlkZW50LmltcGwoKSkpCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxP
YmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Nj
b3BlPigpOwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0
aGlzKTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5h
bFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0g
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAg
ICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBv
aW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxk
IGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUg
cmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAg
ICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2RlLm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsIGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgaWRlbnQsIFB1dCwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIg
fHwgb3AudHlwZSA9PSBEeW5hbWljKTsKLQotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IG9wLnR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
d2F0Y2hwb2ludFNldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8g
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFy
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gb3Au
d2F0Y2hwb2ludFNldDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCByZXNvbHZlVHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5k
ID0gb3Aub3BlcmFuZDsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2Nr
SW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9wX3B1dF90b19zY29wZSBmcm9tICIsIG9yaWdp
bmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBl
KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXgg
YTY5MjZmZGY5N2ViNGU2YzZmY2QwZWIyNzZmODA1MzE5YmEwYmZlNC4uOGEyNjU0YzVlNDgyZGJm
YjUxYjg3M2U4MjBkYzdmNWY2M2Q2YTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaApAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAotICAgIHZvaWQgbm90aWZ5TGV4
aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mLCBjb25zdCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9p
ZCBub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZShWTSYpOwogCiAgICAgdm9pZCBkdW1wU291cmNl
KCk7CiAgICAgdm9pZCBkdW1wU291cmNlKFByaW50U3RyZWFtJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDRlMThkZjcwM2QzZDIx
NjY4NmY1ODU5ODI0ZjJhYzZjYjk3ZmUwMGUuLjlkMTYxNGRlYTMwNDJiN2UyYmMwNjA4ZjFlNzhk
NGM2NTE5MjEyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC02MTY3LDkgKzYxNjcsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNDcKICAgICAgICAgICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9k
ZTo6TW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFBy
b3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcykgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV92YXJdOwogICAg
ICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmdsb2JhbFByb3BlcnRpZXMoKS5hZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlm
aWVyUmVtYXBbYnl0ZWNvZGUubV92YXJdOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3Jh
cGgud2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNjI4MSw4ICs2MjgyLDEwIEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBj
YXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1vZHVsZSBjb2RlIGRvIG5vdCBxdWVyeSB0byBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC4gU28gdGhpcyBjYXNlIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgaXQgaXMgZml4ZWQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwotICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6
TW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbFByb3BlcnRpZXMoKS5h
ZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51
bWJlcikpOworICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKIApAQCAtNjQ1Niw4ICs2
NDU5LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1vZHVsZSBjb2RlIGRvIG5v
dCBxdWVyeSB0byBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC4gU28gdGhpcyBjYXNlIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgaXQgaXMgZml4ZWQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwotICAgICAgICAgICAgICAg
IGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFy
c2VyU2NyaXB0TW9kZTo6TW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2Jh
bFByb3BlcnRpZXMoKS5hZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9k
dWxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXM7CiAgICAgICAgICAgICAgICAgaWYgKHVp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2Jh
bFByb3BlcnRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xv
YmFsUHJvcGVydGllcy5jcHAKaW5kZXggOGY3YjljZWQ5OWI4Zjc5MDkwYTcyMGU5ZTRlYmZlZGFk
NmU5YWYwMy4uOTQxMTQxNjVlMzk5MTZiZTJjNTNiMGNlZjBlNGExNWQ0ZmMxNDEyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJv
cGVydGllcy5jcHAKQEAgLTM2LDE2ICszNiwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLWJvb2wgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9u
TWFpblRocmVhZChEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQorYm9vbCBEZXNpcmVk
R2xvYmFsUHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKFZNJiB2bSwgRGVzaXJl
ZElkZW50aWZpZXJzJiBpZGVudGlmaWVycykKIHsKKyAgICBib29sIGlzU3RpbGxWYWxpZCA9IHRy
dWU7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwcm9wZXJ0eSA6IG1fc2V0KSB7CiAgICAgICAgIGF1
dG8qIHVpZCA9IGlkZW50aWZpZXJzLmF0KHByb3BlcnR5LmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0g
ICAgICAgIGlmIChhdXRvKiB3YXRjaHBvaW50U2V0ID0gcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCkt
PmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQodWlkKSkgewotICAgICAgICAgICAg
aWYgKCF3YXRjaHBvaW50U2V0LT5pc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBwcm9wZXJ0
eS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgeworICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKS0+c3lt
Ym9sVGFibGUoKTsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLT5jb250YWlucyhs
b2NrZXIsIHVpZCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAg
ICAgLy8gU2V0IGludmFsaWRhdGVkIFdhdGNocG9pbnRTZXQgaGVyZSB0byBwcmV2ZW50IGZ1cnRo
ZXIgY29tcGlsZS1hbmQtZmFpbCBsb29wLgorICAgICAgICBwcm9wZXJ0eS5nbG9iYWxPYmplY3Qo
KS0+ZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldCh1aWQpLmZpcmVBbGwodm0s
ICJMZXhpY2FsIGJpbmRpbmcgc2hhZG93cyB0aGUgZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMi
KTsKKyAgICAgICAgaXNTdGlsbFZhbGlkID0gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBpc1N0aWxsVmFsaWQ7CiB9CiAKIHZvaWQgRGVzaXJlZEdsb2JhbFByb3Bl
cnRpZXM6OnJlYWxseUFkZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVzaXJlZElkZW50aWZpZXJz
JiBpZGVudGlmaWVycywgQ29tbW9uRGF0YSYgY29tbW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oCmluZGV4IGUzNDBh
NTk2NTFlNTEwMjA0NGUzOGE0NmI5Y2RmOWY1NGRhYzA5MjguLjY5YmQzNmRhOWJmYmNjZTE2ZWI1
MjE1ZWY5MDE5ZjRkMTcxNDVmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMgewogICAgICAgICBtX3NldC5hZGQoV1RGTW92ZShw
cm9wZXJ0eSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERl
c2lyZWRJZGVudGlmaWVycyYpOworICAgIGJvb2wgaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKFZN
JiwgRGVzaXJlZElkZW50aWZpZXJzJik7CiAKICAgICB2b2lkIHJlYWxseUFkZChDb2RlQmxvY2sq
LCBEZXNpcmVkSWRlbnRpZmllcnMmLCBDb21tb25EYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggODNjYzFkNGI2NGViNGRiOTE2MmE5MDhjYmRjY2M3ZTdl
ODU1YzA4MC4uMmE5ZGVkMWM5Zjc3MTEyMzZjN2FlYzU4NjBjMTJhNTk0MGEzNzlkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTEwNTgsNiArMTA1OCwxOSBAQCBi
b29sIEdyYXBoOjppc1NhZmVUb0xvYWQoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKICAgICByZXR1cm4gbV9zYWZlVG9Mb2FkLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGJh
c2UsIG9mZnNldCkpOwogfQogCitib29sIEdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCit7Cisg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CisgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgV2F0Y2hwb2ludFNldCwgYW5kIGl0IGlz
IGFscmVhZHkgaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoYXQgdGhpcyBzY29wZSBvcGVyYXRpb24g
bXVzdCBiZSBjaGFuZ2VkIGZyb20gR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhciwK
KyAgICAvLyBidXQgdGhpcyBpcyBub3QgZG9uZSB5ZXQgc2luY2Ugd2UgZG8gbm90IGV4ZWN1dGUg
dGhpcyBvcCBhZ2Fpbi4gSnVzdCBlbWl0dGluZyBGb3JjZU9TUkV4aXQgdG8gdXBkYXRlIHRoZSBt
ZXRhZGF0YSB3aGVuIGl0IHJlYWNoZXMgdG8gdGhpcyBjb2RlLgorICAgIGlmIChhdXRvKiB3YXRj
aHBvaW50ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0
Q29uY3VycmVudGx5KHVpZCkpIHsKKyAgICAgICAgaWYgKCF3YXRjaHBvaW50LT5pc1N0aWxsVmFs
aWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZ2xvYmFsUHJvcGVy
dGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyTnVtYmVyKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEZ1bGxCeXRlY29kZUxpdmVu
ZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgSGFz
aE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+Pjo6
aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVMaXZlbmVzcy5maW5kKGNvZGVCbG9jayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZWUyZTI2N2UwY2U1ZDZjMjQzOGVkYjMz
NTNlYzUzZWZiMGMxN2ZlOC4uMTUxZjU3MzZjN2FjNzA3M2YxZGVkZWU4ZGY2ZWIzM2UwMDhlZjRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzkzLDYgKzc5Myw4IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBib29sIHdhdGNo
Q29uZGl0aW9uKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAgICAgYm9vbCB3YXRj
aENvbmRpdGlvbnMoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmKTsKIAorICAgIGJv
b2wgd2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIpOworCiAgICAgLy8gQ2hlY2tzIGlmIGl0J3Mga25vd24gdGhhdCBsb2FkaW5nIGZy
b20gdGhlIGdpdmVuIG9iamVjdCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGZpbmUuIFRoaXMgaXMK
ICAgICAvLyBjb21wdXRlZCBieSB0cmFja2luZyB3aGljaCBjb25kaXRpb25zIHdlIHRyYWNrIHdp
dGggd2F0Y2hDb25kaXRpb24oKS4KICAgICBib29sIGlzU2FmZVRvTG9hZChKU09iamVjdCogYmFz
ZSwgUHJvcGVydHlPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5k
ZXggZTc3NzIzZjg4NGQ5ZjM1NjBkOGJmYTJjZjQxNGFlMDBmZGViMWJmNS4uYzVlODk5YmExNTZj
Nzc0M2I2NmMzZDYzYmEyZDk1YTgzZjIzMTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBQbGFuOjpub3RpZnlSZWFkeSgpCiAK
IGJvb2wgUGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gbV9n
bG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZChtX2lkZW50aWZpZXJzKTsK
KyAgICByZXR1cm4gbV9nbG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZCgq
bV92bSwgbV9pZGVudGlmaWVycyk7CiB9CiAKIENvbXBpbGF0aW9uUmVzdWx0IFBsYW46OmZpbmFs
aXplV2l0aG91dE5vdGlmeWluZ0NhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOTJmMzdlYzkwOTc3NTdlYTcwM2EwZTc1
NTVhYzIyN2U1N2EwZWRlNy4uMTY4MmVlMzgwMDMwMWZlNTgzN2ViNzE0YzY5ZjI0ZmFlZDkyYmI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTgwMyw2ICs4MDMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTU2NvcGUqKiBj
b25zdGFudFNjb3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7CiAgICAg
ICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7CisgICAg
ICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7
CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Mo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKCkpLCByZWdUMSkpOwogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDMzZDZhZTQ2MDg2NDM3NmEwNTQw
YjY5ZDE1NjRiZTVlZmFjMTM2OWYuLmQwMzkzNjI0YjAwMjNhYTgwODVjZjE5MjBmZDFkZDE5Njhk
MDM2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtODA2LDYgKzgwNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgLy8gU2luY2UgdGhlc2UgR2xvYmFsUHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgdG8gR2xvYmFs
TGV4aWNhbFZhciwgd2Ugc2hvdWxkIGxvYWQgdGhlIHZhbHVlIGZyb20gbWV0YWRhdGEuCiAgICAg
ICAgIEpTU2NvcGUqKiBjb25zdGFudFNjb3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29w
ZS5zbG90KCk7CiAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICBsb2FkMzIoJm1ldGFkYXRhLm1fZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCwgcmVnVDEpOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
YWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVnVDEpKTsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKICAgICAgICAgbG9h
ZFB0cihjb25zdGFudFNjb3BlU2xvdCwgcmVnVDApOwogICAgICAgICBlbWl0U3RvcmUoZHN0LCBy
ZWdUMSwgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2ZjdkZWFiYzcyNTFhODU3OWY3ZTk5
NWFkMjA0NzdiNzZhMzAwMzBmLi5jNDQzYjQ4YjZjYTU3ZWM4ZjBhOWNkMjYzMWFkNjFlNjg3MjI0
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA5MiwxMSArMjA5MiwyMCBAQCBlbmQKIAogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBnZXRD
b25zdGFudFNjb3BlKCkKLSAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjpt
X2NvbnN0YW50U2NvcGVbdDVdLCAgdDAKKyAgICBtYWNybyBnZXRDb25zdGFudFNjb3BlKGRzdCkK
KyAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2NvcGVb
dDVdLCBkc3QKKyAgICBlbmQKKworICAgIG1hY3JvIHJldHVybkNvbnN0YW50U2NvcGUoKQorICAg
ICAgICBnZXRDb25zdGFudFNjb3BlKHQwKQogICAgICAgICByZXR1cm4oQ2VsbFRhZywgdDApCiAg
ICAgZW5kCiAKKyAgICBtYWNybyBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soc2xvd1Bh
dGgsIGdsb2JhbE9iamVjdCwgc2NyYXRjaCkKKyAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6
Ok1ldGFkYXRhOjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2Ny
YXRjaAorICAgICAgICBiaW5lcSBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gsIHNsb3dQYXRoCisgICAgZW5kCisKICAgICBt
YWNybyByZXNvbHZlU2NvcGUoKQogICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRh
dGE6Om1fbG9jYWxTY29wZURlcHRoW3Q1XSwgdDIKICAgICAgICAgZ2V0KG1fc2NvcGUsIHQwKQpA
QCAtMjExNywxNSArMjEyNiwxNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAjckdsb2Jh
bFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKLSAg
ICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4o
Q2VsbFRhZywgdDApCiAKIC5yR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5y
R2xvYmFsTGV4aWNhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0
YW50U2NvcGUoKQogCiAuckdsb2JhbExleGljYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbExl
eGljYWxWYXIsIC5yQ2xvc3VyZVZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVy
bkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVW
YXIsIC5yTW9kdWxlVmFyCkBAIC0yMTMzLDIyICsyMTQ0LDI0IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoCiAKIC5yTW9kdWxlVmFyOgogICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisg
ICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlv
bkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFu
dFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMs
IHQwLCB0MikKKyAgICByZXR1cm4oQ2VsbFRhZywgdDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhcklu
amVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckR5bmFtaWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggMTQ4YzgzOTUwN2Y1ZWI3ZTliZjU2MTc5MWJiYjBjMmU3NGI5NTI0ZS4uZTMyYjYw
MTU5ZWI5ZTJkNGFjZDFmMWViZjdhYTg2MjIwZDYyNTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIxNTAs
MTEgKzIxNTAsMjAgQEAgZW5kCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUs
IE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKICAgICBtZXRhZGF0YSh0NSwgdDApCiAKLSAgICBtYWNybyBnZXRDb25zdGFudFNjb3Bl
KCkKLSAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2Nv
cGVbdDVdLCAgdDAKKyAgICBtYWNybyBnZXRDb25zdGFudFNjb3BlKGRzdCkKKyAgICAgICAgbG9h
ZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2NvcGVbdDVdLCBkc3QKKyAg
ICBlbmQKKworICAgIG1hY3JvIHJldHVybkNvbnN0YW50U2NvcGUoKQorICAgICAgICBnZXRDb25z
dGFudFNjb3BlKHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKKyAgICBtYWNybyBn
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soc2xvd1BhdGgsIGdsb2JhbE9iamVjdCwgc2Ny
YXRjaCkKKyAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaAorICAgICAgICBiaW5lcSBK
U0dsb2JhbE9iamVjdDo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0s
IHNjcmF0Y2gsIHNsb3dQYXRoCisgICAgZW5kCisKICAgICBtYWNybyByZXNvbHZlU2NvcGUoKQog
ICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fbG9jYWxTY29wZURlcHRo
W3Q1XSwgdDIKICAgICAgICAgZ2V0KG1fc2NvcGUsIHQwKQpAQCAtMjE3NCwxNSArMjE4MywxNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAjckdsb2JhbFByb3BlcnR5OgogICAgIGJpbmVx
IHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkK
KyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hD
aGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyOgog
ICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5yR2xvYmFsTGV4aWNhbFZhcgotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExleGljYWxW
YXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXIsIC5yQ2xvc3VyZVZhcgotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVW
YXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCkBAIC0yMTkwLDIyICsy
MjAxLDI0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZl
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKIC5yTW9kdWxlVmFyOgogICAgIGJp
bmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
Ci0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKHQwKQog
CiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMsIHQyKQotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29u
c3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzLCAuckR5bmFtaWMKQEAgLTIyNTYsNyArMjI2OSw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjCiAKICNnR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFBy
b3BlcnR5LCAuZ0dsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9t
U2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRG
cm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVz
IGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFu
Z2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIGdldFByb3BlcnR5KCkKIAogLmdH
bG9iYWxWYXI6CkBAIC0yMjc3LDcgKzIyOTAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Ywog
CiAuZ0dsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuZ0dsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3Bl
LCBnZXQsIC5nRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNj
b3BlLCBnZXQsIC5nRHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhp
Y2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwg
c2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBnZXRQcm9wZXJ0eSgpCiAKIC5nR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTIzNjQsNyArMjM3Nyw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtCiAKIC5wR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5LCAucEdsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRU
b1Njb3BlLCBnZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0
VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMg
bGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5n
ZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHkoKQogICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVlKQogICAgIGRp
c3BhdGNoKCkKQEAgLTIzOTEsNyArMjQwNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0
X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtCiAK
IC5wR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBn
ZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwg
Z2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3Bl
IHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHkoKQogICAgIHdyaXRlQmFycmll
ck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVlKQogICAgIGRpc3BhdGNoKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IGI4ODA0NThlYzg3N2U1MTg2MDc0YzA5ZDEyNzU4MzZkNzQ3YzMxNDguLmFhYTk0Mzg2
NzQ0YWY2ZTY5NjY1OWEwNmY2MDE0OTdmOGU1NTI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTA2NywyOSArMTA2Nywz
MSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSkKICAgICAvLyBNb2R1
bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxpdmUgaW4gREZH
LgogICAgIEFTU0VSVChyZXNvbHZlVHlwZSAhPSBNb2R1bGVWYXIpOwogCi0gICAgaWYgKHJlc29s
dmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVk
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlw
ZSkgeworICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2ggaXMg
Y2hhbmdlZC4gVXBkYXRlIG9wX3Jlc29sdmVfc2NvcGUuCisgICAgY2FzZSBVbnJlc29sdmVkUHJv
cGVydHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OiB7CiAgICAgICAgIGlmIChyZXNvbHZlZFNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gZ2xv
YmFsT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3Bl
cnR5OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKLQor
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MgOiBHbG9iYWxQcm9wZXJ0eTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbE9i
amVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlZFNjb3BlLT5p
c0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwotICAgICAgICAg
ICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Jl
c29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAg
ICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJFVFVSTihyZXNvbHZlZFNjb3Bl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggMTMwYTBjODJhMmY3ZWY2ZWQ4NzNlMDYyOTU3OWMzYTMzNjc3YWNhYy4uN2VlYWY3MDRi
NDMzNTQzOTYwOTdiOWViNDgyMTE3N2ViNWExNDk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTEyNCwyOCArMTI0LDM5IEBAIGlu
bGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAvLyBDb3ZlcnMgaW1wbGlj
aXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1
dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAgIFJlc29sdmVU
eXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0g
ICAgaWYgKHJlc29sdmVUeXBlICE9IEdsb2JhbFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyAKLSAgICAgICAgJiYgcmVzb2x2ZVR5
cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIHJldHVybjsKIAotICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNv
bHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2
ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3BlLT5p
c0dsb2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDog
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotICAgICAgICAgICAgcmVzb2x2
ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29s
dmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CisgICAgICAgICAg
ICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1l
Y2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8g
PSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNv
bHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
fQorICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcg
RXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJv
cGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5
cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFy
IDogR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBS
ZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFs
TGV4aWNhbFZhcjsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9s
VGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5Lmlz
TnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnku
d2F0Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVB
dChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykg
ewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKQEAgLTE3NiwyMiArMTg3
LDM2IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVz
b2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKIAotICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5y
ZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVz
b2x2ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVz
b2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3Bl
LT5pc0dsb2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZl
VHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5
IDogR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVz
b2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9w
ZXJ0eTsKICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93
IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAg
IGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAv
LyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRf
ZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAg
ICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAg
ICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9
IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5ID8gR2xvYmFsTGV4aWNhbFZhciA6IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgp
LT5nZXQoaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkp
OwogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2so
KS0+bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAg
bWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGds
b2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5z
bG90KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQ292
ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBm
aXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxl
IHRpbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYmI3MGNmNTZiNDkzNDdhYmVhZjIzYzVhMjYzOTI1NWE5NzcyYTBmZC4uMDdm
NGM3ZDg3NzM0M2YyNzIyYTcyZTA5Yzk5MTRmZjc5M2Y3YmEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTg1MiwxOSArMTg1
MiwxOSBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIEpTR2xvYmFsT2JqZWN0OjppbnRsUGx1cmFs
UnVsZXNBdmFpbGFibGVMb2NhbGVzKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotdm9p
ZCBKU0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBj
b25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaChWTSYgdm0pCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZvciAoY29uc3QgYXV0
byYga2V5IDogc2V0KQotICAgICAgICBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KGtleS5nZXQoKSkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBl
eGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOwotI2VuZGlmCi0gICAgdm0uaGVhcC5jb2RlQmxv
Y2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKLSAgICAgICAgaWYg
KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyh2bSwgc2V0
KTsKLSAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB9KTsKKyAgICBpZiAo
KyttX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBv
dmVyZmxvd3Mgb3IgYWN0dWFsIHNoYWRvd2luZyBoYXBwZW5zLCB3ZSBzaG91bGQgcmV3cml0ZSBh
bGwgdGhlIENvZGVCbG9jayB0byBhZGp1c3QgdG8gdGhlIG5ld2x5IHN0YXJ0ZWQgZ2VuZXJhdGlv
bi4KKyAgICAgICAgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMTsKKyAgICAgICAgdm0u
aGVhcC5jb2RlQmxvY2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsK
KyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSh2bSk7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OworICAgICAgICB9KTsKKyAgICB9CiAgICAgc2NvcGUucmVsZWFzZSgpOwogfQogCkBAIC0xODg5
LDEzICsxODg5LDE1IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0ludGVyYWN0aXZlRGVidWdn
ZXIoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1XYXRjaHBvaW50U2V0KiBKU0ds
b2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorV2F0Y2hwb2ludFNldCogSlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5j
ZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFBy
b3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFs
UHJvcGVydHlXYXRjaHBvaW50U2V0cy5nZXQodWlkKTsKIH0KIAogV2F0Y2hwb2ludFNldCYgSlNH
bG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVm
ZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9y
ZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5lbnN1cmUodWlkLCBbXSB7CiAg
ICAgICAgIHJldHVybiBXYXRjaHBvaW50U2V0OjpjcmVhdGUoSXNXYXRjaGVkKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAzYTEzODJkNTc5NzljYzI5YjE2ZmI2OGU5M2Y0ZmI3ZDk3
ZTZlMzlkLi43MTNkMmRkM2U5NGU5NjU3ZWYwYWM3MTNiNjY2ZDgzMWVmYmMwZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQ4Niwx
MCArNDg2LDEyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIFJlZmVyZW5jZWRH
bG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzID0gSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBSZWY8V2F0Y2hwb2ludFNldD4sIElkZW50aWZpZXJSZXBIYXNoPjsKICAgICBSZWZl
cmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyBtX3JlZmVyZW5jZWRHbG9iYWxQcm9w
ZXJ0eVdhdGNocG9pbnRTZXRzOworICAgIENvbmN1cnJlbnRKU0xvY2sgbV9yZWZlcmVuY2VkR2xv
YmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2s7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9ldmFs
RW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFibGVkIHsgdHJ1ZSB9
OworICAgIHVuc2lnbmVkIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCB7IDEgfTsKICAgICBT
dHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1i
bHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7
CkBAIC01MjIsNyArNTI0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgV2F0Y2hwb2ludFNldCogZ2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNl
dChVbmlxdWVkU3RyaW5nSW1wbCopOworICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQ
cm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICAg
ICBXYXRjaHBvaW50U2V0JiBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVu
aXF1ZWRTdHJpbmdJbXBsKik7CiAjZW5kaWYKIApAQCAtNzUxLDcgKzc1MywxMCBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdT
aGFkb3dpbmcoVk0mLCBjb25zdCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9pZCBidW1wR2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaChWTSYpOworICAgIHVuc2lnbmVkIGdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2goKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCk7IH0KKyAgICB1bnNpZ25lZCogYWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCgpIHsgcmV0dXJuICZtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0KIAogICAg
IHZvaWQgc2V0Q29uc29sZUNsaWVudChDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KSB7IG1f
Y29uc29sZUNsaWVudCA9IGNvbnNvbGVDbGllbnQ7IH0KICAgICBDb25zb2xlQ2xpZW50KiBjb25z
b2xlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggZTY3ZDkzOTNlMGMyNjhmODkxN2M5ODIy
OWMxYWYzNDhhZTIxZjM2MS4uMzNkMTUyZDVjNTI2NmQ2MDNhNmI2NWQzYmRhYmIxMGQ2NDMyY2Rh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNTA4LDYgKzUw
OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFs
c2U7CiAgICAgdihib29sLCB0cmFjZUxMSW50RXhlY3V0aW9uLCBmYWxzZSwgQ29uZmlndXJhYmxl
LCBudWxscHRyKSBcCiAgICAgdihib29sLCB0cmFjZUxMSW50U2xvd1BhdGgsIGZhbHNlLCBDb25m
aWd1cmFibGUsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHRyYWNlQmFzZWxpbmVKSVRFeGVjdXRp
b24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRG
b3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNob2xk
IGZvciBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0
byB0aGlzIHZhbHVlLCBDb2RlQmxvY2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMgd2ls
bCBiZSByZXZpc2VkIGdsb2JhbGx5LiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcAppbmRleCAxYzIxOTY3ZmMxZDgyMTgyZjczMzVhMGQ3ZjdhYmE5OWVjZGM1YjJlLi5mMzk0
MmE1ZDI0MThlNTBmOTRhNmY0NWE3MTA5ZTIwNmRkNWQ2MzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC0xMDcsOSAr
MTA3LDkgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJv
cGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICBKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJp
YWJsZURlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT52YXJpYWJsZURlY2xhcmF0aW9u
cygpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxEZWNsYXJhdGlvbnMg
PSB1bmxpbmtlZENvZGVCbG9jay0+bGV4aWNhbERlY2xhcmF0aW9ucygpOwotICAgIElkZW50aWZp
ZXJTZXQgc2hhZG93ZWRQcm9wZXJ0aWVzOwogICAgIC8vIFRoZSBFUzYgc3BlYyBzYXlzIHRoYXQg
bm8gdmFycy9nbG9iYWwgcHJvcGVydGllcy9sZXQvY29uc3QgY2FuIGJlIGR1cGxpY2F0ZWQgaW4g
dGhlIGdsb2JhbCBzY29wZS4KICAgICAvLyBUaGlzIGNhcnJpZWQgb3V0IHNlY3Rpb24gMTUuMS44
IG9mIHRoZSBFUzYgc3BlYzogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC9pbmRleC5odG1sI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KKyAg
ICBib29sIGxleGljYWxCaW5kaW5nU2hhZG93c0V4aXN0aW5nR2xvYmFsUHJvcGVydHkgPSBmYWxz
ZTsKICAgICB7CiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwogICAgICAgICAvLyBDaGVjayBmb3IgaW50ZXJzZWN0aW9uIG9mICJ2YXIiIGFuZCAi
bGV0Ii8iY29uc3QiLyJjbGFzcyIKQEAgLTEzMSwxMSArMTMxLDkgQEAgSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFt
ZSogY2FsbEYKICAgICAgICAgICAgICAgICAvLyBMZXhpY2FsIGJpbmRpbmdzIGNhbiBzaGFkb3cg
Z2xvYmFsIHByb3BlcnRpZXMgaWYgdGhlIGdpdmVuIHByb3BlcnR5J3MgYXR0cmlidXRlIGlzIGNv
bmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24gc3RlcCA1LWMsIGBoYXNS
ZXN0cmljdGVkR2xvYmFsYCBiZWNvbWVzIGZhbHNlCiAgICAgICAgICAgICAgICAgLy8gSG93ZXZl
ciB3ZSBtYXkgZW1pdCBHbG9iYWxQcm9wZXJ0eSBsb29rIHVwIGluIGJ5dGVjb2RlcyBhbHJlYWR5
IGFuZCBpdCBtYXkgY2FjaGUgdGhlIHZhbHVlIGZvciB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAg
ICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52YWxpZCwgd2UgaXRlcmF0ZSBhbGwgdGhlIENvZGVC
bG9ja3MgYW5kIHJld3JpdGUgdGhlIGluc3RydWN0aW9uIHRvIGNvbnZlcnQgR2xvYmFsUHJvcGVy
dHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAgICAgICAgICAgICAgICAvLyAxLiBJbiBMTEludCwg
d2UgYWx3YXlzIGNoZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUuIFNvIHJld3JpdHRlbiBpbnN0
cnVjdGlvbiBqdXN0IHdvcmtzLgotICAgICAgICAgICAgICAgIC8vIDIuIEluIEJhc2VsaW5lIEpJ
VCwgd2UgY2hlY2sgbWV0YWRhdGEncyByZXNvbHZlVHlwZSBpbiBHbG9iYWxQcm9wZXJ0eSBjYXNl
IHNvIHRoYXQgd2UgY2FuIG5vdGljZSBvbmNlIGl0IGlzIGNoYW5nZWQuCisgICAgICAgICAgICAg
ICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLAorICAgICAgICAgICAgICAgIC8vIDEuIEluIExMSW50
IGFuZCBCYXNlbGluZSwgd2UgYnVtcCB0aGUgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaCBh
bmQgaXQgd29ya3MuCiAgICAgICAgICAgICAgICAgLy8gMy4gSW4gREZHIGFuZCBGVEwsIHdlIHdh
dGNoIHRoZSB3YXRjaHBvaW50IGFuZCBqZXR0aXNvbiBvbmNlIGl0IGlzIGZpcmVkLgotICAgICAg
ICAgICAgICAgIHNoYWRvd2VkUHJvcGVydGllcy5hZGQoZW50cnkua2V5LmdldCgpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlMb29rVXBT
dGF0dXM6Ok5vdEZvdW5kOgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjA2LDEyICsyMDQs
MTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KG9mZnNldEZvckFzc2VydCA9PSBvZmZzZXQpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYg
KCFzaGFkb3dlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+
bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcodm0sIFdURk1vdmUoc2hhZG93ZWRQcm9wZXJ0
aWVzKSk7Ci0gICAgICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBpZiAo
bGV4aWNhbERlY2xhcmF0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IGxleGljYWxEZWNsYXJhdGlvbnMpIHsKKyAgICAgICAgICAgIC8vIElmIFdhdGNocG9pbnRTZXQg
ZXhpc3RzLCBqdXN0IGZpcmUgaXQuIFNpbmNlIERGRyBXYXRjaHBvaW50U2V0IGFkZGl0aW9uIGlz
IGFsc28gZG9uZSBvbiB0aGUgbWFpbiB0aHJlYWQsIHdlIGNhbiBzeW5jIHRoZW0uCisgICAgICAg
ICAgICAvLyBTbyB0aGF0IHdlIGRvIG5vdCBjcmVhdGUgV2F0Y2hwb2ludFNldCBoZXJlLiBERkcg
d2lsbCBjcmVhdGUgaWYgbmVjZXNzYXJ5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAg
IGlmIChhdXRvKiB3YXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJv
cGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVudGx5KGVudHJ5LmtleS5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgd2F0Y2hwb2ludFNldC0+ZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFk
b3dzIHRoZSBleGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICB9CisgICAgICAg
IGdsb2JhbE9iamVjdC0+YnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2godm0pOwogICAgIH0K
LQogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc3N2E4NTNiZmU3MDlmOTQyYWM2NGY4YjQxNzE3
ZTBhOTRhYjY3YjAuLjdmNTYxNzA2NWMwYzUwYTZiNjI0MGVjNTY4MDEyNjM2NGNkMzliNTMgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTktMDEtMTggIFl1c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xv
d3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlNDXSBJbnZhbGlkYXRlIG9sZCBzY29wZSBvcGVyYXRp
b25zIHVzaW5nIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzYwMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1j
YWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRlbGV0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9w
ZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdldDEpOgorICAgICAgICAoZ2V0Mik6CisgICAg
ICAgIChnZXQxSWYpOgorICAgICAgICAoZ2V0MklmKToKKyAgICAgICAgKiBzdHJlc3Mvc2NvcGUt
b3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTktMDEtMTcg
IFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nT2JqZWN0
VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9yIHRoZSBvcmlnaW5hbCBzdHJp
bmcgb2JqZWN0IHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3Bl
cmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxl
dGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYTlmZTBkNTFjNTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0
MTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNh
Y2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
VGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7
U3RyaW5nKGVycm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24g
YmFyKCkKK3sKKyAgICBmb28gPSA0MjsKK30KKworYmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9i
YWxUaGlzLmZvbzsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhy
b3coKCkgPT4gYmFyKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9u
bHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRp
b24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxZGNkZDA2ZDIwODliZDlmMDk1YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFs
LXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVs
dCgiLS10aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
K25vSW5saW5lKHNob3VsZEJlKTsKKworZm9vMSA9IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdl
dDEoKSB7CisgICAgcmV0dXJuIGZvbzE7Cit9Citub0lubGluZShnZXQxKTsKKworZnVuY3Rpb24g
Z2V0MigpIHsKKyAgICByZXR1cm4gZm9vMjsKK30KK25vSW5saW5lKGdldDIpOworCitmdW5jdGlv
biBnZXQxSWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJu
IGZvbzE7CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24g
Z2V0MklmKGNvbmRpdGlvbikgeworICAgIGlmIChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBm
b28yOworICAgIHJldHVybiAtMTsKK30KK25vSW5saW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQxKCksIDEpOworICAgIHNob3Vs
ZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShn
ZXQyKCksIDIpOworICAgIHNob3VsZEJlKGdldDFJZih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUo
Z2V0MklmKHRydWUpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAg
c2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZv
bzEgPSA0MTtgKTsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAg
c2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hv
dWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAg
IHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0xKTsKK30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwg
NDEpOworc2hvdWxkQmUoZ2V0MklmKHRydWUpLCA0Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFp
bHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3Bl
cnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdm
NmNjYjNhYTQwOTc2MTQ2YzY1NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Nj
b3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpA
QCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhy
b3cpOworCitmdW5jdGlvbiBmb28oKSB7CisgICAgYmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyh0aGlzKTsKK2ZvbygpOworJC5ldmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycp
Oworc2hvdWxkVGhyb3coKCkgPT4gZm9vKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359575</attachid>
            <date>2019-01-18 18:58:25 -0800</date>
            <delta_ts>2019-01-18 19:00:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118185825.patch</filename>
            <type>text/plain</type>
            <size>52938</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5kMmFkZDE1MTFlYWMxYTE1
MTUzZGIzNjYwNmRlYWMxYjc5ZmQ3NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXZlbiBpZiB0aGUgZ2xvYmFsIGxleGljYWwg
YmluZGluZyBkb2VzIG5vdCBzaGFkb3cgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhdCB0aGF0IHRpbWUs
IHdlIG5lZWQgdG8gY2xlYXIgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbgorICAgICAgICBzY29w
ZSByZWxhdGVkIG9wZXJhdGlvbnMgc2luY2Ugd2UgbWF5IGhhdmUgYSBnbG9iYWwgcHJvcGVydHkg
cHJldmlvdXNseS4gQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlLAorCisgICAgICAgICAg
ICBmb28gPSAwOworICAgICAgICAgICAgZnVuY3Rpb24gZ2V0KCkgeyByZXR1cm4gZm9vOyB9Cisg
ICAgICAgICAgICBwcmludChnZXQoKSk7IC8vIDAKKyAgICAgICAgICAgIHByaW50KGdldCgpKTsg
Ly8gMAorICAgICAgICAgICAgZGVsZXRlIGdsb2JhbFRoaXMuZm9vOworICAgICAgICAgICAgJC5l
dmFsU2NyaXB0KGBjb25zdCBmb28gPSA0MjtgKTsKKyAgICAgICAgICAgIHByaW50KGdldCgpKTsg
Ly8gU2hvdWxkIGJlIDQyLCBidXQgaXQgcmV0dXJucyAwIGlmIHRoZSBjYWNoZWQgaW5mb3JtYXRp
b24gaW4gZ2V0KCkgaXMgbm90IGNsZWFyZWQuCisKKyAgICAgICAgVG8gaW52YWxpZGF0ZSB0aGUg
Y2FjaGUgZWFzaWx5LCB3ZSBpbnRyb2R1Y2UgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4g
SXQgaXMgYnVtcGVkIGV2ZXJ5IHRpbWUgd2UgaW50cm9kdWNlIGEgbmV3IGxleGljYWwgYmluZGlu
ZworICAgICAgICBpbnRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBzaW5jZSB0aGF0IG5h
bWUgY291bGQgc2hhZG93IHRoZSBnbG9iYWwgcHJvcGVydHkgbmFtZSBwcmV2aW91c2x5LiBJbiBv
cF9yZXNvbHZlX3Njb3BlLCB3ZSBmaXJzdCBjaGVjaworICAgICAgICB0aGUgZXBvY2ggc3RvcmVk
IGluIHRoZSBtZXRhZGF0YSwgYW5kIGdvIHRvIHNsb3cgcGF0aCBpZiBpdCBpcyBub3QgZXF1YWwg
dG8gdGhlIGN1cnJlbnQgZXBvY2guIE91ciBzbG93IHBhdGggY29kZSBjb252ZXJ0IHRoZSBzY29w
ZQorICAgICAgICBvcGVyYXRpb24gdG8gdGhlIGFwcHJvcHJpYXRlIG9uZSBldmVuIGlmIHRoZSBy
ZXNvbHZlIHR5cGUgaXMgbm90IFVucmVzb2x2ZWRQcm9wZXJ0eSB0eXBlLiBBZnRlciB1cGRhdGlu
ZyB0aGUgcmVzb2x2ZSB0eXBlIG9mIHRoZSBieXRlY29kZSwKKyAgICAgICAgd2UgdXBkYXRlIHRo
ZSBjYWNoZWQgZXBvY2ggdG8gdGhlIGN1cnJlbnQgb25lLCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhl
IGNhY2hlZCBpbmZvcm1hdGlvbiBhcyBsb25nIGFzIHdlIHN0YXkgaW4gdGhlIHNhbWUgZXBvY2gu
CisKKyAgICAgICAgSW4gb3BfZ2V0X2Zyb21fc2NvcGUgYW5kIG9wX3B1dF90b19zY29wZSwgd2Ug
ZG8gbm90IHVzZSB0aGlzIGVwb2NoIHNpbmNlIFN0cnVjdHVyZSBjaGVjayBjYW4gZG8gdGhlIHNh
bWUgdGhpbmcgaW5zdGVhZC4gSWYgb3BfcmVzb2x2ZV90eXBlCisgICAgICAgIGlzIHVwZGF0ZWQg
YnkgdGhlIGVwb2NoLCBhbmQgaWYgaXQgc3RhcnRzIHJldHVybmluZyBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCBpbnN0ZWFkIEpTR2xvYmFsT2JqZWN0LCBvYnZpb3VzbHkgdGhlIHN0cnVjdHVy
ZSBjaGVjayBmYWlscy4KKyAgICAgICAgQW5kIGluIHRoZSBzbG93IHBhdGgsIHdlIHVwZGF0ZSBv
cF9nZXRfZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlIGFwcHJvcHJpYXRlbHkuCisKKyAg
ICAgICAgU28sIHRoZSBtZXRhZGF0YSBmb3Igc2NvcGUgcmVsYXRlZCBieXRlY29kZXMgYXJlIGV2
ZW50dWFsbHkgdXBkYXRlZCB0byB0aGUgYXBwcm9wcmlhdGUgb25lLiBJbiBERkcgYW5kIEZUTCwg
d2UgdXNlIHRoZSB3YXRjaHBvaW50IGJhc2VkIGFwcHJvYWNoLgorICAgICAgICBJbiBERkcgYW5k
IEZUTCwgd2UgY29uY3VycmVudGx5IGF0dGVtcHQgdG8gZ2V0IHRoZSB3YXRjaHBvaW50IGZvciB0
aGUgbGV4aWNhbCBiaW5kaW5nIGFuZCBsb29rIGludG8gaXQgYnkgdXNpbmcgYGlzU3RpbGxWYWxp
ZCgpYCB0byBhdm9pZAorICAgICAgICBpbmZpbml0ZSBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisK
KyAgICAgICAgV2hlbiB0aGUgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaCBvdmVyZmxvd3Mg
d2UgaXRlcmF0ZSBhbGwgdGhlIGxpdmUgQ29kZUJsb2NrIGFuZCB1cGRhdGUgdGhlIG9wX3Jlc29s
dmVfc2NvcGUncyBlcG9jaC4gRXZlbiBpZiB0aGUgc2hhZG93aW5nCisgICAgICAgIGhhcHBlbnMs
IGl0IGlzIE9LIGlmIHdlIGJ1bXAgdGhlIGVwb2NoLCBzaW5jZSBvcF9yZXNvbHZlX3Njb3BlIHdp
bGwgcmV0dXJuIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgb2YgSlNHbG9iYWxP
YmplY3QsIGFuZCBmb2xsb3dpbmcKKyAgICAgICAgc3RydWN0dXJlIGNoZWNrIGluIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgZmFpbC4gV2UgZG8gbm90IG5lZWQgdG8gdXBk
YXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBvcF9wdXRfdG9fc2NvcGUgYmVjYXVzZSBvZiB0aGUg
c2FtZQorICAgICAgICByZWFzb24uCisKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmI6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6RGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZCk6
CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmg6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6d2F0Y2hHbG9iYWxQ
cm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR1Bs
YW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmlzU3RpbGxWYWxpZE9uTWFpblRocmVh
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUp
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc206CisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93
UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkNvbW1vblNs
b3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YnVtcEds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldENvbmN1cnJlbnRseSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5n
U2hhZG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdldFJl
ZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjphZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKToKKyAgICAgICAg
KiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQ
cm9wZXJ0aWVzKToKKwogMjAxOS0wMS0xNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgQXVkaXQgYnl0ZWNvZGUgZmllbGRzIGFuZCBlbnN1cmUgdGhhdCBMTEludCBp
bnN0cnVjdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGVtIGFyZSBhcHByb3ByaWF0ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IGJiNWYxMjYx
NjAwZTVmZGIxOTRlYWU5OGMwOGI1NDY0N2Q3ZDNiN2QuLjExNWJkM2IwNjVkNjUwMzE3NzNjYzFm
MzEyNmQzM2ZkNTU3NTQyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtODMzLDggKzgzMywxMSBAQAogICAgIH0sCiAgICAgbWV0YWRh
dGE6IHsKICAgICAgICAgcmVzb2x2ZVR5cGU6IFJlc29sdmVUeXBlLCAjIG9mZnNldCA0Ci0gICAg
ICAgIGxvY2FsU2NvcGVEZXB0aDogdW5zaWduZWQsICMgb2Zmc2V0IDUKLSAgICAgICAgXzogeyAj
IG9mZnNldCA2CisgICAgICAgIF8wOiB7ICMgb2Zmc2V0IDUKKyAgICAgICAgICAgIGxvY2FsU2Nv
cGVEZXB0aDogdW5zaWduZWQsCisgICAgICAgICAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
OiB1bnNpZ25lZCwKKyAgICAgICAgfSwKKyAgICAgICAgXzE6IHsgIyBvZmZzZXQgNgogICAgICAg
ICAgICAgICMgd3JpdHRlbiBkdXJpbmcgbGlua2luZwogICAgICAgICAgICAgIGxleGljYWxFbnZp
cm9ubWVudDogV3JpdGVCYXJyaWVyQmFzZVtKU0NlbGxdLCAjIGxleGljYWxFbnZpcm9ubWVudCAm
JiB0eXBlID09IE1vZHVsZVZhcgogICAgICAgICAgICAgIHN5bWJvbFRhYmxlOiBXcml0ZUJhcnJp
ZXJCYXNlW1N5bWJvbFRhYmxlXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSAhPSBNb2R1
bGVWYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggMGM2MzQ1Njg2ZmExZTUzZDUzYzQ5MzM4NTk3ZTdjMWUzNTU1ZTIxYy4uMmIyOGJmOGQxZDk3
NzcwYWE0NjU0NDZjNWVhNDM4MDk5NWVjMmYzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTI2NjgsMTggKzI2NjgsMjUgQEAgdm9pZCBDb2Rl
QmxvY2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKQogfQogI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogCi12b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0m
IHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCit2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4
aWNhbEJpbmRpbmdVcGRhdGUoVk0mIHZtKQogewogICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1v
ZHVsZSBjb2RlIGRvIG5vdCBxdWVyeSB0byBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC4gU28g
dGhpcyBjYXNlIHNob3VsZCBiZSByZW1vdmVkIG9uY2UgaXQgaXMgZml4ZWQuCiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwogICAgIGlmIChzY3Jp
cHRNb2RlKCkgPT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCiAgICAgICAgIHJldHVybjsK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3QuZ2V0KCk7
CisgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGUoKSk7CisgICAgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlID0gZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpOwogCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwogCisgICAgYXV0byBpc1NoYWRvd2VkID0gWyZdIChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKSB7
CisgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9sVGFibGUtPm1fbG9jayk7
CisgICAgICAgIHJldHVybiBzeW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpOworICAg
IH07CisKICAgICBmb3IgKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uIDogKm1faW5zdHJ1Y3Rpb25z
KSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7
CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKQEAgLTI2ODksNzIgKzI2OTYsMTMgQEAgdm9p
ZCBDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3Qg
SWRlbnRpZmllclNldCYgc2V0KQogICAgICAgICAgICAgUmVzb2x2ZVR5cGUgb3JpZ2luYWxSZXNv
bHZlVHlwZSA9IG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGU7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
YWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewogICAgICAgICAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0g
ICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBw
b2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3Vs
ZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhl
IHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAg
ICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX3Jlc29sdmVUeXBlLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAg
IEFTU0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmlnaW5hbFJl
c29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9sb2NhbFNjb3Bl
RGVwdGggPSAwOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW9wLmxleGljYWxFbnZpcm9u
bWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Nj
b3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUsIHRo
aXMpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY29uc3RhbnRTY29wZSA9PSBnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlKCkpOwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2Nv
bnN0YW50U2NvcGUuc2V0KHZtLCB0aGlzLCBjb25zdGFudFNjb3BlKTsKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2NrSW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9w
X3Jlc29sdmVfc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIsIG1ldGFk
YXRhLm1fcmVzb2x2ZVR5cGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9z
Y29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdl
dEZyb21TY29wZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBl
ID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAo
b3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zh
cik7Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBz
dGFydCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0
IHNob3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0
J3MgdGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAg
ICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7
Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwot
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhv
cmlnaW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIDogR2xvYmFsTGV4aWNhbFZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0
aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0
ID0gb3Aud2F0Y2hwb2ludFNldDsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVy
YW5kID0gb3Aub3BlcmFuZDsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJs
b2NrSW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwg
b3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRv
d2VkKGlkZW50LmltcGwoKSkpCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxP
YmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6
IHsKLSAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BQdXRUb1Nj
b3BlPigpOwotICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0
aGlzKTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5h
bFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0g
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAg
ICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBv
aW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxk
IGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUg
cmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAg
ICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2RlLm1fc3ltYm9sVGFibGVPclNjb3BlRGVwdGgsIGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgaWRlbnQsIFB1dCwgYnl0ZWNvZGUubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCksIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1v
ZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIg
fHwgb3AudHlwZSA9PSBEeW5hbWljKTsKLQotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlVHlw
ZSByZXNvbHZlVHlwZSA9IG9wLnR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
d2F0Y2hwb2ludFNldCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHZl
VHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCByZXNvbHZl
VHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8g
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFy
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gb3Au
d2F0Y2hwb2ludFNldDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5m
by5yZXNvbHZlTW9kZSgpLCByZXNvbHZlVHlwZSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRp
YWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5k
ID0gb3Aub3BlcmFuZDsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2Nr
SW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9wX3B1dF90b19zY29wZSBmcm9tICIsIG9yaWdp
bmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBl
KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXgg
YTY5MjZmZGY5N2ViNGU2YzZmY2QwZWIyNzZmODA1MzE5YmEwYmZlNC4uOGEyNjU0YzVlNDgyZGJm
YjUxYjg3M2U4MjBkYzdmNWY2M2Q2YTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaApAQCAtMTk1LDcgKzE5NSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAg
IHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoVk0mKTsKIAotICAgIHZvaWQgbm90aWZ5TGV4
aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mLCBjb25zdCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9p
ZCBub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZShWTSYpOwogCiAgICAgdm9pZCBkdW1wU291cmNl
KCk7CiAgICAgdm9pZCBkdW1wU291cmNlKFByaW50U3RyZWFtJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDRlMThkZjcwM2QzZDIx
NjY4NmY1ODU5ODI0ZjJhYzZjYjk3ZmUwMGUuLjlkMTYxNGRlYTMwNDJiN2UyYmMwNjA4ZjFlNzhk
NGM2NTE5MjEyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC02MTY3LDkgKzYxNjcsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNDcKICAgICAgICAgICAgIGlmIChtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9k
ZTo6TW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFBy
b3BlcnR5IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcykgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbYnl0ZWNvZGUubV92YXJdOwogICAg
ICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwotICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoLmdsb2JhbFByb3BlcnRpZXMoKS5hZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlm
aWVyUmVtYXBbYnl0ZWNvZGUubV92YXJdOworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3Jh
cGgud2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtNjI4MSw4ICs2MjgyLDEwIEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBj
YXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewogICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1vZHVsZSBjb2RlIGRvIG5vdCBxdWVyeSB0byBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC4gU28gdGhpcyBjYXNlIHNob3VsZCBiZSByZW1vdmVkIG9u
Y2UgaXQgaXMgZml4ZWQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwotICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6
TW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbFByb3BlcnRpZXMoKS5h
ZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51
bWJlcikpOworICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9j
ay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9kdWxlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKIApAQCAtNjQ1Niw4ICs2
NDU5LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDdXJyZW50bHksIG1vZHVsZSBjb2RlIGRvIG5v
dCBxdWVyeSB0byBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC4gU28gdGhpcyBjYXNlIHNob3Vs
ZCBiZSByZW1vdmVkIG9uY2UgaXQgaXMgZml4ZWQuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwotICAgICAgICAgICAgICAg
IGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFy
c2VyU2NyaXB0TW9kZTo6TW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2Jh
bFByb3BlcnRpZXMoKS5hZGRMYXppbHkoRGVzaXJlZEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVj
dCwgaWRlbnRpZmllck51bWJlcikpOworICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+c2NyaXB0TW9kZSgpICE9IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9k
dWxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3Bl
cnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXM7CiAgICAgICAgICAgICAgICAgaWYgKHVp
ZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2Jh
bFByb3BlcnRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xv
YmFsUHJvcGVydGllcy5jcHAKaW5kZXggOGY3YjljZWQ5OWI4Zjc5MDkwYTcyMGU5ZTRlYmZlZGFk
NmU5YWYwMy4uOTQxMTQxNjVlMzk5MTZiZTJjNTNiMGNlZjBlNGExNWQ0ZmMxNDEyNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJv
cGVydGllcy5jcHAKQEAgLTM2LDE2ICszNiwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAKLWJvb2wgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9u
TWFpblRocmVhZChEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQorYm9vbCBEZXNpcmVk
R2xvYmFsUHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKFZNJiB2bSwgRGVzaXJl
ZElkZW50aWZpZXJzJiBpZGVudGlmaWVycykKIHsKKyAgICBib29sIGlzU3RpbGxWYWxpZCA9IHRy
dWU7CiAgICAgZm9yIChjb25zdCBhdXRvJiBwcm9wZXJ0eSA6IG1fc2V0KSB7CiAgICAgICAgIGF1
dG8qIHVpZCA9IGlkZW50aWZpZXJzLmF0KHByb3BlcnR5LmlkZW50aWZpZXJOdW1iZXIoKSk7Ci0g
ICAgICAgIGlmIChhdXRvKiB3YXRjaHBvaW50U2V0ID0gcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCkt
PmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQodWlkKSkgewotICAgICAgICAgICAg
aWYgKCF3YXRjaHBvaW50U2V0LT5pc1N0aWxsVmFsaWQoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBwcm9wZXJ0
eS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgeworICAgICAgICAgICAgU3ltYm9sVGFibGUqIHN5
bWJvbFRhYmxlID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKS0+c3lt
Ym9sVGFibGUoKTsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoc3ltYm9s
VGFibGUtPm1fbG9jayk7CisgICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLT5jb250YWlucyhs
b2NrZXIsIHVpZCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAg
ICAgLy8gU2V0IGludmFsaWRhdGVkIFdhdGNocG9pbnRTZXQgaGVyZSB0byBwcmV2ZW50IGZ1cnRo
ZXIgY29tcGlsZS1hbmQtZmFpbCBsb29wLgorICAgICAgICBwcm9wZXJ0eS5nbG9iYWxPYmplY3Qo
KS0+ZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldCh1aWQpLmZpcmVBbGwodm0s
ICJMZXhpY2FsIGJpbmRpbmcgc2hhZG93cyB0aGUgZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMi
KTsKKyAgICAgICAgaXNTdGlsbFZhbGlkID0gZmFsc2U7CiAgICAgfQotICAgIHJldHVybiB0cnVl
OworICAgIHJldHVybiBpc1N0aWxsVmFsaWQ7CiB9CiAKIHZvaWQgRGVzaXJlZEdsb2JhbFByb3Bl
cnRpZXM6OnJlYWxseUFkZChDb2RlQmxvY2sqIGNvZGVCbG9jaywgRGVzaXJlZElkZW50aWZpZXJz
JiBpZGVudGlmaWVycywgQ29tbW9uRGF0YSYgY29tbW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oCmluZGV4IGUzNDBh
NTk2NTFlNTEwMjA0NGUzOGE0NmI5Y2RmOWY1NGRhYzA5MjguLjY5YmQzNmRhOWJmYmNjZTE2ZWI1
MjE1ZWY5MDE5ZjRkMTcxNDVmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xh
c3MgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMgewogICAgICAgICBtX3NldC5hZGQoV1RGTW92ZShw
cm9wZXJ0eSkpOwogICAgIH0KIAotICAgIGJvb2wgaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERl
c2lyZWRJZGVudGlmaWVycyYpOworICAgIGJvb2wgaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKFZN
JiwgRGVzaXJlZElkZW50aWZpZXJzJik7CiAKICAgICB2b2lkIHJlYWxseUFkZChDb2RlQmxvY2sq
LCBEZXNpcmVkSWRlbnRpZmllcnMmLCBDb21tb25EYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAKaW5kZXggODNjYzFkNGI2NGViNGRiOTE2MmE5MDhjYmRjY2M3ZTdl
ODU1YzA4MC4uMmE5ZGVkMWM5Zjc3MTEyMzZjN2FlYzU4NjBjMTJhNTk0MGEzNzlkNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKQEAgLTEwNTgsNiArMTA1OCwxOSBAQCBi
b29sIEdyYXBoOjppc1NhZmVUb0xvYWQoSlNPYmplY3QqIGJhc2UsIFByb3BlcnR5T2Zmc2V0IG9m
ZnNldCkKICAgICByZXR1cm4gbV9zYWZlVG9Mb2FkLmNvbnRhaW5zKHN0ZDo6bWFrZV9wYWlyKGJh
c2UsIG9mZnNldCkpOwogfQogCitib29sIEdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIpCit7Cisg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IGlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CisgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIGEgV2F0Y2hwb2ludFNldCwgYW5kIGl0IGlz
IGFscmVhZHkgaW52YWxpZGF0ZWQsIGl0IG1lYW5zIHRoYXQgdGhpcyBzY29wZSBvcGVyYXRpb24g
bXVzdCBiZSBjaGFuZ2VkIGZyb20gR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhciwK
KyAgICAvLyBidXQgdGhpcyBpcyBub3QgZG9uZSB5ZXQgc2luY2Ugd2UgZG8gbm90IGV4ZWN1dGUg
dGhpcyBvcCBhZ2Fpbi4gSnVzdCBlbWl0dGluZyBGb3JjZU9TUkV4aXQgdG8gdXBkYXRlIHRoZSBt
ZXRhZGF0YSB3aGVuIGl0IHJlYWNoZXMgdG8gdGhpcyBjb2RlLgorICAgIGlmIChhdXRvKiB3YXRj
aHBvaW50ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0
Q29uY3VycmVudGx5KHVpZCkpIHsKKyAgICAgICAgaWYgKCF3YXRjaHBvaW50LT5pc1N0aWxsVmFs
aWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZ2xvYmFsUHJvcGVy
dGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyTnVtYmVyKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEZ1bGxCeXRlY29kZUxpdmVu
ZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgSGFz
aE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+Pjo6
aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVMaXZlbmVzcy5maW5kKGNvZGVCbG9jayk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZWUyZTI2N2UwY2U1ZDZjMjQzOGVkYjMz
NTNlYzUzZWZiMGMxN2ZlOC4uMTUxZjU3MzZjN2FjNzA3M2YxZGVkZWU4ZGY2ZWIzM2UwMDhlZjRl
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzkzLDYgKzc5Myw4IEBA
IGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBib29sIHdhdGNo
Q29uZGl0aW9uKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAgICAgYm9vbCB3YXRj
aENvbmRpdGlvbnMoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmKTsKIAorICAgIGJv
b2wgd2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIpOworCiAgICAgLy8gQ2hlY2tzIGlmIGl0J3Mga25vd24gdGhhdCBsb2FkaW5nIGZy
b20gdGhlIGdpdmVuIG9iamVjdCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGZpbmUuIFRoaXMgaXMK
ICAgICAvLyBjb21wdXRlZCBieSB0cmFja2luZyB3aGljaCBjb25kaXRpb25zIHdlIHRyYWNrIHdp
dGggd2F0Y2hDb25kaXRpb24oKS4KICAgICBib29sIGlzU2FmZVRvTG9hZChKU09iamVjdCogYmFz
ZSwgUHJvcGVydHlPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKaW5k
ZXggZTc3NzIzZjg4NGQ5ZjM1NjBkOGJmYTJjZjQxNGFlMDBmZGViMWJmNS4uYzVlODk5YmExNTZj
Nzc0M2I2NmMzZDYzYmEyZDk1YTgzZjIzMTg5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBQbGFuOjpub3RpZnlSZWFkeSgpCiAK
IGJvb2wgUGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCkKIHsKLSAgICByZXR1cm4gbV9n
bG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZChtX2lkZW50aWZpZXJzKTsK
KyAgICByZXR1cm4gbV9nbG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZCgq
bV92bSwgbV9pZGVudGlmaWVycyk7CiB9CiAKIENvbXBpbGF0aW9uUmVzdWx0IFBsYW46OmZpbmFs
aXplV2l0aG91dE5vdGlmeWluZ0NhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOTJmMzdlYzkwOTc3NTdlYTcwM2EwZTc1
NTVhYzIyN2U1N2EwZWRlNy4uMTY4MmVlMzgwMDMwMWZlNTgzN2ViNzE0YzY5ZjI0ZmFlZDkyYmI4
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKQEAgLTgwMyw2ICs4MDMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTU2NvcGUqKiBj
b25zdGFudFNjb3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7CiAgICAg
ICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7CisgICAg
ICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7
CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Mo
bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKCkpLCByZWdUMSkpOwogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDMzZDZhZTQ2MDg2NDM3NmEwNTQw
YjY5ZDE1NjRiZTVlZmFjMTM2OWYuLmQwMzkzNjI0YjAwMjNhYTgwODVjZjE5MjBmZDFkZDE5Njhk
MDM2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtODA2LDYgKzgwNiw4IEBAIHZvaWQgSklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAg
ICAgLy8gU2luY2UgdGhlc2UgR2xvYmFsUHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgdG8gR2xvYmFs
TGV4aWNhbFZhciwgd2Ugc2hvdWxkIGxvYWQgdGhlIHZhbHVlIGZyb20gbWV0YWRhdGEuCiAgICAg
ICAgIEpTU2NvcGUqKiBjb25zdGFudFNjb3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29w
ZS5zbG90KCk7CiAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICBsb2FkMzIoJm1ldGFkYXRhLm1fZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCwgcmVnVDEpOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
YWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVnVDEpKTsKICAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKICAgICAgICAgbG9h
ZFB0cihjb25zdGFudFNjb3BlU2xvdCwgcmVnVDApOwogICAgICAgICBlbWl0U3RvcmUoZHN0LCBy
ZWdUMSwgcmVnVDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCA2ZjdkZWFiYzcyNTFhODU3OWY3ZTk5
NWFkMjA0NzdiNzZhMzAwMzBmLi5jNDQzYjQ4YjZjYTU3ZWM4ZjBhOWNkMjYzMWFkNjFlNjg3MjI0
MmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjA5MiwxMSArMjA5MiwyMCBAQCBlbmQKIAogbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAKLSAgICBtYWNybyBnZXRD
b25zdGFudFNjb3BlKCkKLSAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjpt
X2NvbnN0YW50U2NvcGVbdDVdLCAgdDAKKyAgICBtYWNybyBnZXRDb25zdGFudFNjb3BlKGRzdCkK
KyAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2NvcGVb
dDVdLCBkc3QKKyAgICBlbmQKKworICAgIG1hY3JvIHJldHVybkNvbnN0YW50U2NvcGUoKQorICAg
ICAgICBnZXRDb25zdGFudFNjb3BlKHQwKQogICAgICAgICByZXR1cm4oQ2VsbFRhZywgdDApCiAg
ICAgZW5kCiAKKyAgICBtYWNybyBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soc2xvd1Bh
dGgsIGdsb2JhbE9iamVjdCwgc2NyYXRjaCkKKyAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6
Ok1ldGFkYXRhOjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2Ny
YXRjaAorICAgICAgICBiaW5lcSBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gsIHNsb3dQYXRoCisgICAgZW5kCisKICAgICBt
YWNybyByZXNvbHZlU2NvcGUoKQogICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRh
dGE6Om1fbG9jYWxTY29wZURlcHRoW3Q1XSwgdDIKICAgICAgICAgZ2V0KG1fc2NvcGUsIHQwKQpA
QCAtMjExNywxNSArMjEyNiwxNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAjckdsb2Jh
bFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKLSAg
ICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4o
Q2VsbFRhZywgdDApCiAKIC5yR2xvYmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5y
R2xvYmFsTGV4aWNhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0
YW50U2NvcGUoKQogCiAuckdsb2JhbExleGljYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbExl
eGljYWxWYXIsIC5yQ2xvc3VyZVZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVy
bkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVW
YXIsIC5yTW9kdWxlVmFyCkBAIC0yMTMzLDIyICsyMTQ0LDI0IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoCiAKIC5yTW9kdWxlVmFyOgogICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisg
ICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlv
bkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFu
dFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMs
IHQwLCB0MikKKyAgICByZXR1cm4oQ2VsbFRhZywgdDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhcklu
amVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmlu
ZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckR5bmFtaWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggMTQ4YzgzOTUwN2Y1ZWI3ZTliZjU2MTc5MWJiYjBjMmU3NGI5NTI0ZS4uZTMyYjYw
MTU5ZWI5ZTJkNGFjZDFmMWViZjdhYTg2MjIwZDYyNTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIxNTAs
MTEgKzIxNTAsMjAgQEAgZW5kCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUs
IE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJl
dHVybikKICAgICBtZXRhZGF0YSh0NSwgdDApCiAKLSAgICBtYWNybyBnZXRDb25zdGFudFNjb3Bl
KCkKLSAgICAgICAgbG9hZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2Nv
cGVbdDVdLCAgdDAKKyAgICBtYWNybyBnZXRDb25zdGFudFNjb3BlKGRzdCkKKyAgICAgICAgbG9h
ZHAgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2NvbnN0YW50U2NvcGVbdDVdLCBkc3QKKyAg
ICBlbmQKKworICAgIG1hY3JvIHJldHVybkNvbnN0YW50U2NvcGUoKQorICAgICAgICBnZXRDb25z
dGFudFNjb3BlKHQwKQogICAgICAgICByZXR1cm4odDApCiAgICAgZW5kCiAKKyAgICBtYWNybyBn
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soc2xvd1BhdGgsIGdsb2JhbE9iamVjdCwgc2Ny
YXRjaCkKKyAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaAorICAgICAgICBiaW5lcSBK
U0dsb2JhbE9iamVjdDo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0s
IHNjcmF0Y2gsIHNsb3dQYXRoCisgICAgZW5kCisKICAgICBtYWNybyByZXNvbHZlU2NvcGUoKQog
ICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fbG9jYWxTY29wZURlcHRo
W3Q1XSwgdDIKICAgICAgICAgZ2V0KG1fc2NvcGUsIHQwKQpAQCAtMjE3NCwxNSArMjE4MywxNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAjckdsb2JhbFByb3BlcnR5OgogICAgIGJpbmVx
IHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkK
KyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hD
aGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyOgog
ICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5yR2xvYmFsTGV4aWNhbFZhcgotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExleGljYWxW
YXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXIsIC5yQ2xvc3VyZVZhcgotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVW
YXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCkBAIC0yMTkwLDIyICsy
MjAxLDI0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZl
U2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKIC5yTW9kdWxlVmFyOgogICAgIGJp
bmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
Ci0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5y
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKHQwKQog
CiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMsIHQyKQotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29u
c3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzLCAuckR5bmFtaWMKQEAgLTIyNTYsNyArMjI2OSw3IEBAIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjCiAKICNnR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFBy
b3BlcnR5LCAuZ0dsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9t
U2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRG
cm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVz
IGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFu
Z2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIGdldFByb3BlcnR5KCkKIAogLmdH
bG9iYWxWYXI6CkBAIC0yMjc3LDcgKzIyOTAsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dl
dF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Ywog
CiAuZ0dsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuZ0dsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3Bl
LCBnZXQsIC5nRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNj
b3BlLCBnZXQsIC5nRHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhp
Y2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwg
c2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBnZXRQcm9wZXJ0eSgpCiAKIC5nR2xvYmFs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTIzNjQsNyArMjM3Nyw3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtCiAKIC5wR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5LCAucEdsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRU
b1Njb3BlLCBnZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0
VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMg
bGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5n
ZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHkoKQogICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVlKQogICAgIGRp
c3BhdGNoKCkKQEAgLTIzOTEsNyArMjQwNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0
X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtCiAK
IC5wR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBn
ZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwg
Z2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3Bl
IHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHkoKQogICAgIHdyaXRlQmFycmll
ck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVlKQogICAgIGRpc3BhdGNoKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IGI4ODA0NThlYzg3N2U1MTg2MDc0YzA5ZDEyNzU4MzZkNzQ3YzMxNDguLmFhYTk0Mzg2
NzQ0YWY2ZTY5NjY1OWEwNmY2MDE0OTdmOGU1NTI2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTA2NywyOSArMTA2Nywz
MSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSkKICAgICAvLyBNb2R1
bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxpdmUgaW4gREZH
LgogICAgIEFTU0VSVChyZXNvbHZlVHlwZSAhPSBNb2R1bGVWYXIpOwogCi0gICAgaWYgKHJlc29s
dmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVk
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlw
ZSkgeworICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2ggaXMg
Y2hhbmdlZC4gVXBkYXRlIG9wX3Jlc29sdmVfc2NvcGUuCisgICAgY2FzZSBVbnJlc29sdmVkUHJv
cGVydHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OiB7CiAgICAgICAgIGlmIChyZXNvbHZlZFNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CiAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gZ2xv
YmFsT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBDSEVDS19F
WENFUFRJT04oKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3Bl
cnR5OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKLQor
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MgOiBHbG9iYWxQcm9wZXJ0eTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbE9i
amVjdCA9IGdsb2JhbE9iamVjdDsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlZFNjb3BlLT5p
c0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwotICAgICAgICAg
ICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKLSAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Jl
c29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAg
ICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJFVFVSTihyZXNvbHZlZFNjb3Bl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
aW5kZXggMTMwYTBjODJhMmY3ZWY2ZWQ4NzNlMDYyOTU3OWMzYTMzNjc3YWNhYy4uN2VlYWY3MDRi
NDMzNTQzOTYwOTdiOWViNDgyMTE3N2ViNWExNDk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTEyNCwyOCArMTI0LDM5IEBAIGlu
bGluZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAvLyBDb3ZlcnMgaW1wbGlj
aXQgZ2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1
dGUsIHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KICAg
ICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAgIFJlc29sdmVU
eXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0g
ICAgaWYgKHJlc29sdmVUeXBlICE9IEdsb2JhbFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyAKLSAgICAgICAgJiYgcmVzb2x2ZVR5
cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIHJldHVybjsKIAotICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNv
bHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2
ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3BlLT5p
c0dsb2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDog
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotICAgICAgICAgICAgcmVzb2x2
ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29s
dmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CisgICAgICAgICAg
ICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1l
Y2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8g
PSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNv
bHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAg
fQorICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcg
RXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJv
cGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5
cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFy
IDogR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBS
ZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFs
TGV4aWNhbFZhcjsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAg
U3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9s
VGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5Lmlz
TnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2Nr
LT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnku
d2F0Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVB
dChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
IHx8IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykg
ewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKQEAgLTE3NiwyMiArMTg3
LDM2IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVz
b2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKIAotICAgIGlm
IChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5y
ZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVz
b2x2ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVz
b2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3Bl
LT5pc0dsb2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZl
VHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5
IDogR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVz
b2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9w
ZXJ0eTsKICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93
IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAg
IGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAv
LyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRf
ZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAg
ICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAg
ICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9
IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5ID8gR2xvYmFsTGV4aWNhbFZhciA6IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBTeW1ib2xU
YWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgp
LT5nZXQoaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkp
OwogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2so
KS0+bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBt
ZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAg
bWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGds
b2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5z
bG90KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQ292
ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBm
aXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxl
IHRpbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYmI3MGNmNTZiNDkzNDdhYmVhZjIzYzVhMjYzOTI1NWE5NzcyYTBmZC4uMDdm
NGM3ZDg3NzM0M2YyNzIyYTcyZTA5Yzk5MTRmZjc5M2Y3YmEwMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTg1MiwxOSArMTg1
MiwxOSBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIEpTR2xvYmFsT2JqZWN0OjppbnRsUGx1cmFs
UnVsZXNBdmFpbGFibGVMb2NhbGVzKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotdm9p
ZCBKU0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBj
b25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaChWTSYgdm0pCiB7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZvciAoY29uc3QgYXV0
byYga2V5IDogc2V0KQotICAgICAgICBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KGtleS5nZXQoKSkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBl
eGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOwotI2VuZGlmCi0gICAgdm0uaGVhcC5jb2RlQmxv
Y2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKLSAgICAgICAgaWYg
KGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyh2bSwgc2V0
KTsKLSAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB9KTsKKyAgICBpZiAo
KyttX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBv
dmVyZmxvd3Mgb3IgYWN0dWFsIHNoYWRvd2luZyBoYXBwZW5zLCB3ZSBzaG91bGQgcmV3cml0ZSBh
bGwgdGhlIENvZGVCbG9jayB0byBhZGp1c3QgdG8gdGhlIG5ld2x5IHN0YXJ0ZWQgZ2VuZXJhdGlv
bi4KKyAgICAgICAgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMTsKKyAgICAgICAgdm0u
aGVhcC5jb2RlQmxvY2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsK
KyAgICAgICAgICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSh2bSk7CisgICAgICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigp
OworICAgICAgICB9KTsKKyAgICB9CiAgICAgc2NvcGUucmVsZWFzZSgpOwogfQogCkBAIC0xODg5
LDEzICsxODg5LDE1IEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0ludGVyYWN0aXZlRGVidWdn
ZXIoKSBjb25zdAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1XYXRjaHBvaW50U2V0KiBKU0ds
b2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorV2F0Y2hwb2ludFNldCogSlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5j
ZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFBy
b3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFs
UHJvcGVydHlXYXRjaHBvaW50U2V0cy5nZXQodWlkKTsKIH0KIAogV2F0Y2hwb2ludFNldCYgSlNH
bG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVm
ZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9y
ZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5lbnN1cmUodWlkLCBbXSB7CiAg
ICAgICAgIHJldHVybiBXYXRjaHBvaW50U2V0OjpjcmVhdGUoSXNXYXRjaGVkKTsKICAgICB9KS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAppbmRleCAzYTEzODJkNTc5NzljYzI5YjE2ZmI2OGU5M2Y0ZmI3ZDk3
ZTZlMzlkLi43MTNkMmRkM2U5NGU5NjU3ZWYwYWM3MTNiNjY2ZDgzMWVmYmMwZjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQ4Niwx
MCArNDg2LDEyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIFJlZmVyZW5jZWRH
bG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzID0gSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+LCBSZWY8V2F0Y2hwb2ludFNldD4sIElkZW50aWZpZXJSZXBIYXNoPjsKICAgICBSZWZl
cmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyBtX3JlZmVyZW5jZWRHbG9iYWxQcm9w
ZXJ0eVdhdGNocG9pbnRTZXRzOworICAgIENvbmN1cnJlbnRKU0xvY2sgbV9yZWZlcmVuY2VkR2xv
YmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2s7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9ldmFs
RW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFibGVkIHsgdHJ1ZSB9
OworICAgIHVuc2lnbmVkIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCB7IDEgfTsKICAgICBT
dHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1i
bHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7
CkBAIC01MjIsNyArNTI0LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxh
Z3MoKSBjb25zdCB7IHJldHVybiBtX3J1bnRpbWVGbGFnczsgfQogCiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgV2F0Y2hwb2ludFNldCogZ2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNl
dChVbmlxdWVkU3RyaW5nSW1wbCopOworICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQ
cm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICAg
ICBXYXRjaHBvaW50U2V0JiBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVu
aXF1ZWRTdHJpbmdJbXBsKik7CiAjZW5kaWYKIApAQCAtNzUxLDcgKzc1MywxMCBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBj
b25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdT
aGFkb3dpbmcoVk0mLCBjb25zdCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9pZCBidW1wR2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaChWTSYpOworICAgIHVuc2lnbmVkIGdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2goKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0K
KyAgICBzdGF0aWMgcHRyZGlmZl90IGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hPZmZzZXQoKSB7
IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCk7IH0KKyAgICB1bnNpZ25lZCogYWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCgpIHsgcmV0dXJuICZtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0KIAogICAg
IHZvaWQgc2V0Q29uc29sZUNsaWVudChDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KSB7IG1f
Y29uc29sZUNsaWVudCA9IGNvbnNvbGVDbGllbnQ7IH0KICAgICBDb25zb2xlQ2xpZW50KiBjb25z
b2xlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggZTY3ZDkzOTNlMGMyNjhmODkxN2M5ODIy
OWMxYWYzNDhhZTIxZjM2MS4uNGM5ZjZiNmI0ZTE2OWFkY2NhODEyNDkzNDk3MzAyMTJmMTM4MjEz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNTA4LDYgKzUw
OCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFs
c2U7CiAgICAgdihib29sLCB0cmFjZUxMSW50RXhlY3V0aW9uLCBmYWxzZSwgQ29uZmlndXJhYmxl
LCBudWxscHRyKSBcCiAgICAgdihib29sLCB0cmFjZUxMSW50U2xvd1BhdGgsIGZhbHNlLCBDb25m
aWd1cmFibGUsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHRyYWNlQmFzZWxpbmVKSVRFeGVjdXRp
b24sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRG
b3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNob2xk
IGZvciBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0
byB0aGlzIHZhbHVlLCBDb2RlQmxvY2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMgd2ls
bCBiZSByZXZpc2VkIGdsb2JhbGx5LiBJdCBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gMS4iKSBc
CiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggMWMyMTk2N2ZjMWQ4MjE4
MmY3MzM1YTBkN2Y3YWJhOTllY2RjNWIyZS4uZDRiNTg4YzVkZjM0OGRmZDcyYmU1ODZmY2Q2MDgz
MGFhMDE0ZmE4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcApAQCAtMTA3LDcgKzEwNyw2IEBAIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGCiAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZp
cm9ubWVudCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnMgPSB1bmxpbmtl
ZENvZGVCbG9jay0+dmFyaWFibGVEZWNsYXJhdGlvbnMoKTsKICAgICBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBsZXhpY2FsRGVjbGFyYXRpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPmxleGlj
YWxEZWNsYXJhdGlvbnMoKTsKLSAgICBJZGVudGlmaWVyU2V0IHNoYWRvd2VkUHJvcGVydGllczsK
ICAgICAvLyBUaGUgRVM2IHNwZWMgc2F5cyB0aGF0IG5vIHZhcnMvZ2xvYmFsIHByb3BlcnRpZXMv
bGV0L2NvbnN0IGNhbiBiZSBkdXBsaWNhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUuCiAgICAgLy8g
VGhpcyBjYXJyaWVkIG91dCBzZWN0aW9uIDE1LjEuOCBvZiB0aGUgRVM2IHNwZWM6IGh0dHA6Ly93
d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2xv
YmFsZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uCiAgICAgewpAQCAtMTMxLDExICsxMzAsOSBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRgogICAgICAgICAgICAgICAgIC8vIExleGljYWwgYmluZGlu
Z3MgY2FuIHNoYWRvdyBnbG9iYWwgcHJvcGVydGllcyBpZiB0aGUgZ2l2ZW4gcHJvcGVydHkncyBh
dHRyaWJ1dGUgaXMgY29uZmlndXJhYmxlLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMz
OS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdsb2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbiBz
dGVwIDUtYywgYGhhc1Jlc3RyaWN0ZWRHbG9iYWxgIGJlY29tZXMgZmFsc2UKICAgICAgICAgICAg
ICAgICAvLyBIb3dldmVyIHdlIG1heSBlbWl0IEdsb2JhbFByb3BlcnR5IGxvb2sgdXAgaW4gYnl0
ZWNvZGVzIGFscmVhZHkgYW5kIGl0IG1heSBjYWNoZSB0aGUgdmFsdWUgZm9yIHRoZSBnbG9iYWwg
c2NvcGUuCi0gICAgICAgICAgICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLCB3ZSBpdGVyYXRl
IGFsbCB0aGUgQ29kZUJsb2NrcyBhbmQgcmV3cml0ZSB0aGUgaW5zdHJ1Y3Rpb24gdG8gY29udmVy
dCBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgotICAgICAgICAgICAgICAgIC8v
IDEuIEluIExMSW50LCB3ZSBhbHdheXMgY2hlY2sgbWV0YWRhdGEncyByZXNvbHZlVHlwZS4gU28g
cmV3cml0dGVuIGluc3RydWN0aW9uIGp1c3Qgd29ya3MuCi0gICAgICAgICAgICAgICAgLy8gMi4g
SW4gQmFzZWxpbmUgSklULCB3ZSBjaGVjayBtZXRhZGF0YSdzIHJlc29sdmVUeXBlIGluIEdsb2Jh
bFByb3BlcnR5IGNhc2Ugc28gdGhhdCB3ZSBjYW4gbm90aWNlIG9uY2UgaXQgaXMgY2hhbmdlZC4K
KyAgICAgICAgICAgICAgICAvLyBUbyBtYWtlIGl0IGludmFsaWQsCisgICAgICAgICAgICAgICAg
Ly8gMS4gSW4gTExJbnQgYW5kIEJhc2VsaW5lLCB3ZSBidW1wIHRoZSBnbG9iYWwgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoIGFuZCBpdCB3b3Jrcy4KICAgICAgICAgICAgICAgICAvLyAzLiBJbiBERkcg
YW5kIEZUTCwgd2Ugd2F0Y2ggdGhlIHdhdGNocG9pbnQgYW5kIGpldHRpc29uIG9uY2UgaXQgaXMg
ZmlyZWQuCi0gICAgICAgICAgICAgICAgc2hhZG93ZWRQcm9wZXJ0aWVzLmFkZChlbnRyeS5rZXku
Z2V0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eUxvb2tVcFN0YXR1czo6Tm90Rm91bmQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yMDYsMTIgKzIwMywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRgogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQob2Zmc2V0Rm9yQXNzZXJ0ID09IG9mZnNldCk7CiAgICAgICAgIH0KICAg
ICB9Ci0KLSAgICBpZiAoIXNoYWRvd2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
Z2xvYmFsT2JqZWN0LT5ub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyh2bSwgV1RGTW92ZShz
aGFkb3dlZFByb3BlcnRpZXMpKTsKLSAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOworICAgIGlmIChsZXhpY2FsRGVjbGFyYXRpb25zLnNpemUoKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbGV4aWNhbERlY2xhcmF0aW9ucykgeworICAgICAgICAgICAgLy8gSWYg
V2F0Y2hwb2ludFNldCBleGlzdHMsIGp1c3QgZmlyZSBpdC4gU2luY2UgREZHIFdhdGNocG9pbnRT
ZXQgYWRkaXRpb24gaXMgYWxzbyBkb25lIG9uIHRoZSBtYWluIHRocmVhZCwgd2UgY2FuIHN5bmMg
dGhlbS4KKyAgICAgICAgICAgIC8vIFNvIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBXYXRjaHBvaW50
U2V0IGhlcmUuIERGRyB3aWxsIGNyZWF0ZSBpZiBuZWNlc3Nhcnkgb24gdGhlIG1haW4gdGhyZWFk
LgorICAgICAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3QtPmdl
dFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoZW50cnkua2V5Lmdl
dCgpKSkKKyAgICAgICAgICAgICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKHZtLCAiTGV4aWNh
bCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0aWVzIik7CisgICAg
ICAgIH0KKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5idW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCh2bSk7CiAgICAgfQotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzc3YTg1M2JmZTcwOWY5
NDJhYzY0ZjhiNDE3MTdlMGE5NGFiNjdiMC4uN2Y1NjE3MDY1YzBjNTBhNmI2MjQwZWM1NjgwMTI2
MzY0Y2QzOWI1MyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1
c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xk
IHNjb3BlIG9wZXJhdGlvbnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc2Nv
cGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKiBz
dHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1wLWNvdW50ZXIu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2V0MSk6CisgICAgICAg
IChnZXQyKToKKyAgICAgICAgKGdldDFJZik6CisgICAgICAgIChnZXQySWYpOgorICAgICAgICAq
IHN0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQt
ZmFpbHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoZm9vKToK
KwogMjAxOS0wMS0xNyAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBTdHJpbmdPYmplY3RVc2Ugc2hvdWxkIG5vdCBiZSBhIHN0cnVjdHVyZSBjaGVjayBmb3IgdGhl
IG9yaWdpbmFsIHN0cmluZyBvYmplY3Qgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGlu
Zy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVy
dHktYmVmb3JlLWRlbGV0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhOWZlMGQ1MWM1ODRlODVjMGYyNjZh
ZWEyMTQ4N2UwZDkzZDQxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29w
ZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcwpAQCAt
MCwwICsxLDI3IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
KyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9y
VGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cp
OworCitmdW5jdGlvbiBiYXIoKQoreworICAgIGZvbyA9IDQyOworfQorCitiYXIoKTsKK2Jhcigp
OworZGVsZXRlIGdsb2JhbFRoaXMuZm9vOworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28gPSA1MGAp
OworCitzaG91bGRUaHJvdygoKSA9PiBiYXIoKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFz
c2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzIGIv
SlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1w
LWNvdW50ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFkY2RkMDZkMjA4OWJkOWYwOTVhMWExODIxOWY2YmU3
ZjliYzZmOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlv
bi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCkBAIC0wLDAgKzEsNTggQEAK
Ky8vQCBydW5EZWZhdWx0KCItLXRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g9
MiIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmb28xID0gMTsKK2ZvbzIgPSAy
OworZnVuY3Rpb24gZ2V0MSgpIHsKKyAgICByZXR1cm4gZm9vMTsKK30KK25vSW5saW5lKGdldDEp
OworCitmdW5jdGlvbiBnZXQyKCkgeworICAgIHJldHVybiBmb28yOworfQorbm9JbmxpbmUoZ2V0
Mik7CisKK2Z1bmN0aW9uIGdldDFJZihjb25kaXRpb24pIHsKKyAgICBpZiAoY29uZGl0aW9uKQor
ICAgICAgICByZXR1cm4gZm9vMTsKKyAgICByZXR1cm4gLTE7Cit9Citub0lubGluZShnZXQxSWYp
OworCitmdW5jdGlvbiBnZXQySWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikKKyAg
ICAgICAgcmV0dXJuIGZvbzI7CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MklmKTsK
KworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKGdldDEoKSwg
MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxKCksIDEpOwor
ICAgIHNob3VsZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKHRydWUpLCAxKTsK
KyAgICBzaG91bGRCZShnZXQySWYodHJ1ZSksIDIpOworICAgIHNob3VsZEJlKGdldDFJZihmYWxz
ZSksIC0xKTsKKyAgICBzaG91bGRCZShnZXQySWYoZmFsc2UpLCAtMSk7Cit9CisKKyQuZXZhbFNj
cmlwdChgY29uc3QgZm9vMSA9IDQxO2ApOworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28yID0gNDI7
YCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQx
KCksIDQxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDQyKTsKKyAgICBzaG91bGRCZShnZXQxKCks
IDQxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDQyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFs
c2UpLCAtMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorc2hvdWxkQmUo
Z2V0MUlmKHRydWUpLCA0MSk7CitzaG91bGRCZShnZXQySWYodHJ1ZSksIDQyKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHkt
ZXZlbi1pZi1pdC1mYWlscy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNo
ZS1nbG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWRhYzgx
MWEzOGJmYjI1MmViN2Y2Y2NiM2FhNDA5NzYxNDZjNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlm
LWl0LWZhaWxzLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9Citub0lu
bGluZShzaG91bGRUaHJvdyk7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBiYXIgPSA0OworfQor
T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHRoaXMpOworZm9vKCk7CiskLmV2YWxTY3JpcHQoJ2Nv
bnN0IGJhciA9IDM7Jyk7CitzaG91bGRUaHJvdygoKSA9PiBmb28oKSwgYFR5cGVFcnJvcjogQXR0
ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359576</attachid>
            <date>2019-01-18 19:00:49 -0800</date>
            <delta_ts>2019-01-18 19:13:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118190048.patch</filename>
            <type>text/plain</type>
            <size>53008</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5iNTA2ZGVmNzZmNjY2ZTcx
MGYyZjgwMWI3NjhlOTc2NDA3YzM4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorCiAyMDE5LTAx
LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBieXRl
Y29kZSBmaWVsZHMgYW5kIGVuc3VyZSB0aGF0IExMSW50IGluc3RydWN0aW9ucyBmb3IgYWNjZXNz
aW5nIHRoZW0gYXJlIGFwcHJvcHJpYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYmI1ZjEyNjE2MDBlNWZkYjE5NGVhZTk4YzA4YjU0
NjQ3ZDdkM2I3ZC4uMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2ZDMzZmQ1NTc1NDIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC04
MzMsOCArODMzLDExIEBACiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICByZXNvbHZl
VHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1
bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zmc2V0IDYKKyAgICAgICAgXzA6
IHsgIyBvZmZzZXQgNQorICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g6IHVuc2lnbmVkLAorICAgICAgICB9
LAorICAgICAgICBfMTogeyAjIG9mZnNldCA2CiAgICAgICAgICAgICAgIyB3cml0dGVuIGR1cmlu
ZyBsaW5raW5nCiAgICAgICAgICAgICAgbGV4aWNhbEVudmlyb25tZW50OiBXcml0ZUJhcnJpZXJC
YXNlW0pTQ2VsbF0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUgPT0gTW9kdWxlVmFyCiAg
ICAgICAgICAgICAgc3ltYm9sVGFibGU6IFdyaXRlQmFycmllckJhc2VbU3ltYm9sVGFibGVdLCAj
IGxleGljYWxFbnZpcm9ubWVudCAmJiB0eXBlICE9IE1vZHVsZVZhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYzYzNDU2ODZmYTFlNTNkNTNj
NDkzMzg1OTdlN2MxZTM1NTVlMjFjLi4yYjI4YmY4ZDFkOTc3NzBhYTQ2NTQ0NmM1ZWE0MzgwOTk1
ZWMyZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMjY2OCwxOCArMjY2OCwyNSBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4
aXRTaXRlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLXZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJT
ZXQmIHNldCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZShWTSYg
dm0pCiB7CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5
IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJl
bW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9PSBKU1BhcnNlclNj
cmlwdE1vZGU6Ok1vZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKKyAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Kj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCk7CiAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBhdXRvIGlzU2hhZG93
ZWQgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHN5bWJv
bFRhYmxlLT5jb250YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAgIGZvciAoY29uc3Qg
YXV0byYgaW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgc3dpdGNoIChvcGNv
ZGVJRCkgewpAQCAtMjY4OSw3MiArMjY5NiwxMyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4
aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCiAg
ICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9y
ZXNvbHZlVHlwZTsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2Jh
bFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0
LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFz
cyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFp
bi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhl
IGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3Jt
IHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0g
SlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5
dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlk
ZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90
SW5pdGlhbGl6YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxM
ZXhpY2FsVmFyKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9
IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIEFTU0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAg
ICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JD
b2RlQmxvY2sobWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjb25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zZXQodm0sIHRo
aXMsIGNvbnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2Rl
QmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9zY29wZSBmcm9tICIs
IG9yaWdpbmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBh
dXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgICAg
ICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09
IEdsb2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBp
ZiAoc2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8g
V2UgcGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29w
ZSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZp
bmQgdGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBw
ZXJmb3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9w
IG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
KCksIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0
aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8g
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFy
LCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0Owot
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwg
IlJld3JpdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAi
IHRvICIsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzU2hhZG93ZWQoaWRlbnQuaW1wbCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0g
MDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLQotICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAgICAgICAgYXV0byBi
eXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgUmVz
b2x2ZVR5cGUgb3JpZ2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNv
bHZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGlkZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQu
Y29udGFpbnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNz
IEpTR2xvYmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWlu
LgotICAgICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUg
bGV4aWNhbCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0g
dGhpcyByZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0
ZWNvZGUubV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZSgpLCBpZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0
ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IER5bmFtaWMp
OwotCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gb3AudHlw
ZTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxW
YXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
byA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIHJlc29s
dmVUeXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJl
d3JpdGUgb3BfcHV0X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAi
LCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3ZWI0ZTZjNmZjZDBl
YjI3NmY4MDUzMTliYTBiZmU0Li44YTI2NTRjNWU0ODJkYmZiNTFiODczZTgyMGRjN2Y1ZjYzZDZh
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0x
OTUsNyArMTk1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseShWTSYpOwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhW
TSYsIGNvbnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5n
VXBkYXRlKFZNJik7CiAKICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lkIGR1bXBTb3Vy
Y2UoUHJpbnRTdHJlYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKaW5kZXggNGUxOGRmNzAzZDNkMjE2Njg2ZjU4NTk4MjRmMmFjNmNiOTdm
ZTAwZS4uOWQxNjE0ZGVhMzA0MmI3ZTJiYzA2MDhmMWU3OGQ0YzY1MTkyMTI5OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYxNjcs
OSArNjE2NywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MzM0NwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2Nr
LT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKICAgICAgICAg
ICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVy
dGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zh
cl07CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5
KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCkBAIC02MjgxLDggKzYyODIsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
MzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5z
Y3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFs
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQ
YXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dy
YXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbigpOwogCkBAIC02NDU2LDggKzY0NTksMTAgQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBp
cyBmaXhlZC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUp
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemls
eShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7
CisgICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3Jp
cHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVu
dGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VP
U1JFeGl0KTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3Rh
dHVzIHN0YXR1czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAppbmRl
eCA4ZjdiOWNlZDk5YjhmNzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi45NDExNDE2NWUzOTkx
NmJlMmM1M2IwY2VmMGU0YTE1ZDRmYzE0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApAQCAtMzYsMTYg
KzM2LDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotYm9vbCBEZXNp
cmVkR2xvYmFsUHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERlc2lyZWRJZGVu
dGlmaWVycyYgaWRlbnRpZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjppc1N0
aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZp
ZXJzKQogeworICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHByb3BlcnR5IDogbV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRlbnRpZmllcnMu
YXQocHJvcGVydHkuaWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdhdGNo
cG9pbnRTZXQgPSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5
V2F0Y2hwb2ludFNldCh1aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRTZXQtPmlz
U3RpbGxWYWxpZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpOworICAg
ICAgICB7CisgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAg
ICAgICAgIGlmICghc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52YWxpZGF0ZWQg
V2F0Y2hwb2ludFNldCBoZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFuZC1mYWlsIGxv
b3AuCisgICAgICAgIHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZlcmVuY2VkUHJv
cGVydHlXYXRjaHBvaW50U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFk
b3dzIHRoZSBleGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICBpc1N0aWxsVmFs
aWQgPSBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RpbGxW
YWxpZDsKIH0KIAogdm9pZCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5QWRkKENvZGVC
bG9jayogY29kZUJsb2NrLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzLCBDb21tb25E
YXRhJiBjb21tb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0ZTM4YTQ2Yjlj
ZGY5ZjU0ZGFjMDkyOC4uNjliZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQxNzE0NWY3YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJv
cGVydGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2Jh
bFByb3BlcnRpZXMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xvYmFsUHJvcGVy
dGllcyB7CiAgICAgICAgIG1fc2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0g
ICAgYm9vbCBpc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJik7Cisg
ICAgYm9vbCBpc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRlbnRpZmllcnMm
KTsKIAogICAgIHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVudGlmaWVycyYs
IENvbW1vbkRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRl
eCA4M2NjMWQ0YjY0ZWI0ZGI5MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi4yYTlkZWQxYzlmNzcx
MTIzNmM3YWVjNTg2MGMxMmE1OTQwYTM3OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcApAQCAtMTA1OCw2ICsxMDU4LDE5IEBAIGJvb2wgR3JhcGg6OmlzU2FmZVRvTG9h
ZChKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJldHVybiBtX3Nh
ZmVUb0xvYWQuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7CiB9CiAKK2Jv
b2wgR3JhcGg6OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJZiB3ZSBhbHJl
YWR5IGhhdmUgYSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZCwg
aXQgbWVhbnMgdGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5nZWQgZnJvbSBH
bG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB0aGlzIGlzIG5v
dCBkb25lIHlldCBzaW5jZSB3ZSBkbyBub3QgZXhlY3V0ZSB0aGlzIG9wIGFnYWluLiBKdXN0IGVt
aXR0aW5nIEZvcmNlT1NSRXhpdCB0byB1cGRhdGUgdGhlIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hl
cyB0byB0aGlzIGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3Qt
PmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkodWlkKSkgewor
ICAgICAgICBpZiAoIXdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2ly
ZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0Zv
cihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6
dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRl
Y29kZUxpdmVuZXNzLmZpbmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAppbmRleCBlZTJlMjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFm
NTczNmM3YWM3MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMg
dmlydHVhbCBTY2FubmFibGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0
UHJvcGVydHlDb25kaXRpb24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5
KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBD
aGVja3MgaWYgaXQncyBrbm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0
IHRoZSBnaXZlbiBvZmZzZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRy
YWNraW5nIHdoaWNoIGNvbmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgog
ICAgIGJvb2wgaXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4
YmZhMmNmNDE0YWUwMGZkZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNm
MjMxODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1
NzMsNyBAQCB2b2lkIFBsYW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFs
aWRPbk1haW5UaHJlYWQoKQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGls
bFZhbGlkT25NYWluVGhyZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFBy
b3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsK
IH0KIAogQ29tcGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2Fs
bGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAppbmRleCA5MmYzN2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4xNjgy
ZWUzODAwMzAxZmU1ODM3ZWI3MTRjNjlmMjRmYWVkOTJiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODAzLDYgKzgwMyw4IEBA
IHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0
YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNo
ZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGxvYWRQ
dHIoY29uc3RhbnRTY29wZVNsb3QsIHJlZ1QwKTsKKyAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5t
X2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoMzIoTm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCktPmFkZHJlc3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CiAg
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggMzNkNmFlNDYwODY0Mzc2YTA1NDBiNjlkMTU2NGJlNWVmYWMxMzY5Zi4u
ZDAzOTM2MjRiMDAyM2FhODA4NWNmMTkyMGZkMWRkMTk2OGQwMzY4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC04
MDYsNiArODA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAvLyBTaW5jZSB0aGVzZSBHbG9i
YWxQcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFyLCB3ZSBzaG91bGQg
bG9hZCB0aGUgdmFsdWUgZnJvbSBtZXRhZGF0YS4KICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50
U2NvcGVTbG90ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1p
dFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7
CisgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBy
ZWdUMSk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFk
ZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoKCkpLCByZWdUMSkpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSwgcmVnVDEpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90
LCByZWdUMCk7CiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtCmluZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3N2I3NmEzMDAzMGYuLmM0
NDNiNDhiNmNhNTdlYzhmMGE5Y2QyNjMxYWQ2MWU2ODcyMjQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CkBAIC0yMDkyLDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jl
c29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
bWV0YWRhdGEsIHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAg
ICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0
MAorICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29s
dmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisg
ICAgbWFjcm8gcmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUo
dDApCiAgICAgICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGds
b2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3Jh
dGNoKQorICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpT
R2xvYmFsT2JqZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwg
c2NyYXRjaCwgc2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAg
ICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhb
dDVdLCB0MgogICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTE3LDE1ICsyMTI2LDE3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQor
ICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENo
ZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0MCkKIAogLnJHbG9i
YWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAg
Z2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFs
TGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFy
Ci0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5y
Q2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIx
MzMsMjIgKzIxNDQsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBP
cFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6
CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3Bl
KCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAg
IGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihD
ZWxsVGFnLCB0MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJp
bmVxIHQwLCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWlj
KQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAu
ckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBn
ZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJl
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAxNDhjODM5NTA3ZjVl
YjdlOWJmNTYxNzkxYmJiMGMyZTc0Yjk1MjRlLi5lMzJiNjAxNTllYjllMmQ0YWNkMWYxZWJmN2Fh
ODYyMjBkNjI1MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjE1MCwxMSArMjE1MCwyMCBAQCBlbmQKIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1
LCB0MCkKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJl
c29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1hY3Jv
IGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0
YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8gcmV0
dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAgICAg
IHJldHVybih0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAgICAgICBsb2FkaSBP
cFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9i
YWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2JqZWN0OjptX2dsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwgc2xvd1BhdGgKKyAg
ICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxvYWRpIE9wUmVzb2x2
ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0MgogICAgICAgICBnZXQo
bV9zY29wZSwgdDApCkBAIC0yMTc0LDE1ICsyMTgzLDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEo
b3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAu
ckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUo
dDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQy
KQorICAgIHJldHVybih0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZh
ciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJu
Q29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xv
YmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAg
cmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xv
c3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIxOTAsMjIgKzIyMDEsMjQgQEAgbGxpbnRPcFdpdGhN
ZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdl
dCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3Bl
KCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5q
ZWN0aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBn
ZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjaygu
ckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhcklu
amVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAg
cmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0
aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoK
ICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1p
YwpAQCAtMjI1Niw3ICsyMjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9z
Y29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogI2dHbG9i
YWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5nR2xvYmFsVmFyCi0g
ICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMp
CisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFt
aWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2No
IGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hh
bmdlZCB0b28uCiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcjoKQEAgLTIyNzcsNyAr
MjI5MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJv
bVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKIC5nR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MsIC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAg
IGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAj
IFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVj
ayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQg
dG9vLgogICAgIGdldFByb3BlcnR5KCkKIAogLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOgpAQCAtMjM2NCw3ICsyMzc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9f
c2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBH
bG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5wR2xvYmFsVmFy
Ci0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWlj
KQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1p
YykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2gg
Y2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFu
Z2VkIHRvby4KICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhz
aXplLCBnZXQsIG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpAQCAtMjM5MSw3ICsy
NDA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29w
ZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlz
IHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2lu
Y2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4K
ICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQs
IG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjg4MDQ1OGVjODc3ZTUx
ODYwNzRjMDlkMTI3NTgzNmQ3NDdjMzE0OC4uYWFhOTQzODY3NDRhZjZlNjk2NjU5YTA2ZjYwMTQ5
N2Y4ZTU1MjZmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0xMDY3LDI5ICsxMDY3LDMxIEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlKQogICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRo
ZSBzY29wZSByZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCiAgICAgQVNTRVJUKHJlc29sdmVU
eXBlICE9IE1vZHVsZVZhcik7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
Ly8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfcmVz
b2x2ZV9zY29wZS4KKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVz
b2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHJlc29s
dmVkU2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlZFNjb3BlKTsK
ICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5
KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAg
ICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAo
cmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotCisgICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9yZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5Owog
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0Owor
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmVkU2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihy
ZXNvbHZlZFNjb3BlKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0g
VW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5
cGUgPSBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrczsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2ds
b2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAgICAg
ICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgUkVUVVJOKHJlc29sdmVkU2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAxMzBhMGM4MmEyZjdlZjZl
ZDg3M2UwNjI5NTc5YzNhMzM2NzdhY2FjLi43ZWVhZjcwNGI0MzM1NDM5NjA5N2I5ZWI0ODIxMTc3
ZWI1YTE0OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMTI0LDI4ICsxMjQsMzkgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRU
b1Njb3BlR2xvYmFsKAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5
IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93
IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0
ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgIT0g
R2xvYmFsUHJvcGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIAotICAgICAgICAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVy
dHkgJiYgcmVzb2x2ZVR5cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcykKLSAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2
ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5y
ZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAg
ICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5y
ZXNvbHZlZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBl
OworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVz
b2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsK
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEu
bV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjb3Bl
LT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9w
ZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewor
ICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRh
dGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2Fs
VmFyLgorICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsK
ICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0g
ICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09IFVu
cmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVU
eXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1w
bCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkp
LnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7
CiAgICAgfQotICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOwpAQCAtMTc2LDIyICsxODcsMzYgQEAgaW5saW5lIHZvaWQgdHJ5
Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5t
ZXRhZGF0YShleGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVz
b2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2Ug
VW5yZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsK
LSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0g
VW5yZXNvbHZlZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVz
b2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5p
c20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dElu
Zm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdS
ZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsK
LSAgICAgICAgfSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkg
eworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7Cisg
ICAgfQorICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRp
bmcgRXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFs
UHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZp
cm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2
ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2Fs
VmFyIDogR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsTGV4aWNhbFZhcjsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwog
ICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dElu
Zm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5p
bml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRT
ZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJh
bmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4g
U2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4n
dCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYjcwY2Y1NmI0
OTM0N2FiZWFmMjNjNWEyNjM5MjU1YTk3NzJhMGZkLi4wN2Y0YzdkODc3MzQzZjI3MjJhNzJlMDlj
OTkxNGZmNzkzZjdiYTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xODUyLDE5ICsxODUyLDE5IEBAIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgSlNHbG9iYWxPYmplY3Q6OmludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMo
KQogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpub3Rp
ZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNl
dCkKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZN
JiB2bSkKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBzZXQpCi0gICAgICAg
IGVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoa2V5LmdldCgpKS5maXJlQWxs
KHZtLCAiTGV4aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0
aWVzIik7Ci0jZW5kaWYKLSAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChD
b2RlQmxvY2sqIGNvZGVCbG9jaykgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKSAhPSB0aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb2RlQmxvY2stPm5v
dGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKHZtLCBzZXQpOwotICAgICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwotICAgIH0pOworICAgIGlmICgrK21fZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCA9PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
KCkpIHsKKyAgICAgICAgLy8gU2luY2UgdGhlIGVwb2NoIG92ZXJmbG93cyBvciBhY3R1YWwgc2hh
ZG93aW5nIGhhcHBlbnMsIHdlIHNob3VsZCByZXdyaXRlIGFsbCB0aGUgQ29kZUJsb2NrIHRvIGFk
anVzdCB0byB0aGUgbmV3bHkgc3RhcnRlZCBnZW5lcmF0aW9uLgorICAgICAgICBtX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2ggPSAxOworICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0
ZXJhdGUoWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKHZtKTsKKyAg
ICAgICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgICAgIH0pOworICAgIH0K
ICAgICBzY29wZS5yZWxlYXNlKCk7CiB9CiAKQEAgLTE4ODksMTMgKzE4ODksMTUgQEAgYm9vbCBK
U0dsb2JhbE9iamVjdDo6aGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpIGNvbnN0CiB9CiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKLVdhdGNocG9pbnRTZXQqIEpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVu
Y2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitXYXRjaHBv
aW50U2V0KiBKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNl
dENvbmN1cnJlbnRseShVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xv
Y2spOwogICAgIHJldHVybiBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRz
LmdldCh1aWQpOwogfQogCiBXYXRjaHBvaW50U2V0JiBKU0dsb2JhbE9iamVjdDo6ZW5zdXJlUmVm
ZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewor
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlX
YXRjaHBvaW50U2V0c0xvY2spOwogICAgIHJldHVybiBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0
eVdhdGNocG9pbnRTZXRzLmVuc3VyZSh1aWQsIFtdIHsKICAgICAgICAgcmV0dXJuIFdhdGNocG9p
bnRTZXQ6OmNyZWF0ZShJc1dhdGNoZWQpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IDNhMTM4MmQ1Nzk3OWNjMjliMTZmYjY4ZTkzZjRmYjdkOTdlNmUzOWQuLjcxM2QyZGQzZTk0ZTk2
NTdlZjBhYzcxM2I2NjZkODMxZWZiYzBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDg2LDEwICs0ODYsMTIgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgdXNpbmcgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2lu
dFNldHMgPSBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZjxXYXRjaHBvaW50
U2V0PiwgSWRlbnRpZmllclJlcEhhc2g+OwogICAgIFJlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdh
dGNocG9pbnRTZXRzIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHM7Cisg
ICAgQ29uY3VycmVudEpTTG9jayBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRT
ZXRzTG9jazsKICNlbmRpZgogCiAgICAgYm9vbCBtX2V2YWxFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV93ZWJBc3NlbWJseUVuYWJsZWQgeyB0cnVlIH07CisgICAgdW5zaWduZWQgbV9nbG9i
YWxMZXhpY2FsQmluZGluZ0Vwb2NoIHsgMSB9OwogICAgIFN0cmluZyBtX2V2YWxEaXNhYmxlZEVy
cm9yTWVzc2FnZTsKICAgICBTdHJpbmcgbV93ZWJBc3NlbWJseURpc2FibGVkRXJyb3JNZXNzYWdl
OwogICAgIFJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKQEAgLTUyMiw3ICs1MjQsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1f
cnVudGltZUZsYWdzOyB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBXYXRjaHBvaW50U2V0
KiBnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKik7
CisgICAgV2F0Y2hwb2ludFNldCogZ2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldENv
bmN1cnJlbnRseShVbmlxdWVkU3RyaW5nSW1wbCopOwogICAgIFdhdGNocG9pbnRTZXQmIGVuc3Vy
ZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICNl
bmRpZgogCkBAIC03NTEsNyArNzUzLDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
aW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpOwogI2VuZGlmIC8vIEVOQUJMRShJTlRM
KQogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNvbnN0IElk
ZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIGJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZN
Jik7CisgICAgdW5zaWduZWQgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIGNvbnN0IHsgcmV0
dXJuIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qg
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsgfQorICAgIHVu
c2lnbmVkKiBhZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgeyByZXR1cm4gJm1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQogCiAgICAgdm9pZCBzZXRDb25zb2xlQ2xpZW50
KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9jb25zb2xlQ2xpZW50ID0gY29uc29s
ZUNsaWVudDsgfQogICAgIENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnNvbGVDbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAppbmRleCBlNjdkOTM5M2UwYzI2OGY4OTE3Yzk4MjI5YzFhZjM0OGFlMjFmMzYxLi40Yzlm
NmI2YjRlMTY5YWRjY2E4MTI0OTM0OTczMDIxMmYxMzgyMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC01MDgsNiArNTA4LDcgQEAgY29uc3RleHByIGJvb2wg
ZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KGJvb2wsIHRyYWNl
TExJbnRFeGVjdXRpb24sIGZhbHNlLCBDb25maWd1cmFibGUsIG51bGxwdHIpIFwKICAgICB2KGJv
b2wsIHRyYWNlTExJbnRTbG93UGF0aCwgZmFsc2UsIENvbmZpZ3VyYWJsZSwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVs
bHB0cikgXAorICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5n
RXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBsZXhpY2FsIGJp
bmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUsIENvZGVCbG9j
ayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQgZ2xvYmFsbHku
IEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2
YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dy
YW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcAppbmRleCAxYzIxOTY3ZmMxZDgyMTgyZjczMzVhMGQ3ZjdhYmE5OWVjZGM1
YjJlLi5kNGI1ODhjNWRmMzQ4ZGZkNzJiZTU4NmZjZDYwODMwYWEwMTRmYTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBA
IC0xMDcsNyArMTA3LDYgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXpl
R2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25t
ZW50JiB2YXJpYWJsZURlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT52YXJpYWJsZURl
Y2xhcmF0aW9ucygpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxEZWNs
YXJhdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bGV4aWNhbERlY2xhcmF0aW9ucygpOwotICAg
IElkZW50aWZpZXJTZXQgc2hhZG93ZWRQcm9wZXJ0aWVzOwogICAgIC8vIFRoZSBFUzYgc3BlYyBz
YXlzIHRoYXQgbm8gdmFycy9nbG9iYWwgcHJvcGVydGllcy9sZXQvY29uc3QgY2FuIGJlIGR1cGxp
Y2F0ZWQgaW4gdGhlIGdsb2JhbCBzY29wZS4KICAgICAvLyBUaGlzIGNhcnJpZWQgb3V0IHNlY3Rp
b24gMTUuMS44IG9mIHRoZSBFUzYgc3BlYzogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRp
YXRpb24KICAgICB7CkBAIC0xMzEsMTEgKzEzMCw5IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxG
CiAgICAgICAgICAgICAgICAgLy8gTGV4aWNhbCBiaW5kaW5ncyBjYW4gc2hhZG93IGdsb2JhbCBw
cm9wZXJ0aWVzIGlmIHRoZSBnaXZlbiBwcm9wZXJ0eSdzIGF0dHJpYnV0ZSBpcyBjb25maWd1cmFi
bGUuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNz
ZWMtZ2xvYmFsZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uIHN0ZXAgNS1jLCBgaGFzUmVzdHJpY3Rl
ZEdsb2JhbGAgYmVjb21lcyBmYWxzZQogICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgd2UgbWF5
IGVtaXQgR2xvYmFsUHJvcGVydHkgbG9vayB1cCBpbiBieXRlY29kZXMgYWxyZWFkeSBhbmQgaXQg
bWF5IGNhY2hlIHRoZSB2YWx1ZSBmb3IgdGhlIGdsb2JhbCBzY29wZS4KLSAgICAgICAgICAgICAg
ICAvLyBUbyBtYWtlIGl0IGludmFsaWQsIHdlIGl0ZXJhdGUgYWxsIHRoZSBDb2RlQmxvY2tzIGFu
ZCByZXdyaXRlIHRoZSBpbnN0cnVjdGlvbiB0byBjb252ZXJ0IEdsb2JhbFByb3BlcnR5IHRvIEds
b2JhbExleGljYWxWYXIuCi0gICAgICAgICAgICAgICAgLy8gMS4gSW4gTExJbnQsIHdlIGFsd2F5
cyBjaGVjayBtZXRhZGF0YSdzIHJlc29sdmVUeXBlLiBTbyByZXdyaXR0ZW4gaW5zdHJ1Y3Rpb24g
anVzdCB3b3Jrcy4KLSAgICAgICAgICAgICAgICAvLyAyLiBJbiBCYXNlbGluZSBKSVQsIHdlIGNo
ZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUgaW4gR2xvYmFsUHJvcGVydHkgY2FzZSBzbyB0aGF0
IHdlIGNhbiBub3RpY2Ugb25jZSBpdCBpcyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgIC8vIFRv
IG1ha2UgaXQgaW52YWxpZCwKKyAgICAgICAgICAgICAgICAvLyAxLiBJbiBMTEludCBhbmQgQmFz
ZWxpbmUsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggYW5kIGl0IHdv
cmtzLgogICAgICAgICAgICAgICAgIC8vIDMuIEluIERGRyBhbmQgRlRMLCB3ZSB3YXRjaCB0aGUg
d2F0Y2hwb2ludCBhbmQgamV0dGlzb24gb25jZSBpdCBpcyBmaXJlZC4KLSAgICAgICAgICAgICAg
ICBzaGFkb3dlZFByb3BlcnRpZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9va1VwU3RhdHVzOjpO
b3RGb3VuZDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIwNiwxMiArMjAzLDE1IEBAIEpT
T2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0m
IHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXRG
b3JBc3NlcnQgPT0gb2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlmICghc2hhZG93
ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICBnbG9iYWxPYmplY3QtPm5vdGlmeUxl
eGljYWxCaW5kaW5nU2hhZG93aW5nKHZtLCBXVEZNb3ZlKHNoYWRvd2VkUHJvcGVydGllcykpOwot
ICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYgKGxleGljYWxE
ZWNsYXJhdGlvbnMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2Fs
RGVjbGFyYXRpb25zKSB7CisgICAgICAgICAgICAvLyBJZiBXYXRjaHBvaW50U2V0IGV4aXN0cywg
anVzdCBmaXJlIGl0LiBTaW5jZSBERkcgV2F0Y2hwb2ludFNldCBhZGRpdGlvbiBpcyBhbHNvIGRv
bmUgb24gdGhlIG1haW4gdGhyZWFkLCB3ZSBjYW4gc3luYyB0aGVtLgorICAgICAgICAgICAgLy8g
U28gdGhhdCB3ZSBkbyBub3QgY3JlYXRlIFdhdGNocG9pbnRTZXQgaGVyZS4gREZHIHdpbGwgY3Jl
YXRlIGlmIG5lY2Vzc2FyeSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICBpZiAoYXV0
byogd2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0
Y2hwb2ludFNldENvbmN1cnJlbnRseShlbnRyeS5rZXkuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IHdhdGNocG9pbnRTZXQtPmZpcmVBbGwodm0sICJMZXhpY2FsIGJpbmRpbmcgc2hhZG93cyB0aGUg
ZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMiKTsKKyAgICAgICAgfQorICAgICAgICBnbG9iYWxP
YmplY3QtPmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKHZtKTsKICAgICB9Ci0KICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCA3NzdhODUzYmZlNzA5Zjk0MmFjNjRmOGI0MTcxN2UwYTk0YWI2
N2IwLi40MWFiY2NjMDQ5ZmFmZjNmZjQ2NTdjYmE5MDY0Y2M3NDg4NGQ0M2U5IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE5LTAxLTE4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5v
cmc+CisKKyAgICAgICAgW0pTQ10gSW52YWxpZGF0ZSBvbGQgc2NvcGUgb3BlcmF0aW9ucyB1c2lu
ZyBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3
MzgwODY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRl
bGV0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGJhcik6
CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHkt
YnVtcC1jb3VudGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdl
dDEpOgorICAgICAgICAoZ2V0Mik6CisgICAgICAgIChnZXQxSWYpOgorICAgICAgICAoZ2V0Mklm
KToKKyAgICAgICAgKiBzdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0
eS1ldmVuLWlmLWl0LWZhaWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKGZvbyk6CisKIDIwMTktMDEtMTcgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgU3RyaW5nT2JqZWN0VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUg
Y2hlY2sgZm9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgb2JqZWN0IHN0cnVjdHVyZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1i
ZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUt
Z2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTlmZTBkNTFj
NTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0MTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVs
ZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KK25vSW5saW5l
KHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICBmb28gPSA0MjsKK30KKwor
YmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9iYWxUaGlzLmZvbzsKKyQuZXZhbFNjcmlwdChgY29u
c3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhyb3coKCkgPT4gYmFyKCksIGBUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAt
Y291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwt
cHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZGNkZDA2ZDIwODliZDlmMDk1
YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9z
Y29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpAQCAt
MCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVsdCgiLS10aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKworZm9vMSA9
IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdldDEoKSB7CisgICAgcmV0dXJuIGZvbzE7Cit9Citu
b0lubGluZShnZXQxKTsKKworZnVuY3Rpb24gZ2V0MigpIHsKKyAgICByZXR1cm4gZm9vMjsKK30K
K25vSW5saW5lKGdldDIpOworCitmdW5jdGlvbiBnZXQxSWYoY29uZGl0aW9uKSB7CisgICAgaWYg
KGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJuIGZvbzE7CisgICAgcmV0dXJuIC0xOworfQorbm9J
bmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24gZ2V0MklmKGNvbmRpdGlvbikgeworICAgIGlmIChj
b25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28yOworICAgIHJldHVybiAtMTsKK30KK25vSW5s
aW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91
bGRCZShnZXQxKCksIDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUo
Z2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAgIHNob3VsZEJlKGdldDFJ
Zih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKHRydWUpLCAyKTsKKyAgICBzaG91bGRC
ZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOwor
fQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZvbzEgPSA0MTtgKTsKKyQuZXZhbFNjcmlwdChgY29u
c3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAg
c2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hv
dWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxk
QmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0xKTsK
K30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwgNDEpOworc2hvdWxkQmUoZ2V0MklmKHRydWUpLCA0
Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xv
YmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1v
cGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdmNmNjYjNhYTQwOTc2MTQ2YzY1NQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJv
cGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxz
ZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNz
YWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3Ip
fWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cpOworCitmdW5jdGlvbiBmb28oKSB7CisgICAg
YmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlzKTsKK2ZvbygpOworJC5l
dmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycpOworc2hvdWxkVGhyb3coKCkgPT4gZm9vKCksIGBU
eXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359578</attachid>
            <date>2019-01-18 19:13:37 -0800</date>
            <delta_ts>2019-01-18 19:20:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118191336.patch</filename>
            <type>text/plain</type>
            <size>53017</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5iNTA2ZGVmNzZmNjY2ZTcx
MGYyZjgwMWI3NjhlOTc2NDA3YzM4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorCiAyMDE5LTAx
LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBieXRl
Y29kZSBmaWVsZHMgYW5kIGVuc3VyZSB0aGF0IExMSW50IGluc3RydWN0aW9ucyBmb3IgYWNjZXNz
aW5nIHRoZW0gYXJlIGFwcHJvcHJpYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYmI1ZjEyNjE2MDBlNWZkYjE5NGVhZTk4YzA4YjU0
NjQ3ZDdkM2I3ZC4uMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2ZDMzZmQ1NTc1NDIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC04
MzMsOCArODMzLDExIEBACiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICByZXNvbHZl
VHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1
bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zmc2V0IDYKKyAgICAgICAgXzA6
IHsgIyBvZmZzZXQgNQorICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g6IHVuc2lnbmVkLAorICAgICAgICB9
LAorICAgICAgICBfMTogeyAjIG9mZnNldCA2CiAgICAgICAgICAgICAgIyB3cml0dGVuIGR1cmlu
ZyBsaW5raW5nCiAgICAgICAgICAgICAgbGV4aWNhbEVudmlyb25tZW50OiBXcml0ZUJhcnJpZXJC
YXNlW0pTQ2VsbF0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUgPT0gTW9kdWxlVmFyCiAg
ICAgICAgICAgICAgc3ltYm9sVGFibGU6IFdyaXRlQmFycmllckJhc2VbU3ltYm9sVGFibGVdLCAj
IGxleGljYWxFbnZpcm9ubWVudCAmJiB0eXBlICE9IE1vZHVsZVZhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYzYzNDU2ODZmYTFlNTNkNTNj
NDkzMzg1OTdlN2MxZTM1NTVlMjFjLi42OGQzZDJkMmJlNzlmNDA1ZGM5NGQwNzFhMTQwNDk5ZjI1
OTQzMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMjY2OCwxOCArMjY2OCwyMyBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4
aXRTaXRlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLXZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJT
ZXQmIHNldCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB7
CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBpdCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9PSBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBhdXRvIGlzU2hhZG93ZWQgPSBb
Jl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxl
LT5jb250YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAgIGZvciAoY29uc3QgYXV0byYg
aW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkg
ewpAQCAtMjY4OSw3MiArMjY5NCwxMyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJp
bmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCiAgICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZl
VHlwZTsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3Bl
cnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRh
aW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0ds
b2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAg
ICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGlj
YWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMg
cmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2Rl
Lm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBH
ZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNl
cHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICAgICAg
SlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxv
Y2sobWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChjb25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zZXQodm0sIHRoaXMsIGNv
bnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJ
bnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9zY29wZSBmcm9tICIsIG9yaWdp
bmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRvd2VkKGlkZW50LmltcGwoKSkp
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKLSAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9
PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAg
aWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2Nv
cGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBm
aW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2Ug
cGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVP
cCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNv
bHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmlnaW5hbFJlc29sdmVUeXBlKSA/
IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZh
ciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gb3Aub3BlcmFuZDsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2NrSW50ZXJuYWw6OnZlcmJvc2Us
ICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwg
IiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgUmVzb2x2ZVR5
cGUgb3JpZ2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFp
bnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xv
YmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAg
ICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNh
bCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyBy
ZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUu
bV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBp
ZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IER5bmFtaWMpOwotCi0g
ICAgICAgICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gb3AudHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25D
aGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIHJlc29sdmVUeXBl
LCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUg
b3BfcHV0X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3ZWI0ZTZjNmZjZDBlYjI3NmY4
MDUzMTliYTBiZmU0Li45NGU2YmQyZWUwZWZiMmJhMDc0Y2VhMjUwZDgyZjczMTgyYTZlMTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xOTUsNyAr
MTk1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eShWTSYpOwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNv
bnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRl
KCk7CiAKICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lkIGR1bXBTb3VyY2UoUHJpbnRT
dHJlYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggNGUxOGRmNzAzZDNkMjE2Njg2ZjU4NTk4MjRmMmFjNmNiOTdmZTAwZS4uOWQx
NjE0ZGVhMzA0MmI3ZTJiYzA2MDhmMWU3OGQ0YzY1MTkyMTI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYxNjcsOSArNjE2Nywx
MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0
NwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRN
b2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJS
ZW1hcFtieXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFk
ZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEZvcmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC02MjgxLDggKzYyODIsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxl
IGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlz
IGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAg
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2Rl
KCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3Jp
cHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNo
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbigpOwogCkBAIC02NDU2LDggKzY0NTksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4K
ICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVk
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkg
IT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsK
KyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1
czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAppbmRleCA4ZjdiOWNl
ZDk5YjhmNzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi45NDExNDE2NWUzOTkxNmJlMmM1M2Iw
Y2VmMGU0YTE1ZDRmYzE0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApAQCAtMzYsMTYgKzM2LDIzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotYm9vbCBEZXNpcmVkR2xvYmFs
UHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERlc2lyZWRJZGVudGlmaWVycyYg
aWRlbnRpZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjppc1N0aWxsVmFsaWRP
bk1haW5UaHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQogewor
ICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3Bl
cnR5IDogbV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRlbnRpZmllcnMuYXQocHJvcGVy
dHkuaWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQg
PSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2lu
dFNldCh1aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRTZXQtPmlzU3RpbGxWYWxp
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpOworICAgICAgICB7Cisg
ICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIGlm
ICghc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52YWxpZGF0ZWQgV2F0Y2hwb2lu
dFNldCBoZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisgICAg
ICAgIHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBl
eGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICBpc1N0aWxsVmFsaWQgPSBmYWxz
ZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZDsKIH0K
IAogdm9pZCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5QWRkKENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzLCBDb21tb25EYXRhJiBjb21t
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0ZTM4YTQ2YjljZGY5ZjU0ZGFj
MDkyOC4uNjliZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQxNzE0NWY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRp
ZXMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xvYmFsUHJvcGVydGllcyB7CiAg
ICAgICAgIG1fc2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0gICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJik7CisgICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRlbnRpZmllcnMmKTsKIAogICAg
IHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVudGlmaWVycyYsIENvbW1vbkRh
dGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4M2NjMWQ0
YjY0ZWI0ZGI5MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi4yYTlkZWQxYzlmNzcxMTIzNmM3YWVj
NTg2MGMxMmE1OTQwYTM3OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cApAQCAtMTA1OCw2ICsxMDU4LDE5IEBAIGJvb2wgR3JhcGg6OmlzU2FmZVRvTG9hZChKU09iamVj
dCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJldHVybiBtX3NhZmVUb0xvYWQu
Y29udGFpbnMoc3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7CiB9CiAKK2Jvb2wgR3JhcGg6
OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRl
bnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMg
dGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9w
ZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB0aGlzIGlzIG5vdCBkb25lIHll
dCBzaW5jZSB3ZSBkbyBub3QgZXhlY3V0ZSB0aGlzIG9wIGFnYWluLiBKdXN0IGVtaXR0aW5nIEZv
cmNlT1NSRXhpdCB0byB1cGRhdGUgdGhlIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0byB0aGlz
IGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdldFJlZmVy
ZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkodWlkKSkgeworICAgICAgICBp
ZiAoIXdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0
cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVu
ZXNzLmZpbmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCBlZTJlMjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3
MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYg
aXQncyBrbm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZl
biBvZmZzZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdo
aWNoIGNvbmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wg
aXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0
YWUwMGZkZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2
b2lkIFBsYW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5U
aHJlYWQoKQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25N
YWluVGhyZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMu
aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29t
cGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCA5MmYzN2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4xNjgyZWUzODAwMzAx
ZmU1ODM3ZWI3MTRjNjlmMjRmYWVkOTJiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODAzLDYgKzgwMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9j
b25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGxvYWRQdHIoY29uc3Rh
bnRTY29wZVNsb3QsIHJlZ1QwKTsKKyAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFk
ZHJlc3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CiAgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggMzNkNmFlNDYwODY0Mzc2YTA1NDBiNjlkMTU2NGJlNWVmYWMxMzY5Zi4uZDAzOTM2MjRi
MDAyM2FhODA4NWNmMTkyMGZkMWRkMTk2OGQwMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC04MDYsNiArODA2
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAvLyBTaW5jZSB0aGVzZSBHbG9iYWxQcm9wZXJ0
eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFyLCB3ZSBzaG91bGQgbG9hZCB0aGUg
dmFsdWUgZnJvbSBtZXRhZGF0YS4KICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90
ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVj
dGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CisgICAgICAg
IGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKCkpLCByZWdUMSkpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVnVDEpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7
CiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3N2I3NmEzMDAzMGYuLmM0NDNiNDhiNmNh
NTdlYzhmMGE5Y2QyNjMxYWQ2MWU2ODcyMjQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDky
LDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBP
cFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1h
Y3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6
TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8g
cmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAg
ICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAg
ICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2Jq
ZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwg
c2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxv
YWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0Mgog
ICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTE3LDE1ICsyMTI2LDE3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENv
bnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHlu
YW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0MCkKIAogLnJHbG9iYWxWYXI6CiAg
ICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZh
cjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZh
cjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIxMzMsMjIgKzIx
NDQsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVT
Y29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmlu
ZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MK
LSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0
MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MsIC5yRHluYW1pYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAxNDhjODM5NTA3ZjVlYjdlOWJmNTYx
NzkxYmJiMGMyZTc0Yjk1MjRlLi5lMzJiNjAxNTllYjllMmQ0YWNkMWYxZWJmN2FhODYyMjBkNjI1
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMjE1MCwxMSArMjE1MCwyMCBAQCBlbmQKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAot
ICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29w
ZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1hY3JvIGdldENvbnN0
YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1f
Y29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8gcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayhz
bG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAgICAgICBsb2FkaSBPcFJlc29sdmVT
Y29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3Rd
LCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbExleGljYWxC
aW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwgc2xvd1BhdGgKKyAgICBlbmQKKwog
ICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpN
ZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0MgogICAgICAgICBnZXQobV9zY29wZSwg
dDApCkBAIC0yMTc0LDE1ICsyMTgzLDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2
ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKICNy
R2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZh
cgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAg
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJl
dHVybih0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9i
YWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRT
Y29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNh
bFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwg
LnJNb2R1bGVWYXIKQEAgLTIxOTAsMjIgKzIyMDEsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBy
ZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFu
dFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMs
IHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2so
LnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFu
dFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5l
cSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwpAQCAtMjI1
Niw3ICsyMjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BH
ZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogI2dHbG9iYWxQcm9wZXJ0
eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5nR2xvYmFsVmFyCi0gICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhp
cyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNp
bmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28u
CiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcjoKQEAgLTIyNzcsNyArMjI5MCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKIC5nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRo
U3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3Ry
dWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3
aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAg
IGdldFByb3BlcnR5KCkKIAogLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAt
MjM2NCw3ICsyMzc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9w
UHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9w
ZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5wR2xvYmFsVmFyCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlz
IHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2lu
Y2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4K
ICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQs
IG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpAQCAtMjM5MSw3ICsyNDA0LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFdpdGhTdHJ1
Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlzIHN0cnVjdHVy
ZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0
aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBwdXRQ
cm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fc2NvcGUs
IG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjg4MDQ1OGVjODc3ZTUxODYwNzRjMDlk
MTI3NTgzNmQ3NDdjMzE0OC4uYWFhOTQzODY3NDRhZjZlNjk2NjU5YTA2ZjYwMTQ5N2Y4ZTU1MjZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC0xMDY3LDI5ICsxMDY3LDMxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9y
ZXNvbHZlX3Njb3BlKQogICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSBy
ZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCiAgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1v
ZHVsZVZhcik7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mp
IHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
KyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogLy8gR2xvYmFs
IExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfcmVzb2x2ZV9zY29w
ZS4KKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHJlc29sdmVkU2NvcGUt
PmlzR2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlZFNjb3BlKTsKICAgICAgICAg
ICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlk
ZW50KTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgaWYgKGhh
c1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihl
eGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotCisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNv
bHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHJlc29sdmVkU2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsK
ICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihyZXNvbHZlZFNj
b3BlKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9i
YWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgUkVUVVJOKHJlc29sdmVkU2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAxMzBhMGM4MmEyZjdlZjZlZDg3M2UwNjI5
NTc5YzNhMzM2NzdhY2FjLi43ZWVhZjcwNGI0MzM1NDM5NjA5N2I5ZWI0ODIxMTc3ZWI1YTE0OTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMTI0LDI4ICsxMjQsMzkgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xv
YmFsKAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4
aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hl
IHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJv
cGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIAotICAgICAgICAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVydHkgJiYgcmVz
b2x2ZVR5cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZlZFBy
b3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOworICAgICAg
ICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBH
bG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7
IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAg
ICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAg
Ly8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0
X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAg
ICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQg
PSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0gICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQ
cm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBt
ZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwpAQCAtMTc2LDIyICsxODcsMzYgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRG
cm9tU2NvcGVHbG9iYWwoCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShl
eGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9w
ZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZl
ZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUg
PSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2lj
ayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlw
ZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
fSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgeworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAg
IGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2gg
aXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkg
dG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCog
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDogR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZl
VHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBl
KSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNh
bFZhcjsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRy
eS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJs
ZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhl
eSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhv
dyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYjcwY2Y1NmI0OTM0N2FiZWFm
MjNjNWEyNjM5MjU1YTk3NzJhMGZkLi5jN2E3YzM1NjBhMTgzYTBiMDUwZjYzMzk0MGU2YmM2OWY1
MjcyZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xODUyLDIwICsxODUyLDE3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
SlNHbG9iYWxPYmplY3Q6OmludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpub3RpZnlMZXhpY2Fs
QmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKK3ZvaWQg
SlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZNJiB2bSkKIHsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBzZXQpCi0gICAgICAgIGVuc3VyZVJl
ZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoa2V5LmdldCgpKS5maXJlQWxsKHZtLCAiTGV4
aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0aWVzIik7Ci0j
ZW5kaWYKLSAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChDb2RlQmxvY2sq
IGNvZGVCbG9jaykgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAhPSB0
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGlj
YWxCaW5kaW5nU2hhZG93aW5nKHZtLCBzZXQpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoKyttX2dsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBvdmVyZmxvd3Mg
b3IgYWN0dWFsIHNoYWRvd2luZyBoYXBwZW5zLCB3ZSBzaG91bGQgcmV3cml0ZSBhbGwgdGhlIENv
ZGVCbG9jayB0byBhZGp1c3QgdG8gdGhlIG5ld2x5IHN0YXJ0ZWQgZ2VuZXJhdGlvbi4KKyAgICAg
ICAgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMTsKKyAgICAgICAgdm0uaGVhcC5jb2Rl
QmxvY2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKKyAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1Vw
ZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1
ZXVlTWljcm90YXNrKFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKQEAgLTE4ODksMTMgKzE4ODYsMTUg
QEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpIGNvbnN0CiB9
CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLVdhdGNocG9pbnRTZXQqIEpTR2xvYmFsT2JqZWN0Ojpn
ZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CitXYXRjaHBvaW50U2V0KiBKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0
Y2hwb2ludFNldENvbmN1cnJlbnRseShVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogeworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBv
aW50U2V0c0xvY2spOwogICAgIHJldHVybiBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNo
cG9pbnRTZXRzLmdldCh1aWQpOwogfQogCiBXYXRjaHBvaW50U2V0JiBKU0dsb2JhbE9iamVjdDo6
ZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKQogeworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2VkR2xvYmFs
UHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2spOwogICAgIHJldHVybiBtX3JlZmVyZW5jZWRHbG9i
YWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzLmVuc3VyZSh1aWQsIFtdIHsKICAgICAgICAgcmV0dXJu
IFdhdGNocG9pbnRTZXQ6OmNyZWF0ZShJc1dhdGNoZWQpOwogICAgIH0pLml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDNhMTM4MmQ1Nzk3OWNjMjliMTZmYjY4ZTkzZjRmYjdkOTdlNmUzOWQuLjcxM2Qy
ZGQzZTk0ZTk2NTdlZjBhYzcxM2I2NjZkODMxZWZiYzBmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDg2LDEwICs0ODYsMTIgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgdXNpbmcgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5
V2F0Y2hwb2ludFNldHMgPSBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIFJlZjxX
YXRjaHBvaW50U2V0PiwgSWRlbnRpZmllclJlcEhhc2g+OwogICAgIFJlZmVyZW5jZWRHbG9iYWxQ
cm9wZXJ0eVdhdGNocG9pbnRTZXRzIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2lu
dFNldHM7CisgICAgQ29uY3VycmVudEpTTG9jayBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdh
dGNocG9pbnRTZXRzTG9jazsKICNlbmRpZgogCiAgICAgYm9vbCBtX2V2YWxFbmFibGVkIHsgdHJ1
ZSB9OwogICAgIGJvb2wgbV93ZWJBc3NlbWJseUVuYWJsZWQgeyB0cnVlIH07CisgICAgdW5zaWdu
ZWQgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoIHsgMSB9OwogICAgIFN0cmluZyBtX2V2YWxE
aXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBTdHJpbmcgbV93ZWJBc3NlbWJseURpc2FibGVkRXJy
b3JNZXNzYWdlOwogICAgIFJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKQEAgLTUyMiw3ICs1
MjQsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1fcnVudGltZUZsYWdzOyB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBXYXRj
aHBvaW50U2V0KiBnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJp
bmdJbXBsKik7CisgICAgV2F0Y2hwb2ludFNldCogZ2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldENvbmN1cnJlbnRseShVbmlxdWVkU3RyaW5nSW1wbCopOwogICAgIFdhdGNocG9pbnRT
ZXQmIGVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0lt
cGwqKTsKICNlbmRpZgogCkBAIC03NTEsNyArNzUzLDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpOwogI2VuZGlmIC8vIEVO
QUJMRShJTlRMKQogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYs
IGNvbnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIGJ1bXBHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKFZNJik7CisgICAgdW5zaWduZWQgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3QgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsg
fQorICAgIHVuc2lnbmVkKiBhZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgeyBy
ZXR1cm4gJm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQogCiAgICAgdm9pZCBzZXRDb25z
b2xlQ2xpZW50KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9jb25zb2xlQ2xpZW50
ID0gY29uc29sZUNsaWVudDsgfQogICAgIENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnNvbGVDbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAppbmRleCBlNjdkOTM5M2UwYzI2OGY4OTE3Yzk4MjI5YzFhZjM0OGFlMjFm
MzYxLi40YzlmNmI2YjRlMTY5YWRjY2E4MTI0OTM0OTczMDIxMmYxMzgyMTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC01MDgsNiArNTA4LDcgQEAgY29uc3Rl
eHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsKICAgICB2KGJv
b2wsIHRyYWNlTExJbnRFeGVjdXRpb24sIGZhbHNlLCBDb25maWd1cmFibGUsIG51bGxwdHIpIFwK
ICAgICB2KGJvb2wsIHRyYWNlTExJbnRTbG93UGF0aCwgZmFsc2UsIENvbmZpZ3VyYWJsZSwgbnVs
bHB0cikgXAogICAgIHYoYm9vbCwgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbiwgZmFsc2UsIE5v
cm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBs
ZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUs
IENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQg
Z2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKIAogCiBlbnVtIE9w
dGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCAxYzIxOTY3ZmMxZDgyMTgyZjczMzVhMGQ3Zjdh
YmE5OWVjZGM1YjJlLi5kNGI1ODhjNWRmMzQ4ZGZkNzJiZTU4NmZjZDYwODMwYWEwMTRmYTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwCkBAIC0xMDcsNyArMTA3LDYgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpp
bml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICBK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiB2YXJpYWJsZURlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT52
YXJpYWJsZURlY2xhcmF0aW9ucygpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxl
eGljYWxEZWNsYXJhdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bGV4aWNhbERlY2xhcmF0aW9u
cygpOwotICAgIElkZW50aWZpZXJTZXQgc2hhZG93ZWRQcm9wZXJ0aWVzOwogICAgIC8vIFRoZSBF
UzYgc3BlYyBzYXlzIHRoYXQgbm8gdmFycy9nbG9iYWwgcHJvcGVydGllcy9sZXQvY29uc3QgY2Fu
IGJlIGR1cGxpY2F0ZWQgaW4gdGhlIGdsb2JhbCBzY29wZS4KICAgICAvLyBUaGlzIGNhcnJpZWQg
b3V0IHNlY3Rpb24gMTUuMS44IG9mIHRoZSBFUzYgc3BlYzogaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nbG9iYWxkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24KICAgICB7CkBAIC0xMzEsMTEgKzEzMCw5IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGCiAgICAgICAgICAgICAgICAgLy8gTGV4aWNhbCBiaW5kaW5ncyBjYW4gc2hhZG93
IGdsb2JhbCBwcm9wZXJ0aWVzIGlmIHRoZSBnaXZlbiBwcm9wZXJ0eSdzIGF0dHJpYnV0ZSBpcyBj
b25maWd1cmFibGUuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtZ2xvYmFsZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uIHN0ZXAgNS1jLCBgaGFz
UmVzdHJpY3RlZEdsb2JhbGAgYmVjb21lcyBmYWxzZQogICAgICAgICAgICAgICAgIC8vIEhvd2V2
ZXIgd2UgbWF5IGVtaXQgR2xvYmFsUHJvcGVydHkgbG9vayB1cCBpbiBieXRlY29kZXMgYWxyZWFk
eSBhbmQgaXQgbWF5IGNhY2hlIHRoZSB2YWx1ZSBmb3IgdGhlIGdsb2JhbCBzY29wZS4KLSAgICAg
ICAgICAgICAgICAvLyBUbyBtYWtlIGl0IGludmFsaWQsIHdlIGl0ZXJhdGUgYWxsIHRoZSBDb2Rl
QmxvY2tzIGFuZCByZXdyaXRlIHRoZSBpbnN0cnVjdGlvbiB0byBjb252ZXJ0IEdsb2JhbFByb3Bl
cnR5IHRvIEdsb2JhbExleGljYWxWYXIuCi0gICAgICAgICAgICAgICAgLy8gMS4gSW4gTExJbnQs
IHdlIGFsd2F5cyBjaGVjayBtZXRhZGF0YSdzIHJlc29sdmVUeXBlLiBTbyByZXdyaXR0ZW4gaW5z
dHJ1Y3Rpb24ganVzdCB3b3Jrcy4KLSAgICAgICAgICAgICAgICAvLyAyLiBJbiBCYXNlbGluZSBK
SVQsIHdlIGNoZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUgaW4gR2xvYmFsUHJvcGVydHkgY2Fz
ZSBzbyB0aGF0IHdlIGNhbiBub3RpY2Ugb25jZSBpdCBpcyBjaGFuZ2VkLgorICAgICAgICAgICAg
ICAgIC8vIFRvIG1ha2UgaXQgaW52YWxpZCwKKyAgICAgICAgICAgICAgICAvLyAxLiBJbiBMTElu
dCBhbmQgQmFzZWxpbmUsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2gg
YW5kIGl0IHdvcmtzLgogICAgICAgICAgICAgICAgIC8vIDMuIEluIERGRyBhbmQgRlRMLCB3ZSB3
YXRjaCB0aGUgd2F0Y2hwb2ludCBhbmQgamV0dGlzb24gb25jZSBpdCBpcyBmaXJlZC4KLSAgICAg
ICAgICAgICAgICBzaGFkb3dlZFByb3BlcnRpZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9va1Vw
U3RhdHVzOjpOb3RGb3VuZDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIwNiwxMiArMjAz
LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3Bl
cnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChvZmZzZXRGb3JBc3NlcnQgPT0gb2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlm
ICghc2hhZG93ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICBnbG9iYWxPYmplY3Qt
Pm5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKHZtLCBXVEZNb3ZlKHNoYWRvd2VkUHJvcGVy
dGllcykpOwotICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYg
KGxleGljYWxEZWNsYXJhdGlvbnMuc2l6ZSgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7CisgICAgICAgICAgICAvLyBJZiBXYXRjaHBvaW50U2V0
IGV4aXN0cywganVzdCBmaXJlIGl0LiBTaW5jZSBERkcgV2F0Y2hwb2ludFNldCBhZGRpdGlvbiBp
cyBhbHNvIGRvbmUgb24gdGhlIG1haW4gdGhyZWFkLCB3ZSBjYW4gc3luYyB0aGVtLgorICAgICAg
ICAgICAgLy8gU28gdGhhdCB3ZSBkbyBub3QgY3JlYXRlIFdhdGNocG9pbnRTZXQgaGVyZS4gREZH
IHdpbGwgY3JlYXRlIGlmIG5lY2Vzc2FyeSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAg
ICBpZiAoYXV0byogd2F0Y2hwb2ludFNldCA9IGdsb2JhbE9iamVjdC0+Z2V0UmVmZXJlbmNlZFBy
b3BlcnR5V2F0Y2hwb2ludFNldENvbmN1cnJlbnRseShlbnRyeS5rZXkuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgIHdhdGNocG9pbnRTZXQtPmZpcmVBbGwodm0sICJMZXhpY2FsIGJpbmRpbmcgc2hh
ZG93cyB0aGUgZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMiKTsKKyAgICAgICAgfQorICAgICAg
ICBnbG9iYWxPYmplY3QtPmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKHZtKTsKICAgICB9
Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3NzdhODUzYmZlNzA5Zjk0MmFjNjRmOGI0MTcx
N2UwYTk0YWI2N2IwLi40MWFiY2NjMDQ5ZmFmZjNmZjQ2NTdjYmE5MDY0Y2M3NDg4NGQ0M2U5IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDE5LTAxLTE4ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNs
b3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gSW52YWxpZGF0ZSBvbGQgc2NvcGUgb3BlcmF0
aW9ucyB1c2luZyBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDMKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzQ3MzgwODY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHkt
YmVmb3JlLWRlbGV0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKGJhcik6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwt
cHJvcGVydHktYnVtcC1jb3VudGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKGdldDEpOgorICAgICAgICAoZ2V0Mik6CisgICAgICAgIChnZXQxSWYpOgorICAgICAg
ICAoZ2V0MklmKToKKyAgICAgICAgKiBzdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2Jh
bC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTktMDEtMTcgIFNhYW0gYmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nT2JqZWN0VXNlIHNob3VsZCBub3QgYmUgYSBz
dHJ1Y3R1cmUgY2hlY2sgZm9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgb2JqZWN0IHN0cnVjdHVyZQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1w
cm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRp
b24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YTlmZTBkNTFjNTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0MTIyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1i
ZWZvcmUtZGVsZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
K25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICBmb28gPSA0
MjsKK30KKworYmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9iYWxUaGlzLmZvbzsKKyQuZXZhbFNj
cmlwdChgY29uc3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhyb3coKCkgPT4gYmFyKCksIGBUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3Bl
cnR5LWJ1bXAtY291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNo
ZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZGNkZDA2ZDIw
ODliZDlmMDk1YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRl
ci5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVsdCgiLS10aHJlc2hvbGRGb3JHbG9i
YWxMZXhpY2FsQmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsK
KworZm9vMSA9IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdldDEoKSB7CisgICAgcmV0dXJuIGZv
bzE7Cit9Citub0lubGluZShnZXQxKTsKKworZnVuY3Rpb24gZ2V0MigpIHsKKyAgICByZXR1cm4g
Zm9vMjsKK30KK25vSW5saW5lKGdldDIpOworCitmdW5jdGlvbiBnZXQxSWYoY29uZGl0aW9uKSB7
CisgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJuIGZvbzE7CisgICAgcmV0dXJuIC0x
OworfQorbm9JbmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24gZ2V0MklmKGNvbmRpdGlvbikgewor
ICAgIGlmIChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28yOworICAgIHJldHVybiAtMTsK
K30KK25vSW5saW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsK
KyAgICBzaG91bGRCZShnZXQxKCksIDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgMik7CisgICAg
c2hvdWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAgIHNob3Vs
ZEJlKGdldDFJZih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKHRydWUpLCAyKTsKKyAg
ICBzaG91bGRCZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNl
KSwgLTEpOworfQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZvbzEgPSA0MTtgKTsKKyQuZXZhbFNj
cmlwdChgY29uc3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytp
KSB7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7
CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7Cisg
ICAgc2hvdWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxz
ZSksIC0xKTsKK30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwgNDEpOworc2hvdWxkQmUoZ2V0Mklm
KHRydWUpLCA0Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24t
Y2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVz
cy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdmNmNjYjNhYTQwOTc2MTQ2YzY1NQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1n
bG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cpOworCitmdW5jdGlvbiBmb28o
KSB7CisgICAgYmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlzKTsKK2Zv
bygpOworJC5ldmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycpOworc2hvdWxkVGhyb3coKCkgPT4g
Zm9vKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVy
dHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359579</attachid>
            <date>2019-01-18 19:20:34 -0800</date>
            <delta_ts>2019-01-18 19:25:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118192034.patch</filename>
            <type>text/plain</type>
            <size>52989</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5iNTA2ZGVmNzZmNjY2ZTcx
MGYyZjgwMWI3NjhlOTc2NDA3YzM4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorCiAyMDE5LTAx
LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBieXRl
Y29kZSBmaWVsZHMgYW5kIGVuc3VyZSB0aGF0IExMSW50IGluc3RydWN0aW9ucyBmb3IgYWNjZXNz
aW5nIHRoZW0gYXJlIGFwcHJvcHJpYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYmI1ZjEyNjE2MDBlNWZkYjE5NGVhZTk4YzA4YjU0
NjQ3ZDdkM2I3ZC4uMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2ZDMzZmQ1NTc1NDIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC04
MzMsOCArODMzLDExIEBACiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICByZXNvbHZl
VHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1
bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zmc2V0IDYKKyAgICAgICAgXzA6
IHsgIyBvZmZzZXQgNQorICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g6IHVuc2lnbmVkLAorICAgICAgICB9
LAorICAgICAgICBfMTogeyAjIG9mZnNldCA2CiAgICAgICAgICAgICAgIyB3cml0dGVuIGR1cmlu
ZyBsaW5raW5nCiAgICAgICAgICAgICAgbGV4aWNhbEVudmlyb25tZW50OiBXcml0ZUJhcnJpZXJC
YXNlW0pTQ2VsbF0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUgPT0gTW9kdWxlVmFyCiAg
ICAgICAgICAgICAgc3ltYm9sVGFibGU6IFdyaXRlQmFycmllckJhc2VbU3ltYm9sVGFibGVdLCAj
IGxleGljYWxFbnZpcm9ubWVudCAmJiB0eXBlICE9IE1vZHVsZVZhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYzYzNDU2ODZmYTFlNTNkNTNj
NDkzMzg1OTdlN2MxZTM1NTVlMjFjLi42OGQzZDJkMmJlNzlmNDA1ZGM5NGQwNzFhMTQwNDk5ZjI1
OTQzMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMjY2OCwxOCArMjY2OCwyMyBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4
aXRTaXRlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLXZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJT
ZXQmIHNldCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB7
CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBpdCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9PSBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBhdXRvIGlzU2hhZG93ZWQgPSBb
Jl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxl
LT5jb250YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAgIGZvciAoY29uc3QgYXV0byYg
aW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkg
ewpAQCAtMjY4OSw3MiArMjY5NCwxMyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJp
bmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCiAgICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZl
VHlwZTsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3Bl
cnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRh
aW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0ds
b2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAg
ICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGlj
YWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMg
cmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2Rl
Lm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBH
ZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNl
cHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICAgICAg
SlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxv
Y2sobWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChjb25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zZXQodm0sIHRoaXMsIGNv
bnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJ
bnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9zY29wZSBmcm9tICIsIG9yaWdp
bmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRvd2VkKGlkZW50LmltcGwoKSkp
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKLSAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9
PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAg
aWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2Nv
cGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBm
aW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2Ug
cGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVP
cCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNv
bHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmlnaW5hbFJlc29sdmVUeXBlKSA/
IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZh
ciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gb3Aub3BlcmFuZDsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2NrSW50ZXJuYWw6OnZlcmJvc2Us
ICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwg
IiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgUmVzb2x2ZVR5
cGUgb3JpZ2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFp
bnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xv
YmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAg
ICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNh
bCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyBy
ZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUu
bV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBp
ZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IER5bmFtaWMpOwotCi0g
ICAgICAgICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gb3AudHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25D
aGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIHJlc29sdmVUeXBl
LCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUg
b3BfcHV0X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3ZWI0ZTZjNmZjZDBlYjI3NmY4
MDUzMTliYTBiZmU0Li45NGU2YmQyZWUwZWZiMmJhMDc0Y2VhMjUwZDgyZjczMTgyYTZlMTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xOTUsNyAr
MTk1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eShWTSYpOwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNv
bnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRl
KCk7CiAKICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lkIGR1bXBTb3VyY2UoUHJpbnRT
dHJlYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggNGUxOGRmNzAzZDNkMjE2Njg2ZjU4NTk4MjRmMmFjNmNiOTdmZTAwZS4uOWQx
NjE0ZGVhMzA0MmI3ZTJiYzA2MDhmMWU3OGQ0YzY1MTkyMTI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYxNjcsOSArNjE2Nywx
MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0
NwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRN
b2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJS
ZW1hcFtieXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFk
ZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEZvcmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC02MjgxLDggKzYyODIsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxl
IGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlz
IGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAg
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2Rl
KCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3Jp
cHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNo
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbigpOwogCkBAIC02NDU2LDggKzY0NTksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4K
ICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVk
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkg
IT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsK
KyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1
czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAppbmRleCA4ZjdiOWNl
ZDk5YjhmNzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi45NDExNDE2NWUzOTkxNmJlMmM1M2Iw
Y2VmMGU0YTE1ZDRmYzE0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApAQCAtMzYsMTYgKzM2LDIzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotYm9vbCBEZXNpcmVkR2xvYmFs
UHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERlc2lyZWRJZGVudGlmaWVycyYg
aWRlbnRpZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjppc1N0aWxsVmFsaWRP
bk1haW5UaHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQogewor
ICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3Bl
cnR5IDogbV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRlbnRpZmllcnMuYXQocHJvcGVy
dHkuaWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQg
PSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2lu
dFNldCh1aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRTZXQtPmlzU3RpbGxWYWxp
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpOworICAgICAgICB7Cisg
ICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIGlm
ICghc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52YWxpZGF0ZWQgV2F0Y2hwb2lu
dFNldCBoZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisgICAg
ICAgIHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBl
eGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICBpc1N0aWxsVmFsaWQgPSBmYWxz
ZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZDsKIH0K
IAogdm9pZCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5QWRkKENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzLCBDb21tb25EYXRhJiBjb21t
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0ZTM4YTQ2YjljZGY5ZjU0ZGFj
MDkyOC4uNjliZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQxNzE0NWY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRp
ZXMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xvYmFsUHJvcGVydGllcyB7CiAg
ICAgICAgIG1fc2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0gICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJik7CisgICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRlbnRpZmllcnMmKTsKIAogICAg
IHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVudGlmaWVycyYsIENvbW1vbkRh
dGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4M2NjMWQ0
YjY0ZWI0ZGI5MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi4yYTlkZWQxYzlmNzcxMTIzNmM3YWVj
NTg2MGMxMmE1OTQwYTM3OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cApAQCAtMTA1OCw2ICsxMDU4LDE5IEBAIGJvb2wgR3JhcGg6OmlzU2FmZVRvTG9hZChKU09iamVj
dCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJldHVybiBtX3NhZmVUb0xvYWQu
Y29udGFpbnMoc3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7CiB9CiAKK2Jvb2wgR3JhcGg6
OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRl
bnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMg
dGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9w
ZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB0aGlzIGlzIG5vdCBkb25lIHll
dCBzaW5jZSB3ZSBkbyBub3QgZXhlY3V0ZSB0aGlzIG9wIGFnYWluLiBKdXN0IGVtaXR0aW5nIEZv
cmNlT1NSRXhpdCB0byB1cGRhdGUgdGhlIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0byB0aGlz
IGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdldFJlZmVy
ZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkodWlkKSkgeworICAgICAgICBp
ZiAoIXdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0
cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVu
ZXNzLmZpbmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCBlZTJlMjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3
MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYg
aXQncyBrbm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZl
biBvZmZzZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdo
aWNoIGNvbmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wg
aXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0
YWUwMGZkZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2
b2lkIFBsYW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5U
aHJlYWQoKQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25N
YWluVGhyZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMu
aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29t
cGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCA5MmYzN2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4xNjgyZWUzODAwMzAx
ZmU1ODM3ZWI3MTRjNjlmMjRmYWVkOTJiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODAzLDYgKzgwMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9j
b25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGxvYWRQdHIoY29uc3Rh
bnRTY29wZVNsb3QsIHJlZ1QwKTsKKyAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFk
ZHJlc3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CiAgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggMzNkNmFlNDYwODY0Mzc2YTA1NDBiNjlkMTU2NGJlNWVmYWMxMzY5Zi4uZDAzOTM2MjRi
MDAyM2FhODA4NWNmMTkyMGZkMWRkMTk2OGQwMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC04MDYsNiArODA2
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAvLyBTaW5jZSB0aGVzZSBHbG9iYWxQcm9wZXJ0
eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFyLCB3ZSBzaG91bGQgbG9hZCB0aGUg
dmFsdWUgZnJvbSBtZXRhZGF0YS4KICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90
ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVj
dGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CisgICAgICAg
IGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKCkpLCByZWdUMSkpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVnVDEpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7
CiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3N2I3NmEzMDAzMGYuLmM0NDNiNDhiNmNh
NTdlYzhmMGE5Y2QyNjMxYWQ2MWU2ODcyMjQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDky
LDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBP
cFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1h
Y3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6
TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8g
cmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAg
ICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAg
ICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2Jq
ZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwg
c2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxv
YWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0Mgog
ICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTE3LDE1ICsyMTI2LDE3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENv
bnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHlu
YW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0MCkKIAogLnJHbG9iYWxWYXI6CiAg
ICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZh
cjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZh
cjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIxMzMsMjIgKzIx
NDQsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVT
Y29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmlu
ZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MK
LSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0
MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MsIC5yRHluYW1pYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAxNDhjODM5NTA3ZjVlYjdlOWJmNTYx
NzkxYmJiMGMyZTc0Yjk1MjRlLi5lMzJiNjAxNTllYjllMmQ0YWNkMWYxZWJmN2FhODYyMjBkNjI1
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMjE1MCwxMSArMjE1MCwyMCBAQCBlbmQKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAot
ICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29w
ZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1hY3JvIGdldENvbnN0
YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1f
Y29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8gcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayhz
bG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAgICAgICBsb2FkaSBPcFJlc29sdmVT
Y29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3Rd
LCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbExleGljYWxC
aW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwgc2xvd1BhdGgKKyAgICBlbmQKKwog
ICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpN
ZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0MgogICAgICAgICBnZXQobV9zY29wZSwg
dDApCkBAIC0yMTc0LDE1ICsyMTgzLDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2
ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKICNy
R2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZh
cgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAg
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJl
dHVybih0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9i
YWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRT
Y29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNh
bFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwg
LnJNb2R1bGVWYXIKQEAgLTIxOTAsMjIgKzIyMDEsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBy
ZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFu
dFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMs
IHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2so
LnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFu
dFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5l
cSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwpAQCAtMjI1
Niw3ICsyMjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BH
ZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogI2dHbG9iYWxQcm9wZXJ0
eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5nR2xvYmFsVmFyCi0gICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhp
cyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNp
bmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28u
CiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcjoKQEAgLTIyNzcsNyArMjI5MCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKIC5nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRo
U3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3Ry
dWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3
aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAg
IGdldFByb3BlcnR5KCkKIAogLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAt
MjM2NCw3ICsyMzc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9w
UHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9w
ZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5wR2xvYmFsVmFyCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlz
IHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2lu
Y2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4K
ICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQs
IG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpAQCAtMjM5MSw3ICsyNDA0LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFdpdGhTdHJ1
Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlzIHN0cnVjdHVy
ZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0
aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBwdXRQ
cm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fc2NvcGUs
IG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjg4MDQ1OGVjODc3ZTUxODYwNzRjMDlk
MTI3NTgzNmQ3NDdjMzE0OC4uYWFhOTQzODY3NDRhZjZlNjk2NjU5YTA2ZjYwMTQ5N2Y4ZTU1MjZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC0xMDY3LDI5ICsxMDY3LDMxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9y
ZXNvbHZlX3Njb3BlKQogICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSBy
ZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCiAgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1v
ZHVsZVZhcik7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mp
IHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
KyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogLy8gR2xvYmFs
IExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfcmVzb2x2ZV9zY29w
ZS4KKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHJlc29sdmVkU2NvcGUt
PmlzR2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlZFNjb3BlKTsKICAgICAgICAg
ICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlk
ZW50KTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgaWYgKGhh
c1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihl
eGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotCisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNv
bHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHJlc29sdmVkU2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsK
ICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihyZXNvbHZlZFNj
b3BlKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9i
YWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgUkVUVVJOKHJlc29sdmVkU2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAxMzBhMGM4MmEyZjdlZjZlZDg3M2UwNjI5
NTc5YzNhMzM2NzdhY2FjLi43ZWVhZjcwNGI0MzM1NDM5NjA5N2I5ZWI0ODIxMTc3ZWI1YTE0OTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMTI0LDI4ICsxMjQsMzkgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xv
YmFsKAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4
aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hl
IHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJv
cGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIAotICAgICAgICAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVydHkgJiYgcmVz
b2x2ZVR5cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZlZFBy
b3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOworICAgICAg
ICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBH
bG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7
IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAg
ICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAg
Ly8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0
X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAg
ICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQg
PSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0gICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQ
cm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBt
ZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwpAQCAtMTc2LDIyICsxODcsMzYgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRG
cm9tU2NvcGVHbG9iYWwoCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShl
eGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9w
ZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZl
ZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUg
PSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2lj
ayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlw
ZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
fSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgeworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAg
IGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2gg
aXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkg
dG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCog
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDogR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZl
VHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBl
KSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNh
bFZhcjsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRy
eS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJs
ZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhl
eSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhv
dyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYjcwY2Y1NmI0OTM0N2FiZWFm
MjNjNWEyNjM5MjU1YTk3NzJhMGZkLi5mODhmOThiMWY2NDhiMGUzMDZhN2Y4MmI2NDM3MzU1MzRm
YzQzNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xODUyLDIwICsxODUyLDE3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
SlNHbG9iYWxPYmplY3Q6OmludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpub3RpZnlMZXhpY2Fs
QmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKK3ZvaWQg
SlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZNJiB2bSkKIHsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBzZXQpCi0gICAgICAgIGVuc3VyZVJl
ZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoa2V5LmdldCgpKS5maXJlQWxsKHZtLCAiTGV4
aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0aWVzIik7Ci0j
ZW5kaWYKLSAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChDb2RlQmxvY2sq
IGNvZGVCbG9jaykgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAhPSB0
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGlj
YWxCaW5kaW5nU2hhZG93aW5nKHZtLCBzZXQpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoKyttX2dsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBvdmVyZmxvd3Ms
IHdlIHNob3VsZCByZXdyaXRlIGFsbCB0aGUgQ29kZUJsb2NrIHRvIGFkanVzdCB0byB0aGUgbmV3
bHkgc3RhcnRlZCBnZW5lcmF0aW9uLgorICAgICAgICBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2ggPSAxOworICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb2Rl
QmxvY2stPm5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCk7CisgICAgICAgIH0pOworICAgIH0K
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4m
JiB0YXNrKQpAQCAtMTg4OSwxMyArMTg4NiwxNSBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNJ
bnRlcmFjdGl2ZURlYnVnZ2VyKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotV2F0
Y2hwb2ludFNldCogSlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9p
bnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK1dhdGNocG9pbnRTZXQqIEpTR2xvYmFsT2Jq
ZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVudGx5KFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX3Jl
ZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzTG9jayk7CiAgICAgcmV0dXJuIG1f
cmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMuZ2V0KHVpZCk7CiB9CiAKIFdh
dGNocG9pbnRTZXQmIEpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzTG9jayk7
CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMuZW5z
dXJlKHVpZCwgW10gewogICAgICAgICByZXR1cm4gV2F0Y2hwb2ludFNldDo6Y3JlYXRlKElzV2F0
Y2hlZCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggM2ExMzgyZDU3OTc5Y2MyOWIx
NmZiNjhlOTNmNGZiN2Q5N2U2ZTM5ZC4uNzEzZDJkZDNlOTRlOTY1N2VmMGFjNzEzYjY2NmQ4MzFl
ZmJjMGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC00ODYsMTAgKzQ4NiwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICB1
c2luZyBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyA9IEhhc2hNYXA8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmPFdhdGNocG9pbnRTZXQ+LCBJZGVudGlmaWVyUmVw
SGFzaD47CiAgICAgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMgbV9yZWZl
cmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0czsKKyAgICBDb25jdXJyZW50SlNMb2Nr
IG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrOwogI2VuZGlmCiAK
ICAgICBib29sIG1fZXZhbEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3dlYkFzc2VtYmx5
RW5hYmxlZCB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2ggeyAxIH07CiAgICAgU3RyaW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogICAgIFN0
cmluZyBtX3dlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgUnVudGltZUZsYWdz
IG1fcnVudGltZUZsYWdzOwpAQCAtNTIyLDcgKzUyNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IFJ1bnRpbWVG
bGFncyYgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAog
I2lmIEVOQUJMRShERkdfSklUKQotICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQcm9w
ZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsKKyAgICBXYXRjaHBvaW50U2V0
KiBnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVudGx5KFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiAgICAgV2F0Y2hwb2ludFNldCYgZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5
V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCopOwogI2VuZGlmCiAKQEAgLTc1MSw3ICs3
NTMsMTAgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFp
bGFibGVMb2NhbGVzKCk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKLSAgICB2b2lkIG5vdGlm
eUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiwgY29uc3QgSWRlbnRpZmllclNldCYpOworICAg
IHZvaWQgYnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mKTsKKyAgICB1bnNpZ25lZCBn
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBt
X2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gpOyB9CisgICAgdW5zaWduZWQqIGFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJldHVybiAmbV9nbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoOyB9CiAKICAgICB2b2lkIHNldENvbnNvbGVDbGllbnQoQ29uc29sZUNsaWVudCogY29u
c29sZUNsaWVudCkgeyBtX2NvbnNvbGVDbGllbnQgPSBjb25zb2xlQ2xpZW50OyB9CiAgICAgQ29u
c29sZUNsaWVudCogY29uc29sZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc29sZUNsaWVu
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IGU2N2Q5Mzkz
ZTBjMjY4Zjg5MTdjOTgyMjljMWFmMzQ4YWUyMWYzNjEuLjRjOWY2YjZiNGUxNjlhZGNjYTgxMjQ5
MzQ5NzMwMjEyZjEzODIxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKQEAgLTUwOCw2ICs1MDgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0
cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoYm9vbCwgdHJhY2VMTEludEV4ZWN1dGlvbiwgZmFs
c2UsIENvbmZpZ3VyYWJsZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdHJhY2VMTEludFNsb3dQ
YXRoLCBmYWxzZSwgQ29uZmlndXJhYmxlLCBudWxscHRyKSBcCiAgICAgdihib29sLCB0cmFjZUJh
c2VsaW5lSklURXhlY3V0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNp
Z25lZCwgdGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCwgVUlOVF9NQVgsIE5v
cm1hbCwgIlRocmVzaG9sZCBmb3IgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4gSWYgdGhl
IGVwb2NoIHJlYWNoZXMgdG8gdGhpcyB2YWx1ZSwgQ29kZUJsb2NrIG1ldGFkYXRhIGZvciBzY29w
ZSBvcGVyYXRpb25zIHdpbGwgYmUgcmV2aXNlZCBnbG9iYWxseS4gSXQgbmVlZHMgdG8gYmUgZ3Jl
YXRlciB0aGFuIDEuIikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4
IDFjMjE5NjdmYzFkODIxODJmNzMzNWEwZDdmN2FiYTk5ZWNkYzViMmUuLmQ0YjU4OGM1ZGYzNDhk
ZmQ3MmJlNTg2ZmNkNjA4MzBhYTAxNGZhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRgogICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxFbnZp
cm9ubWVudCgpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhcmlhYmxlRGVjbGFy
YXRpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlRGVjbGFyYXRpb25zKCk7CiAgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbERlY2xhcmF0aW9ucyA9IHVubGlua2Vk
Q29kZUJsb2NrLT5sZXhpY2FsRGVjbGFyYXRpb25zKCk7Ci0gICAgSWRlbnRpZmllclNldCBzaGFk
b3dlZFByb3BlcnRpZXM7CiAgICAgLy8gVGhlIEVTNiBzcGVjIHNheXMgdGhhdCBubyB2YXJzL2ds
b2JhbCBwcm9wZXJ0aWVzL2xldC9jb25zdCBjYW4gYmUgZHVwbGljYXRlZCBpbiB0aGUgZ2xvYmFs
IHNjb3BlLgogICAgIC8vIFRoaXMgY2FycmllZCBvdXQgc2VjdGlvbiAxNS4xLjggb2YgdGhlIEVT
NiBzcGVjOiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2lu
ZGV4Lmh0bWwjc2VjLWdsb2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogICAgIHsKQEAgLTEz
MSwxMSArMTMwLDkgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xv
YmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAgICAgICAv
LyBMZXhpY2FsIGJpbmRpbmdzIGNhbiBzaGFkb3cgZ2xvYmFsIHByb3BlcnRpZXMgaWYgdGhlIGdp
dmVuIHByb3BlcnR5J3MgYXR0cmlidXRlIGlzIGNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nbG9iYWxkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24gc3RlcCA1LWMsIGBoYXNSZXN0cmljdGVkR2xvYmFsYCBiZWNvbWVzIGZh
bHNlCiAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciB3ZSBtYXkgZW1pdCBHbG9iYWxQcm9wZXJ0
eSBsb29rIHVwIGluIGJ5dGVjb2RlcyBhbHJlYWR5IGFuZCBpdCBtYXkgY2FjaGUgdGhlIHZhbHVl
IGZvciB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52
YWxpZCwgd2UgaXRlcmF0ZSBhbGwgdGhlIENvZGVCbG9ja3MgYW5kIHJld3JpdGUgdGhlIGluc3Ry
dWN0aW9uIHRvIGNvbnZlcnQgR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAg
ICAgICAgICAgICAgICAvLyAxLiBJbiBMTEludCwgd2UgYWx3YXlzIGNoZWNrIG1ldGFkYXRhJ3Mg
cmVzb2x2ZVR5cGUuIFNvIHJld3JpdHRlbiBpbnN0cnVjdGlvbiBqdXN0IHdvcmtzLgotICAgICAg
ICAgICAgICAgIC8vIDIuIEluIEJhc2VsaW5lIEpJVCwgd2UgY2hlY2sgbWV0YWRhdGEncyByZXNv
bHZlVHlwZSBpbiBHbG9iYWxQcm9wZXJ0eSBjYXNlIHNvIHRoYXQgd2UgY2FuIG5vdGljZSBvbmNl
IGl0IGlzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLAor
ICAgICAgICAgICAgICAgIC8vIDEuIEluIExMSW50IGFuZCBCYXNlbGluZSwgd2UgYnVtcCB0aGUg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaCBhbmQgaXQgd29ya3MuCiAgICAgICAgICAgICAg
ICAgLy8gMy4gSW4gREZHIGFuZCBGVEwsIHdlIHdhdGNoIHRoZSB3YXRjaHBvaW50IGFuZCBqZXR0
aXNvbiBvbmNlIGl0IGlzIGZpcmVkLgotICAgICAgICAgICAgICAgIHNoYWRvd2VkUHJvcGVydGll
cy5hZGQoZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgR2xvYmFsUHJvcGVydHlMb29rVXBTdGF0dXM6Ok5vdEZvdW5kOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjA2LDEyICsyMDMsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEYKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldEZvckFzc2VydCA9PSBvZmZzZXQp
OwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFzaGFkb3dlZFByb3BlcnRpZXMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dp
bmcodm0sIFdURk1vdmUoc2hhZG93ZWRQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIHRocm93U2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBpZiAobGV4aWNhbERlY2xhcmF0aW9ucy5zaXplKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJhdGlvbnMpIHsKKyAg
ICAgICAgICAgIC8vIElmIFdhdGNocG9pbnRTZXQgZXhpc3RzLCBqdXN0IGZpcmUgaXQuIFNpbmNl
IERGRyBXYXRjaHBvaW50U2V0IGFkZGl0aW9uIGlzIGFsc28gZG9uZSBvbiB0aGUgbWFpbiB0aHJl
YWQsIHdlIGNhbiBzeW5jIHRoZW0uCisgICAgICAgICAgICAvLyBTbyB0aGF0IHdlIGRvIG5vdCBj
cmVhdGUgV2F0Y2hwb2ludFNldCBoZXJlLiBERkcgd2lsbCBjcmVhdGUgaWYgbmVjZXNzYXJ5IG9u
IHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgIGlmIChhdXRvKiB3YXRjaHBvaW50U2V0ID0g
Z2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVu
dGx5KGVudHJ5LmtleS5nZXQoKSkpCisgICAgICAgICAgICAgICAgd2F0Y2hwb2ludFNldC0+Zmly
ZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBleGlzdGluZyBnbG9iYWwgcHJv
cGVydGllcyIpOworICAgICAgICB9CisgICAgICAgIGdsb2JhbE9iamVjdC0+YnVtcEdsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2godm0pOwogICAgIH0KLQogICAgIHJldHVybiBudWxscHRyOwogfQog
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDc3N2E4NTNiZmU3MDlmOTQyYWM2NGY4YjQxNzE3ZTBhOTRhYjY3YjAuLjQxYWJjY2MwNDlmYWZm
M2ZmNDY1N2NiYTkwNjRjYzc0ODg0ZDQzZTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDEtMTggIFl1
c3VrZSBTdXp1a2kgIDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBbSlND
XSBJbnZhbGlkYXRlIG9sZCBzY29wZSBvcGVyYXRpb25zIHVzaW5nIGdsb2JhbCBsZXhpY2FsIGJp
bmRpbmcgZXBvY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MzYwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczODA4Njk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc2NvcGUtb3Bl
cmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoYmFyKToKKyAgICAgICAgKiBzdHJlc3Mv
c2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1wLWNvdW50ZXIuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2V0MSk6CisgICAgICAgIChnZXQy
KToKKyAgICAgICAgKGdldDFJZik6CisgICAgICAgIChnZXQySWYpOgorICAgICAgICAqIHN0cmVz
cy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoZm9vKToKKwogMjAx
OS0wMS0xNyAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJp
bmdPYmplY3RVc2Ugc2hvdWxkIG5vdCBiZSBhIHN0cnVjdHVyZSBjaGVjayBmb3IgdGhlIG9yaWdp
bmFsIHN0cmluZyBvYmplY3Qgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9z
Y29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVm
b3JlLWRlbGV0aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhOWZlMGQ1MWM1ODRlODVjMGYyNjZhZWEyMTQ4
N2UwZDkzZDQxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVy
YXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcwpAQCAtMCwwICsx
LDI3IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cpOworCitm
dW5jdGlvbiBiYXIoKQoreworICAgIGZvbyA9IDQyOworfQorCitiYXIoKTsKK2JhcigpOworZGVs
ZXRlIGdsb2JhbFRoaXMuZm9vOworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28gPSA1MGApOworCitz
aG91bGRUaHJvdygoKSA9PiBiYXIoKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0
byByZWFkb25seSBwcm9wZXJ0eS5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Njb3Bl
LW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzIGIvSlNUZXN0
cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1wLWNvdW50
ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZDFkY2RkMDZkMjA4OWJkOWYwOTVhMWExODIxOWY2YmU3ZjliYzZm
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNo
ZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCkBAIC0wLDAgKzEsNTggQEAKKy8vQCBy
dW5EZWZhdWx0KCItLXRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g9MiIpCisK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmb28xID0gMTsKK2ZvbzIgPSAyOworZnVu
Y3Rpb24gZ2V0MSgpIHsKKyAgICByZXR1cm4gZm9vMTsKK30KK25vSW5saW5lKGdldDEpOworCitm
dW5jdGlvbiBnZXQyKCkgeworICAgIHJldHVybiBmb28yOworfQorbm9JbmxpbmUoZ2V0Mik7CisK
K2Z1bmN0aW9uIGdldDFJZihjb25kaXRpb24pIHsKKyAgICBpZiAoY29uZGl0aW9uKQorICAgICAg
ICByZXR1cm4gZm9vMTsKKyAgICByZXR1cm4gLTE7Cit9Citub0lubGluZShnZXQxSWYpOworCitm
dW5jdGlvbiBnZXQySWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAg
cmV0dXJuIGZvbzI7CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MklmKTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgeworICAgIHNob3VsZEJlKGdldDEoKSwgMSk7Cisg
ICAgc2hvdWxkQmUoZ2V0MigpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxKCksIDEpOworICAgIHNo
b3VsZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKHRydWUpLCAxKTsKKyAgICBz
aG91bGRCZShnZXQySWYodHJ1ZSksIDIpOworICAgIHNob3VsZEJlKGdldDFJZihmYWxzZSksIC0x
KTsKKyAgICBzaG91bGRCZShnZXQySWYoZmFsc2UpLCAtMSk7Cit9CisKKyQuZXZhbFNjcmlwdChg
Y29uc3QgZm9vMSA9IDQxO2ApOworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28yID0gNDI7YCk7CisK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQxKCksIDQx
KTsKKyAgICBzaG91bGRCZShnZXQyKCksIDQyKTsKKyAgICBzaG91bGRCZShnZXQxKCksIDQxKTsK
KyAgICBzaG91bGRCZShnZXQyKCksIDQyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFsc2UpLCAt
MSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorc2hvdWxkQmUoZ2V0MUlm
KHRydWUpLCA0MSk7CitzaG91bGRCZShnZXQySWYodHJ1ZSksIDQyKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1p
Zi1pdC1mYWlscy5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9i
YWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWRhYzgxMWEzOGJm
YjI1MmViN2Y2Y2NiM2FhNDA5NzYxNDZjNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZh
aWxzLmpzCkBAIC0wLDAgKzEsMjMgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9Citub0lubGluZShz
aG91bGRUaHJvdyk7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAgICBiYXIgPSA0OworfQorT2JqZWN0
LnByZXZlbnRFeHRlbnNpb25zKHRoaXMpOworZm9vKCk7CiskLmV2YWxTY3JpcHQoJ2NvbnN0IGJh
ciA9IDM7Jyk7CitzaG91bGRUaHJvdygoKSA9PiBmb28oKSwgYFR5cGVFcnJvcjogQXR0ZW1wdGVk
IHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359580</attachid>
            <date>2019-01-18 19:25:26 -0800</date>
            <delta_ts>2019-01-19 16:31:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190118192525.patch</filename>
            <type>text/plain</type>
            <size>53018</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDBkODYyNDM4YzJkYzcyNDVhNmMzOGMxOTZiOTRhNmYyNGFiMzI3Li5iNTA2ZGVmNzZmNjY2ZTcx
MGYyZjgwMWI3NjhlOTc2NDA3YzM4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorCiAyMDE5LTAx
LTE3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdWRpdCBieXRl
Y29kZSBmaWVsZHMgYW5kIGVuc3VyZSB0aGF0IExMSW50IGluc3RydWN0aW9ucyBmb3IgYWNjZXNz
aW5nIHRoZW0gYXJlIGFwcHJvcHJpYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYmI1ZjEyNjE2MDBlNWZkYjE5NGVhZTk4YzA4YjU0
NjQ3ZDdkM2I3ZC4uMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2ZDMzZmQ1NTc1NDIzYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC04
MzMsOCArODMzLDExIEBACiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICByZXNvbHZl
VHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1
bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zmc2V0IDYKKyAgICAgICAgXzA6
IHsgIyBvZmZzZXQgNQorICAgICAgICAgICAgbG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwKKyAg
ICAgICAgICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g6IHVuc2lnbmVkLAorICAgICAgICB9
LAorICAgICAgICBfMTogeyAjIG9mZnNldCA2CiAgICAgICAgICAgICAgIyB3cml0dGVuIGR1cmlu
ZyBsaW5raW5nCiAgICAgICAgICAgICAgbGV4aWNhbEVudmlyb25tZW50OiBXcml0ZUJhcnJpZXJC
YXNlW0pTQ2VsbF0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUgPT0gTW9kdWxlVmFyCiAg
ICAgICAgICAgICAgc3ltYm9sVGFibGU6IFdyaXRlQmFycmllckJhc2VbU3ltYm9sVGFibGVdLCAj
IGxleGljYWxFbnZpcm9ubWVudCAmJiB0eXBlICE9IE1vZHVsZVZhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAwYzYzNDU2ODZmYTFlNTNkNTNj
NDkzMzg1OTdlN2MxZTM1NTVlMjFjLi42OGQzZDJkMmJlNzlmNDA1ZGM5NGQwNzFhMTQwNDk5ZjI1
OTQzMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMjY2OCwxOCArMjY2OCwyMyBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4
aXRTaXRlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLXZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJT
ZXQmIHNldCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB7
CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBpdCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9PSBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4o
Z2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFi
bGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBhdXRvIGlzU2hhZG93ZWQgPSBb
Jl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxl
LT5jb250YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAgIGZvciAoY29uc3QgYXV0byYg
aW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkg
ewpAQCAtMjY4OSw3MiArMjY5NCwxMyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJp
bmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCiAgICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZl
VHlwZTsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3Bl
cnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRh
aW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0ds
b2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAg
ICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGlj
YWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMg
cmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2Rl
Lm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBH
ZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNl
cHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICAgICAg
SlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxv
Y2sobWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChjb25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zZXQodm0sIHRoaXMsIGNv
bnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJ
bnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9zY29wZSBmcm9tICIsIG9yaWdp
bmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSk7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRvd2VkKGlkZW50LmltcGwoKSkp
CisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAg
YXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEZyb21TY29wZT4oKTsKLSAgICAg
ICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAg
ICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9
PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAg
aWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2Nv
cGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBm
aW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2Ug
cGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVP
cCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29w
ZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBB
U1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8
fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAgICAgICAgICAgICAgICAgICBtZXRh
ZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNv
bHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmlnaW5hbFJlc29sdmVUeXBlKSA/
IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZh
ciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gb3Aud2F0Y2hwb2ludFNldDsK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gb3Aub3BlcmFuZDsKLSAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2NrSW50ZXJuYWw6OnZlcmJvc2Us
ICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwg
IiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQot
ICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29k
ZSA9IGluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAgICBhdXRvJiBt
ZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgUmVzb2x2ZVR5
cGUgb3JpZ2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlw
ZSgpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlk
ZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFp
bnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xv
YmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAg
ICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNh
bCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyBy
ZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3Bl
OjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUu
bV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBp
ZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
c2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8
IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IER5bmFtaWMpOwotCi0g
ICAgICAgICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gb3AudHlwZTsKLSAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25D
aGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdl
dFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIHJlc29sdmVUeXBl
LCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUg
b3BfcHV0X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3ZWI0ZTZjNmZjZDBlYjI3NmY4
MDUzMTliYTBiZmU0Li45NGU2YmQyZWUwZWZiMmJhMDc0Y2VhMjUwZDgyZjczMTgyYTZlMTEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xOTUsNyAr
MTk1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eShWTSYpOwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNv
bnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRl
KCk7CiAKICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lkIGR1bXBTb3VyY2UoUHJpbnRT
dHJlYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggNGUxOGRmNzAzZDNkMjE2Njg2ZjU4NTk4MjRmMmFjNmNiOTdmZTAwZS4uOWQx
NjE0ZGVhMzA0MmI3ZTJiYzA2MDhmMWU3OGQ0YzY1MTkyMTI5OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYxNjcsOSArNjE2Nywx
MCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0
NwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRN
b2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJS
ZW1hcFtieXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFk
ZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CisgICAg
ICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKEZvcmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBA
IC02MjgxLDggKzYyODIsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxl
IGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlz
IGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAg
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2Rl
KCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3Jp
cHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNo
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJl
ZGljdGlvbigpOwogCkBAIC02NDU2LDggKzY0NTksMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1
cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4K
ICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVk
R2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAg
ICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkg
IT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVt
YmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsK
KyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1
czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAppbmRleCA4ZjdiOWNl
ZDk5YjhmNzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi45NDExNDE2NWUzOTkxNmJlMmM1M2Iw
Y2VmMGU0YTE1ZDRmYzE0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApAQCAtMzYsMTYgKzM2LDIzIEBA
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotYm9vbCBEZXNpcmVkR2xvYmFs
UHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERlc2lyZWRJZGVudGlmaWVycyYg
aWRlbnRpZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjppc1N0aWxsVmFsaWRP
bk1haW5UaHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQogewor
ICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3Bl
cnR5IDogbV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRlbnRpZmllcnMuYXQocHJvcGVy
dHkuaWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQg
PSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2lu
dFNldCh1aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRTZXQtPmlzU3RpbGxWYWxp
ZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpOworICAgICAgICB7Cisg
ICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmplY3QtPmdsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIGlm
ICghc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52YWxpZGF0ZWQgV2F0Y2hwb2lu
dFNldCBoZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisgICAg
ICAgIHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBl
eGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICBpc1N0aWxsVmFsaWQgPSBmYWxz
ZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZDsKIH0K
IAogdm9pZCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5QWRkKENvZGVCbG9jayogY29k
ZUJsb2NrLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzLCBDb21tb25EYXRhJiBjb21t
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9i
YWxQcm9wZXJ0aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0ZTM4YTQ2YjljZGY5ZjU0ZGFj
MDkyOC4uNjliZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQxNzE0NWY3YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRp
ZXMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xvYmFsUHJvcGVydGllcyB7CiAg
ICAgICAgIG1fc2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0gICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJik7CisgICAgYm9vbCBp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRlbnRpZmllcnMmKTsKIAogICAg
IHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVudGlmaWVycyYsIENvbW1vbkRh
dGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4M2NjMWQ0
YjY0ZWI0ZGI5MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi4yYTlkZWQxYzlmNzcxMTIzNmM3YWVj
NTg2MGMxMmE1OTQwYTM3OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cApAQCAtMTA1OCw2ICsxMDU4LDE5IEBAIGJvb2wgR3JhcGg6OmlzU2FmZVRvTG9hZChKU09iamVj
dCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJldHVybiBtX3NhZmVUb0xvYWQu
Y29udGFpbnMoc3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7CiB9CiAKK2Jvb2wgR3JhcGg6
OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRl
bnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUg
YSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMg
dGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9w
ZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB0aGlzIGlzIG5vdCBkb25lIHll
dCBzaW5jZSB3ZSBkbyBub3QgZXhlY3V0ZSB0aGlzIG9wIGFnYWluLiBKdXN0IGVtaXR0aW5nIEZv
cmNlT1NSRXhpdCB0byB1cGRhdGUgdGhlIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0byB0aGlz
IGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdldFJlZmVy
ZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkodWlkKSkgeworICAgICAgICBp
ZiAoIXdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxv
Y2sqIGNvZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0
cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVu
ZXNzLmZpbmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRl
eCBlZTJlMjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3
MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0
eUNvbmRpdGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFs
T2JqZWN0KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYg
aXQncyBrbm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZl
biBvZmZzZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdo
aWNoIGNvbmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wg
aXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0
YWUwMGZkZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2
b2lkIFBsYW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5U
aHJlYWQoKQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25N
YWluVGhyZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMu
aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29t
cGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRl
eCA5MmYzN2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4xNjgyZWUzODAwMzAx
ZmU1ODM3ZWI3MTRjNjlmMjRmYWVkOTJiYjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtODAzLDYgKzgwMyw4IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9j
b25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CiAgICAgICAgIGxvYWRQdHIoY29uc3Rh
bnRTY29wZVNsb3QsIHJlZ1QwKTsKKyAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFk
ZHJlc3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CiAgICAgICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAK
aW5kZXggMzNkNmFlNDYwODY0Mzc2YTA1NDBiNjlkMTU2NGJlNWVmYWMxMzY5Zi4uZDAzOTM2MjRi
MDAyM2FhODA4NWNmMTkyMGZkMWRkMTk2OGQwMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC04MDYsNiArODA2
LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAvLyBTaW5jZSB0aGVzZSBHbG9iYWxQcm9wZXJ0
eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFyLCB3ZSBzaG91bGQgbG9hZCB0aGUg
dmFsdWUgZnJvbSBtZXRhZGF0YS4KICAgICAgICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90
ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKICAgICAgICAgZW1pdFZhckluamVj
dGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSk7CisgICAgICAg
IGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7Cisg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKCkpLCByZWdUMSkpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSwgcmVnVDEpOwogICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7
CiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmlu
ZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3N2I3NmEzMDAzMGYuLmM0NDNiNDhiNmNh
NTdlYzhmMGE5Y2QyNjMxYWQ2MWU2ODcyMjQyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0yMDky
LDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2Nv
cGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEs
IHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBP
cFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1h
Y3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6
TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8g
cmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAg
ICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAg
ICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2Jq
ZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwg
c2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxv
YWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0Mgog
ICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTE3LDE1ICsyMTI2LDE3IEBAIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXpl
LCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENv
bnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHlu
YW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0MCkKIAogLnJHbG9iYWxWYXI6CiAg
ICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZh
cjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZh
cjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIxMzMsMjIgKzIx
NDQsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVT
Y29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmlu
ZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MK
LSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFnLCB0
MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYykKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MsIC5yRHluYW1pYwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCAxNDhjODM5NTA3ZjVlYjdlOWJmNTYx
NzkxYmJiMGMyZTc0Yjk1MjRlLi5lMzJiNjAxNTllYjllMmQ0YWNkMWYxZWJmN2FhODYyMjBkNjI1
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbQpAQCAtMjE1MCwxMSArMjE1MCwyMCBAQCBlbmQKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAot
ICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29w
ZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAgIG1hY3JvIGdldENvbnN0
YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1f
Y29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFjcm8gcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAgICAgICAgIHJldHVybih0
MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayhz
bG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQorICAgICAgICBsb2FkaSBPcFJlc29sdmVT
Y29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3Rd
LCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbExleGljYWxC
aW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwgc2xvd1BhdGgKKyAgICBlbmQKKwog
ICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpN
ZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0MgogICAgICAgICBnZXQobV9zY29wZSwg
dDApCkBAIC0yMTc0LDE1ICsyMTgzLDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2
ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKICNy
R2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZh
cgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAg
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJl
dHVybih0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9i
YWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRT
Y29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNh
bFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwg
LnJNb2R1bGVWYXIKQEAgLTIxOTAsMjIgKzIyMDEsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0
Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBy
ZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hl
Y2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICBnZXRDb25zdGFu
dFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayguckR5bmFtaWMs
IHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNo
ZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29u
c3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2so
LnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFu
dFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5l
cSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwpAQCAtMjI1
Niw3ICsyMjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BH
ZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogI2dHbG9iYWxQcm9wZXJ0
eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5nR2xvYmFsVmFyCi0gICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhp
cyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNp
bmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28u
CiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcjoKQEAgLTIyNzcsNyArMjI5MCw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKIC5nR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRo
U3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3Ry
dWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3
aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAg
IGdldFByb3BlcnR5KCkKIAogLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAt
MjM2NCw3ICsyMzc3LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9w
UHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9w
ZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5wR2xvYmFsVmFyCi0gICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxv
YWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlz
IHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2lu
Y2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4K
ICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQs
IG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpAQCAtMjM5MSw3ICsyNDA0LDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFdpdGhTdHJ1
Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKQorICAgIGxvYWRXaXRoU3Ry
dWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykgIyBUaGlzIHN0cnVjdHVy
ZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0
aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBwdXRQ
cm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fc2NvcGUs
IG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYjg4MDQ1OGVjODc3ZTUxODYwNzRjMDlk
MTI3NTgzNmQ3NDdjMzE0OC4uYWFhOTQzODY3NDRhZjZlNjk2NjU5YTA2ZjYwMTQ5N2Y4ZTU1MjZm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC0xMDY3LDI5ICsxMDY3LDMxIEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9y
ZXNvbHZlX3Njb3BlKQogICAgIC8vIE1vZHVsZVZhciBkb2VzIG5vdCBrZWVwIHRoZSBzY29wZSBy
ZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCiAgICAgQVNTRVJUKHJlc29sdmVUeXBlICE9IE1v
ZHVsZVZhcik7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mp
IHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
KyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogLy8gR2xvYmFs
IExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfcmVzb2x2ZV9zY29w
ZS4KKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHJlc29sdmVkU2NvcGUt
PmlzR2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlZFNjb3BlKTsKICAgICAgICAg
ICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmhhc1Byb3BlcnR5KGV4ZWMsIGlk
ZW50KTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAgICAgICAgaWYgKGhh
c1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihl
eGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotCisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNv
bHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0OworICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVj
dC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHJlc29sdmVkU2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsK
ICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihyZXNvbHZlZFNj
b3BlKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9i
YWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsK
KyAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgUkVUVVJOKHJlc29sdmVkU2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAxMzBhMGM4MmEyZjdlZjZlZDg3M2UwNjI5
NTc5YzNhMzM2NzdhY2FjLi43ZWVhZjcwNGI0MzM1NDM5NjA5N2I5ZWI0ODIxMTc3ZWI1YTE0OTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aApAQCAtMTI0LDI4ICsxMjQsMzkgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQdXRUb1Njb3BlR2xv
YmFsKAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4
aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hl
IHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0
YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJv
cGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIAotICAgICAgICAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVydHkgJiYgcmVz
b2x2ZVR5cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykKLSAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0
eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZlZFBy
b3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFBy
b3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOworICAgICAg
ICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBH
bG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7
IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJ
bmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8u
aW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2Jh
bExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAg
ICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAg
Ly8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0
X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAg
ICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKICAgICAgICAg
ICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQg
PSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0gICAgICAgICAg
ICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQ
cm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVl
ZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gZ2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQuaW1wbCgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0
YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBt
ZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4
aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAgICAgfQot
ICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2Jh
bE9iamVjdCgpOwpAQCAtMTc2LDIyICsxODcsMzYgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRG
cm9tU2NvcGVHbG9iYWwoCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShl
eGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9w
ZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2UgVW5yZXNvbHZl
ZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAg
ICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRz
VmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAgcmVzb2x2ZVR5cGUg
PSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2lj
ayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJs
b2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQ
dXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlw
ZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAg
fSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgeworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAg
IGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBvY2gg
aXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVydHkg
dG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCog
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDogR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZl
VHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBl
KSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNh
bFZhcjsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRy
eS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJs
ZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFscy4gU2luY2UgdGhl
eSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRpZG4ndCBrbm93IGhv
dyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYjcwY2Y1NmI0OTM0N2FiZWFm
MjNjNWEyNjM5MjU1YTk3NzJhMGZkLi5mODhmOThiMWY2NDhiMGUzMDZhN2Y4MmI2NDM3MzU1MzRm
YzQzNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC0xODUyLDIwICsxODUyLDE3IEBAIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
SlNHbG9iYWxPYmplY3Q6OmludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKQogfQogI2Vu
ZGlmIC8vIEVOQUJMRShJTlRMKQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpub3RpZnlMZXhpY2Fs
QmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKK3ZvaWQg
SlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKFZNJiB2bSkKIHsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBzZXQpCi0gICAgICAgIGVuc3VyZVJl
ZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoa2V5LmdldCgpKS5maXJlQWxsKHZtLCAiTGV4
aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0aWVzIik7Ci0j
ZW5kaWYKLSAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChDb2RlQmxvY2sq
IGNvZGVCbG9jaykgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAhPSB0
aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGlj
YWxCaW5kaW5nU2hhZG93aW5nKHZtLCBzZXQpOwotICAgICAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOwotICAgIH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBpZiAoKyttX2dsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9yR2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9jaCBvdmVyZmxvd3Ms
IHdlIHNob3VsZCByZXdyaXRlIGFsbCB0aGUgQ29kZUJsb2NrIHRvIGFkanVzdCB0byB0aGUgbmV3
bHkgc3RhcnRlZCBnZW5lcmF0aW9uLgorICAgICAgICBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2ggPSAxOworICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjb2Rl
QmxvY2stPm5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCk7CisgICAgICAgIH0pOworICAgIH0K
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVmPE1pY3JvdGFzaz4m
JiB0YXNrKQpAQCAtMTg4OSwxMyArMTg4NiwxNSBAQCBib29sIEpTR2xvYmFsT2JqZWN0OjpoYXNJ
bnRlcmFjdGl2ZURlYnVnZ2VyKCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotV2F0
Y2hwb2ludFNldCogSlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9p
bnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK1dhdGNocG9pbnRTZXQqIEpTR2xvYmFsT2Jq
ZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVudGx5KFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX3Jl
ZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzTG9jayk7CiAgICAgcmV0dXJuIG1f
cmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMuZ2V0KHVpZCk7CiB9CiAKIFdh
dGNocG9pbnRTZXQmIEpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzTG9jayk7
CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMuZW5z
dXJlKHVpZCwgW10gewogICAgICAgICByZXR1cm4gV2F0Y2hwb2ludFNldDo6Y3JlYXRlKElzV2F0
Y2hlZCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggM2ExMzgyZDU3OTc5Y2MyOWIx
NmZiNjhlOTNmNGZiN2Q5N2U2ZTM5ZC4uNzEzZDJkZDNlOTRlOTY1N2VmMGFjNzEzYjY2NmQ4MzFl
ZmJjMGY3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC00ODYsMTAgKzQ4NiwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICB1
c2luZyBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyA9IEhhc2hNYXA8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmPFdhdGNocG9pbnRTZXQ+LCBJZGVudGlmaWVyUmVw
SGFzaD47CiAgICAgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMgbV9yZWZl
cmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0czsKKyAgICBDb25jdXJyZW50SlNMb2Nr
IG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrOwogI2VuZGlmCiAK
ICAgICBib29sIG1fZXZhbEVuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX3dlYkFzc2VtYmx5
RW5hYmxlZCB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2ggeyAxIH07CiAgICAgU3RyaW5nIG1fZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlOwogICAgIFN0
cmluZyBtX3dlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgUnVudGltZUZsYWdz
IG1fcnVudGltZUZsYWdzOwpAQCAtNTIyLDcgKzUyNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IFJ1bnRpbWVG
bGFncyYgcnVudGltZUZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9ydW50aW1lRmxhZ3M7IH0KIAog
I2lmIEVOQUJMRShERkdfSklUKQotICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQcm9w
ZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqKTsKKyAgICBXYXRjaHBvaW50U2V0
KiBnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0Q29uY3VycmVudGx5KFVuaXF1ZWRT
dHJpbmdJbXBsKik7CiAgICAgV2F0Y2hwb2ludFNldCYgZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5
V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCopOwogI2VuZGlmCiAKQEAgLTc1MSw3ICs3
NTMsMTAgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVsZXNBdmFp
bGFibGVMb2NhbGVzKCk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKLSAgICB2b2lkIG5vdGlm
eUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiwgY29uc3QgSWRlbnRpZmllclNldCYpOworICAg
IHZvaWQgYnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mKTsKKyAgICB1bnNpZ25lZCBn
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2JqZWN0LCBt
X2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gpOyB9CisgICAgdW5zaWduZWQqIGFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJldHVybiAmbV9nbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoOyB9CiAKICAgICB2b2lkIHNldENvbnNvbGVDbGllbnQoQ29uc29sZUNsaWVudCogY29u
c29sZUNsaWVudCkgeyBtX2NvbnNvbGVDbGllbnQgPSBjb25zb2xlQ2xpZW50OyB9CiAgICAgQ29u
c29sZUNsaWVudCogY29uc29sZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc29sZUNsaWVu
dDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCmluZGV4IGU2N2Q5Mzkz
ZTBjMjY4Zjg5MTdjOTgyMjljMWFmMzQ4YWUyMWYzNjEuLjRjOWY2YjZiNGUxNjlhZGNjYTgxMjQ5
MzQ5NzMwMjEyZjEzODIxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgKQEAgLTUwOCw2ICs1MDgsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0
cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoYm9vbCwgdHJhY2VMTEludEV4ZWN1dGlvbiwgZmFs
c2UsIENvbmZpZ3VyYWJsZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdHJhY2VMTEludFNsb3dQ
YXRoLCBmYWxzZSwgQ29uZmlndXJhYmxlLCBudWxscHRyKSBcCiAgICAgdihib29sLCB0cmFjZUJh
c2VsaW5lSklURXhlY3V0aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNp
Z25lZCwgdGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCwgVUlOVF9NQVgsIE5v
cm1hbCwgIlRocmVzaG9sZCBmb3IgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4gSWYgdGhl
IGVwb2NoIHJlYWNoZXMgdG8gdGhpcyB2YWx1ZSwgQ29kZUJsb2NrIG1ldGFkYXRhIGZvciBzY29w
ZSBvcGVyYXRpb25zIHdpbGwgYmUgcmV2aXNlZCBnbG9iYWxseS4gSXQgbmVlZHMgdG8gYmUgZ3Jl
YXRlciB0aGFuIDEuIikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4
IDFjMjE5NjdmYzFkODIxODJmNzMzNWEwZDdmN2FiYTk5ZWNkYzViMmUuLjQ2MmVlNGI1Y2EwNTBl
NzMxMjllYjRhY2EyN2U2YjI0OWJlM2M1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZN
JiB2bSwgQ2FsbEZyYW1lKiBjYWxsRgogICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxFbnZp
cm9ubWVudCgpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhcmlhYmxlRGVjbGFy
YXRpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlRGVjbGFyYXRpb25zKCk7CiAgICAg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbERlY2xhcmF0aW9ucyA9IHVubGlua2Vk
Q29kZUJsb2NrLT5sZXhpY2FsRGVjbGFyYXRpb25zKCk7Ci0gICAgSWRlbnRpZmllclNldCBzaGFk
b3dlZFByb3BlcnRpZXM7CiAgICAgLy8gVGhlIEVTNiBzcGVjIHNheXMgdGhhdCBubyB2YXJzL2ds
b2JhbCBwcm9wZXJ0aWVzL2xldC9jb25zdCBjYW4gYmUgZHVwbGljYXRlZCBpbiB0aGUgZ2xvYmFs
IHNjb3BlLgogICAgIC8vIFRoaXMgY2FycmllZCBvdXQgc2VjdGlvbiAxNS4xLjggb2YgdGhlIEVT
NiBzcGVjOiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2lu
ZGV4Lmh0bWwjc2VjLWdsb2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogICAgIHsKQEAgLTEz
MSwxMSArMTMwLDkgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xv
YmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAgICAgICAv
LyBMZXhpY2FsIGJpbmRpbmdzIGNhbiBzaGFkb3cgZ2xvYmFsIHByb3BlcnRpZXMgaWYgdGhlIGdp
dmVuIHByb3BlcnR5J3MgYXR0cmlidXRlIGlzIGNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAg
ICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nbG9iYWxkZWNsYXJhdGlv
bmluc3RhbnRpYXRpb24gc3RlcCA1LWMsIGBoYXNSZXN0cmljdGVkR2xvYmFsYCBiZWNvbWVzIGZh
bHNlCiAgICAgICAgICAgICAgICAgLy8gSG93ZXZlciB3ZSBtYXkgZW1pdCBHbG9iYWxQcm9wZXJ0
eSBsb29rIHVwIGluIGJ5dGVjb2RlcyBhbHJlYWR5IGFuZCBpdCBtYXkgY2FjaGUgdGhlIHZhbHVl
IGZvciB0aGUgZ2xvYmFsIHNjb3BlLgotICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52
YWxpZCwgd2UgaXRlcmF0ZSBhbGwgdGhlIENvZGVCbG9ja3MgYW5kIHJld3JpdGUgdGhlIGluc3Ry
dWN0aW9uIHRvIGNvbnZlcnQgR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAg
ICAgICAgICAgICAgICAvLyAxLiBJbiBMTEludCwgd2UgYWx3YXlzIGNoZWNrIG1ldGFkYXRhJ3Mg
cmVzb2x2ZVR5cGUuIFNvIHJld3JpdHRlbiBpbnN0cnVjdGlvbiBqdXN0IHdvcmtzLgotICAgICAg
ICAgICAgICAgIC8vIDIuIEluIEJhc2VsaW5lIEpJVCwgd2UgY2hlY2sgbWV0YWRhdGEncyByZXNv
bHZlVHlwZSBpbiBHbG9iYWxQcm9wZXJ0eSBjYXNlIHNvIHRoYXQgd2UgY2FuIG5vdGljZSBvbmNl
IGl0IGlzIGNoYW5nZWQuCisgICAgICAgICAgICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLAor
ICAgICAgICAgICAgICAgIC8vIDEuIEluIExMSW50IGFuZCBCYXNlbGluZSwgd2UgYnVtcCB0aGUg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaCBhbmQgaXQgd29ya3MuCiAgICAgICAgICAgICAg
ICAgLy8gMy4gSW4gREZHIGFuZCBGVEwsIHdlIHdhdGNoIHRoZSB3YXRjaHBvaW50IGFuZCBqZXR0
aXNvbiBvbmNlIGl0IGlzIGZpcmVkLgotICAgICAgICAgICAgICAgIHNoYWRvd2VkUHJvcGVydGll
cy5hZGQoZW50cnkua2V5LmdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgR2xvYmFsUHJvcGVydHlMb29rVXBTdGF0dXM6Ok5vdEZvdW5kOgogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjA2LDEyICsyMDMsMTcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2Fs
bEYKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldEZvckFzc2VydCA9PSBvZmZzZXQp
OwogICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKCFzaGFkb3dlZFByb3BlcnRpZXMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dp
bmcodm0sIFdURk1vdmUoc2hhZG93ZWRQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIHRocm93U2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBpZiAobGV4aWNhbERlY2xhcmF0aW9ucy5zaXplKCkp
IHsKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGlj
YWxEZWNsYXJhdGlvbnMpIHsKKyAgICAgICAgICAgIC8vIElmIFdhdGNocG9pbnRTZXQgZXhpc3Rz
LCBqdXN0IGZpcmUgaXQuIFNpbmNlIERGRyBXYXRjaHBvaW50U2V0IGFkZGl0aW9uIGlzIGFsc28g
ZG9uZSBvbiB0aGUgbWFpbiB0aHJlYWQsIHdlIGNhbiBzeW5jIHRoZW0uCisgICAgICAgICAgICAv
LyBTbyB0aGF0IHdlIGRvIG5vdCBjcmVhdGUgV2F0Y2hwb2ludFNldCBoZXJlLiBERkcgd2lsbCBj
cmVhdGUgaWYgbmVjZXNzYXJ5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgIGlmIChh
dXRvKiB3YXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KGVudHJ5LmtleS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgd2F0Y2hwb2ludFNldC0+ZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRo
ZSBleGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5idW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCh2bSk7CiAgICAg
fQotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzc3YTg1M2JmZTcwOWY5NDJhYzY0ZjhiNDE3
MTdlMGE5NGFiNjdiMC4uNDFhYmNjYzA0OWZhZmYzZmY0NjU3Y2JhOTA2NGNjNzQ4ODRkNDNlOSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNCBAQAorMjAxOS0wMS0xOCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBz
bG93c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJh
dGlvbnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHN0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5
LWJlZm9yZS1kZWxldGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgIChiYXIpOgorICAgICAgICAqIHN0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFs
LXByb3BlcnR5LWJ1bXAtY291bnRlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZXQxKToKKyAgICAgICAgKGdldDIpOgorICAgICAgICAoZ2V0MUlmKToKKyAgICAg
ICAgKGdldDJJZik6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9i
YWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChmb28pOgorCiAyMDE5LTAxLTE3ICBTYWFtIGJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZ09iamVjdFVzZSBzaG91bGQgbm90IGJlIGEg
c3RydWN0dXJlIGNoZWNrIGZvciB0aGUgb3JpZ2luYWwgc3RyaW5nIG9iamVjdCBzdHJ1Y3R1cmUK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwt
cHJvcGVydHktYmVmb3JlLWRlbGV0aW5nLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0
aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E5ZmUwZDUxYzU4NGU4NWMwZjI2NmFlYTIxNDg3ZTBkOTNkNDEyMgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHkt
YmVmb3JlLWRlbGV0aW5nLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
Citub0lubGluZShzaG91bGRUaHJvdyk7CisKK2Z1bmN0aW9uIGJhcigpCit7CisgICAgZm9vID0g
NDI7Cit9CisKK2JhcigpOworYmFyKCk7CitkZWxldGUgZ2xvYmFsVGhpcy5mb287CiskLmV2YWxT
Y3JpcHQoYGNvbnN0IGZvbyA9IDUwYCk7CisKK3Nob3VsZFRocm93KCgpID0+IGJhcigpLCBgVHlw
ZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9w
ZXJ0eS1idW1wLWNvdW50ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2Fj
aGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWRjZGQwNmQy
MDg5YmQ5ZjA5NWExYTE4MjE5ZjZiZTdmOWJjNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1wLWNvdW50
ZXIuanMKQEAgLTAsMCArMSw1OCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdGhyZXNob2xkRm9yR2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaD0yIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7
CisKK2ZvbzEgPSAxOworZm9vMiA9IDI7CitmdW5jdGlvbiBnZXQxKCkgeworICAgIHJldHVybiBm
b28xOworfQorbm9JbmxpbmUoZ2V0MSk7CisKK2Z1bmN0aW9uIGdldDIoKSB7CisgICAgcmV0dXJu
IGZvbzI7Cit9Citub0lubGluZShnZXQyKTsKKworZnVuY3Rpb24gZ2V0MUlmKGNvbmRpdGlvbikg
eworICAgIGlmIChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28xOworICAgIHJldHVybiAt
MTsKK30KK25vSW5saW5lKGdldDFJZik7CisKK2Z1bmN0aW9uIGdldDJJZihjb25kaXRpb24pIHsK
KyAgICBpZiAoY29uZGl0aW9uKQorICAgICAgICByZXR1cm4gZm9vMjsKKyAgICByZXR1cm4gLTE7
Cit9Citub0lubGluZShnZXQySWYpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7
CisgICAgc2hvdWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAg
IHNob3VsZEJlKGdldDEoKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCAyKTsKKyAgICBzaG91
bGRCZShnZXQxSWYodHJ1ZSksIDEpOworICAgIHNob3VsZEJlKGdldDJJZih0cnVlKSwgMik7Cisg
ICAgc2hvdWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxz
ZSksIC0xKTsKK30KKworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28xID0gNDE7YCk7CiskLmV2YWxT
Y3JpcHQoYGNvbnN0IGZvbzIgPSA0MjtgKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsr
aSkgeworICAgIHNob3VsZEJlKGdldDEoKSwgNDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgNDIp
OworICAgIHNob3VsZEJlKGdldDEoKSwgNDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgNDIpOwor
ICAgIHNob3VsZEJlKGdldDFJZihmYWxzZSksIC0xKTsKKyAgICBzaG91bGRCZShnZXQySWYoZmFs
c2UpLCAtMSk7Cit9CitzaG91bGRCZShnZXQxSWYodHJ1ZSksIDQxKTsKK3Nob3VsZEJlKGdldDJJ
Zih0cnVlKSwgNDIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9u
LWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUxZGFjODExYTM4YmZiMjUyZWI3ZjZjY2IzYWE0MDk3NjE0NmM2NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUt
Z2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKQEAgLTAsMCArMSwyMyBAQAorZnVu
Y3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhy
b3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBm
dW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7Cisg
ICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09
IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3Ry
aW5nKGVycm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gZm9v
KCkgeworICAgIGJhciA9IDQ7Cit9CitPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyk7Citm
b28oKTsKKyQuZXZhbFNjcmlwdCgnY29uc3QgYmFyID0gMzsnKTsKK3Nob3VsZFRocm93KCgpID0+
IGZvbygpLCBgVHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3Bl
cnR5LmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359625</attachid>
            <date>2019-01-19 16:31:35 -0800</date>
            <delta_ts>2019-01-20 16:09:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190119163135.patch</filename>
            <type>text/plain</type>
            <size>55675</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MTVlMTIwZmU3YzU2OTc1MmVkZjJmMzM3ZTAxMjQzZWQ3MGRmOGI1Li4yZmRjN2RiYzI1ZjA0NzUy
NWI1MGIwOTBhZWQyNTYzNDJiOWMxYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxOS0wMS0xOSAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hw
b2ludFNldCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCBj
b25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFkZHJlc3NPZkds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorCiAyMDE5LTAx
LTE5ICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAgICAg
ICAgW0pTQ10gUmVvcmRlciBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IG1lbWJlciBmb3IgcHJl
cGFyYXRpb24gb2YgSlNHbG9iYWxPYmplY3QgbWVtb3J5IHJlZHVjdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggYmI1ZjEyNjE2MDBl
NWZkYjE5NGVhZTk4YzA4YjU0NjQ3ZDdkM2I3ZC4uMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2
ZDMzZmQ1NTc1NDIzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC04MzMsOCArODMzLDExIEBACiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewogICAgICAgICByZXNvbHZlVHlwZTogUmVzb2x2ZVR5cGUsICMgb2Zmc2V0IDQKLSAgICAgICAg
bG9jYWxTY29wZURlcHRoOiB1bnNpZ25lZCwgIyBvZmZzZXQgNQotICAgICAgICBfOiB7ICMgb2Zm
c2V0IDYKKyAgICAgICAgXzA6IHsgIyBvZmZzZXQgNQorICAgICAgICAgICAgbG9jYWxTY29wZURl
cHRoOiB1bnNpZ25lZCwKKyAgICAgICAgICAgIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2g6IHVu
c2lnbmVkLAorICAgICAgICB9LAorICAgICAgICBfMTogeyAjIG9mZnNldCA2CiAgICAgICAgICAg
ICAgIyB3cml0dGVuIGR1cmluZyBsaW5raW5nCiAgICAgICAgICAgICAgbGV4aWNhbEVudmlyb25t
ZW50OiBXcml0ZUJhcnJpZXJCYXNlW0pTQ2VsbF0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5
cGUgPT0gTW9kdWxlVmFyCiAgICAgICAgICAgICAgc3ltYm9sVGFibGU6IFdyaXRlQmFycmllckJh
c2VbU3ltYm9sVGFibGVdLCAjIGxleGljYWxFbnZpcm9ubWVudCAmJiB0eXBlICE9IE1vZHVsZVZh
cgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAw
YzYzNDU2ODZmYTFlNTNkNTNjNDkzMzg1OTdlN2MxZTM1NTVlMjFjLi42OGQzZDJkMmJlNzlmNDA1
ZGM5NGQwNzFhMTQwNDk5ZjI1OTQzMDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMjY2OCwxOCArMjY2OCwyMyBAQCB2b2lkIENvZGVCbG9j
azo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CiAKLXZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0s
IGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSgpCiB7CiAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUg
ZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ug
c2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9
PSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKLQotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Kj4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1i
b2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRh
YmxlKCk7CiAKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBh
dXRvIGlzU2hhZG93ZWQgPSBbJl0gKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAg
cmV0dXJuIHN5bWJvbFRhYmxlLT5jb250YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAg
IGZvciAoY29uc3QgYXV0byYgaW5zdHJ1Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMjY4OSw3MiArMjY5NCwxMyBAQCB2b2lkIENvZGVCbG9j
azo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVy
U2V0JiBzZXQpCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0g
bWV0YWRhdGEubV9yZXNvbHZlVHlwZTsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAg
ICAgICBpZiAoc2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgcGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRo
ZSBzY29wZSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0
ZWx5IGZpbmQgdGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdo
eSB3ZSBwZXJmb3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVz
b2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5y
ZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9w
LnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlw
ZSA9PSBHbG9iYWxMZXhpY2FsVmFyKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9y
ZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUp
ID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2Fs
VmFyOwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAg
ICAgICAgICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0
YW50U2NvcGVGb3JDb2RlQmxvY2sobWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChjb25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xv
YmFsU2NvcGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29w
ZS5zZXQodm0sIHRoaXMsIGNvbnN0YW50U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9z
Y29wZSBmcm9tICIsIG9yaWdpbmFsUmVzb2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNv
bHZlVHlwZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpc1NoYWRv
d2VkKGlkZW50LmltcGwoKSkpCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxP
YmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29w
ZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcEdldEZy
b21TY29wZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0g
bWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAob3Jp
Z2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBl
ID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewotICAgICAgICAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7
Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFy
dCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNo
b3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3Mg
dGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAg
ICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX2xvY2FsU2NvcGVEZXB0aCwgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgR2V0LCBieXRlY29kZS5tX2dldFB1dEluZm8u
cmVzb2x2ZVR5cGUoKSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7Ci0g
ICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwotICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKGJ5dGVjb2Rl
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhvcmln
aW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
IDogR2xvYmFsTGV4aWNhbFZhciwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9u
TW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0g
b3Aud2F0Y2hwb2ludFNldDsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5k
ID0gb3Aub3BlcmFuZDsKLSAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuSWYoQ29kZUJsb2Nr
SW50ZXJuYWw6OnZlcmJvc2UsICJSZXdyaXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gIiwgb3Jp
Z2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAg
ICAgICAgYXV0byBieXRlY29kZSA9IGluc3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0g
ICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAg
ICAgICAgICAgUmVzb2x2ZVR5cGUgb3JpZ2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0
UHV0SW5mby5yZXNvbHZlVHlwZSgpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5
cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGlkZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAg
ICAgIGlmIChzZXQuY29udGFpbnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBwYXNzIEpTR2xvYmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhl
IHNjb3BlIGNoYWluLgotICAgICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRl
bHkgZmluZCB0aGUgbGV4aWNhbCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5
IHdlIHBlcmZvcm0gdGhpcyByZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNv
bHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgYnl0ZWNvZGUubV9zeW1ib2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0
LT5nbG9iYWxTY29wZSgpLCBpZGVudCwgUHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2
ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBl
ID09IER5bmFtaWMpOwotCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVU
eXBlID0gb3AudHlwZTsKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50
U2V0ID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEds
b2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEds
b2JhbExleGljYWxWYXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0g
bmVlZHNWYXJJbmplY3Rpb25DaGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50
U2V0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCksIHJlc29sdmVUeXBlLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25N
b2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVy
YW5kOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6
dmVyYm9zZSwgIlJld3JpdGUgb3BfcHV0X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZl
VHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3
ZWI0ZTZjNmZjZDBlYjI3NmY4MDUzMTliYTBiZmU0Li45NGU2YmQyZWUwZWZiMmJhMDc0Y2VhMjUw
ZDgyZjczMTgyYTZlMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseShWTSYpOwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGlu
Z1NoYWRvd2luZyhWTSYsIGNvbnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxl
eGljYWxCaW5kaW5nVXBkYXRlKCk7CiAKICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lk
IGR1bXBTb3VyY2UoUHJpbnRTdHJlYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNGUxOGRmNzAzZDNkMjE2Njg2ZjU4NTk4MjRm
MmFjNmNiOTdmZTAwZS4uOWQxNjE0ZGVhMzA0MmI3ZTJiYzA2MDhmMWU3OGQ0YzY1MTkyMTI5OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTYxNjcsOSArNjE2NywxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MzM0NwogICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1f
Y29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsK
ICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xv
YmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRl
Y29kZS5tX3Zhcl07CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2Jh
bFByb3BlcnR5KGdsb2JhbE9iamVjdCwgaWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCkBAIC02MjgxLDggKzYyODIsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhl
ZC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29k
ZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNp
cmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAg
ICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2Rl
KCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVy
TnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0
KTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwogCkBAIC02NDU2LDggKzY0NTksMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQg
b25jZSBpdCBpcyBmaXhlZC4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2Rl
OjpNb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygp
LmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVy
TnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQ
dXRCeUlkU3RhdHVzIHN0YXR1czsKICAgICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVz
LmNwcAppbmRleCA4ZjdiOWNlZDk5YjhmNzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi45NDEx
NDE2NWUzOTkxNmJlMmM1M2IwY2VmMGU0YTE1ZDRmYzE0MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApA
QCAtMzYsMTYgKzM2LDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAot
Ym9vbCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERl
c2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0
aWVzOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMm
IGlkZW50aWZpZXJzKQogeworICAgIGJvb2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHByb3BlcnR5IDogbV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRl
bnRpZmllcnMuYXQocHJvcGVydHkuaWRlbnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1
dG8qIHdhdGNocG9pbnRTZXQgPSBwcm9wZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNl
ZFByb3BlcnR5V2F0Y2hwb2ludFNldCh1aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9p
bnRTZXQtPmlzU3RpbGxWYWxpZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVj
dCgpOworICAgICAgICB7CisgICAgICAgICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOwor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2Nr
KTsKKyAgICAgICAgICAgIGlmICghc3ltYm9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52
YWxpZGF0ZWQgV2F0Y2hwb2ludFNldCBoZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFu
ZC1mYWlsIGxvb3AuCisgICAgICAgIHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZl
cmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmlu
ZGluZyBzaGFkb3dzIHRoZSBleGlzdGluZyBnbG9iYWwgcHJvcGVydGllcyIpOworICAgICAgICBp
c1N0aWxsVmFsaWQgPSBmYWxzZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IGlzU3RpbGxWYWxpZDsKIH0KIAogdm9pZCBEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5
QWRkKENvZGVCbG9jayogY29kZUJsb2NrLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJz
LCBDb21tb25EYXRhJiBjb21tb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0
ZTM4YTQ2YjljZGY5ZjU0ZGFjMDkyOC4uNjliZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQx
NzE0NWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVk
R2xvYmFsUHJvcGVydGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xv
YmFsUHJvcGVydGllcyB7CiAgICAgICAgIG1fc2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAg
ICAgfQogCi0gICAgYm9vbCBpc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZp
ZXJzJik7CisgICAgYm9vbCBpc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRl
bnRpZmllcnMmKTsKIAogICAgIHZvaWQgcmVhbGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVu
dGlmaWVycyYsIENvbW1vbkRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAppbmRleCA4M2NjMWQ0YjY0ZWI0ZGI5MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi4yYTlk
ZWQxYzlmNzcxMTIzNmM3YWVjNTg2MGMxMmE1OTQwYTM3OWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTA1OCw2ICsxMDU4LDE5IEBAIGJvb2wgR3JhcGg6Omlz
U2FmZVRvTG9hZChKU09iamVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJl
dHVybiBtX3NhZmVUb0xvYWQuY29udGFpbnMoc3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7
CiB9CiAKK2Jvb2wgR3JhcGg6OndhdGNoR2xvYmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkID0gaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJ
ZiB3ZSBhbHJlYWR5IGhhdmUgYSBXYXRjaHBvaW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZh
bGlkYXRlZCwgaXQgbWVhbnMgdGhhdCB0aGlzIHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5n
ZWQgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB0
aGlzIGlzIG5vdCBkb25lIHlldCBzaW5jZSB3ZSBkbyBub3QgZXhlY3V0ZSB0aGlzIG9wIGFnYWlu
LiBKdXN0IGVtaXR0aW5nIEZvcmNlT1NSRXhpdCB0byB1cGRhdGUgdGhlIG1ldGFkYXRhIHdoZW4g
aXQgcmVhY2hlcyB0byB0aGlzIGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9i
YWxPYmplY3QtPmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHko
dWlkKSkgeworICAgICAgICBpZiAoIXdhdGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6
aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIp
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjps
aXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVy
ID0gbV9ieXRlY29kZUxpdmVuZXNzLmZpbmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAppbmRleCBlZTJlMjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3
ZmU4Li4xNTFmNTczNmM3YWM3MDczZjFkZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGgg
OiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29u
c3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhj
b25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2Jh
bFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisK
ICAgICAvLyBDaGVja3MgaWYgaXQncyBrbm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4g
b2JqZWN0IGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1
dGVkIGJ5IHRyYWNraW5nIHdoaWNoIGNvbmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRp
dGlvbigpLgogICAgIGJvb2wgaXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9m
ZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0
ZDlmMzU2MGQ4YmZhMmNmNDE0YWUwMGZkZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNi
YTJkOTVhODNmMjMxODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAg
LTU3Myw3ICs1NzMsNyBAQCB2b2lkIFBsYW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjpp
c1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoKQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRp
ZXMuaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBt
X2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50
aWZpZXJzKTsKIH0KIAogQ29tcGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90
aWZ5aW5nQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAppbmRleCA5MmYzN2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBl
ZGU3Li4zNjAzOWZmYzI0YmQ1ODQ1MGE2ZTkzNjUyY2Q4YWZlNjA4MTQwYzA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNzY2LDcg
Kzc2NiwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2
ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAg
ICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgotICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczoKKyAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBK
U1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKHJlc29sdmVUeXBlLCBtX2NvZGVCbG9j
ayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdGFudFNjb3BlKTsKKyAgICAgICAg
ICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZl
VHlwZSkpOworICAgICAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5k
aW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNz
T2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCByZWdUMSkpOworICAgICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGNvbnN0YW50U2NvcGUpLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0
UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgICAgIGNhc2UgR2xvYmFsTGV4aWNhbFZhcjoKQEAgLTgwMyw2
ICs4MTMsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIEpTU2NvcGUqKiBjb25zdGFudFNjb3Bl
U2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7CiAgICAgICAgIGVtaXRWYXJJ
bmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwogICAg
ICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7CisgICAgICAgIGxvYWQzMigm
bWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCBy
ZWdUMSkpOwogICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJv
cGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDMzZDZhZTQ2MDg2NDM3NmEwNTQwYjY5ZDE1NjRiZTVl
ZmFjMTM2OWYuLjNmNTk2MGI2MjhiNDE0N2RjNmM1YTM3MzdiZGVmZmQxZmMzNzlhYzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0
LmNwcApAQCAtNzY5LDcgKzc2OSwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3Bl
KGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBlbWl0Q29k
ZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNoIChyZXNv
bHZlVHlwZSkgewogICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgotICAgICAgICBjYXNlIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKKyAgICAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgICAgIEpTU2NvcGUqIGNv
bnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKHJlc29sdmVU
eXBlLCBtX2NvZGVCbG9jayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25zdGFudFNj
b3BlKTsKKyAgICAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlv
bkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2ds
b2JhbExleGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNsb3dDYXNl
KGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCByZWdUMSkpOwor
ICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsK
KyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjb25zdGFudFNjb3BlKSwgcmVnVDApOwor
ICAgICAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJlZ1QwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHbG9iYWxWYXI6CiAgICAgICAgIGNhc2Ug
R2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczogCiAgICAgICAgIGNhc2UgR2xvYmFsTGV4
aWNhbFZhcjoKQEAgLTgwNiw2ICs4MTcsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Nj
b3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIC8vIFNp
bmNlIHRoZXNlIEdsb2JhbFByb3BlcnR5IGNhbiBiZSBjaGFuZ2VkIHRvIEdsb2JhbExleGljYWxW
YXIsIHdlIHNob3VsZCBsb2FkIHRoZSB2YWx1ZSBmcm9tIG1ldGFkYXRhLgogICAgICAgICBKU1Nj
b3BlKiogY29uc3RhbnRTY29wZVNsb3QgPSBtZXRhZGF0YS5tX2NvbnN0YW50U2NvcGUuc2xvdCgp
OwogICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpKTsKKyAgICAgICAgbG9hZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExleGljYWxC
aW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1
YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFkZHJlc3NP
Zkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CiAgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CiAgICAgICAgIGxvYWRQdHIoY29u
c3RhbnRTY29wZVNsb3QsIHJlZ1QwKTsKICAgICAgICAgZW1pdFN0b3JlKGRzdCwgcmVnVDEsIHJl
Z1QwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggNmY3ZGVhYmM3MjUxYTg1NzlmN2U5OTVhZDIwNDc3
Yjc2YTMwMDMwZi4uYzQ0M2I0OGI2Y2E1N2VjOGYwYTljZDI2MzFhZDYxZTY4NzIyNDJmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc20KQEAgLTIwOTIsMTEgKzIwOTIsMjAgQEAgZW5kCiAKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogCi0gICAgbWFjcm8gZ2V0Q29uc3RhbnRT
Y29wZSgpCi0gICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFu
dFNjb3BlW3Q1XSwgIHQwCisgICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZShkc3QpCisgICAgICAg
IGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0
CisgICAgZW5kCisKKyAgICBtYWNybyByZXR1cm5Db25zdGFudFNjb3BlKCkKKyAgICAgICAgZ2V0
Q29uc3RhbnRTY29wZSh0MCkKICAgICAgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogICAgIGVuZAog
CisgICAgbWFjcm8gZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKHNsb3dQYXRoLCBnbG9i
YWxPYmplY3QsIHNjcmF0Y2gpCisgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0
YTo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gKKyAg
ICAgICAgYmluZXEgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtn
bG9iYWxPYmplY3RdLCBzY3JhdGNoLCBzbG93UGF0aAorICAgIGVuZAorCiAgICAgbWFjcm8gcmVz
b2x2ZVNjb3BlKCkKICAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2xv
Y2FsU2NvcGVEZXB0aFt0NV0sIHQyCiAgICAgICAgIGdldChtX3Njb3BlLCB0MCkKQEAgLTIxMTcs
MTUgKzIxMjYsMTcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJl
c29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogI3JHbG9iYWxQcm9wZXJ0
eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCi0gICAgZ2V0Q29u
c3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcs
IHQwKQogCiAuckdsb2JhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExl
eGljYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3Bl
KCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFy
LCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFu
dFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1v
ZHVsZVZhcgpAQCAtMjEzMywyMiArMjE0NCwyNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jl
c29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAog
CiAuck1vZHVsZVZhcjoKICAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVy
bkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjaygu
ckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0
MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIp
CisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogCiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5y
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAg
ICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNs
b3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJE
eW5hbWljKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUo
KQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5hbWljCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IDRlMzdhMDk2MDNmNzNkOTc5NjczNDk4ZGY5OTcwNmNjYzFhMWZkOTMuLmJkN2QwMmM5YzlkNDU0
OTBmZjdiMjg1NjlkMWFhZjc2NjM2YzY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMTUwLDExICsyMTUw
LDIwIEBAIGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29s
dmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAg
ICAgbWV0YWRhdGEodDUsIHQwKQogCi0gICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAg
ICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwg
IHQwCisgICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVz
b2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisK
KyAgICBtYWNybyByZXR1cm5Db25zdGFudFNjb3BlKCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29w
ZSh0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAgIGVuZAogCisgICAgbWFjcm8gZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaENoZWNrKHNsb3dQYXRoLCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gpCisg
ICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9iYWxP
YmplY3Q6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNo
LCBzbG93UGF0aAorICAgIGVuZAorCiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAgICAg
bG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0sIHQy
CiAgICAgICAgIGdldChtX3Njb3BlLCB0MCkKQEAgLTIxNzQsMTUgKzIxODMsMTcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0
Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJE
eW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKHQwKQogCiAuckdsb2JhbFZhcjoKICAgICBiaW5l
cSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExleGljYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3Bl
KCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAg
IGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyOgogICAg
IGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgpAQCAtMjE5MCwyMiArMjIwMSwyNCBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAuck1vZHVsZVZhcjoKICAgICBiaW5lcSB0MCwg
TW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50
U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybih0MCkKIAogLnJHbG9i
YWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MK
ICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50U2Nv
cGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcywgLnJEeW5hbWljCkBAIC0yMjU2LDcgKzIyNjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0YwogCiAjZ0dsb2JhbFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwg
LmdHbG9iYWxWYXIKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3BlLCBn
ZXQsIC5nRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3Bl
LCBnZXQsIC5nRHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2Fs
IGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2Nv
cGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBnZXRQcm9wZXJ0eSgpCiAKIC5nR2xvYmFsVmFy
OgpAQCAtMjI3Nyw3ICsyMjkwLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9z
Y29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogLmdHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzCi0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAu
Z0R5bmFtaWMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0
LCAuZ0R5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5k
aW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdp
bGwgYmUgY2hhbmdlZCB0b28uCiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3M6CkBAIC0yMzY0LDcgKzIzNzcsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaCwgbQogCiAucEdsb2JhbFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0
eSwgLnBHbG9iYWxWYXIKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwg
Z2V0LCAucER5bmFtaWMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUs
IGdldCwgLnBEeW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwg
YmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29w
ZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIHB1dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJp
ZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9zY29wZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgp
CkBAIC0yMzkxLDcgKzI0MDQsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29w
ZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbQogCiAucEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAucEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5
bmFtaWMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBE
eW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBl
cG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJl
IGNoYW5nZWQgdG9vLgogICAgIHB1dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJh
bmRzKHNpemUsIGdldCwgbV9zY29wZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBi
ODgwNDU4ZWM4NzdlNTE4NjA3NGMwOWQxMjc1ODM2ZDc0N2MzMTQ4Li5hYWE5NDM4Njc0NGFmNmU2
OTY2NTlhMDZmNjAxNDk3ZjhlNTUyNmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTEwNjcsMjkgKzEwNjcsMzEgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpCiAgICAgLy8gTW9kdWxlVmFyIGRv
ZXMgbm90IGtlZXAgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZlIGluIERGRy4KICAgICBB
U1NFUlQocmVzb2x2ZVR5cGUgIT0gTW9kdWxlVmFyKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9
PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5
V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAg
ICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzOiAvLyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQu
IFVwZGF0ZSBvcF9yZXNvbHZlX3Njb3BlLgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5Ogor
ICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewogICAg
ICAgICBpZiAocmVzb2x2ZWRTY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewogICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJl
c29sdmVkU2NvcGUpOwogICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGdsb2JhbE9iamVj
dC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOwogICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwotICAgICAg
ICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkpCi0gICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxQcm9wZXJ0eTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2
ZVR5cGUgPSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M7Ci0KKyAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsUHJvcGVydHk7CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxPYmplY3QgPSBn
bG9iYWxPYmplY3Q7CisgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZWRTY29wZS0+aXNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCo+KHJlc29sdmVkU2NvcGUpOwogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgbWV0YWRh
dGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlw
ZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxW
YXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKICAgICAgICAgICAg
IG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0gZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50OwogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBSRVRVUk4ocmVzb2x2ZWRTY29wZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDEz
MGEwYzgyYTJmN2VmNmVkODczZTA2Mjk1NzljM2EzMzY3N2FjYWMuLjdlZWFmNzA0YjQzMzU0Mzk2
MDk3YjllYjQ4MjExNzdlYjVhMTQ5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xMjQsMjggKzEyNCwzOSBAQCBpbmxpbmUgdm9p
ZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2Jh
bHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBk
aWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRpbWUuCiAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNv
bHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwotICAgIGlmIChy
ZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9wZXJ0eSAmJiByZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgCi0gICAgICAgICYmIHJlc29sdmVUeXBlICE9IFVu
cmVzb2x2ZWRQcm9wZXJ0eSAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocmVzb2x2ZVR5
cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7
CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxP
YmplY3QoKSkgewotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNv
bHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxQcm9wZXJ0eSA6IEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKLSAgICAgICAgICAgIHJlc29sdmVUeXBlID0g
bmV3UmVzb2x2ZVR5cGU7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9
IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OworICAgICAgICAgICAgcmVzb2x2
ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20g
dG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJs
b2NrLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBj
YXNlIEdsb2JhbFByb3BlcnR5OgorICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOiB7CisgICAgICAgICAvLyBHbG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlz
IGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJvbV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRv
IEdsb2JhbExleGljYWxWYXIuCisgICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQoKSkgewogICAgICAgICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGds
b2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCo+KHNjb3BlKTsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVz
b2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5ID8gR2xvYmFsTGV4aWNhbFZhciA6IEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVzb2x2ZVR5
cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkg
PyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxW
YXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIFN5bWJvbFRh
YmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCkt
PmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7
CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9p
bnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnku
c2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAg
ICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CkBAIC0xNzYsMjIgKzE4NywzNiBAQCBp
bmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUdsb2JhbCgKICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBl
ID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7CiAKLSAgICBpZiAocmVzb2x2
ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBl
KSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgIGlmIChzY29wZS0+aXNHbG9i
YWxPYmplY3QoKSkgewotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxQcm9wZXJ0eSA6IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBl
IG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8g
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAg
ICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBj
YWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6
YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAgICBjYXNlIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAgLy8gR2xvYmFs
IExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBVcGRhdGUgb3BfZ2V0X2Zyb21fc2Nv
cGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhpY2FsVmFyLgorICAgICAgICBpZiAo
c2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkpIHsKICAgICAgICAgICAgIEpTR2xv
YmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7Ci0gICAgICAgICAgICBSZXNvbHZl
VHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/
IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
czsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRy
eSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlk
ZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9j
ayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEu
bV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1l
dGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsK
KyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIENvdmVycyBpbXBs
aWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhl
Y3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGJiNzBjZjU2YjQ5MzQ3YWJlYWYyM2M1YTI2MzkyNTVhOTc3MmEwZmQuLmY4OGY5OGIxZjY0
OGIwZTMwNmE3ZjgyYjY0MzczNTUzNGZjNDM1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTE4NTIsMjAgKzE4NTIsMTcgQEAg
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBKU0dsb2JhbE9iamVjdDo6aW50bFBsdXJhbFJ1bGVzQXZh
aWxhYmxlTG9jYWxlcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKLXZvaWQgSlNHbG9i
YWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3QgSWRl
bnRpZmllclNldCYgc2V0KQordm9pZCBKU0dsb2JhbE9iamVjdDo6YnVtcEdsb2JhbExleGljYWxC
aW5kaW5nRXBvY2goVk0mIHZtKQogewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6
IHNldCkKLSAgICAgICAgZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChrZXku
Z2V0KCkpLmZpcmVBbGwodm0sICJMZXhpY2FsIGJpbmRpbmcgc2hhZG93cyB0aGUgZXhpc3Rpbmcg
Z2xvYmFsIHByb3BlcnRpZXMiKTsKLSNlbmRpZgotICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCku
aXRlcmF0ZShbJl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7Ci0gICAgICAgIGlmIChjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IGNvZGVCbG9jay0+bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcodm0sIHNldCk7Ci0gICAg
ICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgfSk7Ci0gICAgc2NvcGUucmVsZWFz
ZSgpOworICAgIGlmICgrK21fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9PSBPcHRpb25zOjp0
aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpIHsKKyAgICAgICAgLy8gU2lu
Y2UgdGhlIGVwb2NoIG92ZXJmbG93cywgd2Ugc2hvdWxkIHJld3JpdGUgYWxsIHRoZSBDb2RlQmxv
Y2sgdG8gYWRqdXN0IHRvIHRoZSBuZXdseSBzdGFydGVkIGdlbmVyYXRpb24uCisgICAgICAgIG1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IDE7CisgICAgICAgIHZtLmhlYXAuY29kZUJsb2Nr
U2V0KCkuaXRlcmF0ZShbJl0gKENvZGVCbG9jayogY29kZUJsb2NrKSB7CisgICAgICAgICAgICBp
ZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUo
KTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1p
Y3JvdGFzayhSZWY8TWljcm90YXNrPiYmIHRhc2spCkBAIC0xODg5LDEzICsxODg2LDE1IEBAIGJv
b2wgSlNHbG9iYWxPYmplY3Q6Omhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSBjb25zdAogfQogCiAj
aWYgRU5BQkxFKERGR19KSVQpCi1XYXRjaHBvaW50U2V0KiBKU0dsb2JhbE9iamVjdDo6Z2V0UmVm
ZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorV2F0
Y2hwb2ludFNldCogSlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9p
bnRTZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNl
dHNMb2NrKTsKICAgICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50
U2V0cy5nZXQodWlkKTsKIH0KIAogV2F0Y2hwb2ludFNldCYgSlNHbG9iYWxPYmplY3Q6OmVuc3Vy
ZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
IHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFByb3Bl
cnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFsUHJv
cGVydHlXYXRjaHBvaW50U2V0cy5lbnN1cmUodWlkLCBbXSB7CiAgICAgICAgIHJldHVybiBXYXRj
aHBvaW50U2V0OjpjcmVhdGUoSXNXYXRjaGVkKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCAzYTEzODJkNTc5NzljYzI5YjE2ZmI2OGU5M2Y0ZmI3ZDk3ZTZlMzlkLi43MTNkMmRkM2U5
NGU5NjU3ZWYwYWM3MTNiNjY2ZDgzMWVmYmMwZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTQ4NiwxMCArNDg2LDEyIEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIHVzaW5nIFJlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNo
cG9pbnRTZXRzID0gSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWY8V2F0Y2hw
b2ludFNldD4sIElkZW50aWZpZXJSZXBIYXNoPjsKICAgICBSZWZlcmVuY2VkR2xvYmFsUHJvcGVy
dHlXYXRjaHBvaW50U2V0cyBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRz
OworICAgIENvbmN1cnJlbnRKU0xvY2sgbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBv
aW50U2V0c0xvY2s7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsK
ICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFibGVkIHsgdHJ1ZSB9OworICAgIHVuc2lnbmVkIG1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCB7IDEgfTsKICAgICBTdHJpbmcgbV9ldmFsRGlzYWJs
ZWRFcnJvck1lc3NhZ2U7CiAgICAgU3RyaW5nIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVz
c2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7CkBAIC01MjIsNyArNTI0LDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX3J1bnRpbWVGbGFnczsgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgV2F0Y2hwb2lu
dFNldCogZ2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1w
bCopOworICAgIFdhdGNocG9pbnRTZXQqIGdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRT
ZXRDb25jdXJyZW50bHkoVW5pcXVlZFN0cmluZ0ltcGwqKTsKICAgICBXYXRjaHBvaW50U2V0JiBl
bnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKik7
CiAjZW5kaWYKIApAQCAtNzUxLDcgKzc1MywxMCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2FsZXMoKTsKICNlbmRpZiAvLyBFTkFCTEUo
SU5UTCkKIAotICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mLCBjb25z
dCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9pZCBidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aChWTSYpOworICAgIHVuc2lnbmVkIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSBjb25zdCB7
IHJldHVybiBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0KKyAgICBzdGF0aWMgcHRyZGlm
Zl90IGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk7IH0KKyAg
ICB1bnNpZ25lZCogYWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIHsgcmV0dXJu
ICZtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0KIAogICAgIHZvaWQgc2V0Q29uc29sZUNs
aWVudChDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KSB7IG1fY29uc29sZUNsaWVudCA9IGNv
bnNvbGVDbGllbnQ7IH0KICAgICBDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKaW5kZXggZTY3ZDkzOTNlMGMyNjhmODkxN2M5ODIyOWMxYWYzNDhhZTIxZjM2MS4u
NGM5ZjZiNmI0ZTE2OWFkY2NhODEyNDkzNDk3MzAyMTJmMTM4MjEzNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtNTA4LDYgKzUwOCw3IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihib29sLCB0
cmFjZUxMSW50RXhlY3V0aW9uLCBmYWxzZSwgQ29uZmlndXJhYmxlLCBudWxscHRyKSBcCiAgICAg
dihib29sLCB0cmFjZUxMSW50U2xvd1BhdGgsIGZhbHNlLCBDb25maWd1cmFibGUsIG51bGxwdHIp
IFwKICAgICB2KGJvb2wsIHRyYWNlQmFzZWxpbmVKSVRFeGVjdXRpb24sIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNob2xkIGZvciBnbG9iYWwgbGV4aWNh
bCBiaW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0byB0aGlzIHZhbHVlLCBDb2Rl
QmxvY2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMgd2lsbCBiZSByZXZpc2VkIGdsb2Jh
bGx5LiBJdCBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gMS4iKSBcCiAKIAogZW51bSBPcHRpb25F
cXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5jcHAKaW5kZXggMWMyMTk2N2ZjMWQ4MjE4MmY3MzM1YTBkN2Y3YWJhOTll
Y2RjNWIyZS4uNDYyZWU0YjVjYTA1MGU3MzEyOWViNGFjYTI3ZTZiMjQ5YmUzYzU4OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cApAQCAtMTA3LDcgKzEwNyw2IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlh
bGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbE9i
amVjdC0+Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+dmFyaWFi
bGVEZWNsYXJhdGlvbnMoKTsKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2Fs
RGVjbGFyYXRpb25zID0gdW5saW5rZWRDb2RlQmxvY2stPmxleGljYWxEZWNsYXJhdGlvbnMoKTsK
LSAgICBJZGVudGlmaWVyU2V0IHNoYWRvd2VkUHJvcGVydGllczsKICAgICAvLyBUaGUgRVM2IHNw
ZWMgc2F5cyB0aGF0IG5vIHZhcnMvZ2xvYmFsIHByb3BlcnRpZXMvbGV0L2NvbnN0IGNhbiBiZSBk
dXBsaWNhdGVkIGluIHRoZSBnbG9iYWwgc2NvcGUuCiAgICAgLy8gVGhpcyBjYXJyaWVkIG91dCBz
ZWN0aW9uIDE1LjEuOCBvZiB0aGUgRVM2IHNwZWM6IGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlv
bmFsLm9yZy9lY21hLTI2Mi82LjAvaW5kZXguaHRtbCNzZWMtZ2xvYmFsZGVjbGFyYXRpb25pbnN0
YW50aWF0aW9uCiAgICAgewpAQCAtMTMxLDExICsxMzAsOSBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgQ2FsbEZyYW1lKiBj
YWxsRgogICAgICAgICAgICAgICAgIC8vIExleGljYWwgYmluZGluZ3MgY2FuIHNoYWRvdyBnbG9i
YWwgcHJvcGVydGllcyBpZiB0aGUgZ2l2ZW4gcHJvcGVydHkncyBhdHRyaWJ1dGUgaXMgY29uZmln
dXJhYmxlLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2
Mi8jc2VjLWdsb2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbiBzdGVwIDUtYywgYGhhc1Jlc3Ry
aWN0ZWRHbG9iYWxgIGJlY29tZXMgZmFsc2UKICAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHdl
IG1heSBlbWl0IEdsb2JhbFByb3BlcnR5IGxvb2sgdXAgaW4gYnl0ZWNvZGVzIGFscmVhZHkgYW5k
IGl0IG1heSBjYWNoZSB0aGUgdmFsdWUgZm9yIHRoZSBnbG9iYWwgc2NvcGUuCi0gICAgICAgICAg
ICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLCB3ZSBpdGVyYXRlIGFsbCB0aGUgQ29kZUJsb2Nr
cyBhbmQgcmV3cml0ZSB0aGUgaW5zdHJ1Y3Rpb24gdG8gY29udmVydCBHbG9iYWxQcm9wZXJ0eSB0
byBHbG9iYWxMZXhpY2FsVmFyLgotICAgICAgICAgICAgICAgIC8vIDEuIEluIExMSW50LCB3ZSBh
bHdheXMgY2hlY2sgbWV0YWRhdGEncyByZXNvbHZlVHlwZS4gU28gcmV3cml0dGVuIGluc3RydWN0
aW9uIGp1c3Qgd29ya3MuCi0gICAgICAgICAgICAgICAgLy8gMi4gSW4gQmFzZWxpbmUgSklULCB3
ZSBjaGVjayBtZXRhZGF0YSdzIHJlc29sdmVUeXBlIGluIEdsb2JhbFByb3BlcnR5IGNhc2Ugc28g
dGhhdCB3ZSBjYW4gbm90aWNlIG9uY2UgaXQgaXMgY2hhbmdlZC4KKyAgICAgICAgICAgICAgICAv
LyBUbyBtYWtlIGl0IGludmFsaWQsCisgICAgICAgICAgICAgICAgLy8gMS4gSW4gTExJbnQgYW5k
IEJhc2VsaW5lLCB3ZSBidW1wIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGFuZCBp
dCB3b3Jrcy4KICAgICAgICAgICAgICAgICAvLyAzLiBJbiBERkcgYW5kIEZUTCwgd2Ugd2F0Y2gg
dGhlIHdhdGNocG9pbnQgYW5kIGpldHRpc29uIG9uY2UgaXQgaXMgZmlyZWQuCi0gICAgICAgICAg
ICAgICAgc2hhZG93ZWRQcm9wZXJ0aWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eUxvb2tVcFN0YXR1
czo6Tm90Rm91bmQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDYsMTIgKzIwMywxNyBA
QCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVz
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQob2Zm
c2V0Rm9yQXNzZXJ0ID09IG9mZnNldCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBpZiAoIXNo
YWRvd2VkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5ub3Rp
ZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyh2bSwgV1RGTW92ZShzaGFkb3dlZFByb3BlcnRpZXMp
KTsKLSAgICAgICAgdGhyb3dTY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGlmIChsZXhp
Y2FsRGVjbGFyYXRpb25zLnNpemUoKSkgeworI2lmIEVOQUJMRShERkdfSklUKQorICAgICAgICBm
b3IgKGF1dG8mIGVudHJ5IDogbGV4aWNhbERlY2xhcmF0aW9ucykgeworICAgICAgICAgICAgLy8g
SWYgV2F0Y2hwb2ludFNldCBleGlzdHMsIGp1c3QgZmlyZSBpdC4gU2luY2UgREZHIFdhdGNocG9p
bnRTZXQgYWRkaXRpb24gaXMgYWxzbyBkb25lIG9uIHRoZSBtYWluIHRocmVhZCwgd2UgY2FuIHN5
bmMgdGhlbS4KKyAgICAgICAgICAgIC8vIFNvIHRoYXQgd2UgZG8gbm90IGNyZWF0ZSBXYXRjaHBv
aW50U2V0IGhlcmUuIERGRyB3aWxsIGNyZWF0ZSBpZiBuZWNlc3Nhcnkgb24gdGhlIG1haW4gdGhy
ZWFkLgorICAgICAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQgPSBnbG9iYWxPYmplY3Qt
PmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXRDb25jdXJyZW50bHkoZW50cnkua2V5
LmdldCgpKSkKKyAgICAgICAgICAgICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKHZtLCAiTGV4
aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0aWVzIik7Cisg
ICAgICAgIH0KKyNlbmRpZgorICAgICAgICBnbG9iYWxPYmplY3QtPmJ1bXBHbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoKHZtKTsKICAgICB9Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3Nzdh
ODUzYmZlNzA5Zjk0MmFjNjRmOGI0MTcxN2UwYTk0YWI2N2IwLi5iODgyOTJhOGJjNTU1NDk2OGM5
MmYwNzA5ODU5NzA3MDAxNjY4Mjg2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTE5ICBZdXN1a2Ug
U3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgW0pTQ10gSW52
YWxpZGF0ZSBvbGQgc2NvcGUgb3BlcmF0aW9ucyB1c2luZyBnbG9iYWwgbGV4aWNhbCBiaW5kaW5n
IGVwb2NoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTM2MDMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ3MzgwODY5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2xldC1sZXhpY2FsLWJp
bmRpbmctc2hhZG93LWV4aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanM6CisgICAgICAgICog
c3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRlbGV0
aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGJhcik6Cisg
ICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVt
cC1jb3VudGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdldDEp
OgorICAgICAgICAoZ2V0Mik6CisgICAgICAgIChnZXQxSWYpOgorICAgICAgICAoZ2V0MklmKToK
KyAgICAgICAgKiBzdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1l
dmVuLWlmLWl0LWZhaWxzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKGZvbyk6CisKIDIwMTktMDEtMTcgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgU3RyaW5nT2JqZWN0VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUgY2hl
Y2sgZm9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgb2JqZWN0IHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xvYmFs
LXByb3BlcnR5LWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hh
ZG93LWV4aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanMKaW5kZXggMjBiNDMyMmUwN2QwMTZl
MTJmZDZjMDM1ODRiNmRjMzJjMjQwZGE3Ni4uYjQ3YjcyY2I2MGRlMjE5MTM5YzI5YWU3YjhkMjll
YjQ0ZDFiNWIzMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGlu
Zy1zaGFkb3ctZXhpc3RpbmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9sZXQtbGV4aWNhbC1iaW5kaW5nLXNoYWRvdy1leGlzdGluZy1nbG9iYWwtcHJvcGVydHkt
ZnRsLmpzCkBAIC00MCw2ICs0MCw3IEBAIGZ1bmN0aW9uIGdldCgpIHsKICAgICBzaG91bGRCZShn
ZXQoKSwgMyk7CiAKIGZvbygpOworc2hvdWxkQmUoZ2xvYmFsVGhpcy5iYXIsIDQpOwogc2hvdWxk
QmUoYmFyLCA0KTsKIHNob3VsZEJlKGdldCgpLCA0KTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRp
bmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3Bl
cnR5LWJlZm9yZS1kZWxldGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTlmZTBkNTFjNTg0ZTg1YzBmMjY2
YWVhMjE0ODdlMGQ5M2Q0MTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2Nv
cGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKQEAg
LTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93
KTsKKworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICBmb28gPSA0MjsKK30KKworYmFyKCk7CitiYXIo
KTsKK2RlbGV0ZSBnbG9iYWxUaGlzLmZvbzsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vID0gNTBg
KTsKKworc2hvdWxkVGhyb3coKCkgPT4gYmFyKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBh
c3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcyBi
L0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVt
cC1jb3VudGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZGNkZDA2ZDIwODliZDlmMDk1YTFhMTgyMTlmNmJl
N2Y5YmM2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRp
b24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpAQCAtMCwwICsxLDU4IEBA
CisvL0AgcnVuRGVmYXVsdCgiLS10aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
PTIiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKworZm9vMSA9IDE7Citmb28yID0g
MjsKK2Z1bmN0aW9uIGdldDEoKSB7CisgICAgcmV0dXJuIGZvbzE7Cit9Citub0lubGluZShnZXQx
KTsKKworZnVuY3Rpb24gZ2V0MigpIHsKKyAgICByZXR1cm4gZm9vMjsKK30KK25vSW5saW5lKGdl
dDIpOworCitmdW5jdGlvbiBnZXQxSWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikK
KyAgICAgICAgcmV0dXJuIGZvbzE7CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MUlm
KTsKKworZnVuY3Rpb24gZ2V0MklmKGNvbmRpdGlvbikgeworICAgIGlmIChjb25kaXRpb24pCisg
ICAgICAgIHJldHVybiBmb28yOworICAgIHJldHVybiAtMTsKK30KK25vSW5saW5lKGdldDJJZik7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQxKCks
IDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCAxKTsK
KyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAgIHNob3VsZEJlKGdldDFJZih0cnVlKSwgMSk7
CisgICAgc2hvdWxkQmUoZ2V0MklmKHRydWUpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFs
c2UpLCAtMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorCiskLmV2YWxT
Y3JpcHQoYGNvbnN0IGZvbzEgPSA0MTtgKTsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vMiA9IDQy
O2ApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkQmUoZ2V0
MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MSgp
LCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKGZh
bHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0xKTsKK30KK3Nob3VsZEJl
KGdldDFJZih0cnVlKSwgNDEpOworc2hvdWxkQmUoZ2V0MklmKHRydWUpLCA0Mik7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5
LWV2ZW4taWYtaXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2Fj
aGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFkYWM4
MTFhMzhiZmIyNTJlYjdmNmNjYjNhYTQwOTc2MTQ2YzY1NQotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1p
Zi1pdC1mYWlscy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9J
bmxpbmUoc2hvdWxkVGhyb3cpOworCitmdW5jdGlvbiBmb28oKSB7CisgICAgYmFyID0gNDsKK30K
K09iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlzKTsKK2ZvbygpOworJC5ldmFsU2NyaXB0KCdj
b25zdCBiYXIgPSAzOycpOworc2hvdWxkVGhyb3coKCkgPT4gZm9vKCksIGBUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359657</attachid>
            <date>2019-01-20 16:09:58 -0800</date>
            <delta_ts>2019-01-21 22:42:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190120160957.patch</filename>
            <type>text/plain</type>
            <size>57455</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZTllNTg0NGE4ZTA0Y2Y5MDZmZGRlYTEzMjllNThiM2QzYzdjY2QyLi5hNTRiZGRiYjRmNjQwYThk
Y2FiNmViOWE2NThiMmNjYTEwODdlNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlv
bnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFdmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRv
dyB0aGUgZ2xvYmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUg
Y2FjaGVkIGluZm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBz
aW5jZSB3ZSBtYXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0
aGUgZm9sbG93aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbiBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgp
KTsgLy8gMAorICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxl
dGUgZ2xvYmFsVGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9
IDQyO2ApOworICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBp
dCByZXR1cm5zIDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xl
YXJlZC4KKworICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJv
ZHVjZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGlt
ZSB3ZSBpbnRyb2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGds
b2JhbCBwcm9wZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZp
cnN0IGNoZWNrCisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQg
Z28gdG8gc2xvdyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4g
T3VyIHNsb3cgcGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0
byB0aGUgYXBwcm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5y
ZXNvbHZlZFByb3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2Yg
dGhlIGJ5dGVjb2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUg
Y3VycmVudCBvbmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFz
IGxvbmcgYXMgd2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRf
ZnJvbV9zY29wZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2gg
c2luY2UgU3RydWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBv
cF9yZXNvbHZlX3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBp
dCBzdGFydHMgcmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNH
bG9iYWxPYmplY3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAg
ICBBbmQgaW4gdGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBv
cF9wdXRfdG9fc2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRh
IGZvciBzY29wZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRo
ZSBhcHByb3ByaWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQg
YmFzZWQgYXBwcm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkg
YXR0ZW1wdCB0byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5k
IGxvb2sgaW50byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAg
IGluZmluaXRlIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2
ZSBDb2RlQmxvY2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVu
IGlmIHRoZSBzaGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0
aGUgZXBvY2gsIHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZwor
ICAgICAgICBzdHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJv
bV9zY29wZSBmYWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUg
YW5kIG9wX3B1dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxC
aW5kaW5nVXBkYXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmlu
ZGluZ1NoYWRvd2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJv
cGVydGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBk
ZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Nj
b3BlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZy
b21TY29wZUdsb2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVy
ZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omds
b2JhbExleGljYWxCaW5kaW5nRXBvY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCk6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjphZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKToKKyAgICAg
ICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpjb3JyZWN0T3B0aW9ucyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjpzZXRPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6c2V0T3B0aW9uV2l0aG91
dEFsaWFzKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6
OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKToKKwogMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtKU0NdIFNocmluayBk
YXRhIHN0cnVjdHVyZSBzaXplIGluIEpTQy9oZWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiYjVmMTI2MTYwMGU1ZmRiMTk0ZWFlOThj
MDhiNTQ2NDdkN2QzYjdkLi4xMTViZDNiMDY1ZDY1MDMxNzczY2MxZjMxMjZkMzNmZDU1NzU0MjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
LnJiCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIK
QEAgLTgzMyw4ICs4MzMsMTEgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHJl
c29sdmVUeXBlOiBSZXNvbHZlVHlwZSwgIyBvZmZzZXQgNAotICAgICAgICBsb2NhbFNjb3BlRGVw
dGg6IHVuc2lnbmVkLCAjIG9mZnNldCA1Ci0gICAgICAgIF86IHsgIyBvZmZzZXQgNgorICAgICAg
ICBfMDogeyAjIG9mZnNldCA1CisgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVk
LAorICAgICAgICAgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDogdW5zaWduZWQsCisgICAg
ICAgIH0sCisgICAgICAgIF8xOiB7ICMgb2Zmc2V0IDYKICAgICAgICAgICAgICAjIHdyaXR0ZW4g
ZHVyaW5nIGxpbmtpbmcKICAgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQ6IFdyaXRlQmFy
cmllckJhc2VbSlNDZWxsXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSA9PSBNb2R1bGVW
YXIKICAgICAgICAgICAgICBzeW1ib2xUYWJsZTogV3JpdGVCYXJyaWVyQmFzZVtTeW1ib2xUYWJs
ZV0sICMgbGV4aWNhbEVudmlyb25tZW50ICYmIHR5cGUgIT0gTW9kdWxlVmFyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFiNWQyMjJlZmQ1MDUy
ODc5YjMxNmMxZDBlYWQ1MzkwNzIyMTQ0M2QuLmRjY2M0MTExNDg3Mzc1ZGMxOGI2YWRkYjUzOWEx
MDg2NzcyZWFhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC0yNjY4LDE4ICsyNjY4LDIzIEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1
ZW50RXhpdFNpdGVzKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotdm9pZCBDb2Rl
QmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3QgSWRlbnRp
ZmllclNldCYgc2V0KQordm9pZCBDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRl
KCkKIHsKICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkg
dG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuIFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVt
b3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTMzNDcKICAgICBpZiAoc2NyaXB0TW9kZSgpID09IEpTUGFyc2VyU2Ny
aXB0TW9kZTo6TW9kdWxlKQogICAgICAgICByZXR1cm47CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpOwotCi0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQqPihnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCkpOworICAgIFN5bWJvbFRhYmxlKiBzeW1i
b2xUYWJsZSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKIAogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKIAorICAgIGF1dG8gaXNTaGFkb3dl
ZCA9IFsmXSAoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgeworICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICByZXR1cm4gc3ltYm9s
VGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKTsKKyAgICB9OworCiAgICAgZm9yIChjb25zdCBh
dXRvJiBpbnN0cnVjdGlvbiA6ICptX2luc3RydWN0aW9ucykgewogICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CkBAIC0yNjg5LDcyICsyNjk0LDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhp
Y2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKICAg
ICAgICAgICAgIFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX3Jl
c29sdmVUeXBlOwogICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFs
UHJvcGVydHkgfHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGlkZW50aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQu
Y29udGFpbnMoaWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNz
IEpTR2xvYmFsTGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWlu
LgotICAgICAgICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUg
bGV4aWNhbCBiaW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0g
dGhpcyByZXdyaXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBK
U1Njb3BlOjphYnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0
ZWNvZGUubV9sb2NhbFNjb3BlRGVwdGgsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgaWRl
bnQsIEdldCwgYnl0ZWNvZGUubV9yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnRO
b0V4Y2VwdGlvbigpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9i
YWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExl
eGljYWxWYXIpOwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0g
bmVlZHNWYXJJbmplY3Rpb25DaGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fbG9jYWxTY29wZURlcHRoID0gMDsKLSAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgICAg
ICAgICBKU1Njb3BlKiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNv
ZGVCbG9jayhtZXRhZGF0YS5tX3Jlc29sdmVUeXBlLCB0aGlzKTsKLSAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKGNvbnN0YW50U2NvcGUgPT0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNldCh2bSwgdGhp
cywgY29uc3RhbnRTY29wZSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKENvZGVC
bG9ja0ludGVybmFsOjp2ZXJib3NlLCAiUmV3cml0ZSBvcF9yZXNvbHZlX3Njb3BlIGZyb20gIiwg
b3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzU2hhZG93ZWQoaWRlbnQuaW1w
bCgpKSkKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoID0gMDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLQotICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAg
ICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwot
ICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAg
ICAgICAgICAgIFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dl
dFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVU
eXBlID09IEdsb2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJv
cGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAg
ICAgICBpZiAoc2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgcGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRo
ZSBzY29wZSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0
ZWx5IGZpbmQgdGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdo
eSB3ZSBwZXJmb3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVz
b2x2ZU9wIG9wID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksIGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2Jh
bFNjb3BlKCksIGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgp
LCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZv
LnJlc29sdmVNb2RlKCksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5
cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhp
Y2FsVmFyLCBieXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50
U2V0OwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5k
OwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVy
Ym9zZSwgIlJld3JpdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVU
eXBlLCAiIHRvICIsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsKLSAgICAgICAgICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNv
bHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVUeXBlKCk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQ
cm9wZXJ0eSB8fCBvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrcykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gaWRlbnRpZmllcihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5j
b250YWlucyhpZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3Mg
SlNHbG9iYWxMZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4u
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBs
ZXhpY2FsIGJpbmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0
aGlzIHJld3JpdGluZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpT
U2NvcGU6OmFic3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRl
Y29kZS5tX3N5bWJvbFRhYmxlT3JTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3Bl
KCksIGlkZW50LCBQdXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IG9wLnR5cGUgPT0gRHluYW1pYyk7
Ci0KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBvcC50eXBl
OwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRy
OwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
cikgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhvcmlnaW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZv
ID0gR2V0UHV0SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgcmVzb2x2
ZVR5cGUsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IG9wLm9wZXJhbmQ7Ci0gICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbklmKENvZGVCbG9ja0ludGVybmFsOjp2ZXJib3NlLCAiUmV3
cml0ZSBvcF9wdXRfdG9fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM3NDhmYzA3YzI3MTEzODlmMjcwMzQ1
NGMyMjZlNWM3Y2I4MWMwNmEuLmM3NDc0MjZiMzhlNTY2ZWJiOWU4NDJjZTIzZWQ1OTM4NGViMGFl
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTE5
NSw3ICsxOTUsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRp
b25hbGx5KFZNJik7CiAKLSAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZN
JiwgY29uc3QgSWRlbnRpZmllclNldCYpOworICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdV
cGRhdGUoKTsKIAogICAgIHZvaWQgZHVtcFNvdXJjZSgpOwogICAgIHZvaWQgZHVtcFNvdXJjZShQ
cmludFN0cmVhbSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCA0ZTE4ZGY3MDNkM2QyMTY2ODZmNTg1OTgyNGYyYWM2Y2I5N2ZlMDBl
Li45ZDE2MTRkZWEzMDQyYjdlMmJjMDYwOGYxZTc4ZDRjNjUxOTIxMjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjE2Nyw5ICs2
MTY3LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzMzQ3CiAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNj
cmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgewogICAgICAgICAgICAg
ICAgIGlmIChyZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRp
ZmllclJlbWFwW2J5dGVjb2RlLm1fdmFyXTsKICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVz
KCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fdmFyXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKQEAgLTYyODEsOCArNjI4MiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBt
b2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuIFNv
IHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNDcK
LSAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlw
dE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAgICAgICAgICAgICAgICAg
ICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9w
ZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBp
ZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBKU1BhcnNl
clNjcmlwdE1vZGU6Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgu
d2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBn
ZXRQcmVkaWN0aW9uKCk7CiAKQEAgLTY0NTYsOCArNjQ1OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogQ3VycmVudGx5LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQuIFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZp
eGVkLgogICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTMzNDcKLSAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERl
c2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAg
ICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1v
ZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1fZ3JhcGgud2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZp
ZXJOdW1iZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4
aXQpOworICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMg
c3RhdHVzOwogICAgICAgICAgICAgICAgIGlmICh1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCmluZGV4IDhm
N2I5Y2VkOTliOGY3OTA5MGE3MjBlOWU0ZWJmZWRhZDZlOWFmMDMuLmJhNjg0MWRkYzQyZjkzNDQy
MzAyZTE1ZTQ0NDAxMWEyMDMxZTVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCkBAIC0zNiwxNiArMzYs
MjMgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1ib29sIERlc2lyZWRH
bG9iYWxQcm9wZXJ0aWVzOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZp
ZXJzJiBpZGVudGlmaWVycykKK2Jvb2wgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxW
YWxpZE9uTWFpblRocmVhZChWTSYgdm0sIERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMp
CiB7CisgICAgYm9vbCBpc1N0aWxsVmFsaWQgPSB0cnVlOwogICAgIGZvciAoY29uc3QgYXV0byYg
cHJvcGVydHkgOiBtX3NldCkgewogICAgICAgICBhdXRvKiB1aWQgPSBpZGVudGlmaWVycy5hdChw
cm9wZXJ0eS5pZGVudGlmaWVyTnVtYmVyKCkpOwotICAgICAgICBpZiAoYXV0byogd2F0Y2hwb2lu
dFNldCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRj
aHBvaW50U2V0KHVpZCkpIHsKLSAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludFNldC0+aXNTdGls
bFZhbGlkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCk7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbE9iamVjdC0+
Z2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAg
ICAgaWYgKCFzeW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CisgICAgICAgIC8vIFNldCBpbnZhbGlkYXRlZCBXYXRj
aHBvaW50U2V0IGhlcmUgdG8gcHJldmVudCBmdXJ0aGVyIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4K
KyAgICAgICAgcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCktPmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0
eVdhdGNocG9pbnRTZXQodWlkKS5maXJlQWxsKHZtLCAiTGV4aWNhbCBiaW5kaW5nIHNoYWRvd3Mg
YW4gZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnR5Iik7CisgICAgICAgIGlzU3RpbGxWYWxpZCA9IGZh
bHNlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkOwog
fQogCiB2b2lkIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjpyZWFsbHlBZGQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMsIENvbW1vbkRhdGEmIGNv
bW1vbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEds
b2JhbFByb3BlcnRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEds
b2JhbFByb3BlcnRpZXMuaAppbmRleCBlMzQwYTU5NjUxZTUxMDIwNDRlMzhhNDZiOWNkZjlmNTRk
YWMwOTI4Li42OWJkMzZkYTliZmJjY2UxNmViNTIxNWVmOTAxOWY0ZDE3MTQ1ZjdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVy
dGllcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIHsK
ICAgICAgICAgbV9zZXQuYWRkKFdURk1vdmUocHJvcGVydHkpKTsKICAgICB9CiAKLSAgICBib29s
IGlzU3RpbGxWYWxpZE9uTWFpblRocmVhZChEZXNpcmVkSWRlbnRpZmllcnMmKTsKKyAgICBib29s
IGlzU3RpbGxWYWxpZE9uTWFpblRocmVhZChWTSYsIERlc2lyZWRJZGVudGlmaWVycyYpOwogCiAg
ICAgdm9pZCByZWFsbHlBZGQoQ29kZUJsb2NrKiwgRGVzaXJlZElkZW50aWZpZXJzJiwgQ29tbW9u
RGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDgzY2Mx
ZDRiNjRlYjRkYjkxNjJhOTA4Y2JkY2NjN2U3ZTg1NWMwODAuLjVhNjBhZmI5ZTRlM2IwY2E2YmZh
MGFlYjYwMWRkMzFhODU4ODYzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCkBAIC0xMDU4LDYgKzEwNTgsMjAgQEAgYm9vbCBHcmFwaDo6aXNTYWZlVG9Mb2FkKEpTT2Jq
ZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgcmV0dXJuIG1fc2FmZVRvTG9h
ZC5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihiYXNlLCBvZmZzZXQpKTsKIH0KIAorYm9vbCBHcmFw
aDo6d2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyKQoreworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBp
ZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2
ZSBhIFdhdGNocG9pbnRTZXQsIGFuZCBpdCBpcyBhbHJlYWR5IGludmFsaWRhdGVkLCBpdCBtZWFu
cyB0aGF0IHRoaXMgc2NvcGUgb3BlcmF0aW9uIG11c3QgYmUgY2hhbmdlZCBmcm9tIEdsb2JhbFBy
b3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIsCisgICAgLy8gYnV0IHdlIHN0aWxsIGhhdmUgc3Rh
bGUgbWV0YWRhdGEgaGVyZSBzaW5jZSB3ZSBoYXZlIG5vdCB5ZXQgZXhlY3V0ZWQgdGhpcyBieXRl
Y29kZSBvcGVyYXRpb24gc2luY2UgdGhlIGludmFsaWRhdGlvbi4gSnVzdCBlbWl0dGluZyBGb3Jj
ZU9TUkV4aXQgdG8gdXBkYXRlIHRoZQorICAgIC8vIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0
byB0aGlzIGNvZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdl
dFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQodWlkKSkgeworICAgICAgICBpZiAoIXdh
dGNocG9pbnQtPmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBnbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0
eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxs
Qnl0ZWNvZGVMaXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVuZXNzLmZp
bmQoY29kZUJsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBlZTJl
MjY3ZTBjZTVkNmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3MDczZjFk
ZWRlZThkZjZlYjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CkBAIC03OTMsNiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFi
bGUgewogICAgIGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRp
b24mKTsKICAgICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvblNldCYpOwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0
KiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYgaXQncyBr
bm93biB0aGF0IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZlbiBvZmZz
ZXQgaXMgZmluZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdoaWNoIGNv
bmRpdGlvbnMgd2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wgaXNTYWZl
VG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0YWUwMGZk
ZWIxYmY1Li5jNWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFBs
YW46Om5vdGlmeVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQo
KQogewotICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWluVGhy
ZWFkKG1faWRlbnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGls
bFZhbGlkT25NYWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29tcGlsYXRp
b25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5MmYz
N2VjOTA5Nzc1N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4yZjRmMzJlMTA2YjlkYjU0NmI4
NGIyNGY3Yjk4OTk2YzlkM2RiNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcApAQCAtNzY2LDcgKzc2NiwxNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAgYXV0byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAg
ICAgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5
OgotICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKKyAg
ICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAg
ICAgICAgIEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNjb3BlRm9y
Q29kZUJsb2NrKHJlc29sdmVUeXBlLCBtX2NvZGVCbG9jayk7CisgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChjb25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVj
ayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICAgICAgbG9h
ZDMyKCZtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAg
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKCkpLCByZWdUMSkpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNvbnN0YW50
U2NvcGUpLCByZWdUMCk7CisgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFy
OgogICAgICAgICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAg
IGNhc2UgR2xvYmFsTGV4aWNhbFZhcjoKQEAgLTc5OSwxMSArODA5LDE3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToK
ICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAg
ICAvLyBTaW5jZSB0aGVzZSBHbG9iYWxQcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxM
ZXhpY2FsVmFyLCB3ZSBzaG91bGQgbG9hZCB0aGUgdmFsdWUgZnJvbSBtZXRhZGF0YS4KLSAgICAg
ICAgSlNTY29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3Bl
LnNsb3QoKTsKLSAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKHJlc29sdmVUeXBlKSk7Ci0gICAgICAgIGxvYWRQdHIoY29uc3RhbnRTY29wZVNsb3Qs
IHJlZ1QwKTsKLSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBK
dW1wTGlzdCBza2lwVG9FbmQ7CisgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9yZXNvbHZlVHlw
ZSwgcmVnVDApOworCisgICAgICAgIEp1bXAgbm90R2xvYmFsUHJvcGVydHkgPSBicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihyZXNvbHZlVHlwZSkpOworICAgICAgICBlbWl0
Q29kZShyZXNvbHZlVHlwZSk7CisgICAgICAgIHNraXBUb0VuZC5hcHBlbmQoanVtcCgpKTsKKwor
ICAgICAgICBub3RHbG9iYWxQcm9wZXJ0eS5saW5rKHRoaXMpOworICAgICAgICBlbWl0Q29kZShu
ZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXIpOworCisgICAgICAgIHNraXBU
b0VuZC5saW5rKHRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBVbnJlc29s
dmVkUHJvcGVydHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAppbmRleCAzM2Q2YWU0NjA4NjQzNzZhMDU0MGI2OWQxNTY0YmU1
ZWZhYzEzNjlmLi4zZjU5NjBiNjI4YjQxNDdkYzZjNWEzNzM3YmRlZmZkMWZjMzc5YWM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82
NC5jcHAKQEAgLTc2OSw3ICs3NjksMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29w
ZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gZW1pdENv
ZGUgPSBbJl0gKFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKSB7CiAgICAgICAgIHN3aXRjaCAocmVz
b2x2ZVR5cGUpIHsKICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKLSAgICAgICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgICAgIGNhc2UgR2xvYmFs
UHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAgICBKU1Njb3BlKiBj
b25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhyZXNvbHZl
VHlwZSwgbV9jb2RlQmxvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RhbnRT
Y29wZSk7CisgICAgICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rp
b25DaGVja3MocmVzb2x2ZVR5cGUpKTsKKyAgICAgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9n
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2Fz
ZShicmFuY2gzMihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKS0+YWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVnVDEpKTsK
KyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7
CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY29uc3RhbnRTY29wZSksIHJlZ1QwKTsK
KyAgICAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICBjYXNl
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6IAogICAgICAgICBjYXNlIEdsb2JhbExl
eGljYWxWYXI6CkBAIC04MDYsNiArODE3LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9z
Y29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICAvLyBT
aW5jZSB0aGVzZSBHbG9iYWxQcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2Fs
VmFyLCB3ZSBzaG91bGQgbG9hZCB0aGUgdmFsdWUgZnJvbSBtZXRhZGF0YS4KICAgICAgICAgSlNT
Y29wZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3Qo
KTsKICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KHJlc29sdmVUeXBlKSk7CisgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5hZGRyZXNz
T2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCByZWdUMSkpOwogICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOwogICAgICAgICBsb2FkUHRyKGNv
bnN0YW50U2NvcGVTbG90LCByZWdUMCk7CiAgICAgICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCBy
ZWdUMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3
N2I3NmEzMDAzMGYuLmM0NDNiNDhiNmNhNTdlYzhmMGE5Y2QyNjMxYWQ2MWU2ODcyMjQyZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyMzJfNjQuYXNtCkBAIC0yMDkyLDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0
aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50
U2NvcGUoKQotICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3Rh
bnRTY29wZVt0NV0sICB0MAorICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAg
ICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRz
dAorICAgIGVuZAorCisgICAgbWFjcm8gcmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdl
dENvbnN0YW50U2NvcGUodDApCiAgICAgICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQK
IAorICAgIG1hY3JvIGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xv
YmFsT2JqZWN0LCBzY3JhdGNoKQorICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRh
dGE6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisg
ICAgICAgIGJpbmVxIEpTR2xvYmFsT2JqZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hb
Z2xvYmFsT2JqZWN0XSwgc2NyYXRjaCwgc2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJl
c29sdmVTY29wZSgpCiAgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9s
b2NhbFNjb3BlRGVwdGhbdDVdLCB0MgogICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTE3
LDE1ICsyMTI2LDE3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BS
ZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVy
dHk6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENv
bnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybihDZWxsVGFn
LCB0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxM
ZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29w
ZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZh
ciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3Rh
bnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJN
b2R1bGVWYXIKQEAgLTIxMzMsMjIgKzIxNDQsMjQgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9y
ZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gK
IAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAsIE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywg
LnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2so
LnJEeW5hbWljKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0YW50U2NvcGUo
dDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1pYywgdDAsIHQy
KQorICAgIHJldHVybihDZWxsVGFnLCB0MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9u
Q2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0
YW50U2NvcGUoKQogCiAuckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgog
ICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJD
bG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5y
RHluYW1pYykKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3Bl
KCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwg
Q2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yRHluYW1pYwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRl
eCA0ZTM3YTA5NjAzZjczZDk3OTY3MzQ5OGRmOTk3MDZjY2MxYTFmZDkzLi5iZDdkMDJjOWM5ZDQ1
NDkwZmY3YjI4NTY5ZDFhYWY3NjYzNmM2NGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjE1MCwxMSArMjE1
MCwyMCBAQCBlbmQKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNv
bHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgIG1ldGFkYXRhKHQ1LCB0MCkKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAg
ICAgICBsb2FkcCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0s
ICB0MAorICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJl
c29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAor
CisgICAgbWFjcm8gcmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2Nv
cGUodDApCiAgICAgICAgIHJldHVybih0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQor
ICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoCisgICAgICAgIGJpbmVxIEpTR2xvYmFs
T2JqZWN0OjptX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2hbZ2xvYmFsT2JqZWN0XSwgc2NyYXRj
aCwgc2xvd1BhdGgKKyAgICBlbmQKKwogICAgIG1hY3JvIHJlc29sdmVTY29wZSgpCiAgICAgICAg
IGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9sb2NhbFNjb3BlRGVwdGhbdDVdLCB0
MgogICAgICAgICBnZXQobV9zY29wZSwgdDApCkBAIC0yMTc0LDE1ICsyMTgzLDE3IEBAIGxsaW50
T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoCiAKICNyR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAsIEds
b2JhbFByb3BlcnR5LCAuckdsb2JhbFZhcgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdl
dENvbnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5y
RHluYW1pYywgdDAsIHQyKQorICAgIHJldHVybih0MCkKIAogLnJHbG9iYWxWYXI6CiAgICAgYmlu
ZXEgdDAsIEdsb2JhbFZhciwgLnJHbG9iYWxMZXhpY2FsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29w
ZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZhcjoKICAg
ICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhciwgLnJDbG9zdXJlVmFyCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xvc3VyZVZhcjoKICAg
ICBiaW5lcSB0MCwgQ2xvc3VyZVZhciwgLnJNb2R1bGVWYXIKQEAgLTIxOTAsMjIgKzIyMDEsMjQg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwg
bWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAogLnJNb2R1bGVWYXI6CiAgICAgYmluZXEgdDAs
IE1vZHVsZVZhciwgLnJHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBn
ZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2hDaGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xv
YmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcywgLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
CiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNj
b3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25D
aGVja3MsIC5yRHluYW1pYwpAQCAtMjI1Niw3ICsyMjY5LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGMKIAogI2dHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHks
IC5nR2xvYmFsVmFyCi0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwg
Z2V0LCAuZ0R5bmFtaWMpCisgICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29w
ZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNh
bCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNj
b3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZh
cjoKQEAgLTIyNzcsNyArMjI5MCw3IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21f
c2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKIC5nR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcwotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdldCwg
LmdEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BHZXRGcm9tU2NvcGUsIGdl
dCwgLmdEeW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmlu
ZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3
aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIGdldFByb3BlcnR5KCkKIAogLmdHbG9iYWxWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOgpAQCAtMjM2NCw3ICsyMzc3LDcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9wdXRfdG9fc2NvcGUsIE9wUHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG0KIAogLnBHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVy
dHksIC5wR2xvYmFsVmFyCi0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUs
IGdldCwgLnBEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3Bl
LCBnZXQsIC5wRHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2Fs
IGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2Nv
cGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJy
aWVyT25PcGVyYW5kcyhzaXplLCBnZXQsIG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2go
KQpAQCAtMjM5MSw3ICsyNDA0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9wdXRfdG9fc2Nv
cGUsIE9wUHV0VG9TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG0KIAogLnBHbG9i
YWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcywgLnBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzCi0gICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBE
eW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRUb1Njb3BlLCBnZXQsIC5w
RHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcg
ZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBi
ZSBjaGFuZ2VkIHRvby4KICAgICBwdXRQcm9wZXJ0eSgpCiAgICAgd3JpdGVCYXJyaWVyT25PcGVy
YW5kcyhzaXplLCBnZXQsIG1fc2NvcGUsIG1fdmFsdWUpCiAgICAgZGlzcGF0Y2goKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXgg
Yjg4MDQ1OGVjODc3ZTUxODYwNzRjMDlkMTI3NTgzNmQ3NDdjMzE0OC4uYmJiYWRhYjY3ZmRmNmZj
YWQ0Y2FjMDY2NGNkYzhlNjBiZjVlNGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0xMDY3LDI5ICsxMDY3LDMxIEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKQogICAgIC8vIE1vZHVsZVZhciBk
b2VzIG5vdCBrZWVwIHRoZSBzY29wZSByZWdpc3RlciB2YWx1ZSBhbGl2ZSBpbiBERkcuCiAgICAg
QVNTRVJUKHJlc29sdmVUeXBlICE9IE1vZHVsZVZhcik7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7Cisg
ICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczoKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVu
cmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHJl
c29sdmVkU2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihyZXNvbHZlZFNjb3Bl
KTsKICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmhhc1Byb3Bl
cnR5KGV4ZWMsIGlkZW50KTsKICAgICAgICAgICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgICAg
ICAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9j
a2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBp
ZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsUHJvcGVydHk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotCisgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBl
KSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5
OwogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2JqZWN0
OworICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9
IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UgaWYgKHJlc29sdmVkU2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmly
b25tZW50KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQq
PihyZXNvbHZlZFNjb3BlKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7Ci0gICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUg
PT0gVW5yZXNvbHZlZFByb3BlcnR5KQotICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2
ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrczsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5t
X2dsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudDsKICAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgUkVUVVJOKHJlc29sdmVkU2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCAxMzBhMGM4MmEyZjdl
ZjZlZDg3M2UwNjI5NTc5YzNhMzM2NzdhY2FjLi43ZWVhZjcwNGI0MzM1NDM5NjA5N2I5ZWI0ODIx
MTc3ZWI1YTE0OTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaApAQCAtMTI0LDI4ICsxMjQsMzkgQEAgaW5saW5lIHZvaWQgdHJ5Q2FjaGVQ
dXRUb1Njb3BlR2xvYmFsKAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0
aGV5IGRvbid0IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cg
aG93IHRvIGNhY2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgogICAgIGF1dG8mIG1ldGFkYXRhID0g
Ynl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBt
ZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKLSAgICBpZiAocmVzb2x2ZVR5cGUg
IT0gR2xvYmFsUHJvcGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzIAotICAgICAgICAmJiByZXNvbHZlVHlwZSAhPSBVbnJlc29sdmVkUHJv
cGVydHkgJiYgcmVzb2x2ZVR5cGUgIT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcykKLSAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVz
b2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNhc2Ug
VW5yZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkpIHsK
LSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0g
VW5yZXNvbHZlZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M7Ci0gICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVU
eXBlOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rp
b25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0eTsKKyAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3
UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJlbG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4u
CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2Nr
KTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0YWRh
dGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0YS5t
X2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNj
b3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczog
eworICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2VkLiBV
cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxMZXhp
Y2FsVmFyLgorICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KCkp
IHsKICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29wZSk7
Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBlID09
IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2FsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29s
dmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVu
dHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5nZXQoaWRlbnQu
aW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAg
ICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0
KCkpLnNsb3QoKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIAorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0g
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CiAgICAgICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpOwpAQCAtMTc2LDIyICsxODcsMzYgQEAgaW5saW5lIHZvaWQg
dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShleGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwogCi0gICAgaWYgKHJlc29sdmVUeXBlID09IFVu
cmVzb2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChyZXNvbHZlVHlwZSkgeworICAgIGNh
c2UgVW5yZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrczogewogICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsT2JqZWN0KCkp
IHsKLSAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUg
PT0gVW5yZXNvbHZlZFByb3BlcnR5ID8gR2xvYmFsUHJvcGVydHkgOiBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZl
VHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVUeXBlKSA/IEdsb2JhbFByb3Bl
cnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3BlcnR5OwogICAgICAgICAgICAg
cmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cgYmVsb3cgY2FjaGluZyBtZWNo
YW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBu
ZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQo
KSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7
CisgICAgfQorICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJp
bmRpbmcgRXBvY2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xv
YmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVz
b2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhp
Y2FsVmFyIDogR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAg
ICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KHJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDog
R2xvYmFsTGV4aWNhbFZhcjsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkp
OwogICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1
dEluZm8ucmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5pbml0aWFsaXphdGlvbk1vZGUoKSk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9p
bnRTZXQgPSBlbnRyeS53YXRjaHBvaW50U2V0KCk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX29w
ZXJhbmQgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50LT52YXJpYWJsZUF0KGVudHJ5LnNjb3BlT2Zmc2V0KCkpLnNsb3QoKSk7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQgZ2xvYmFs
cy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUsIHdlIGRp
ZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiYjcwY2Y1
NmI0OTM0N2FiZWFmMjNjNWEyNjM5MjU1YTk3NzJhMGZkLi5lNTQwMDQ4ZWQ4YThiNzkwZDlkODZk
ZDkxOTAxZmVmODVmNGM5YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xODUyLDIwICsxODUyLDE3IEBAIGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgSlNHbG9iYWxPYmplY3Q6OmludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2Fs
ZXMoKQogfQogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojpu
b3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQm
IHNldCkKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
KFZNJiB2bSkKIHsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0j
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgZm9yIChjb25zdCBhdXRvJiBrZXkgOiBzZXQpCi0gICAg
ICAgIGVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoa2V5LmdldCgpKS5maXJl
QWxsKHZtLCAiTGV4aWNhbCBiaW5kaW5nIHNoYWRvd3MgdGhlIGV4aXN0aW5nIGdsb2JhbCBwcm9w
ZXJ0aWVzIik7Ci0jZW5kaWYKLSAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJhdGUoWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaykgewotICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKSAhPSB0aGlzKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBjb2RlQmxvY2st
Pm5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKHZtLCBzZXQpOwotICAgICAgICBzY29wZS5h
c3NlcnROb0V4Y2VwdGlvbigpOwotICAgIH0pOwotICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBp
ZiAoKyttX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPT0gT3B0aW9uczo6dGhyZXNob2xkRm9y
R2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBlcG9j
aCBvdmVyZmxvd3MsIHdlIHNob3VsZCByZXdyaXRlIGFsbCB0aGUgQ29kZUJsb2NrIHRvIGFkanVz
dCB0byB0aGUgbmV3bHkgc3RhcnRlZCBnZW5lcmF0aW9uLgorICAgICAgICBtX2dsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2ggPSAxOworICAgICAgICB2bS5oZWFwLmNvZGVCbG9ja1NldCgpLml0ZXJh
dGUoWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaykgeworICAgICAgICAgICAgaWYgKGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBjb2RlQmxvY2stPm5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCk7CisgICAgICAg
IH0pOworICAgIH0KIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6cXVldWVNaWNyb3Rhc2soUmVm
PE1pY3JvdGFzaz4mJiB0YXNrKQpAQCAtMTg5MSwxMSArMTg4OCwxMyBAQCBib29sIEpTR2xvYmFs
T2JqZWN0OjpoYXNJbnRlcmFjdGl2ZURlYnVnZ2VyKCkgY29uc3QKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIFdhdGNocG9pbnRTZXQqIEpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlX
YXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CisgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzTG9j
ayk7CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHMu
Z2V0KHVpZCk7CiB9CiAKIFdhdGNocG9pbnRTZXQmIEpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZl
cmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Cisg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdh
dGNocG9pbnRTZXRzTG9jayk7CiAgICAgcmV0dXJuIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5
V2F0Y2hwb2ludFNldHMuZW5zdXJlKHVpZCwgW10gewogICAgICAgICByZXR1cm4gV2F0Y2hwb2lu
dFNldDo6Y3JlYXRlKElzV2F0Y2hlZCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
M2ExMzgyZDU3OTc5Y2MyOWIxNmZiNjhlOTNmNGZiN2Q5N2U2ZTM5ZC4uZDUyZDBmYmZjOTgyOGU2
OTY2NmFmNWI1MjAxNGI4ZjM5YzZlNTZlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00ODYsMTAgKzQ4NiwxMiBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICB1c2luZyBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50
U2V0cyA9IEhhc2hNYXA8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgUmVmPFdhdGNocG9pbnRT
ZXQ+LCBJZGVudGlmaWVyUmVwSGFzaD47CiAgICAgUmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0
Y2hwb2ludFNldHMgbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0czsKKyAg
ICBDb25jdXJyZW50SlNMb2NrIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNl
dHNMb2NrOwogI2VuZGlmCiAKICAgICBib29sIG1fZXZhbEVuYWJsZWQgeyB0cnVlIH07CiAgICAg
Ym9vbCBtX3dlYkFzc2VtYmx5RW5hYmxlZCB7IHRydWUgfTsKKyAgICB1bnNpZ25lZCBtX2dsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2ggeyAxIH07CiAgICAgU3RyaW5nIG1fZXZhbERpc2FibGVkRXJy
b3JNZXNzYWdlOwogICAgIFN0cmluZyBtX3dlYkFzc2VtYmx5RGlzYWJsZWRFcnJvck1lc3NhZ2U7
CiAgICAgUnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwpAQCAtNzUxLDcgKzc1MywxMCBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGludGxQbHVyYWxSdWxlc0F2YWlsYWJsZUxvY2Fs
ZXMoKTsKICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJp
bmRpbmdTaGFkb3dpbmcoVk0mLCBjb25zdCBJZGVudGlmaWVyU2V0Jik7CisgICAgdm9pZCBidW1w
R2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaChWTSYpOworICAgIHVuc2lnbmVkIGdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2goKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2g7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IGdsb2JhbExleGljYWxCaW5kaW5nRXBvY2hPZmZz
ZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNHbG9iYWxPYmplY3QsIG1fZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaCk7IH0KKyAgICB1bnNpZ25lZCogYWRkcmVzc09mR2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCgpIHsgcmV0dXJuICZtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2g7IH0K
IAogICAgIHZvaWQgc2V0Q29uc29sZUNsaWVudChDb25zb2xlQ2xpZW50KiBjb25zb2xlQ2xpZW50
KSB7IG1fY29uc29sZUNsaWVudCA9IGNvbnNvbGVDbGllbnQ7IH0KICAgICBDb25zb2xlQ2xpZW50
KiBjb25zb2xlQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9jb25zb2xlQ2xpZW50OyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCmluZGV4IDk2MmQ4N2U5OTI2ZGFj
ZTM3NjZmNTk3M2QwOTZkODgyMjdlMWRlNzEuLjhiMDVjYTgyMzAwYmM3OWEyMjlhYzYwZjg2YmI0
NTY2N2VlZmRhNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CkBAIC0zNzYsNiArMzc2LDEzIEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlRGVmYXVsdHMoKQogI2Vu
ZGlmCiB9CiAKK3N0YXRpYyB2b2lkIGNvcnJlY3RPcHRpb25zKCkKK3sKKyAgICB1bnNpZ25lZCB0
aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gT3B0aW9uczo6dGhyZXNob2xk
Rm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOworICAgIGlmICh0aHJlc2hvbGRGb3JHbG9i
YWxMZXhpY2FsQmluZGluZ0Vwb2NoID09IDAgfHwgdGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCA9PSAxKQorICAgICAgICBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoKCkgPSBVSU5UX01BWDsKK30KKwogc3RhdGljIHZvaWQgcmVjb21wdXRl
RGVwZW5kZW50T3B0aW9ucygpCiB7CiAjaWYgIWRlZmluZWQoTkRFQlVHKQpAQCAtNTcyLDYgKzU3
OSw4IEBAIHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgMAogICAgICAgICAgICAgICAg
IDsgLy8gRGVjb25mdXNlIGVkaXRvcnMgdGhhdCBkbyBhdXRvIGluZGVudGF0aW9uCiAjZW5kaWYK
KworICAgICAgICAgICAgY29ycmVjdE9wdGlvbnMoKTsKICAgICAKICAgICAgICAgICAgIHJlY29t
cHV0ZURlcGVuZGVudE9wdGlvbnMoKTsKIApAQCAtNzA1LDYgKzcxNCw4IEBAIGJvb2wgT3B0aW9u
czo6c2V0T3B0aW9ucyhjb25zdCBjaGFyKiBvcHRpb25zU3RyKQogICAgICAgICB9CiAgICAgfQog
CisgICAgY29ycmVjdE9wdGlvbnMoKTsKKwogICAgIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMo
KTsKIAogICAgIGR1bXBPcHRpb25zSWZOZWVkZWQoKTsKQEAgLTc0MSw2ICs3NTIsNyBAQCBib29s
IE9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyhjb25zdCBjaGFyKiBhcmcpCiAgICAgICAg
IGJvb2wgc3VjY2VzcyA9IHBhcnNlKHZhbHVlU3RyLCB2YWx1ZSk7ICAgICAgICAgICAgICAgICAg
ICAgXAogICAgICAgICBpZiAoc3VjY2VzcykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIG5hbWVfKCkgPSB2YWx1ZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb3JyZWN0T3B0aW9u
cygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAg
cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCmluZGV4IDQ4ZjZlNjJhN2EwMmI5NDFhOWMzMWU4ODFjYTZjYjFmMjlkMjI0YjYuLjU0
MjFhODM5ZGZkZTIyMjQ1Zjc1YTJhMGU5MDBkZThkYTVkYmRmNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTUxMCw2ICs1MTAsNyBAQCBjb25zdGV4cHIgYm9v
bCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluZ0FwaSA9IGZhbHNlOwogICAgIHYoYm9vbCwgdHJh
Y2VCYXNlbGluZUpJVEV4ZWN1dGlvbiwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
b3B0aW9uU3RyaW5nLCBkaXNrQ2FjaGVQYXRoLCBudWxscHRyLCBSZXN0cmljdGVkLCAiIikgXAog
ICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2FjaGUsIGZhbHNlLCBSZXN0cmljdGVkLCAiIikgXAorICAg
IHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIFVJTlRf
TUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2gu
IElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUsIENvZGVCbG9jayBtZXRhZGF0YSBm
b3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQgZ2xvYmFsbHkuIEl0IG5lZWRzIHRv
IGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cAppbmRleCAxYzIxOTY3ZmMxZDgyMTgyZjczMzVhMGQ3ZjdhYmE5OWVjZGM1YjJlLi4xYTNmMDky
NDJlZDhkMmYwM2RkODIzMjM0M2I5MTM5MmU4OGNiNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC0xMDcsNyArMTA3
LDYgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9u
bWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQoKTsKICAgICBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJpYWJs
ZURlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT52YXJpYWJsZURlY2xhcmF0aW9ucygp
OwogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxEZWNsYXJhdGlvbnMgPSB1
bmxpbmtlZENvZGVCbG9jay0+bGV4aWNhbERlY2xhcmF0aW9ucygpOwotICAgIElkZW50aWZpZXJT
ZXQgc2hhZG93ZWRQcm9wZXJ0aWVzOwogICAgIC8vIFRoZSBFUzYgc3BlYyBzYXlzIHRoYXQgbm8g
dmFycy9nbG9iYWwgcHJvcGVydGllcy9sZXQvY29uc3QgY2FuIGJlIGR1cGxpY2F0ZWQgaW4gdGhl
IGdsb2JhbCBzY29wZS4KICAgICAvLyBUaGlzIGNhcnJpZWQgb3V0IHNlY3Rpb24gMTUuMS44IG9m
IHRoZSBFUzYgc3BlYzogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC9pbmRleC5odG1sI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KICAgICB7
CkBAIC0xMzEsMTEgKzEzMCw5IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlh
bGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAg
ICAgICAgLy8gTGV4aWNhbCBiaW5kaW5ncyBjYW4gc2hhZG93IGdsb2JhbCBwcm9wZXJ0aWVzIGlm
IHRoZSBnaXZlbiBwcm9wZXJ0eSdzIGF0dHJpYnV0ZSBpcyBjb25maWd1cmFibGUuCiAgICAgICAg
ICAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2xvYmFsZGVj
bGFyYXRpb25pbnN0YW50aWF0aW9uIHN0ZXAgNS1jLCBgaGFzUmVzdHJpY3RlZEdsb2JhbGAgYmVj
b21lcyBmYWxzZQogICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgd2UgbWF5IGVtaXQgR2xvYmFs
UHJvcGVydHkgbG9vayB1cCBpbiBieXRlY29kZXMgYWxyZWFkeSBhbmQgaXQgbWF5IGNhY2hlIHRo
ZSB2YWx1ZSBmb3IgdGhlIGdsb2JhbCBzY29wZS4KLSAgICAgICAgICAgICAgICAvLyBUbyBtYWtl
IGl0IGludmFsaWQsIHdlIGl0ZXJhdGUgYWxsIHRoZSBDb2RlQmxvY2tzIGFuZCByZXdyaXRlIHRo
ZSBpbnN0cnVjdGlvbiB0byBjb252ZXJ0IEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxW
YXIuCi0gICAgICAgICAgICAgICAgLy8gMS4gSW4gTExJbnQsIHdlIGFsd2F5cyBjaGVjayBtZXRh
ZGF0YSdzIHJlc29sdmVUeXBlLiBTbyByZXdyaXR0ZW4gaW5zdHJ1Y3Rpb24ganVzdCB3b3Jrcy4K
LSAgICAgICAgICAgICAgICAvLyAyLiBJbiBCYXNlbGluZSBKSVQsIHdlIGNoZWNrIG1ldGFkYXRh
J3MgcmVzb2x2ZVR5cGUgaW4gR2xvYmFsUHJvcGVydHkgY2FzZSBzbyB0aGF0IHdlIGNhbiBub3Rp
Y2Ugb25jZSBpdCBpcyBjaGFuZ2VkLgorICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52
YWxpZCwKKyAgICAgICAgICAgICAgICAvLyAxLiBJbiBMTEludCBhbmQgQmFzZWxpbmUsIHdlIGJ1
bXAgdGhlIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggYW5kIGl0IHdvcmtzLgogICAgICAg
ICAgICAgICAgIC8vIDMuIEluIERGRyBhbmQgRlRMLCB3ZSB3YXRjaCB0aGUgd2F0Y2hwb2ludCBh
bmQgamV0dGlzb24gb25jZSBpdCBpcyBmaXJlZC4KLSAgICAgICAgICAgICAgICBzaGFkb3dlZFBy
b3BlcnRpZXMuYWRkKGVudHJ5LmtleS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9va1VwU3RhdHVzOjpOb3RGb3VuZDoKICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTIwNiwxMiArMjAzLDE4IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJh
bWUqIGNhbGxGCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChvZmZzZXRGb3JBc3NlcnQgPT0g
b2Zmc2V0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlmICghc2hhZG93ZWRQcm9wZXJ0aWVz
LmlzRW1wdHkoKSkgewotICAgICAgICBnbG9iYWxPYmplY3QtPm5vdGlmeUxleGljYWxCaW5kaW5n
U2hhZG93aW5nKHZtLCBXVEZNb3ZlKHNoYWRvd2VkUHJvcGVydGllcykpOwotICAgICAgICB0aHJv
d1Njb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgaWYgKGxleGljYWxEZWNsYXJhdGlvbnMu
c2l6ZSgpKSB7CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7CisgICAgICAgICAgICAvLyBJZiBXYXRjaHBvaW50U2V0
IGV4aXN0cywganVzdCBmaXJlIGl0LiBTaW5jZSBERkcgV2F0Y2hwb2ludFNldCBhZGRpdGlvbiBp
cyBhbHNvIGRvbmUgb24gdGhlIG1haW4gdGhyZWFkLCB3ZSBjYW4gc3luYyB0aGVtLgorICAgICAg
ICAgICAgLy8gU28gdGhhdCB3ZSBkbyBub3QgY3JlYXRlIFdhdGNocG9pbnRTZXQgaGVyZS4gREZH
IHdpbGwgY3JlYXRlIGlmIG5lY2Vzc2FyeSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAg
ICAvLyBBbmQgaXQgd2lsbCBvbmx5IGNyZWF0ZSBub3QtaW52YWxpZGF0ZWQgd2F0Y2hwb2ludCBz
ZXQgaWYgdGhlIGdsb2JhbCBsZXhpY2FsIGVudmlyb25tZW50IGJpbmRpbmcgZG9lc24ndCBleGlz
dCwgd2hpY2ggaXMgd2h5IHRoaXMgY29kZSB3b3Jrcy4KKyAgICAgICAgICAgIGlmIChhdXRvKiB3
YXRjaHBvaW50U2V0ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBv
aW50U2V0KGVudHJ5LmtleS5nZXQoKSkpCisgICAgICAgICAgICAgICAgd2F0Y2hwb2ludFNldC0+
ZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIGFuIGV4aXN0aW5nIGdsb2JhbCBw
cm9wZXJ0eSIpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5idW1w
R2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCh2bSk7CiAgICAgfQotCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNzc3YTg1M2JmZTcwOWY5NDJhYzY0ZjhiNDE3MTdlMGE5NGFiNjdiMC4uMzUyM2Q0
ZDFhNTk3YzlhMTcyODJkMTFlZjAyMTFmODUzNjNiNmRkYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOS0w
MS0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAg
ICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlvbnMgdXNpbmcgZ2xvYmFsIGxl
eGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4MDg2OT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9s
ZXQtbGV4aWNhbC1iaW5kaW5nLXNoYWRvdy1leGlzdGluZy1nbG9iYWwtcHJvcGVydHktZnRsLmpz
OgorICAgICAgICAqIHN0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5
LWJlZm9yZS1kZWxldGluZy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAg
ICAgIChiYXIpOgorICAgICAgICAqIHN0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFs
LXByb3BlcnR5LWJ1bXAtY291bnRlci5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZXQxKToKKyAgICAgICAgKGdldDIpOgorICAgICAgICAoZ2V0MUlmKToKKyAgICAg
ICAgKGdldDJJZik6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9i
YWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChmb28pOgorCiAyMDE5LTAxLTE3ICBTYWFtIGJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZ09iamVjdFVzZSBzaG91bGQgbm90IGJlIGEg
c3RydWN0dXJlIGNoZWNrIGZvciB0aGUgb3JpZ2luYWwgc3RyaW5nIG9iamVjdCBzdHJ1Y3R1cmUK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4
aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9sZXQtbGV4aWNh
bC1iaW5kaW5nLXNoYWRvdy1leGlzdGluZy1nbG9iYWwtcHJvcGVydHktZnRsLmpzCmluZGV4IDIw
YjQzMjJlMDdkMDE2ZTEyZmQ2YzAzNTg0YjZkYzMyYzI0MGRhNzYuLmI0N2I3MmNiNjBkZTIxOTEz
OWMyOWFlN2I4ZDI5ZWI0NGQxYjViMzMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2xldC1s
ZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xv
YmFsLXByb3BlcnR5LWZ0bC5qcwpAQCAtNDAsNiArNDAsNyBAQCBmdW5jdGlvbiBnZXQoKSB7CiAg
ICAgc2hvdWxkQmUoZ2V0KCksIDMpOwogCiBmb28oKTsKK3Nob3VsZEJlKGdsb2JhbFRoaXMuYmFy
LCA0KTsKIHNob3VsZEJlKGJhciwgNCk7CiBzaG91bGRCZShnZXQoKSwgNCk7CiAKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHkt
YmVmb3JlLWRlbGV0aW5nLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hl
LWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E5ZmUwZDUx
YzU4NGU4NWMwZjI2NmFlYTIxNDg3ZTBkOTNkNDEyMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRl
bGV0aW5nLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJv
ciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93
bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9Citub0lubGlu
ZShzaG91bGRUaHJvdyk7CisKK2Z1bmN0aW9uIGJhcigpCit7CisgICAgZm9vID0gNDI7Cit9CisK
K2JhcigpOworYmFyKCk7CitkZWxldGUgZ2xvYmFsVGhpcy5mb287CiskLmV2YWxTY3JpcHQoYGNv
bnN0IGZvbyA9IDUwYCk7CisKK3Nob3VsZFRocm93KCgpID0+IGJhcigpLCBgVHlwZUVycm9yOiBB
dHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1w
LWNvdW50ZXIuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFs
LXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMWRjZGQwNmQyMDg5YmQ5ZjA5
NWExYTE4MjE5ZjZiZTdmOWJjNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
c2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1idW1wLWNvdW50ZXIuanMKQEAg
LTAsMCArMSw1OCBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdGhyZXNob2xkRm9yR2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaD0yIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGluZShzaG91bGRCZSk7CisKK2ZvbzEg
PSAxOworZm9vMiA9IDI7CitmdW5jdGlvbiBnZXQxKCkgeworICAgIHJldHVybiBmb28xOworfQor
bm9JbmxpbmUoZ2V0MSk7CisKK2Z1bmN0aW9uIGdldDIoKSB7CisgICAgcmV0dXJuIGZvbzI7Cit9
Citub0lubGluZShnZXQyKTsKKworZnVuY3Rpb24gZ2V0MUlmKGNvbmRpdGlvbikgeworICAgIGlm
IChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28xOworICAgIHJldHVybiAtMTsKK30KK25v
SW5saW5lKGdldDFJZik7CisKK2Z1bmN0aW9uIGdldDJJZihjb25kaXRpb24pIHsKKyAgICBpZiAo
Y29uZGl0aW9uKQorICAgICAgICByZXR1cm4gZm9vMjsKKyAgICByZXR1cm4gLTE7Cit9Citub0lu
bGluZShnZXQySWYpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNTsgKytpKSB7CisgICAgc2hv
dWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAgIHNob3VsZEJl
KGdldDEoKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCAyKTsKKyAgICBzaG91bGRCZShnZXQx
SWYodHJ1ZSksIDEpOworICAgIHNob3VsZEJlKGdldDJJZih0cnVlKSwgMik7CisgICAgc2hvdWxk
QmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0xKTsK
K30KKworJC5ldmFsU2NyaXB0KGBjb25zdCBmb28xID0gNDE7YCk7CiskLmV2YWxTY3JpcHQoYGNv
bnN0IGZvbzIgPSA0MjtgKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkgeworICAg
IHNob3VsZEJlKGdldDEoKSwgNDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgNDIpOworICAgIHNo
b3VsZEJlKGdldDEoKSwgNDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgNDIpOworICAgIHNob3Vs
ZEJlKGdldDFJZihmYWxzZSksIC0xKTsKKyAgICBzaG91bGRCZShnZXQySWYoZmFsc2UpLCAtMSk7
Cit9CitzaG91bGRCZShnZXQxSWYodHJ1ZSksIDQxKTsKK3Nob3VsZEJlKGdldDJJZih0cnVlKSwg
NDIpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWds
b2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUt
b3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjUxZGFjODExYTM4YmZiMjUyZWI3ZjZjY2IzYWE0MDk3NjE0NmM2NTUKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXBy
b3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rpb24gc2hv
dWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFs
c2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVy
cm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVz
c2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9y
KX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gZm9vKCkgeworICAg
IGJhciA9IDQ7Cit9CitPYmplY3QucHJldmVudEV4dGVuc2lvbnModGhpcyk7Citmb28oKTsKKyQu
ZXZhbFNjcmlwdCgnY29uc3QgYmFyID0gMzsnKTsKK3Nob3VsZFRocm93KCgpID0+IGZvbygpLCBg
VHlwZUVycm9yOiBBdHRlbXB0ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359661</attachid>
            <date>2019-01-20 16:50:50 -0800</date>
            <delta_ts>2019-01-20 17:00:08 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193603-20190120165050.patch</filename>
            <type>text/plain</type>
            <size>57826</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZTllNTg0NGE4ZTA0Y2Y5MDZmZGRlYTEzMjllNThiM2QzYzdjY2QyLi5jZGIwOTk3MDA2ZWY4NWRl
Y2E1YjIzNmQxYTZlYzJiOTY0ZTU0OGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlvbnMgdXNpbmcg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4
MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
dmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRvdyB0aGUgZ2xv
YmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUgY2FjaGVkIGlu
Zm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBzaW5jZSB3ZSBt
YXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0aGUgZm9sbG93
aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAgICBmdW5jdGlv
biBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgpKTsgLy8gMAor
ICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxldGUgZ2xvYmFs
VGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9IDQyO2ApOwor
ICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBpdCByZXR1cm5z
IDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xlYXJlZC4KKwor
ICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJvZHVjZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGltZSB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGdsb2JhbCBwcm9w
ZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZpcnN0IGNoZWNr
CisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQgZ28gdG8gc2xv
dyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4gT3VyIHNsb3cg
cGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0byB0aGUgYXBw
cm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5yZXNvbHZlZFBy
b3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2YgdGhlIGJ5dGVj
b2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUgY3VycmVudCBv
bmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMg
d2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRfZnJvbV9zY29w
ZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2ggc2luY2UgU3Ry
dWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBvcF9yZXNvbHZl
X3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBpdCBzdGFydHMg
cmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNHbG9iYWxPYmpl
Y3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAgICBBbmQgaW4g
dGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBvcF9wdXRfdG9f
c2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRhIGZvciBzY29w
ZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQgYmFzZWQgYXBw
cm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkgYXR0ZW1wdCB0
byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5kIGxvb2sgaW50
byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAgIGluZmluaXRl
IGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9iYWwgbGV4aWNh
bCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2ZSBDb2RlQmxv
Y2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVuIGlmIHRoZSBz
aGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0aGUgZXBvY2gs
IHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZworICAgICAgICBz
dHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJvbV9zY29wZSBm
YWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgYW5kIG9wX3B1
dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBk
YXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRv
d2luZyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6
aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZEdsb2Jh
bFByb3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlND
OjpERkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHR3Jh
cGguaDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6Cisg
ICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6
CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFs
KToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUds
b2JhbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9w
ZXJ0eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bm90aWZ5
TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjphZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKToKKyAgICAgICAgKiBydW50
aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpjb3JyZWN0T3B0aW9ucyk6CisgICAgICAg
IChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRP
cHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKToK
KyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1F
eGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxp
emVHbG9iYWxQcm9wZXJ0aWVzKToKKwogMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3Vr
ZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtKU0NdIFNocmluayBkYXRhIHN0cnVj
dHVyZSBzaXplIGluIEpTQy9oZWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgppbmRleCBiYjVmMTI2MTYwMGU1ZmRiMTk0ZWFlOThjMDhiNTQ2NDdk
N2QzYjdkLi4xMTViZDNiMDY1ZDY1MDMxNzczY2MxZjMxMjZkMzNmZDU1NzU0MjNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTgzMyw4
ICs4MzMsMTEgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHJlc29sdmVUeXBl
OiBSZXNvbHZlVHlwZSwgIyBvZmZzZXQgNAotICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2ln
bmVkLCAjIG9mZnNldCA1Ci0gICAgICAgIF86IHsgIyBvZmZzZXQgNgorICAgICAgICBfMDogeyAj
IG9mZnNldCA1CisgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVkLAorICAgICAg
ICAgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDogdW5zaWduZWQsCisgICAgICAgIH0sCisg
ICAgICAgIF8xOiB7ICMgb2Zmc2V0IDYKICAgICAgICAgICAgICAjIHdyaXR0ZW4gZHVyaW5nIGxp
bmtpbmcKICAgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQ6IFdyaXRlQmFycmllckJhc2Vb
SlNDZWxsXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSA9PSBNb2R1bGVWYXIKICAgICAg
ICAgICAgICBzeW1ib2xUYWJsZTogV3JpdGVCYXJyaWVyQmFzZVtTeW1ib2xUYWJsZV0sICMgbGV4
aWNhbEVudmlyb25tZW50ICYmIHR5cGUgIT0gTW9kdWxlVmFyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFiNWQyMjJlZmQ1MDUyODc5YjMxNmMx
ZDBlYWQ1MzkwNzIyMTQ0M2QuLmRjY2M0MTExNDg3Mzc1ZGMxOGI2YWRkYjUzOWExMDg2NzcyZWFh
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBA
IC0yNjY4LDE4ICsyNjY4LDIzIEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNp
dGVzKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotdm9pZCBDb2RlQmxvY2s6Om5v
dGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllclNldCYg
c2V0KQordm9pZCBDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCkKIHsKICAg
ICAvLyBGSVhNRTogQ3VycmVudGx5LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQuIFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNl
IGl0IGlzIGZpeGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTMzNDcKICAgICBpZiAoc2NyaXB0TW9kZSgpID09IEpTUGFyc2VyU2NyaXB0TW9kZTo6
TW9kdWxlKQogICAgICAgICByZXR1cm47CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ2xvYmFsT2JqZWN0LmdldCgpOwotCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihnbG9i
YWxPYmplY3QtPmdsb2JhbFNjb3BlKCkpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9
IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKIAogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKIAorICAgIGF1dG8gaXNTaGFkb3dlZCA9IFsmXSAo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkgeworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICByZXR1cm4gc3ltYm9sVGFibGUtPmNv
bnRhaW5zKGxvY2tlciwgdWlkKTsKKyAgICB9OworCiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0
cnVjdGlvbiA6ICptX2luc3RydWN0aW9ucykgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGluc3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CkBA
IC0yNjg5LDcyICsyNjk0LDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGlu
Z1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKICAgICAgICAgICAg
IFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX3Jlc29sdmVUeXBl
OwogICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkg
fHwgb3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3MpIHsKICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50
aWZpZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMo
aWRlbnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xvYmFs
TGV4aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAgICAg
ICAgICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNhbCBi
aW5kaW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyByZXdy
aXRpbmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjph
YnN0cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUubV9s
b2NhbFNjb3BlRGVwdGgsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgaWRlbnQsIEdldCwg
Ynl0ZWNvZGUubV9yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2Fs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIp
OwotICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbG9jYWxTY29wZURlcHRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgICAgICAgICBKU1Nj
b3BlKiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayht
ZXRhZGF0YS5tX3Jlc29sdmVUeXBlLCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGNvbnN0YW50U2NvcGUgPT0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNldCh2bSwgdGhpcywgY29uc3Rh
bnRTY29wZSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKENvZGVCbG9ja0ludGVy
bmFsOjp2ZXJib3NlLCAiUmV3cml0ZSBvcF9yZXNvbHZlX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxS
ZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlKTsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGlzU2hhZG93ZWQoaWRlbnQuaW1wbCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0g
MDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLQotICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgICAgICAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAg
IFJlc29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEds
b2JhbFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAo
c2V0LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ug
cGFzcyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBj
aGFpbi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQg
dGhlIGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJm
b3JtIHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9w
ID0gSlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGJ5dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCks
IGlkZW50LCBHZXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc2Nv
cGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9w
LnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVN
b2RlKCksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyLCBi
eXRlY29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAg
ICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJl
d3JpdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRv
ICIsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0g
aW5zdHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFk
YXRhID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBv
cmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7
Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8
fCBvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRp
ZmllcihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhp
ZGVudC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxM
ZXhpY2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAg
ICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJp
bmRpbmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3Jp
dGluZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFi
c3RyYWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX3N5
bWJvbFRhYmxlT3JTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50
LCBQdXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRlY29kZS5tX2dl
dFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3Au
dHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IG9wLnR5cGUgPT0gRHluYW1pYyk7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBvcC50eXBlOwotICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRyOwotICAgICAg
ICAgICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyhvcmlnaW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0
SW5mbyhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgcmVzb2x2ZVR5cGUsIGJ5
dGVjb2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IG9wLm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2dMbklmKENvZGVCbG9ja0ludGVybmFsOjp2ZXJib3NlLCAiUmV3cml0ZSBvcF9w
dXRfdG9fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIsIG1ldGFkYXRh
Lm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGM3NDhmYzA3YzI3MTEzODlmMjcwMzQ1NGMyMjZlNWM3
Y2I4MWMwNmEuLmM3NDc0MjZiMzhlNTY2ZWJiOWU4NDJjZTIzZWQ1OTM4NGViMGFlMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTE5NSw3ICsxOTUs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHZpc2l0Q2hp
bGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZN
Jik7CiAKLSAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiwgY29uc3Qg
SWRlbnRpZmllclNldCYpOworICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKTsK
IAogICAgIHZvaWQgZHVtcFNvdXJjZSgpOwogICAgIHZvaWQgZHVtcFNvdXJjZShQcmludFN0cmVh
bSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCA0ZTE4ZGY3MDNkM2QyMTY2ODZmNTg1OTgyNGYyYWM2Y2I5N2ZlMDBlLi45ZDE2MTRk
ZWEzMDQyYjdlMmJjMDYwOGYxZTc4ZDRjNjUxOTIxMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjE2Nyw5ICs2MTY3LDEwIEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3CiAg
ICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUo
KSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgewogICAgICAgICAgICAgICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFw
W2J5dGVjb2RlLm1fdmFyXTsKICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6
aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIp
KTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5s
aW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fdmFyXTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0
LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTYy
ODEsOCArNjI4MiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25D
aGVja3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBtb2R1bGUgY29k
ZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuIFNvIHRoaXMgY2Fz
ZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNDcKLSAgICAgICAg
ICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAh
PSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFw
aC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9i
YWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1v
ZGU6Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgud2F0Y2hHbG9i
YWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0
aW9uKCk7CiAKQEAgLTY0NTYsOCArNjQ1OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ3VycmVu
dGx5LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQuIFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAg
ICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTMzNDcKLSAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2st
PnNjcmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAgICAgICAgICAg
ICAgICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9i
YWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAg
ICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBK
U1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1f
Z3JhcGgud2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIp
KQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzOwog
ICAgICAgICAgICAgICAgIGlmICh1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCmluZGV4IDhmN2I5Y2VkOTli
OGY3OTA5MGE3MjBlOWU0ZWJmZWRhZDZlOWFmMDMuLmJhNjg0MWRkYzQyZjkzNDQyMzAyZTE1ZTQ0
NDAxMWEyMDMxZTVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCkBAIC0zNiwxNiArMzYsMjMgQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1ib29sIERlc2lyZWRHbG9iYWxQcm9w
ZXJ0aWVzOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJiBpZGVu
dGlmaWVycykKK2Jvb2wgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9uTWFp
blRocmVhZChWTSYgdm0sIERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMpCiB7CisgICAg
Ym9vbCBpc1N0aWxsVmFsaWQgPSB0cnVlOwogICAgIGZvciAoY29uc3QgYXV0byYgcHJvcGVydHkg
OiBtX3NldCkgewogICAgICAgICBhdXRvKiB1aWQgPSBpZGVudGlmaWVycy5hdChwcm9wZXJ0eS5p
ZGVudGlmaWVyTnVtYmVyKCkpOwotICAgICAgICBpZiAoYXV0byogd2F0Y2hwb2ludFNldCA9IHBy
b3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0
KHVpZCkpIHsKLSAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludFNldC0+aXNTdGlsbFZhbGlkKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHsKKyAgICAg
ICAgICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4
aWNhbEVudmlyb25tZW50KCktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgaWYgKCFz
eW1ib2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICB9CisgICAgICAgIC8vIFNldCBpbnZhbGlkYXRlZCBXYXRjaHBvaW50U2V0
IGhlcmUgdG8gcHJldmVudCBmdXJ0aGVyIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKyAgICAgICAg
cHJvcGVydHkuZ2xvYmFsT2JqZWN0KCktPmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9p
bnRTZXQodWlkKS5maXJlQWxsKHZtLCAiTGV4aWNhbCBiaW5kaW5nIHNoYWRvd3MgYW4gZXhpc3Rp
bmcgZ2xvYmFsIHByb3BlcnR5Iik7CisgICAgICAgIGlzU3RpbGxWYWxpZCA9IGZhbHNlOwogICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkOwogfQogCiB2b2lk
IERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjpyZWFsbHlBZGQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMsIENvbW1vbkRhdGEmIGNvbW1vbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3Bl
cnRpZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3Bl
cnRpZXMuaAppbmRleCBlMzQwYTU5NjUxZTUxMDIwNDRlMzhhNDZiOWNkZjlmNTRkYWMwOTI4Li42
OWJkMzZkYTliZmJjY2UxNmViNTIxNWVmOTAxOWY0ZDE3MTQ1ZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oCkBA
IC00Nyw3ICs0Nyw3IEBAIGNsYXNzIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIHsKICAgICAgICAg
bV9zZXQuYWRkKFdURk1vdmUocHJvcGVydHkpKTsKICAgICB9CiAKLSAgICBib29sIGlzU3RpbGxW
YWxpZE9uTWFpblRocmVhZChEZXNpcmVkSWRlbnRpZmllcnMmKTsKKyAgICBib29sIGlzU3RpbGxW
YWxpZE9uTWFpblRocmVhZChWTSYsIERlc2lyZWRJZGVudGlmaWVycyYpOwogCiAgICAgdm9pZCBy
ZWFsbHlBZGQoQ29kZUJsb2NrKiwgRGVzaXJlZElkZW50aWZpZXJzJiwgQ29tbW9uRGF0YSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDgzY2MxZDRiNjRlYjRk
YjkxNjJhOTA4Y2JkY2NjN2U3ZTg1NWMwODAuLjVhNjBhZmI5ZTRlM2IwY2E2YmZhMGFlYjYwMWRk
MzFhODU4ODYzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0x
MDU4LDYgKzEwNTgsMjAgQEAgYm9vbCBHcmFwaDo6aXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNl
LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgcmV0dXJuIG1fc2FmZVRvTG9hZC5jb250YWlu
cyhzdGQ6Om1ha2VfcGFpcihiYXNlLCBvZmZzZXQpKTsKIH0KIAorYm9vbCBHcmFwaDo6d2F0Y2hH
bG9iYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyKQoreworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVy
cygpW2lkZW50aWZpZXJOdW1iZXJdOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIFdhdGNo
cG9pbnRTZXQsIGFuZCBpdCBpcyBhbHJlYWR5IGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGF0IHRo
aXMgc2NvcGUgb3BlcmF0aW9uIG11c3QgYmUgY2hhbmdlZCBmcm9tIEdsb2JhbFByb3BlcnR5IHRv
IEdsb2JhbExleGljYWxWYXIsCisgICAgLy8gYnV0IHdlIHN0aWxsIGhhdmUgc3RhbGUgbWV0YWRh
dGEgaGVyZSBzaW5jZSB3ZSBoYXZlIG5vdCB5ZXQgZXhlY3V0ZWQgdGhpcyBieXRlY29kZSBvcGVy
YXRpb24gc2luY2UgdGhlIGludmFsaWRhdGlvbi4gSnVzdCBlbWl0dGluZyBGb3JjZU9TUkV4aXQg
dG8gdXBkYXRlIHRoZQorICAgIC8vIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0byB0aGlzIGNv
ZGUuCisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdldFJlZmVyZW5j
ZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQodWlkKSkgeworICAgICAgICBpZiAoIXdhdGNocG9pbnQt
PmlzU3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBn
bG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRnVsbEJ5
dGVjb2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykK
IHsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVM
aXZlbmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVuZXNzLmZpbmQoY29kZUJs
b2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBlZTJlMjY3ZTBjZTVk
NmMyNDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3MDczZjFkZWRlZThkZjZl
YjMzZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03OTMs
NiArNzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAg
IGJvb2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKICAg
ICBib29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYp
OwogCisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYgaXQncyBrbm93biB0aGF0
IGxvYWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgZmlu
ZS4gVGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdoaWNoIGNvbmRpdGlvbnMg
d2UgdHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wgaXNTYWZlVG9Mb2FkKEpT
T2JqZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0YWUwMGZkZWIxYmY1Li5j
NWU4OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFBsYW46Om5vdGlm
eVJlYWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoKQogewotICAg
IHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKG1faWRl
bnRpZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25N
YWluVGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29tcGlsYXRpb25SZXN1bHQg
UGxhbjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5MmYzN2VjOTA5Nzc1
N2VhNzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4yZjRmMzJlMTA2YjlkYjU0NmI4NGIyNGY3Yjk4
OTk2YzlkM2RiNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtNzY2LDcgKzc2NiwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0
byBlbWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dp
dGNoIChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgotICAgICAg
ICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKKyAgICAgICAgY2Fz
ZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgICAgIEpT
U2NvcGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2Nr
KHJlc29sdmVUeXBlLCBtX2NvZGVCbG9jayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChj
b25zdGFudFNjb3BlKTsKKyAgICAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICAgICAgbG9hZDMyKCZtZXRh
ZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCBy
ZWdUMSkpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNvbnN0YW50U2NvcGUpLCBy
ZWdUMCk7CisgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAg
ICBjYXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGNhc2UgR2xv
YmFsTGV4aWNhbFZhcjoKQEAgLTc5OSwxMSArODA5LDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBz
d2l0Y2ggKHJlc29sdmVUeXBlKSB7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKICAgICBjYXNl
IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICAvLyBTaW5j
ZSB0aGVzZSBHbG9iYWxQcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFy
LCB3ZSBzaG91bGQgbG9hZCB0aGUgdmFsdWUgZnJvbSBtZXRhZGF0YS4KLSAgICAgICAgSlNTY29w
ZSoqIGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsK
LSAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSk7Ci0gICAgICAgIGxvYWRQdHIoY29uc3RhbnRTY29wZVNsb3QsIHJlZ1QwKTsK
LSAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBKdW1wTGlzdCBz
a2lwVG9FbmQ7CisgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgcmVnVDAp
OworCisgICAgICAgIEp1bXAgbm90R2xvYmFsUHJvcGVydHkgPSBicmFuY2gzMihOb3RFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW0zMihyZXNvbHZlVHlwZSkpOworICAgICAgICBlbWl0Q29kZShyZXNv
bHZlVHlwZSk7CisgICAgICAgIHNraXBUb0VuZC5hcHBlbmQoanVtcCgpKTsKKworICAgICAgICBu
b3RHbG9iYWxQcm9wZXJ0eS5saW5rKHRoaXMpOworICAgICAgICBlbWl0Q29kZShuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXIpOworCisgICAgICAgIHNraXBUb0VuZC5saW5r
KHRoaXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVy
dHk6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAppbmRleCAzM2Q2YWU0NjA4NjQzNzZhMDU0MGI2OWQxNTY0YmU1ZWZhYzEzNjlm
Li5lMmRhMTE1ZWNkM2NkZjEzZTlkYjFkMDc0NWRlMzdiZWY4ZGM0Mjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAg
LTc2OSw3ICs3NjksMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gZW1pdENvZGUgPSBbJl0g
KFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKSB7CiAgICAgICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUp
IHsKICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKLSAgICAgICAgY2FzZSBHbG9iYWxQcm9w
ZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAgICBKU1Njb3BlKiBjb25zdGFudFNj
b3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhyZXNvbHZlVHlwZSwgbV9j
b2RlQmxvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RhbnRTY29wZSk7Cisg
ICAgICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
cmVzb2x2ZVR5cGUpKTsKKyAgICAgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gz
MihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+
YWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVnVDEpKTsKKyAgICAgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CisgICAgICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoY29uc3RhbnRTY29wZSksIHJlZ1QwKTsKKyAgICAgICAg
ICAgIGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICBjYXNlIEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6IAogICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6
CkBAIC04MDMsMTIgKzgxNCwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3dpdGNoIChyZXNvbHZl
VHlwZSkgewogICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgLy8gU2luY2UgdGhlc2UgR2xvYmFs
UHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgdG8gR2xvYmFsTGV4aWNhbFZhciwgd2Ugc2hvdWxkIGxv
YWQgdGhlIHZhbHVlIGZyb20gbWV0YWRhdGEuCi0gICAgICAgIEpTU2NvcGUqKiBjb25zdGFudFNj
b3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7Ci0gICAgICAgIGVtaXRW
YXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwot
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOwotICAg
ICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7Ci0gICAgICAgIGVtaXRTdG9y
ZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIEp1bXBMaXN0IHNraXBUb0VuZDsKKyAgICAg
ICAgbG9hZDMyKCZtZXRhZGF0YS5tX3Jlc29sdmVUeXBlLCByZWdUMCk7CisKKyAgICAgICAgSnVt
cCBub3RHbG9iYWxQcm9wZXJ0eSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKHJlc29sdmVUeXBlKSk7CisgICAgICAgIGVtaXRDb2RlKHJlc29sdmVUeXBlKTsKKyAgICAg
ICAgc2tpcFRvRW5kLmFwcGVuZChqdW1wKCkpOworCisgICAgICAgIG5vdEdsb2JhbFByb3BlcnR5
LmxpbmsodGhpcyk7CisgICAgICAgIGVtaXRDb2RlKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsTGV4aWNhbFZhcik7CisKKyAgICAgICAgc2tpcFRvRW5kLmxpbmsodGhpcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KaW5kZXggNmY3ZGVhYmM3MjUxYTg1NzlmN2U5OTVhZDIwNDc3Yjc2YTMwMDMwZi4uYzQ0M2I0
OGI2Y2E1N2VjOGYwYTljZDI2MzFhZDYxZTY4NzIyNDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAg
LTIwOTIsMTEgKzIwOTIsMjAgQEAgZW5kCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2
ZV9zY29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRh
ZGF0YSwgcmV0dXJuKQogCi0gICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAgICAgIGxv
YWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgIHQwCisg
ICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNj
b3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisKKyAgICBt
YWNybyByZXR1cm5Db25zdGFudFNjb3BlKCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkK
ICAgICAgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogICAgIGVuZAogCisgICAgbWFjcm8gZ2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKHNsb3dQYXRoLCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gp
CisgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9i
YWxPYmplY3Q6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3Jh
dGNoLCBzbG93UGF0aAorICAgIGVuZAorCiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAg
ICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0s
IHQyCiAgICAgICAgIGdldChtX3Njb3BlLCB0MCkKQEAgLTIxMTcsMTUgKzIxMjYsMTcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwg
R2xvYmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAg
Z2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2so
LnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogCiAuckdsb2JhbFZh
cjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExleGljYWxWYXIKLSAgICBnZXRD
b25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhp
Y2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAg
ICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9z
dXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgpAQCAtMjEzMywy
MiArMjE0NCwyNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVz
b2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAuck1vZHVsZVZhcjoKICAg
ICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcwotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQog
CiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwg
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJ
bmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAgZ2V0
Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxU
YWcsIHQwKQogCiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0g
ICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2Jh
bExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENv
bnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcywgLnJEeW5hbWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDRlMzdhMDk2MDNmNzNkOTc5
NjczNDk4ZGY5OTcwNmNjYzFhMWZkOTMuLmJkN2QwMmM5YzlkNDU0OTBmZjdiMjg1NjlkMWFhZjc2
NjM2YzY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMTUwLDExICsyMTUwLDIwIEBAIGVuZAogbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUsIHQw
KQogCi0gICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAgICAgIGxvYWRwIE9wUmVzb2x2
ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgIHQwCisgICAgbWFjcm8gZ2V0
Q29uc3RhbnRTY29wZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0
YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisKKyAgICBtYWNybyByZXR1cm5D
b25zdGFudFNjb3BlKCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKICAgICAgICAgcmV0
dXJuKHQwKQogICAgIGVuZAogCisgICAgbWFjcm8gZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENo
ZWNrKHNsb3dQYXRoLCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gpCisgICAgICAgIGxvYWRpIE9wUmVz
b2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2JhbE9i
amVjdF0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoLCBzbG93UGF0aAorICAgIGVu
ZAorCiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2Nv
cGU6Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0sIHQyCiAgICAgICAgIGdldChtX3Nj
b3BlLCB0MCkKQEAgLTIxNzQsMTUgKzIxODMsMTcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9y
ZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gK
IAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5yR2xv
YmFsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkK
KyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisg
ICAgcmV0dXJuKHQwKQogCiAuckdsb2JhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAu
ckdsb2JhbExleGljYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25z
dGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxM
ZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJl
VmFyLCAuck1vZHVsZVZhcgpAQCAtMjE5MCwyMiArMjIwMSwyNCBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaAogCiAuck1vZHVsZVZhcjoKICAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGdldENvbnN0YW50U2NvcGUoKQor
ICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rp
b25DaGVjayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENv
bnN0YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHlu
YW1pYywgdDAsIHQyKQorICAgIHJldHVybih0MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
LCAuckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0
aW9uQ2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1
cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MsIC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNv
bnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAg
IGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5hbWljCkBA
IC0yMjU2LDcgKzIyNjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3Bl
LCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogCiAjZ0dsb2JhbFBy
b3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLmdHbG9iYWxWYXIKLSAgICBs
b2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykKKyAg
ICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykg
IyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hl
Y2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2Vk
IHRvby4KICAgICBnZXRQcm9wZXJ0eSgpCiAKIC5nR2xvYmFsVmFyOgpAQCAtMjI3Nyw3ICsyMjkw
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2Nv
cGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogLmdHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrcywgLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9h
ZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhp
cyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNp
bmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28u
CiAgICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6
CkBAIC0yMzY0LDcgKzIzNzcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29w
ZSwgT3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbQogCiAucEdsb2Jh
bFByb3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnBHbG9iYWxWYXIKLSAg
ICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpCisg
ICAgbG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKSAj
IFRoaXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVj
ayBzaW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQg
dG9vLgogICAgIHB1dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUs
IGdldCwgbV9zY29wZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgpCkBAIC0yMzkxLDcgKzI0MDQs
NyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbQogCiAucEdsb2JhbFByb3BlcnR5V2l0aFZhcklu
amVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzLCAucEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0
aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpCisgICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKSAjIFRoaXMgc3Ry
dWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3
aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAg
IHB1dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9z
Y29wZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiODgwNDU4ZWM4NzdlNTE4NjA3
NGMwOWQxMjc1ODM2ZDc0N2MzMTQ4Li5iYmJhZGFiNjdmZGY2ZmNhZDRjYWMwNjY0Y2RjOGU2MGJm
NWU0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTEwNjcsMjkgKzEwNjcsMzEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfc2NvcGUpCiAgICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNj
b3BlIHJlZ2lzdGVyIHZhbHVlIGFsaXZlIGluIERGRy4KICAgICBBU1NFUlQocmVzb2x2ZVR5cGUg
IT0gTW9kdWxlVmFyKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVy
dHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAgICBjYXNlIEdsb2JhbFByb3Bl
cnR5OgorICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgorICAg
IGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczogewogICAgICAgICBpZiAocmVzb2x2ZWRTY29wZS0+aXNHbG9i
YWxPYmplY3QoKSkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVkU2NvcGUpOwogICAgICAgICAgICAgYm9v
bCBoYXNQcm9wZXJ0eSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOwog
ICAgICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVy
dHkpIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBV
bnJlc29sdmVkUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2
ZVR5cGUgPSBHbG9iYWxQcm9wZXJ0eTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M7Ci0KKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBl
ID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9nbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgICAgICAgICAgICAg
bWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxMZXhpY2FsQmluZGluZ0Vwb2NoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBp
ZiAocmVzb2x2ZWRTY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAg
ICAgICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dCA9IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHJlc29sdmVkU2NvcGUpOwog
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+
bV9sb2NrKTsKLSAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVy
dHkpCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbExleGlj
YWxWYXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNv
bHZlVHlwZSA9IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xv
YmFsTGV4aWNhbFZhcjsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwogICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBS
RVRVUk4ocmVzb2x2ZWRTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDEzMGEwYzgyYTJmN2VmNmVkODczZTA2Mjk1NzljM2Ez
MzY3N2FjYWMuLjdlZWFmNzA0YjQzMzU0Mzk2MDk3YjllYjQ4MjExNzdlYjVhMTQ5NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0x
MjQsMjggKzEyNCwzOSBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAg
ICAgLy8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50
aWwgdGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBh
dCBjb21waWxlIHRpbWUuCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShl
eGVjKTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5m
by5yZXNvbHZlVHlwZSgpOwotICAgIGlmIChyZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9wZXJ0eSAm
JiByZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgCi0g
ICAgICAgICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9wZXJ0eSAmJiByZXNvbHZlVHlw
ZSAhPSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJl
c29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsK
KyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6
CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAg
ICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewotICAgICAgICAgICAgUmVzb2x2
ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkg
PyBHbG9iYWxQcm9wZXJ0eSA6IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsK
LSAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7CisgICAgICAgICAgICBS
ZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFBy
b3BlcnR5OworICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxs
b3cgYmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0
YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVz
b2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFs
aXphdGlvbk1vZGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAgIGNhc2Ug
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAvLyBHbG9i
YWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJvbV9z
Y29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAgICAgIGlm
IChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAgICAgSlNH
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2Fz
dDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAgIFJlc29s
dmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5
ID8gR2xvYmFsTGV4aWNhbFZhciA6IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKTsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0
Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChyZXNvbHZlVHlw
ZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0
KCk7CkBAIC0xNzYsMjIgKzE4NywzNiBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29w
ZUdsb2JhbCgKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwog
ICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29s
dmVUeXBlKCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mp
IHsKKyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVy
dHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
CiAgICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewotICAgICAgICAgICAgUmVz
b2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVy
dHkgPyBHbG9iYWxQcm9wZXJ0eSA6IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jl
c29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgog
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+
bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
bWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2Ug
aWYgKHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNo
ZWNrczogeworICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFu
Z2VkLiBVcGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9i
YWxMZXhpY2FsVmFyLgorICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihz
Y29wZSk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVU
eXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhp
Y2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5l
d1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xv
YmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwog
ICAgICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9u
bWVudC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NF
UlQoIWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dl
dFB1dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgp
LCBuZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9k
ZSgpKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNo
cG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50
cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0
IGV4aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNh
Y2hlIHRoZW0gYXQgY29tcGlsZSB0aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJiNzBjZjU2YjQ5MzQ3YWJlYWYyM2M1YTI2
MzkyNTVhOTc3MmEwZmQuLmU1NDAwNDhlZDhhOGI3OTBkOWQ4NmRkOTE5MDFmZWY4NWY0YzlhN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTE4NTIsMjAgKzE4NTIsMTcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBKU0dsb2Jh
bE9iamVjdDo6aW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpCiB9CiAjZW5kaWYgLy8g
RU5BQkxFKElOVEwpCiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5n
U2hhZG93aW5nKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllclNldCYgc2V0KQordm9pZCBKU0dsb2Jh
bE9iamVjdDo6YnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mIHZtKQogewotICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IHNldCkKLSAgICAgICAgZW5zdXJlUmVmZXJlbmNl
ZFByb3BlcnR5V2F0Y2hwb2ludFNldChrZXkuZ2V0KCkpLmZpcmVBbGwodm0sICJMZXhpY2FsIGJp
bmRpbmcgc2hhZG93cyB0aGUgZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMiKTsKLSNlbmRpZgot
ICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRlcmF0ZShbJl0gKENvZGVCbG9jayogY29kZUJs
b2NrKSB7Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvZGVCbG9jay0+bm90aWZ5TGV4aWNhbEJpbmRp
bmdTaGFkb3dpbmcodm0sIHNldCk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7
Ci0gICAgfSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmICgrK21fZ2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCA9PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKCkpIHsKKyAgICAgICAgLy8gU2luY2UgdGhlIGVwb2NoIG92ZXJmbG93cywgd2Ugc2hv
dWxkIHJld3JpdGUgYWxsIHRoZSBDb2RlQmxvY2sgdG8gYWRqdXN0IHRvIHRoZSBuZXdseSBzdGFy
dGVkIGdlbmVyYXRpb24uCisgICAgICAgIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IDE7
CisgICAgICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRlcmF0ZShbJl0gKENvZGVCbG9jayog
Y29kZUJsb2NrKSB7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAh
PSB0aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+
bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhSZWY8TWljcm90YXNrPiYmIHRhc2sp
CkBAIC0xODkxLDExICsxODg4LDEzIEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0ludGVyYWN0
aXZlRGVidWdnZXIoKSBjb25zdAogI2lmIEVOQUJMRShERkdfSklUKQogV2F0Y2hwb2ludFNldCog
SlNHbG9iYWxPYmplY3Q6OmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVm
ZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9y
ZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5nZXQodWlkKTsKIH0KIAogV2F0
Y2hwb2ludFNldCYgSlNHbG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNo
cG9pbnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsK
ICAgICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5lbnN1
cmUodWlkLCBbXSB7CiAgICAgICAgIHJldHVybiBXYXRjaHBvaW50U2V0OjpjcmVhdGUoSXNXYXRj
aGVkKTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzYTEzODJkNTc5NzljYzI5YjE2
ZmI2OGU5M2Y0ZmI3ZDk3ZTZlMzlkLi5kNTJkMGZiZmM5ODI4ZTY5NjY2YWY1YjUyMDE0YjhmMzlj
NmU1NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTQ4NiwxMCArNDg2LDEyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVz
aW5nIFJlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzID0gSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWY8V2F0Y2hwb2ludFNldD4sIElkZW50aWZpZXJSZXBI
YXNoPjsKICAgICBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyBtX3JlZmVy
ZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOworICAgIENvbmN1cnJlbnRKU0xvY2sg
bV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2s7CiAjZW5kaWYKIAog
ICAgIGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2ViQXNzZW1ibHlF
bmFibGVkIHsgdHJ1ZSB9OworICAgIHVuc2lnbmVkIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCB7IDEgfTsKICAgICBTdHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgU3Ry
aW5nIG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3Mg
bV9ydW50aW1lRmxhZ3M7CkBAIC03NTEsNyArNzUzLDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IEhhc2hTZXQ8
U3RyaW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpOwogI2VuZGlmIC8vIEVO
QUJMRShJTlRMKQogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYs
IGNvbnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIGJ1bXBHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKFZNJik7CisgICAgdW5zaWduZWQgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3QgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCgpIHsgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsg
fQorICAgIHVuc2lnbmVkKiBhZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgeyBy
ZXR1cm4gJm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQogCiAgICAgdm9pZCBzZXRDb25z
b2xlQ2xpZW50KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9jb25zb2xlQ2xpZW50
ID0gY29uc29sZUNsaWVudDsgfQogICAgIENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnNvbGVDbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAKaW5kZXggOTYyZDg3ZTk5MjZkYWNlMzc2NmY1OTczZDA5NmQ4ODIy
N2UxZGU3MS4uOGIwNWNhODIzMDBiYzc5YTIyOWFjNjBmODZiYjQ1NjY3ZWVmZGE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTM3Niw2ICszNzYsMTMg
QEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAjZW5kaWYKIH0KIAorc3RhdGljIHZv
aWQgY29ycmVjdE9wdGlvbnMoKQoreworICAgIHVuc2lnbmVkIHRocmVzaG9sZEZvckdsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2ggPSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoKCk7CisgICAgaWYgKHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBv
Y2ggPT0gMCB8fCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID09IDEpCisg
ICAgICAgIE9wdGlvbnM6OnRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSA9
IFVJTlRfTUFYOworfQorCiBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkK
IHsKICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC01NzIsNiArNTc5LDggQEAgdm9pZCBPcHRpb25z
Ojppbml0aWFsaXplKCkKICNpZiAwCiAgICAgICAgICAgICAgICAgOyAvLyBEZWNvbmZ1c2UgZWRp
dG9ycyB0aGF0IGRvIGF1dG8gaW5kZW50YXRpb24KICNlbmRpZgorCisgICAgICAgICAgICBjb3Jy
ZWN0T3B0aW9ucygpOwogICAgIAogICAgICAgICAgICAgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9u
cygpOwogCkBAIC03MDUsNiArNzE0LDggQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25zKGNvbnN0
IGNoYXIqIG9wdGlvbnNTdHIpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjb3JyZWN0T3B0aW9u
cygpOworCiAgICAgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpOwogCiAgICAgZHVtcE9wdGlv
bnNJZk5lZWRlZCgpOwpAQCAtNzQxLDYgKzc1Miw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9u
V2l0aG91dEFsaWFzKGNvbnN0IGNoYXIqIGFyZykKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFy
c2UodmFsdWVTdHIsIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChz
dWNjZXNzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvcnJlY3RPcHRpb25zKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJu
IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNDhmNmU2
MmE3YTAyYjk0MWE5YzMxZTg4MWNhNmNiMWYyOWQyMjRiNi4uNTQyMWE4MzlkZmRlMjIyNDVmNzVh
MmEwZTkwMGRlOGRhNWRiZGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaApAQCAtNTEwLDYgKzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihib29sLCB0cmFjZUJhc2VsaW5lSklURXhlY3V0
aW9uLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGRpc2tD
YWNoZVBhdGgsIG51bGxwdHIsIFJlc3RyaWN0ZWQsICIiKSBcCiAgICAgdihib29sLCBmb3JjZURp
c2tDYWNoZSwgZmFsc2UsIFJlc3RyaWN0ZWQsICIiKSBcCisgICAgdih1bnNpZ25lZCwgdGhyZXNo
b2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCwgVUlOVF9NQVgsIE5vcm1hbCwgIlRocmVz
aG9sZCBmb3IgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4gSWYgdGhlIGVwb2NoIHJlYWNo
ZXMgdG8gdGhpcyB2YWx1ZSwgQ29kZUJsb2NrIG1ldGFkYXRhIGZvciBzY29wZSBvcGVyYXRpb25z
IHdpbGwgYmUgcmV2aXNlZCBnbG9iYWxseS4gSXQgbmVlZHMgdG8gYmUgZ3JlYXRlciB0aGFuIDEu
IikgXAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDFjMjE5NjdmYzFk
ODIxODJmNzMzNWEwZDdmN2FiYTk5ZWNkYzViMmUuLjFhM2YwOTI0MmVkOGQyZjAzZGQ4MjMyMzQz
YjkxMzkyZTg4Y2I1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQCBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgQ2FsbEZy
YW1lKiBjYWxsRgogICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQgPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpOwog
ICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zID0gdW5s
aW5rZWRDb2RlQmxvY2stPnZhcmlhYmxlRGVjbGFyYXRpb25zKCk7CiAgICAgY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbGV4aWNhbERlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5s
ZXhpY2FsRGVjbGFyYXRpb25zKCk7Ci0gICAgSWRlbnRpZmllclNldCBzaGFkb3dlZFByb3BlcnRp
ZXM7CiAgICAgLy8gVGhlIEVTNiBzcGVjIHNheXMgdGhhdCBubyB2YXJzL2dsb2JhbCBwcm9wZXJ0
aWVzL2xldC9jb25zdCBjYW4gYmUgZHVwbGljYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLgogICAg
IC8vIFRoaXMgY2FycmllZCBvdXQgc2VjdGlvbiAxNS4xLjggb2YgdGhlIEVTNiBzcGVjOiBodHRw
Oi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0bWwjc2Vj
LWdsb2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogICAgIHsKQEAgLTEzMSwxMSArMTMwLDkg
QEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGll
cyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAgICAgICAvLyBMZXhpY2FsIGJp
bmRpbmdzIGNhbiBzaGFkb3cgZ2xvYmFsIHByb3BlcnRpZXMgaWYgdGhlIGdpdmVuIHByb3BlcnR5
J3MgYXR0cmlidXRlIGlzIGNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAgICAvLyBodHRwczov
L3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRpYXRp
b24gc3RlcCA1LWMsIGBoYXNSZXN0cmljdGVkR2xvYmFsYCBiZWNvbWVzIGZhbHNlCiAgICAgICAg
ICAgICAgICAgLy8gSG93ZXZlciB3ZSBtYXkgZW1pdCBHbG9iYWxQcm9wZXJ0eSBsb29rIHVwIGlu
IGJ5dGVjb2RlcyBhbHJlYWR5IGFuZCBpdCBtYXkgY2FjaGUgdGhlIHZhbHVlIGZvciB0aGUgZ2xv
YmFsIHNjb3BlLgotICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52YWxpZCwgd2UgaXRl
cmF0ZSBhbGwgdGhlIENvZGVCbG9ja3MgYW5kIHJld3JpdGUgdGhlIGluc3RydWN0aW9uIHRvIGNv
bnZlcnQgR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAgICAgICAgICAgICAg
ICAvLyAxLiBJbiBMTEludCwgd2UgYWx3YXlzIGNoZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUu
IFNvIHJld3JpdHRlbiBpbnN0cnVjdGlvbiBqdXN0IHdvcmtzLgotICAgICAgICAgICAgICAgIC8v
IDIuIEluIEJhc2VsaW5lIEpJVCwgd2UgY2hlY2sgbWV0YWRhdGEncyByZXNvbHZlVHlwZSBpbiBH
bG9iYWxQcm9wZXJ0eSBjYXNlIHNvIHRoYXQgd2UgY2FuIG5vdGljZSBvbmNlIGl0IGlzIGNoYW5n
ZWQuCisgICAgICAgICAgICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLAorICAgICAgICAgICAg
ICAgIC8vIDEuIEluIExMSW50IGFuZCBCYXNlbGluZSwgd2UgYnVtcCB0aGUgZ2xvYmFsIGxleGlj
YWwgYmluZGluZyBlcG9jaCBhbmQgaXQgd29ya3MuCiAgICAgICAgICAgICAgICAgLy8gMy4gSW4g
REZHIGFuZCBGVEwsIHdlIHdhdGNoIHRoZSB3YXRjaHBvaW50IGFuZCBqZXR0aXNvbiBvbmNlIGl0
IGlzIGZpcmVkLgotICAgICAgICAgICAgICAgIHNoYWRvd2VkUHJvcGVydGllcy5hZGQoZW50cnku
a2V5LmdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2xv
YmFsUHJvcGVydHlMb29rVXBTdGF0dXM6Ok5vdEZvdW5kOgogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjA2LDEyICsyMDMsMTggQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0
aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG9mZnNldEZvckFzc2VydCA9PSBvZmZzZXQpOwogICAgICAgICB9
CiAgICAgfQotCi0gICAgaWYgKCFzaGFkb3dlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGdsb2JhbE9iamVjdC0+bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcodm0sIFdURk1v
dmUoc2hhZG93ZWRQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb24oKTsKKyAgICBpZiAobGV4aWNhbERlY2xhcmF0aW9ucy5zaXplKCkpIHsKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJhdGlv
bnMpIHsKKyAgICAgICAgICAgIC8vIElmIFdhdGNocG9pbnRTZXQgZXhpc3RzLCBqdXN0IGZpcmUg
aXQuIFNpbmNlIERGRyBXYXRjaHBvaW50U2V0IGFkZGl0aW9uIGlzIGFsc28gZG9uZSBvbiB0aGUg
bWFpbiB0aHJlYWQsIHdlIGNhbiBzeW5jIHRoZW0uCisgICAgICAgICAgICAvLyBTbyB0aGF0IHdl
IGRvIG5vdCBjcmVhdGUgV2F0Y2hwb2ludFNldCBoZXJlLiBERkcgd2lsbCBjcmVhdGUgaWYgbmVj
ZXNzYXJ5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgIC8vIEFuZCBpdCB3aWxsIG9u
bHkgY3JlYXRlIG5vdC1pbnZhbGlkYXRlZCB3YXRjaHBvaW50IHNldCBpZiB0aGUgZ2xvYmFsIGxl
eGljYWwgZW52aXJvbm1lbnQgYmluZGluZyBkb2Vzbid0IGV4aXN0LCB3aGljaCBpcyB3aHkgdGhp
cyBjb2RlIHdvcmtzLgorICAgICAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQgPSBnbG9i
YWxPYmplY3QtPmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoZW50cnkua2V5Lmdl
dCgpKSkKKyAgICAgICAgICAgICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKHZtLCAiTGV4aWNh
bCBiaW5kaW5nIHNoYWRvd3MgYW4gZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnR5Iik7CisgICAgICAg
IH0KKyNlbmRpZgorICAgICAgICBnbG9iYWxPYmplY3QtPmJ1bXBHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKHZtKTsKICAgICB9Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3NzdhODUzYmZl
NzA5Zjk0MmFjNjRmOGI0MTcxN2UwYTk0YWI2N2IwLi5hYjBkMTJjZDliNmUwMGIwMDg1YzZkNTk4
OTRjNWY1ZTBmYjg4NWM0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTIwICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW52YWxpZGF0ZSBvbGQgc2Nv
cGUgb3BlcmF0aW9ucyB1c2luZyBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ3MzgwODY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4
aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanM6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9w
ZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRlbGV0aW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogc3RyZXNz
L3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdldDEpOgorICAgICAgICAoZ2V0
Mik6CisgICAgICAgIChnZXQxSWYpOgorICAgICAgICAoZ2V0MklmKToKKyAgICAgICAgKiBzdHJl
c3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxz
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGZvbyk6CisKIDIw
MTktMDEtMTcgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
aW5nT2JqZWN0VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9yIHRoZSBvcmln
aW5hbCBzdHJpbmcgb2JqZWN0IHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
bGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4aXN0aW5nLWds
b2JhbC1wcm9wZXJ0eS1mdGwuanMKaW5kZXggMjBiNDMyMmUwN2QwMTZlMTJmZDZjMDM1ODRiNmRj
MzJjMjQwZGE3Ni4uYjQ3YjcyY2I2MGRlMjE5MTM5YzI5YWU3YjhkMjllYjQ0ZDFiNWIzMyAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3Rp
bmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9sZXQtbGV4aWNh
bC1iaW5kaW5nLXNoYWRvdy1leGlzdGluZy1nbG9iYWwtcHJvcGVydHktZnRsLmpzCkBAIC00MCw2
ICs0MCw3IEBAIGZ1bmN0aW9uIGdldCgpIHsKICAgICBzaG91bGRCZShnZXQoKSwgMyk7CiAKIGZv
bygpOworc2hvdWxkQmUoZ2xvYmFsVGhpcy5iYXIsIDQpOwogc2hvdWxkQmUoYmFyLCA0KTsKIHNo
b3VsZEJlKGdldCgpLCA0KTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3Bl
cmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxl
dGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jYTlmZTBkNTFjNTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0
MTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNh
Y2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
VGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7
U3RyaW5nKGVycm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24g
YmFyKCkKK3sKKyAgICBmb28gPSA0MjsKK30KKworYmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9i
YWxUaGlzLmZvbzsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhy
b3coKCkgPT4gYmFyKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9u
bHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRp
b24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNz
L3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQxZGNkZDA2ZDIwODliZDlmMDk1YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFs
LXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVs
dCgiLS10aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
K25vSW5saW5lKHNob3VsZEJlKTsKKworZm9vMSA9IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdl
dDEoKSB7CisgICAgcmV0dXJuIGZvbzE7Cit9Citub0lubGluZShnZXQxKTsKKworZnVuY3Rpb24g
Z2V0MigpIHsKKyAgICByZXR1cm4gZm9vMjsKK30KK25vSW5saW5lKGdldDIpOworCitmdW5jdGlv
biBnZXQxSWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJu
IGZvbzE7CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24g
Z2V0MklmKGNvbmRpdGlvbikgeworICAgIGlmIChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBm
b28yOworICAgIHJldHVybiAtMTsKK30KK25vSW5saW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQxKCksIDEpOworICAgIHNob3Vs
ZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShn
ZXQyKCksIDIpOworICAgIHNob3VsZEJlKGdldDFJZih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUo
Z2V0MklmKHRydWUpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAg
c2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZv
bzEgPSA0MTtgKTsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZh
ciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAg
c2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hv
dWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAg
IHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0xKTsKK30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwg
NDEpOworc2hvdWxkQmUoZ2V0MklmKHRydWUpLCA0Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFp
bHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3Bl
cnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdm
NmNjYjNhYTQwOTc2MTQ2YzY1NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Nj
b3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpA
QCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2Up
IHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOwor
ICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVy
cm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVy
cm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhy
b3cpOworCitmdW5jdGlvbiBmb28oKSB7CisgICAgYmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyh0aGlzKTsKK2ZvbygpOworJC5ldmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycp
Oworc2hvdWxkVGhyb3coKCkgPT4gZm9vKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3Np
Z24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>
<flag name="commit-queue"
          id="376403"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359662</attachid>
            <date>2019-01-20 17:01:08 -0800</date>
            <delta_ts>2019-01-21 22:42:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193603-20190120170108.patch</filename>
            <type>text/plain</type>
            <size>57820</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZTllNTg0NGE4ZTA0Y2Y5MDZmZGRlYTEzMjllNThiM2QzYzdjY2QyLi40MDI3NWE4YjIzNGY1Y2Qz
YjJhODE2MDkwYTE0OWIyZjRiNjY4M2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlvbnMgdXNpbmcg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4
MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBFdmVu
IGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRvdyB0aGUgZ2xvYmFs
IHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUgY2FjaGVkIGluZm9y
bWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBzaW5jZSB3ZSBtYXkg
aGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0aGUgZm9sbG93aW5n
IGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAgICBmdW5jdGlvbiBn
ZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgpKTsgLy8gMAorICAg
ICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxldGUgZ2xvYmFsVGhp
cy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9IDQyO2ApOworICAg
ICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBpdCByZXR1cm5zIDAg
aWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xlYXJlZC4KKworICAg
ICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJvZHVjZSBnbG9iYWwg
bGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGltZSB3ZSBpbnRyb2R1
Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGdsb2JhbCBwcm9wZXJ0
eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZpcnN0IGNoZWNrCisg
ICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQgZ28gdG8gc2xvdyBw
YXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4gT3VyIHNsb3cgcGF0
aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0byB0aGUgYXBwcm9w
cmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5yZXNvbHZlZFByb3Bl
cnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2YgdGhlIGJ5dGVjb2Rl
LAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUgY3VycmVudCBvbmUs
IHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMgd2Ug
c3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRfZnJvbV9zY29wZSBh
bmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2ggc2luY2UgU3RydWN0
dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBvcF9yZXNvbHZlX3R5
cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBpdCBzdGFydHMgcmV0
dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNHbG9iYWxPYmplY3Qs
IG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAgICBBbmQgaW4gdGhl
IHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBvcF9wdXRfdG9fc2Nv
cGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRhIGZvciBzY29wZSBy
ZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRoZSBhcHByb3ByaWF0
ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQgYmFzZWQgYXBwcm9h
Y2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkgYXR0ZW1wdCB0byBn
ZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5kIGxvb2sgaW50byBp
dCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAgIGluZmluaXRlIGNv
bXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9iYWwgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2ZSBDb2RlQmxvY2sg
YW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVuIGlmIHRoZSBzaGFk
b3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0aGUgZXBvY2gsIHNp
bmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1l
bnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZworICAgICAgICBzdHJ1
Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJvbV9zY29wZSBmYWls
LiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgYW5kIG9wX3B1dF90
b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4KKworICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2lu
Zyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0
aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpEZXNpcmVkR2xvYmFsUHJvcGVydGllczo6aXNT
dGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZEdsb2JhbFBy
b3BlcnRpZXMuaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjp3YXRjaEdsb2JhbFByb3BlcnR5KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGgu
aDoKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6
aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAg
ICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzb2x2ZV9zY29wZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVQdXRUb1Njb3BlR2xvYmFsKToK
KyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjp0cnlDYWNoZUdldEZyb21TY29wZUdsb2Jh
bCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0
eVdhdGNocG9pbnRTZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4
aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2JhbExleGljYWxC
aW5kaW5nRXBvY2ggY29uc3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFs
TGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjphZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKToKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpjb3JyZWN0T3B0aW9ucyk6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpzZXRPcHRp
b25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6c2V0T3B0aW9uV2l0aG91dEFsaWFzKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVH
bG9iYWxQcm9wZXJ0aWVzKToKKwogMjAxOS0wMS0yMCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1
enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAgIFtKU0NdIFNocmluayBkYXRhIHN0cnVjdHVy
ZSBzaXplIGluIEpTQy9oZWFwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgppbmRleCBiYjVmMTI2MTYwMGU1ZmRiMTk0ZWFlOThjMDhiNTQ2NDdkN2Qz
YjdkLi4xMTViZDNiMDY1ZDY1MDMxNzczY2MxZjMxMjZkMzNmZDU1NzU0MjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTgzMyw4ICs4
MzMsMTEgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHJlc29sdmVUeXBlOiBS
ZXNvbHZlVHlwZSwgIyBvZmZzZXQgNAotICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVk
LCAjIG9mZnNldCA1Ci0gICAgICAgIF86IHsgIyBvZmZzZXQgNgorICAgICAgICBfMDogeyAjIG9m
ZnNldCA1CisgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVkLAorICAgICAgICAg
ICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDogdW5zaWduZWQsCisgICAgICAgIH0sCisgICAg
ICAgIF8xOiB7ICMgb2Zmc2V0IDYKICAgICAgICAgICAgICAjIHdyaXR0ZW4gZHVyaW5nIGxpbmtp
bmcKICAgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQ6IFdyaXRlQmFycmllckJhc2VbSlND
ZWxsXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSA9PSBNb2R1bGVWYXIKICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZTogV3JpdGVCYXJyaWVyQmFzZVtTeW1ib2xUYWJsZV0sICMgbGV4aWNh
bEVudmlyb25tZW50ICYmIHR5cGUgIT0gTW9kdWxlVmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFiNWQyMjJlZmQ1MDUyODc5YjMxNmMxZDBl
YWQ1MzkwNzIyMTQ0M2QuLmRjY2M0MTExNDg3Mzc1ZGMxOGI2YWRkYjUzOWExMDg2NzcyZWFhNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0y
NjY4LDE4ICsyNjY4LDIzIEBAIHZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVz
KCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKIAotdm9pZCBDb2RlQmxvY2s6Om5vdGlm
eUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllclNldCYgc2V0
KQordm9pZCBDb2RlQmxvY2s6Om5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCkKIHsKICAgICAv
LyBGSVhNRTogQ3VycmVudGx5LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQuIFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0
IGlzIGZpeGVkLgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTMzNDcKICAgICBpZiAoc2NyaXB0TW9kZSgpID09IEpTUGFyc2VyU2NyaXB0TW9kZTo6TW9k
dWxlKQogICAgICAgICByZXR1cm47CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ2xvYmFsT2JqZWN0LmdldCgpOwotCi0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihnbG9iYWxP
YmplY3QtPmdsb2JhbFNjb3BlKCkpOworICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGds
b2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFibGUoKTsKIAogICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIobV9sb2NrKTsKIAorICAgIGF1dG8gaXNTaGFkb3dlZCA9IFsmXSAoVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkgeworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICByZXR1cm4gc3ltYm9sVGFibGUtPmNvbnRh
aW5zKGxvY2tlciwgdWlkKTsKKyAgICB9OworCiAgICAgZm9yIChjb25zdCBhdXRvJiBpbnN0cnVj
dGlvbiA6ICptX2luc3RydWN0aW9ucykgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLT5vcGNvZGVJRCgpOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CkBAIC0y
Njg5LDcyICsyNjk0LDEzIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1No
YWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNldCkKICAgICAgICAgICAgIFJl
c29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlOwog
ICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwg
b3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MpIHsKICAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoaWRl
bnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xvYmFsTGV4
aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAgICAgICAg
ICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNhbCBiaW5k
aW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyByZXdyaXRp
bmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0
cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUubV9sb2Nh
bFNjb3BlRGVwdGgsIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSwgaWRlbnQsIEdldCwgYnl0
ZWNvZGUubV9yZXNvbHZlVHlwZSwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
bik7Ci0gICAgICAgICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigp
OwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcyB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXIpOwot
ICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3Mob3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAg
IG1ldGFkYXRhLm1fbG9jYWxTY29wZURlcHRoID0gMDsKLSAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKCFvcC5sZXhpY2FsRW52aXJvbm1lbnQpOwotICAgICAgICAgICAgICAgICAgICBKU1Njb3Bl
KiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhtZXRh
ZGF0YS5tX3Jlc29sdmVUeXBlLCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNv
bnN0YW50U2NvcGUgPT0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNldCh2bSwgdGhpcywgY29uc3RhbnRT
Y29wZSk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbklmKENvZGVCbG9ja0ludGVybmFs
Ojp2ZXJib3NlLCAiUmV3cml0ZSBvcF9yZXNvbHZlX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNv
bHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlKTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGlzU2hhZG93ZWQoaWRlbnQuaW1wbCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMDsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xv
YmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJpbmRp
bmdFcG9jaCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LQotICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5
dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgIFJl
c29sdmVUeXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVz
b2x2ZVR5cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2Jh
bFByb3BlcnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFy
SW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQgPSBpZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0
LmNvbnRhaW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFz
cyBKU0dsb2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFp
bi4KLSAgICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhl
IGxleGljYWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3Jt
IHRoaXMgcmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0g
SlNTY29wZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5
dGVjb2RlLm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlk
ZW50LCBHZXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChv
cC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5
cGUgPT0gR2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2Rl
KCksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAg
ICAgICAgICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3Jp
dGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIs
IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5z
dHJ1Y3Rpb24tPmFzPE9wUHV0VG9TY29wZT4oKTsKLSAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEodGhpcyk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBvcmln
aW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0g
ICAgICAgICAgICBpZiAob3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCBv
cmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cykgewotICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gaWRlbnRpZmll
cihieXRlY29kZS5tX3Zhcik7Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhpZGVu
dC5pbXBsKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHBhc3MgSlNHbG9iYWxMZXhp
Y2FsU2NvcGUgYXMgYSBzdGFydCBwb2ludCBvZiB0aGUgc2NvcGUgY2hhaW4uCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEl0IHNob3VsZCBpbW1lZGlhdGVseSBmaW5kIHRoZSBsZXhpY2FsIGJpbmRp
bmcgYmVjYXVzZSB0aGF0J3MgdGhlIHJlYXNvbiB3aHkgd2UgcGVyZm9ybSB0aGlzIHJld3JpdGlu
ZyBub3cuCi0gICAgICAgICAgICAgICAgICAgIFJlc29sdmVPcCBvcCA9IEpTU2NvcGU6OmFic3Ry
YWN0UmVzb2x2ZShtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBieXRlY29kZS5tX3N5bWJv
bFRhYmxlT3JTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBQ
dXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBieXRlY29kZS5tX2dldFB1
dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5y
ZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9w
LnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlw
ZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IG9wLnR5cGUgPT0gRHluYW1pYyk7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBvcC50eXBlOwotICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBudWxscHRyOwotICAgICAgICAg
ICAgICAgICAgICBpZiAocmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsTGV4aWNhbFZhcikgewotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhv
cmlnaW5hbFJlc29sdmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIDogR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRh
Lm1fd2F0Y2hwb2ludFNldCA9IG9wLndhdGNocG9pbnRTZXQ7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5m
byhieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZU1vZGUoKSwgcmVzb2x2ZVR5cGUsIGJ5dGVj
b2RlLm1fZ2V0UHV0SW5mby5pbml0aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IG9wLm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgICAg
IGRhdGFMb2dMbklmKENvZGVCbG9ja0ludGVybmFsOjp2ZXJib3NlLCAiUmV3cml0ZSBvcF9wdXRf
dG9fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIsIG1ldGFkYXRhLm1f
Z2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCmluZGV4IGM3NDhmYzA3YzI3MTEzODlmMjcwMzQ1NGMyMjZlNWM3Y2I4
MWMwNmEuLmM3NDc0MjZiMzhlNTY2ZWJiOWU4NDJjZTIzZWQ1OTM4NGViMGFlMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTE5NSw3ICsxOTUsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHZpc2l0Q2hpbGRy
ZW4oU2xvdFZpc2l0b3ImKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KFZNJik7
CiAKLSAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiwgY29uc3QgSWRl
bnRpZmllclNldCYpOworICAgIHZvaWQgbm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKTsKIAog
ICAgIHZvaWQgZHVtcFNvdXJjZSgpOwogICAgIHZvaWQgZHVtcFNvdXJjZShQcmludFN0cmVhbSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApp
bmRleCA0ZTE4ZGY3MDNkM2QyMTY2ODZmNTg1OTgyNGYyYWM2Y2I5N2ZlMDBlLi45ZDE2MTRkZWEz
MDQyYjdlMmJjMDYwOGYxZTc4ZDRjNjUxOTIxMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNjE2Nyw5ICs2MTY3LDEwIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3CiAgICAg
ICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAh
PSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgewogICAgICAgICAgICAgICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5
dGVjb2RlLm1fdmFyXTsKICAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5
KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsK
KyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5l
U3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2J5dGVjb2RlLm1fdmFyXTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBp
ZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9y
Y2VPU1JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTYyODEs
OCArNjI4MiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxp
bWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5LCBtb2R1bGUgY29kZSBk
byBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuIFNvIHRoaXMgY2FzZSBz
aG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMzNDcKLSAgICAgICAgICAg
ICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBK
U1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5n
bG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxP
YmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6
Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3JhcGgud2F0Y2hHbG9iYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9u
KCk7CiAKQEAgLTY0NTYsOCArNjQ1OSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhW
YXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5
LCBtb2R1bGUgY29kZSBkbyBub3QgcXVlcnkgdG8gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQu
IFNvIHRoaXMgY2FzZSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIGl0IGlzIGZpeGVkLgogICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMz
NDcKLSAgICAgICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNj
cmlwdE1vZGUoKSAhPSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkKLSAgICAgICAgICAgICAg
ICAgICAgbV9ncmFwaC5nbG9iYWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgICAg
ICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPnNjcmlwdE1vZGUoKSAhPSBKU1Bh
cnNlclNjcmlwdE1vZGU6Ok1vZHVsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1fZ3Jh
cGgud2F0Y2hHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJOdW1iZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAgICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzOwogICAg
ICAgICAgICAgICAgIGlmICh1aWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCmluZGV4IDhmN2I5Y2VkOTliOGY3
OTA5MGE3MjBlOWU0ZWJmZWRhZDZlOWFmMDMuLmJhNjg0MWRkYzQyZjkzNDQyMzAyZTE1ZTQ0NDAx
MWEyMDMxZTVlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVz
aXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuY3BwCkBAIC0zNiwxNiArMzYsMjMgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCi1ib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0
aWVzOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJiBpZGVudGlm
aWVycykKK2Jvb2wgRGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9uTWFpblRo
cmVhZChWTSYgdm0sIERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMpCiB7CisgICAgYm9v
bCBpc1N0aWxsVmFsaWQgPSB0cnVlOwogICAgIGZvciAoY29uc3QgYXV0byYgcHJvcGVydHkgOiBt
X3NldCkgewogICAgICAgICBhdXRvKiB1aWQgPSBpZGVudGlmaWVycy5hdChwcm9wZXJ0eS5pZGVu
dGlmaWVyTnVtYmVyKCkpOwotICAgICAgICBpZiAoYXV0byogd2F0Y2hwb2ludFNldCA9IHByb3Bl
cnR5Lmdsb2JhbE9iamVjdCgpLT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KHVp
ZCkpIHsKLSAgICAgICAgICAgIGlmICghd2F0Y2hwb2ludFNldC0+aXNTdGlsbFZhbGlkKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gcHJvcGVydHkuZ2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHsKKyAgICAgICAg
ICAgIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNh
bEVudmlyb25tZW50KCktPnN5bWJvbFRhYmxlKCk7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHN5bWJvbFRhYmxlLT5tX2xvY2spOworICAgICAgICAgICAgaWYgKCFzeW1i
b2xUYWJsZS0+Y29udGFpbnMobG9ja2VyLCB1aWQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CisgICAgICAgIC8vIFNldCBpbnZhbGlkYXRlZCBXYXRjaHBvaW50U2V0IGhl
cmUgdG8gcHJldmVudCBmdXJ0aGVyIGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKyAgICAgICAgcHJv
cGVydHkuZ2xvYmFsT2JqZWN0KCktPmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRT
ZXQodWlkKS5maXJlQWxsKHZtLCAiTGV4aWNhbCBiaW5kaW5nIHNoYWRvd3MgYW4gZXhpc3Rpbmcg
Z2xvYmFsIHByb3BlcnR5Iik7CisgICAgICAgIGlzU3RpbGxWYWxpZCA9IGZhbHNlOwogICAgIH0K
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaXNTdGlsbFZhbGlkOwogfQogCiB2b2lkIERl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjpyZWFsbHlBZGQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIERl
c2lyZWRJZGVudGlmaWVycyYgaWRlbnRpZmllcnMsIENvbW1vbkRhdGEmIGNvbW1vbikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRp
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRp
ZXMuaAppbmRleCBlMzQwYTU5NjUxZTUxMDIwNDRlMzhhNDZiOWNkZjlmNTRkYWMwOTI4Li42OWJk
MzZkYTliZmJjY2UxNmViNTIxNWVmOTAxOWY0ZDE3MTQ1ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oCkBAIC00
Nyw3ICs0Nyw3IEBAIGNsYXNzIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzIHsKICAgICAgICAgbV9z
ZXQuYWRkKFdURk1vdmUocHJvcGVydHkpKTsKICAgICB9CiAKLSAgICBib29sIGlzU3RpbGxWYWxp
ZE9uTWFpblRocmVhZChEZXNpcmVkSWRlbnRpZmllcnMmKTsKKyAgICBib29sIGlzU3RpbGxWYWxp
ZE9uTWFpblRocmVhZChWTSYsIERlc2lyZWRJZGVudGlmaWVycyYpOwogCiAgICAgdm9pZCByZWFs
bHlBZGQoQ29kZUJsb2NrKiwgRGVzaXJlZElkZW50aWZpZXJzJiwgQ29tbW9uRGF0YSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDgzY2MxZDRiNjRlYjRkYjkx
NjJhOTA4Y2JkY2NjN2U3ZTg1NWMwODAuLjVhNjBhZmI5ZTRlM2IwY2E2YmZhMGFlYjYwMWRkMzFh
ODU4ODYzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCkBAIC0xMDU4
LDYgKzEwNTgsMjAgQEAgYm9vbCBHcmFwaDo6aXNTYWZlVG9Mb2FkKEpTT2JqZWN0KiBiYXNlLCBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQpCiAgICAgcmV0dXJuIG1fc2FmZVRvTG9hZC5jb250YWlucyhz
dGQ6Om1ha2VfcGFpcihiYXNlLCBvZmZzZXQpKTsKIH0KIAorYm9vbCBHcmFwaDo6d2F0Y2hHbG9i
YWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1bnNpZ25lZCBpZGVudGlm
aWVyTnVtYmVyKQoreworICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBpZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdOworICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIFdhdGNocG9p
bnRTZXQsIGFuZCBpdCBpcyBhbHJlYWR5IGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGF0IHRoaXMg
c2NvcGUgb3BlcmF0aW9uIG11c3QgYmUgY2hhbmdlZCBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEds
b2JhbExleGljYWxWYXIsCisgICAgLy8gYnV0IHdlIHN0aWxsIGhhdmUgc3RhbGUgbWV0YWRhdGEg
aGVyZSBzaW5jZSB3ZSBoYXZlIG5vdCB5ZXQgZXhlY3V0ZWQgdGhpcyBieXRlY29kZSBvcGVyYXRp
b24gc2luY2UgdGhlIGludmFsaWRhdGlvbi4gSnVzdCBlbWl0dGluZyBGb3JjZU9TUkV4aXQgdG8g
dXBkYXRlIHRoZQorICAgIC8vIG1ldGFkYXRhIHdoZW4gaXQgcmVhY2hlcyB0byB0aGlzIGNvZGUu
CisgICAgaWYgKGF1dG8qIHdhdGNocG9pbnQgPSBnbG9iYWxPYmplY3QtPmdldFJlZmVyZW5jZWRQ
cm9wZXJ0eVdhdGNocG9pbnRTZXQodWlkKSkgeworICAgICAgICBpZiAoIXdhdGNocG9pbnQtPmlz
U3RpbGxWYWxpZCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBnbG9i
YWxQcm9wZXJ0aWVzKCkuYWRkTGF6aWx5KERlc2lyZWRHbG9iYWxQcm9wZXJ0eShnbG9iYWxPYmpl
Y3QsIGlkZW50aWZpZXJOdW1iZXIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogRnVsbEJ5dGVj
b2RlTGl2ZW5lc3MmIEdyYXBoOjpsaXZlbmVzc0ZvcihDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsK
ICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZl
bmVzcz4+OjppdGVyYXRvciBpdGVyID0gbV9ieXRlY29kZUxpdmVuZXNzLmZpbmQoY29kZUJsb2Nr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCBlZTJlMjY3ZTBjZTVkNmMy
NDM4ZWRiMzM1M2VjNTNlZmIwYzE3ZmU4Li4xNTFmNTczNmM3YWM3MDczZjFkZWRlZThkZjZlYjMz
ZTAwOGVmNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03OTMsNiAr
NzkzLDggQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIGJv
b2wgd2F0Y2hDb25kaXRpb24oY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb24mKTsKICAgICBi
b29sIHdhdGNoQ29uZGl0aW9ucyhjb25zdCBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCYpOwog
CisgICAgYm9vbCB3YXRjaEdsb2JhbFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlcik7CisKICAgICAvLyBDaGVja3MgaWYgaXQncyBrbm93biB0aGF0IGxv
YWRpbmcgZnJvbSB0aGUgZ2l2ZW4gb2JqZWN0IGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgZmluZS4g
VGhpcyBpcwogICAgIC8vIGNvbXB1dGVkIGJ5IHRyYWNraW5nIHdoaWNoIGNvbmRpdGlvbnMgd2Ug
dHJhY2sgd2l0aCB3YXRjaENvbmRpdGlvbigpLgogICAgIGJvb2wgaXNTYWZlVG9Mb2FkKEpTT2Jq
ZWN0KiBiYXNlLCBQcm9wZXJ0eU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAppbmRleCBlNzc3MjNmODg0ZDlmMzU2MGQ4YmZhMmNmNDE0YWUwMGZkZWIxYmY1Li5jNWU4
OTliYTE1NmM3NzQzYjY2YzNkNjNiYTJkOTVhODNmMjMxODk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIFBsYW46Om5vdGlmeVJl
YWR5KCkKIAogYm9vbCBQbGFuOjppc1N0aWxsVmFsaWRPbk1haW5UaHJlYWQoKQogewotICAgIHJl
dHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKG1faWRlbnRp
ZmllcnMpOworICAgIHJldHVybiBtX2dsb2JhbFByb3BlcnRpZXMuaXNTdGlsbFZhbGlkT25NYWlu
VGhyZWFkKCptX3ZtLCBtX2lkZW50aWZpZXJzKTsKIH0KIAogQ29tcGlsYXRpb25SZXN1bHQgUGxh
bjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA5MmYzN2VjOTA5Nzc1N2Vh
NzAzYTBlNzU1NWFjMjI3ZTU3YTBlZGU3Li4yZjRmMzJlMTA2YjlkYjU0NmI4NGIyNGY3Yjk4OTk2
YzlkM2RiNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtNzY2LDcgKzc2NiwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZl
X3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYXV0byBl
bWl0Q29kZSA9IFsmXSAoUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUpIHsKICAgICAgICAgc3dpdGNo
IChyZXNvbHZlVHlwZSkgewogICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgotICAgICAgICBj
YXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKKyAgICAgICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgICAgIEpTU2Nv
cGUqIGNvbnN0YW50U2NvcGUgPSBKU1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKHJl
c29sdmVUeXBlLCBtX2NvZGVCbG9jayk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChjb25z
dGFudFNjb3BlKTsKKyAgICAgICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOworICAgICAgICAgICAgbG9hZDMyKCZtZXRhZGF0
YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdCgpLT5hZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkpLCByZWdU
MSkpOworICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGNvbnN0YW50U2NvcGUpLCByZWdU
MCk7CisgICAgICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICBj
YXNlIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgICAgIGNhc2UgR2xvYmFs
TGV4aWNhbFZhcjoKQEAgLTc5OSwxMSArODA5LDE3IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29s
dmVfc2NvcGUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzd2l0
Y2ggKHJlc29sdmVUeXBlKSB7CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKICAgICBjYXNlIEds
b2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczogewotICAgICAgICAvLyBTaW5jZSB0
aGVzZSBHbG9iYWxQcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCB0byBHbG9iYWxMZXhpY2FsVmFyLCB3
ZSBzaG91bGQgbG9hZCB0aGUgdmFsdWUgZnJvbSBtZXRhZGF0YS4KLSAgICAgICAgSlNTY29wZSoq
IGNvbnN0YW50U2NvcGVTbG90ID0gbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNsb3QoKTsKLSAg
ICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSk7Ci0gICAgICAgIGxvYWRQdHIoY29uc3RhbnRTY29wZVNsb3QsIHJlZ1QwKTsKLSAg
ICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICBKdW1wTGlzdCBza2lw
VG9FbmQ7CisgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgcmVnVDApOwor
CisgICAgICAgIEp1bXAgbm90R2xvYmFsUHJvcGVydHkgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVn
VDAsIFRydXN0ZWRJbW0zMihyZXNvbHZlVHlwZSkpOworICAgICAgICBlbWl0Q29kZShyZXNvbHZl
VHlwZSk7CisgICAgICAgIHNraXBUb0VuZC5hcHBlbmQoanVtcCgpKTsKKworICAgICAgICBub3RH
bG9iYWxQcm9wZXJ0eS5saW5rKHRoaXMpOworICAgICAgICBlbWl0Q29kZShuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXIpOworCisgICAgICAgIHNraXBUb0VuZC5saW5rKHRo
aXMpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAppbmRleCAzM2Q2YWU0NjA4NjQzNzZhMDU0MGI2OWQxNTY0YmU1ZWZhYzEzNjlmLi5l
MmRhMTE1ZWNkM2NkZjEzZTlkYjFkMDc0NWRlMzdiZWY4ZGM0Mjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTc2
OSw3ICs3NjksMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8gZW1pdENvZGUgPSBbJl0gKFJl
c29sdmVUeXBlIHJlc29sdmVUeXBlKSB7CiAgICAgICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsK
ICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKLSAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAgICBKU1Njb3BlKiBjb25zdGFudFNjb3Bl
ID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhyZXNvbHZlVHlwZSwgbV9jb2Rl
QmxvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29uc3RhbnRTY29wZSk7CisgICAg
ICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVz
b2x2ZVR5cGUpKTsKKyAgICAgICAgICAgIGxvYWQzMigmbWV0YWRhdGEubV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+YWRk
cmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVnVDEpKTsKKyAgICAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCByZWdUMSk7CisgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoY29uc3RhbnRTY29wZSksIHJlZ1QwKTsKKyAgICAgICAgICAg
IGVtaXRTdG9yZShkc3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2UgR2xvYmFsVmFyOgogICAgICAgICBjYXNlIEdsb2JhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3M6IAogICAgICAgICBjYXNlIEdsb2JhbExleGljYWxWYXI6CkBA
IC04MDMsMTIgKzgxNCwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX3Njb3BlKGNvbnN0
IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3dpdGNoIChyZXNvbHZlVHlw
ZSkgewogICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CiAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdp
dGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgLy8gU2luY2UgdGhlc2UgR2xvYmFsUHJv
cGVydHkgY2FuIGJlIGNoYW5nZWQgdG8gR2xvYmFsTGV4aWNhbFZhciwgd2Ugc2hvdWxkIGxvYWQg
dGhlIHZhbHVlIGZyb20gbWV0YWRhdGEuCi0gICAgICAgIEpTU2NvcGUqKiBjb25zdGFudFNjb3Bl
U2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7Ci0gICAgICAgIGVtaXRWYXJJ
bmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkpOwotICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOwotICAgICAg
ICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7Ci0gICAgICAgIGVtaXRTdG9yZShk
c3QsIHJlZ1QxLCByZWdUMCk7CisgICAgICAgIEp1bXBMaXN0IHNraXBUb0VuZDsKKyAgICAgICAg
bG9hZDMyKCZtZXRhZGF0YS5tX3Jlc29sdmVUeXBlLCByZWdUMCk7CisKKyAgICAgICAgSnVtcCBu
b3RHbG9iYWxQcm9wZXJ0eSA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KHJlc29sdmVUeXBlKSk7CisgICAgICAgIGVtaXRDb2RlKHJlc29sdmVUeXBlKTsKKyAgICAgICAg
c2tpcFRvRW5kLmFwcGVuZChqdW1wKCkpOworCisgICAgICAgIG5vdEdsb2JhbFByb3BlcnR5Lmxp
bmsodGhpcyk7CisgICAgICAgIGVtaXRDb2RlKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFs
TGV4aWNhbFZhcik7CisKKyAgICAgICAgc2tpcFRvRW5kLmxpbmsodGhpcyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20K
aW5kZXggNmY3ZGVhYmM3MjUxYTg1NzlmN2U5OTVhZDIwNDc3Yjc2YTMwMDMwZi4uYzQ0M2I0OGI2
Y2E1N2VjOGYwYTljZDI2MzFhZDYxZTY4NzIyNDJmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTIw
OTIsMTEgKzIwOTIsMjAgQEAgZW5kCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9z
Y29wZSwgT3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0
YSwgcmV0dXJuKQogCi0gICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAgICAgIGxvYWRw
IE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgIHQwCisgICAg
bWFjcm8gZ2V0Q29uc3RhbnRTY29wZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3Bl
OjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisKKyAgICBtYWNy
byByZXR1cm5Db25zdGFudFNjb3BlKCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKICAg
ICAgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogICAgIGVuZAogCisgICAgbWFjcm8gZ2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaENoZWNrKHNsb3dQYXRoLCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gpCisg
ICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2FsQmlu
ZGluZ0Vwb2NoW2dsb2JhbE9iamVjdF0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9iYWxP
YmplY3Q6Om1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNo
LCBzbG93UGF0aAorICAgIGVuZAorCiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAgICAg
bG9hZGkgT3BSZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0sIHQy
CiAgICAgICAgIGdldChtX3Njb3BlLCB0MCkKQEAgLTIxMTcsMTUgKzIxMjYsMTcgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHksIC5yR2xvYmFsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0
Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJE
eW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogCiAuckdsb2JhbFZhcjoK
ICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExleGljYWxWYXIKLSAgICBnZXRDb25z
dGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2Fs
VmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBn
ZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJl
VmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgpAQCAtMjEzMywyMiAr
MjE0NCwyNCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2
ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAuck1vZHVsZVZhcjoKICAgICBi
aW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cwotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAu
ckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmpl
Y3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29u
c3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcs
IHQwKQogCiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAs
IEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAg
Z2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExl
eGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0
YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVj
dGlvbkNoZWNrcywgLnJEeW5hbWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDRlMzdhMDk2MDNmNzNkOTc5Njcz
NDk4ZGY5OTcwNmNjYzFhMWZkOTMuLmJkN2QwMmM5YzlkNDU0OTBmZjdiMjg1NjlkMWFhZjc2NjM2
YzY0ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtCkBAIC0yMTUwLDExICsyMTUwLDIwIEBAIGVuZAogbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUs
IGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUsIHQwKQog
Ci0gICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNj
b3BlOjpNZXRhZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgIHQwCisgICAgbWFjcm8gZ2V0Q29u
c3RhbnRTY29wZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6
bV9jb25zdGFudFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisKKyAgICBtYWNybyByZXR1cm5Db25z
dGFudFNjb3BlKCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKICAgICAgICAgcmV0dXJu
KHQwKQogICAgIGVuZAogCisgICAgbWFjcm8gZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNr
KHNsb3dQYXRoLCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gpCisgICAgICAgIGxvYWRpIE9wUmVzb2x2
ZVNjb3BlOjpNZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2JhbE9iamVj
dF0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9iYWxPYmplY3Q6Om1fZ2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoLCBzbG93UGF0aAorICAgIGVuZAor
CiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAgICAgbG9hZGkgT3BSZXNvbHZlU2NvcGU6
Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0sIHQyCiAgICAgICAgIGdldChtX3Njb3Bl
LCB0MCkKQEAgLTIxNzQsMTUgKzIxODMsMTcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9yZXNv
bHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gKIAog
I3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHksIC5yR2xvYmFs
VmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAg
ICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAg
cmV0dXJuKHQwKQogCiAuckdsb2JhbFZhcjoKICAgICBiaW5lcSB0MCwgR2xvYmFsVmFyLCAuckds
b2JhbExleGljYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFu
dFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxMZXhp
Y2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5D
b25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFy
LCAuck1vZHVsZVZhcgpAQCAtMjE5MCwyMiArMjIwMSwyNCBAQCBsbGludE9wV2l0aE1ldGFkYXRh
KG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNw
YXRjaAogCiAuck1vZHVsZVZhcjoKICAgICBiaW5lcSB0MCwgTW9kdWxlVmFyLCAuckdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAg
IHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25D
aGVjayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIGdldENvbnN0
YW50U2NvcGUodDApCisgICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKC5yRHluYW1p
YywgdDAsIHQyKQorICAgIHJldHVybih0MCkKIAogLnJHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAu
ckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCiAgICAgdmFySW5qZWN0aW9u
Q2hlY2soLnJEeW5hbWljLCB0MikKLSAgICBnZXRDb25zdGFudFNjb3BlKCkKKyAgICByZXR1cm5D
b25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
czoKICAgICBiaW5lcSB0MCwgR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3Ms
IC5yQ2xvc3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVj
ayguckR5bmFtaWMsIHQyKQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0
YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJp
bmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJEeW5hbWljCkBAIC0y
MjU2LDcgKzIyNjksNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9mcm9tX3Njb3BlLCBP
cEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0YwogCiAjZ0dsb2JhbFByb3Bl
cnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLmdHbG9iYWxWYXIKLSAgICBsb2Fk
V2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykKKyAgICBs
b2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykgIyBU
aGlzIHN0cnVjdHVyZSBjaGVjayBpbmNsdWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sg
c2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMgY2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRv
by4KICAgICBnZXRQcm9wZXJ0eSgpCiAKIC5nR2xvYmFsVmFyOgpAQCAtMjI3Nyw3ICsyMjkwLDcg
QEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfZnJvbV9zY29wZSwgT3BHZXRGcm9tU2NvcGUs
IG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGMKIAogLmdHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlv
bkNoZWNrcywgLmdHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzCi0gICAgbG9hZFdpdGhT
dHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpCisgICAgbG9hZFdp
dGhTdHJ1Y3R1cmVDaGVjayhPcEdldEZyb21TY29wZSwgZ2V0LCAuZ0R5bmFtaWMpICMgVGhpcyBz
dHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNl
IHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAg
ICAgZ2V0UHJvcGVydHkoKQogCiAuZ0dsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CkBA
IC0yMzY0LDcgKzIzNzcsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwg
T3BQdXRUb1Njb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbQogCiAucEdsb2JhbFBy
b3BlcnR5OgogICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnBHbG9iYWxWYXIKLSAgICBs
b2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpCisgICAg
bG9hZFdpdGhTdHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKSAjIFRo
aXMgc3RydWN0dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBz
aW5jZSB3aGVuIHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9v
LgogICAgIHB1dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdl
dCwgbV9zY29wZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgpCkBAIC0yMzkxLDcgKzI0MDQsNyBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3B1dF90b19zY29wZSwgT3BQdXRUb1Njb3BlLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbQogCiAucEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVj
dGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzLCAucEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0aFN0
cnVjdHVyZUNoZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpCisgICAgbG9hZFdpdGhT
dHJ1Y3R1cmVDaGVjayhPcFB1dFRvU2NvcGUsIGdldCwgLnBEeW5hbWljKSAjIFRoaXMgc3RydWN0
dXJlIGNoZWNrIGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVu
IHRoZSBlcG9jaCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIHB1
dFByb3BlcnR5KCkKICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9zY29w
ZSwgbV92YWx1ZSkKICAgICBkaXNwYXRjaCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBiODgwNDU4ZWM4NzdlNTE4NjA3NGMw
OWQxMjc1ODM2ZDc0N2MzMTQ4Li5iYmJhZGFiNjdmZGY2ZmNhZDRjYWMwNjY0Y2RjOGU2MGJmNWU0
YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTEwNjcsMjkgKzEwNjcsMzEgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc29sdmVfc2NvcGUpCiAgICAgLy8gTW9kdWxlVmFyIGRvZXMgbm90IGtlZXAgdGhlIHNjb3Bl
IHJlZ2lzdGVyIHZhbHVlIGFsaXZlIGluIERGRy4KICAgICBBU1NFUlQocmVzb2x2ZVR5cGUgIT0g
TW9kdWxlVmFyKTsKIAotICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkg
fHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
cykgeworICAgIHN3aXRjaCAocmVzb2x2ZVR5cGUpIHsKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5
OgorICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgorICAgIGNh
c2UgVW5yZXNvbHZlZFByb3BlcnR5OgorICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5V2l0aFZh
ckluamVjdGlvbkNoZWNrczogewogICAgICAgICBpZiAocmVzb2x2ZWRTY29wZS0+aXNHbG9iYWxP
YmplY3QoKSkgewogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0dsb2JhbE9iamVjdCo+KHJlc29sdmVkU2NvcGUpOwogICAgICAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0eSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvcGVydHkoZXhlYywgaWRlbnQpOwogICAg
ICAgICAgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgICAgICAgICBpZiAoaGFzUHJvcGVydHkp
IHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVC
bG9jaygpLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJl
c29sdmVkUHJvcGVydHkpCi0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5
cGUgPSBHbG9iYWxQcm9wZXJ0eTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmpl
Y3Rpb25DaGVja3M7Ci0KKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0g
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9nbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7CisgICAgICAgICAgICAgICAgbWV0
YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxM
ZXhpY2FsQmluZGluZ0Vwb2NoKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
cmVzb2x2ZWRTY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAg
ICAgSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9
IGpzQ2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHJlc29sdmVkU2NvcGUpOwogICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9s
b2NrKTsKLSAgICAgICAgICAgIGlmIChyZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkp
Ci0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbExleGljYWxW
YXI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZl
VHlwZSA9IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAg
ICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29s
dmVUeXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFs
TGV4aWNhbFZhcjsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNhbEVudmlyb25t
ZW50ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50OwogICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBSRVRV
Uk4ocmVzb2x2ZWRTY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDEzMGEwYzgyYTJmN2VmNmVkODczZTA2Mjk1NzljM2EzMzY3
N2FjYWMuLjdlZWFmNzA0YjQzMzU0Mzk2MDk3YjllYjQ4MjExNzdlYjVhMTQ5NTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0xMjQs
MjggKzEyNCwzOSBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZVB1dFRvU2NvcGVHbG9iYWwoCiAgICAg
Ly8gQ292ZXJzIGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwg
dGhleSBmaXJzdCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBj
b21waWxlIHRpbWUuCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVj
KTsKICAgICBSZXNvbHZlVHlwZSByZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5y
ZXNvbHZlVHlwZSgpOwotICAgIGlmIChyZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9wZXJ0eSAmJiBy
ZXNvbHZlVHlwZSAhPSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgCi0gICAg
ICAgICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9wZXJ0eSAmJiByZXNvbHZlVHlwZSAh
PSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQotICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJlc29s
dmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsKKyAg
ICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6Cisg
ICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAg
ICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewotICAgICAgICAgICAgUmVzb2x2ZVR5
cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBH
bG9iYWxQcm9wZXJ0eSA6IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKLSAg
ICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7CisgICAgICAgICAgICBSZXNv
bHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVU
eXBlKSA/IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2JhbFByb3Bl
cnR5OworICAgICAgICAgICAgcmVzb2x2ZVR5cGUgPSBuZXdSZXNvbHZlVHlwZTsgLy8gQWxsb3cg
YmVsb3cgY2FjaGluZyBtZWNoYW5pc20gdG8ga2ljayBpbi4KICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgICAgICAgICAgbWV0YWRh
dGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2
ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0aWFsaXph
dGlvbk1vZGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVu
dmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIEZB
TExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAgIGNhc2UgR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAvLyBHbG9iYWwg
TGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJvbV9zY29w
ZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAgICAgIGlmIChz
Y29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAgICAgSlNHbG9i
YWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpzQ2FzdDxK
U0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAgIFJlc29sdmVU
eXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5ID8g
R2xvYmFsTGV4aWNhbFZhciA6IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
OworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlv
bkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBu
ZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCktPmdldChpZGVudC5pbXBsKCkpOwogICAgICAgICAgICAg
QVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hw
b2ludFNldCA9IGVudHJ5LndhdGNocG9pbnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
b3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICB9Ci0gICAgCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChyZXNvbHZlVHlwZSA9
PSBHbG9iYWxQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3MpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
CkBAIC0xNzYsMjIgKzE4NywzNiBAQCBpbmxpbmUgdm9pZCB0cnlDYWNoZUdldEZyb21TY29wZUds
b2JhbCgKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAg
IFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVU
eXBlKCk7CiAKLSAgICBpZiAocmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3BlcnR5IHx8IHJl
c29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpIHsK
KyAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6
CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAg
ICAgICAgIGlmIChzY29wZS0+aXNHbG9iYWxPYmplY3QoKSkgewotICAgICAgICAgICAgUmVzb2x2
ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkg
PyBHbG9iYWxQcm9wZXJ0eSA6IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsK
KyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rp
b25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzIDogR2xvYmFsUHJvcGVydHk7CiAgICAgICAgICAgICByZXNvbHZlVHlwZSA9IG5ld1Jlc29s
dmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hhbmlzbSB0byBraWNrIGluLgogICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+bV9s
b2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8obWV0
YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRhZGF0
YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICB9IGVsc2UgaWYg
KHNjb3BlLT5pc0dsb2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgY2FzZSBHbG9i
YWxQcm9wZXJ0eToKKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNr
czogeworICAgICAgICAgLy8gR2xvYmFsIExleGljYWwgQmluZGluZyBFcG9jaCBpcyBjaGFuZ2Vk
LiBVcGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBHbG9iYWxM
ZXhpY2FsVmFyLgorICAgICAgICBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
KCkpIHsKICAgICAgICAgICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQgPSBqc0Nhc3Q8SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqPihzY29w
ZSk7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IHJlc29sdmVUeXBl
ID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbExleGljYWxWYXIgOiBHbG9iYWxMZXhpY2Fs
VmFyV2l0aFZhckluamVjdGlvbkNoZWNrczsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jl
c29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFs
TGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAg
ICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVu
dC0+c3ltYm9sVGFibGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
IWVudHJ5LmlzTnVsbCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1
dEluZm8gPSBHZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBu
ZXdSZXNvbHZlVHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgp
KTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fd2F0Y2hwb2ludFNldCA9IGVudHJ5LndhdGNocG9p
bnRTZXQoKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fb3BlcmFuZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnku
c2NvcGVPZmZzZXQoKSkuc2xvdCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIENvdmVycyBpbXBsaWNpdCBnbG9iYWxzLiBTaW5jZSB0aGV5IGRvbid0IGV4
aXN0IHVudGlsIHRoZXkgZmlyc3QgZXhlY3V0ZSwgd2UgZGlkbid0IGtub3cgaG93IHRvIGNhY2hl
IHRoZW0gYXQgY29tcGlsZSB0aW1lLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJiNzBjZjU2YjQ5MzQ3YWJlYWYyM2M1YTI2Mzky
NTVhOTc3MmEwZmQuLmU1NDAwNDhlZDhhOGI3OTBkOWQ4NmRkOTE5MDFmZWY4NWY0YzlhN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTE4NTIsMjAgKzE4NTIsMTcgQEAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBKU0dsb2JhbE9i
amVjdDo6aW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKElOVEwpCiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5nU2hh
ZG93aW5nKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllclNldCYgc2V0KQordm9pZCBKU0dsb2JhbE9i
amVjdDo6YnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mIHZtKQogewotICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIGtleSA6IHNldCkKLSAgICAgICAgZW5zdXJlUmVmZXJlbmNlZFBy
b3BlcnR5V2F0Y2hwb2ludFNldChrZXkuZ2V0KCkpLmZpcmVBbGwodm0sICJMZXhpY2FsIGJpbmRp
bmcgc2hhZG93cyB0aGUgZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnRpZXMiKTsKLSNlbmRpZgotICAg
IHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRlcmF0ZShbJl0gKENvZGVCbG9jayogY29kZUJsb2Nr
KSB7Ci0gICAgICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvZGVCbG9jay0+bm90aWZ5TGV4aWNhbEJpbmRpbmdT
aGFkb3dpbmcodm0sIHNldCk7Ci0gICAgICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7Ci0g
ICAgfSk7Ci0gICAgc2NvcGUucmVsZWFzZSgpOworICAgIGlmICgrK21fZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaCA9PSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKCkpIHsKKyAgICAgICAgLy8gU2luY2UgdGhlIGVwb2NoIG92ZXJmbG93cywgd2Ugc2hvdWxk
IHJld3JpdGUgYWxsIHRoZSBDb2RlQmxvY2sgdG8gYWRqdXN0IHRvIHRoZSBuZXdseSBzdGFydGVk
IGdlbmVyYXRpb24uCisgICAgICAgIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IDE7Cisg
ICAgICAgIHZtLmhlYXAuY29kZUJsb2NrU2V0KCkuaXRlcmF0ZShbJl0gKENvZGVCbG9jayogY29k
ZUJsb2NrKSB7CisgICAgICAgICAgICBpZiAoY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSAhPSB0
aGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bm90
aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKTsKKyAgICAgICAgfSk7CisgICAgfQogfQogCiB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpxdWV1ZU1pY3JvdGFzayhSZWY8TWljcm90YXNrPiYmIHRhc2spCkBA
IC0xODkxLDExICsxODg4LDEzIEBAIGJvb2wgSlNHbG9iYWxPYmplY3Q6Omhhc0ludGVyYWN0aXZl
RGVidWdnZXIoKSBjb25zdAogI2lmIEVOQUJMRShERkdfSklUKQogV2F0Y2hwb2ludFNldCogSlNH
bG9iYWxPYmplY3Q6OmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fcmVmZXJl
bmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAgICByZXR1cm4gbV9yZWZl
cmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5nZXQodWlkKTsKIH0KIAogV2F0Y2hw
b2ludFNldCYgSlNHbG9iYWxPYmplY3Q6OmVuc3VyZVJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9p
bnRTZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKKyAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0Y2hwb2ludFNldHNMb2NrKTsKICAg
ICByZXR1cm4gbV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cy5lbnN1cmUo
dWlkLCBbXSB7CiAgICAgICAgIHJldHVybiBXYXRjaHBvaW50U2V0OjpjcmVhdGUoSXNXYXRjaGVk
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzYTEzODJkNTc5NzljYzI5YjE2ZmI2
OGU5M2Y0ZmI3ZDk3ZTZlMzlkLi5kNTJkMGZiZmM5ODI4ZTY5NjY2YWY1YjUyMDE0YjhmMzljNmU1
NmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTQ4NiwxMCArNDg2LDEyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHVzaW5n
IFJlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzID0gSGFzaE1hcDxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+LCBSZWY8V2F0Y2hwb2ludFNldD4sIElkZW50aWZpZXJSZXBIYXNo
PjsKICAgICBSZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0cyBtX3JlZmVyZW5j
ZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzOworICAgIENvbmN1cnJlbnRKU0xvY2sgbV9y
ZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2s7CiAjZW5kaWYKIAogICAg
IGJvb2wgbV9ldmFsRW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fd2ViQXNzZW1ibHlFbmFi
bGVkIHsgdHJ1ZSB9OworICAgIHVuc2lnbmVkIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCB7
IDEgfTsKICAgICBTdHJpbmcgbV9ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2U7CiAgICAgU3RyaW5n
IG1fd2ViQXNzZW1ibHlEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBSdW50aW1lRmxhZ3MgbV9y
dW50aW1lRmxhZ3M7CkBAIC03NTEsNyArNzUzLDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaW50bFBsdXJhbFJ1bGVzQXZhaWxhYmxlTG9jYWxlcygpOwogI2VuZGlmIC8vIEVOQUJM
RShJTlRMKQogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNv
bnN0IElkZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIGJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKFZNJik7CisgICAgdW5zaWduZWQgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpIGNvbnN0
IHsgcmV0dXJuIG1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQorICAgIHN0YXRpYyBwdHJk
aWZmX3QgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaE9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihKU0dsb2JhbE9iamVjdCwgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKTsgfQor
ICAgIHVuc2lnbmVkKiBhZGRyZXNzT2ZHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgeyByZXR1
cm4gJm1fZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDsgfQogCiAgICAgdm9pZCBzZXRDb25zb2xl
Q2xpZW50KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9jb25zb2xlQ2xpZW50ID0g
Y29uc29sZUNsaWVudDsgfQogICAgIENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnNvbGVDbGllbnQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAKaW5kZXggOTYyZDg3ZTk5MjZkYWNlMzc2NmY1OTczZDA5NmQ4ODIyN2Ux
ZGU3MS4uOGIwNWNhODIzMDBiYzc5YTIyOWFjNjBmODZiYjQ1NjY3ZWVmZGE1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKQEAgLTM3Niw2ICszNzYsMTMgQEAg
c3RhdGljIHZvaWQgb3ZlcnJpZGVEZWZhdWx0cygpCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQg
Y29ycmVjdE9wdGlvbnMoKQoreworICAgIHVuc2lnbmVkIHRocmVzaG9sZEZvckdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2ggPSBPcHRpb25zOjp0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoKCk7CisgICAgaWYgKHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gg
PT0gMCB8fCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID09IDEpCisgICAg
ICAgIE9wdGlvbnM6OnRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSA9IFVJ
TlRfTUFYOworfQorCiBzdGF0aWMgdm9pZCByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCkKIHsK
ICNpZiAhZGVmaW5lZChOREVCVUcpCkBAIC01NzIsNiArNTc5LDggQEAgdm9pZCBPcHRpb25zOjpp
bml0aWFsaXplKCkKICNpZiAwCiAgICAgICAgICAgICAgICAgOyAvLyBEZWNvbmZ1c2UgZWRpdG9y
cyB0aGF0IGRvIGF1dG8gaW5kZW50YXRpb24KICNlbmRpZgorCisgICAgICAgICAgICBjb3JyZWN0
T3B0aW9ucygpOwogICAgIAogICAgICAgICAgICAgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygp
OwogCkBAIC03MDUsNiArNzE0LDggQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25zKGNvbnN0IGNo
YXIqIG9wdGlvbnNTdHIpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBjb3JyZWN0T3B0aW9ucygp
OworCiAgICAgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpOwogCiAgICAgZHVtcE9wdGlvbnNJ
Zk5lZWRlZCgpOwpAQCAtNzQxLDYgKzc1Miw3IEBAIGJvb2wgT3B0aW9uczo6c2V0T3B0aW9uV2l0
aG91dEFsaWFzKGNvbnN0IGNoYXIqIGFyZykKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcGFyc2Uo
dmFsdWVTdHIsIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzdWNj
ZXNzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg
ICAgICAgICAgbmFtZV8oKSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIGNvcnJlY3RPcHRpb25zKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZWNvbXB1dGVEZXBlbmRlbnRPcHRp
b25zKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggNDhmNmU2MmE3
YTAyYjk0MWE5YzMxZTg4MWNhNmNiMWYyOWQyMjRiNi4uNTQyMWE4MzlkZmRlMjIyNDVmNzVhMmEw
ZTkwMGRlOGRhNWRiZGY0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aApAQCAtNTEwLDYgKzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3Ry
ZWFtaW5nQXBpID0gZmFsc2U7CiAgICAgdihib29sLCB0cmFjZUJhc2VsaW5lSklURXhlY3V0aW9u
LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGRpc2tDYWNo
ZVBhdGgsIG51bGxwdHIsIFJlc3RyaWN0ZWQsICIiKSBcCiAgICAgdihib29sLCBmb3JjZURpc2tD
YWNoZSwgZmFsc2UsIFJlc3RyaWN0ZWQsICIiKSBcCisgICAgdih1bnNpZ25lZCwgdGhyZXNob2xk
Rm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCwgVUlOVF9NQVgsIE5vcm1hbCwgIlRocmVzaG9s
ZCBmb3IgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaC4gSWYgdGhlIGVwb2NoIHJlYWNoZXMg
dG8gdGhpcyB2YWx1ZSwgQ29kZUJsb2NrIG1ldGFkYXRhIGZvciBzY29wZSBvcGVyYXRpb25zIHdp
bGwgYmUgcmV2aXNlZCBnbG9iYWxseS4gSXQgbmVlZHMgdG8gYmUgZ3JlYXRlciB0aGFuIDEuIikg
XAogCiAKIGVudW0gT3B0aW9uRXF1aXZhbGVuY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IDFjMjE5NjdmYzFkODIx
ODJmNzMzNWEwZDdmN2FiYTk5ZWNkYzViMmUuLjFhM2YwOTI0MmVkOGQyZjAzZGQ4MjMyMzQzYjkx
MzkyZTg4Y2I1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b2dyYW1FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmluaXRpYWxpemVHbG9iYWxQcm9wZXJ0aWVzKFZNJiB2bSwgQ2FsbEZyYW1l
KiBjYWxsRgogICAgIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50KiBnbG9iYWxMZXhpY2FsRW52
aXJvbm1lbnQgPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxFbnZpcm9ubWVudCgpOwogICAg
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zID0gdW5saW5r
ZWRDb2RlQmxvY2stPnZhcmlhYmxlRGVjbGFyYXRpb25zKCk7CiAgICAgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbGV4aWNhbERlY2xhcmF0aW9ucyA9IHVubGlua2VkQ29kZUJsb2NrLT5sZXhp
Y2FsRGVjbGFyYXRpb25zKCk7Ci0gICAgSWRlbnRpZmllclNldCBzaGFkb3dlZFByb3BlcnRpZXM7
CiAgICAgLy8gVGhlIEVTNiBzcGVjIHNheXMgdGhhdCBubyB2YXJzL2dsb2JhbCBwcm9wZXJ0aWVz
L2xldC9jb25zdCBjYW4gYmUgZHVwbGljYXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLgogICAgIC8v
IFRoaXMgY2FycmllZCBvdXQgc2VjdGlvbiAxNS4xLjggb2YgdGhlIEVTNiBzcGVjOiBodHRwOi8v
d3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wL2luZGV4Lmh0bWwjc2VjLWds
b2JhbGRlY2xhcmF0aW9uaW5zdGFudGlhdGlvbgogICAgIHsKQEAgLTEzMSwxMSArMTMwLDkgQEAg
SlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhW
TSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAgICAgICAvLyBMZXhpY2FsIGJpbmRp
bmdzIGNhbiBzaGFkb3cgZ2xvYmFsIHByb3BlcnRpZXMgaWYgdGhlIGdpdmVuIHByb3BlcnR5J3Mg
YXR0cmlidXRlIGlzIGNvbmZpZ3VyYWJsZS4KICAgICAgICAgICAgICAgICAvLyBodHRwczovL3Rj
MzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1nbG9iYWxkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24g
c3RlcCA1LWMsIGBoYXNSZXN0cmljdGVkR2xvYmFsYCBiZWNvbWVzIGZhbHNlCiAgICAgICAgICAg
ICAgICAgLy8gSG93ZXZlciB3ZSBtYXkgZW1pdCBHbG9iYWxQcm9wZXJ0eSBsb29rIHVwIGluIGJ5
dGVjb2RlcyBhbHJlYWR5IGFuZCBpdCBtYXkgY2FjaGUgdGhlIHZhbHVlIGZvciB0aGUgZ2xvYmFs
IHNjb3BlLgotICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52YWxpZCwgd2UgaXRlcmF0
ZSBhbGwgdGhlIENvZGVCbG9ja3MgYW5kIHJld3JpdGUgdGhlIGluc3RydWN0aW9uIHRvIGNvbnZl
cnQgR2xvYmFsUHJvcGVydHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KLSAgICAgICAgICAgICAgICAv
LyAxLiBJbiBMTEludCwgd2UgYWx3YXlzIGNoZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUuIFNv
IHJld3JpdHRlbiBpbnN0cnVjdGlvbiBqdXN0IHdvcmtzLgotICAgICAgICAgICAgICAgIC8vIDIu
IEluIEJhc2VsaW5lIEpJVCwgd2UgY2hlY2sgbWV0YWRhdGEncyByZXNvbHZlVHlwZSBpbiBHbG9i
YWxQcm9wZXJ0eSBjYXNlIHNvIHRoYXQgd2UgY2FuIG5vdGljZSBvbmNlIGl0IGlzIGNoYW5nZWQu
CisgICAgICAgICAgICAgICAgLy8gVG8gbWFrZSBpdCBpbnZhbGlkLAorICAgICAgICAgICAgICAg
IC8vIDEuIEluIExMSW50IGFuZCBCYXNlbGluZSwgd2UgYnVtcCB0aGUgZ2xvYmFsIGxleGljYWwg
YmluZGluZyBlcG9jaCBhbmQgaXQgd29ya3MuCiAgICAgICAgICAgICAgICAgLy8gMy4gSW4gREZH
IGFuZCBGVEwsIHdlIHdhdGNoIHRoZSB3YXRjaHBvaW50IGFuZCBqZXR0aXNvbiBvbmNlIGl0IGlz
IGZpcmVkLgotICAgICAgICAgICAgICAgIHNoYWRvd2VkUHJvcGVydGllcy5hZGQoZW50cnkua2V5
LmdldCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgR2xvYmFs
UHJvcGVydHlMb29rVXBTdGF0dXM6Ok5vdEZvdW5kOgogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjA2LDEyICsyMDMsMTggQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFs
aXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSogY2FsbEYKICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKG9mZnNldEZvckFzc2VydCA9PSBvZmZzZXQpOwogICAgICAgICB9CiAg
ICAgfQotCi0gICAgaWYgKCFzaGFkb3dlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IGdsb2JhbE9iamVjdC0+bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcodm0sIFdURk1vdmUo
c2hhZG93ZWRQcm9wZXJ0aWVzKSk7Ci0gICAgICAgIHRocm93U2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKKyAgICBpZiAobGV4aWNhbERlY2xhcmF0aW9ucy5zaXplKCkpIHsKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGxleGljYWxEZWNsYXJhdGlvbnMp
IHsKKyAgICAgICAgICAgIC8vIElmIFdhdGNocG9pbnRTZXQgZXhpc3RzLCBqdXN0IGZpcmUgaXQu
IFNpbmNlIERGRyBXYXRjaHBvaW50U2V0IGFkZGl0aW9uIGlzIGFsc28gZG9uZSBvbiB0aGUgbWFp
biB0aHJlYWQsIHdlIGNhbiBzeW5jIHRoZW0uCisgICAgICAgICAgICAvLyBTbyB0aGF0IHdlIGRv
IG5vdCBjcmVhdGUgV2F0Y2hwb2ludFNldCBoZXJlLiBERkcgd2lsbCBjcmVhdGUgaWYgbmVjZXNz
YXJ5IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgIC8vIEFuZCBpdCB3aWxsIG9ubHkg
Y3JlYXRlIG5vdC1pbnZhbGlkYXRlZCB3YXRjaHBvaW50IHNldCBpZiB0aGUgZ2xvYmFsIGxleGlj
YWwgZW52aXJvbm1lbnQgYmluZGluZyBkb2Vzbid0IGV4aXN0LCB3aGljaCBpcyB3aHkgdGhpcyBj
b2RlIHdvcmtzLgorICAgICAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQgPSBnbG9iYWxP
YmplY3QtPmdldFJlZmVyZW5jZWRQcm9wZXJ0eVdhdGNocG9pbnRTZXQoZW50cnkua2V5LmdldCgp
KSkKKyAgICAgICAgICAgICAgICB3YXRjaHBvaW50U2V0LT5maXJlQWxsKHZtLCAiTGV4aWNhbCBi
aW5kaW5nIHNoYWRvd3MgYW4gZXhpc3RpbmcgZ2xvYmFsIHByb3BlcnR5Iik7CisgICAgICAgIH0K
KyNlbmRpZgorICAgICAgICBnbG9iYWxPYmplY3QtPmJ1bXBHbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoKHZtKTsKICAgICB9Ci0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA3NzdhODUzYmZlNzA5
Zjk0MmFjNjRmOGI0MTcxN2UwYTk0YWI2N2IwLi5kMDdlNjc0MWU1MjMyZDYyZDZiZmI0Yjg1MmYw
Nzg1NWE4NjUyYzcwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE5LTAxLTIwICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW52YWxpZGF0ZSBvbGQgc2NvcGUg
b3BlcmF0aW9ucyB1c2luZyBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM2MDMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzQ3MzgwODY5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRp
LgorCisgICAgICAgICogc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4aXN0aW5n
LWdsb2JhbC1wcm9wZXJ0eS1mdGwuanM6CisgICAgICAgICogc3RyZXNzL3Njb3BlLW9wZXJhdGlv
bi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYmVmb3JlLWRlbGV0aW5nLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogc3RyZXNzL3Njb3Bl
LW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdldDEpOgorICAgICAgICAoZ2V0Mik6Cisg
ICAgICAgIChnZXQxSWYpOgorICAgICAgICAoZ2V0MklmKToKKyAgICAgICAgKiBzdHJlc3Mvc2Nv
cGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1ldmVuLWlmLWl0LWZhaWxzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTktMDEt
MTcgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nT2Jq
ZWN0VXNlIHNob3VsZCBub3QgYmUgYSBzdHJ1Y3R1cmUgY2hlY2sgZm9yIHRoZSBvcmlnaW5hbCBz
dHJpbmcgb2JqZWN0IHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbGV0LWxl
eGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5qcyBiL0pT
VGVzdHMvc3RyZXNzL2xldC1sZXhpY2FsLWJpbmRpbmctc2hhZG93LWV4aXN0aW5nLWdsb2JhbC1w
cm9wZXJ0eS1mdGwuanMKaW5kZXggMjBiNDMyMmUwN2QwMTZlMTJmZDZjMDM1ODRiNmRjMzJjMjQw
ZGE3Ni4uYjQ3YjcyY2I2MGRlMjE5MTM5YzI5YWU3YjhkMjllYjQ0ZDFiNWIzMyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xv
YmFsLXByb3BlcnR5LWZ0bC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9sZXQtbGV4aWNhbC1iaW5k
aW5nLXNoYWRvdy1leGlzdGluZy1nbG9iYWwtcHJvcGVydHktZnRsLmpzCkBAIC00MCw2ICs0MCw3
IEBAIGZ1bmN0aW9uIGdldCgpIHsKICAgICBzaG91bGRCZShnZXQoKSwgMyk7CiAKIGZvbygpOwor
c2hvdWxkQmUoZ2xvYmFsVGhpcy5iYXIsIDQpOwogc2hvdWxkQmUoYmFyLCA0KTsKIHNob3VsZEJl
KGdldCgpLCA0KTsKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9u
LWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3RzL3N0cmVz
cy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jYTlmZTBkNTFjNTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0MTIyCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWds
b2JhbC1wcm9wZXJ0eS1iZWZvcmUtZGVsZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3du
ID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5n
KGVycm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gYmFyKCkK
K3sKKyAgICBmb28gPSA0MjsKK30KKworYmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9iYWxUaGlz
LmZvbzsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhyb3coKCkg
PT4gYmFyKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJv
cGVydHkuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2Fj
aGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3Bl
LW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQxZGNkZDA2ZDIwODliZDlmMDk1YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3Bl
cnR5LWJ1bXAtY291bnRlci5qcwpAQCAtMCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVsdCgiLS10
aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5s
aW5lKHNob3VsZEJlKTsKKworZm9vMSA9IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdldDEoKSB7
CisgICAgcmV0dXJuIGZvbzE7Cit9Citub0lubGluZShnZXQxKTsKKworZnVuY3Rpb24gZ2V0Migp
IHsKKyAgICByZXR1cm4gZm9vMjsKK30KK25vSW5saW5lKGdldDIpOworCitmdW5jdGlvbiBnZXQx
SWYoY29uZGl0aW9uKSB7CisgICAgaWYgKGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJuIGZvbzE7
CisgICAgcmV0dXJuIC0xOworfQorbm9JbmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24gZ2V0Mklm
KGNvbmRpdGlvbikgeworICAgIGlmIChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28yOwor
ICAgIHJldHVybiAtMTsKK30KK25vSW5saW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU1OyArK2kpIHsKKyAgICBzaG91bGRCZShnZXQxKCksIDEpOworICAgIHNob3VsZEJlKGdl
dDIoKSwgMik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCks
IDIpOworICAgIHNob3VsZEJlKGdldDFJZih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0Mklm
KHRydWUpLCAyKTsKKyAgICBzaG91bGRCZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAgc2hvdWxk
QmUoZ2V0MklmKGZhbHNlKSwgLTEpOworfQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZvbzEgPSA0
MTtgKTsKKyQuZXZhbFNjcmlwdChgY29uc3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZhciBpID0g
MDsgaSA8IDFlMzsgKytpKSB7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxk
QmUoZ2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUo
Z2V0MigpLCA0Mik7CisgICAgc2hvdWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3Vs
ZEJlKGdldDJJZihmYWxzZSksIC0xKTsKK30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwgNDEpOwor
c2hvdWxkQmUoZ2V0MklmKHRydWUpLCA0Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9z
Y29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2
ZW4taWYtaXQtZmFpbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdmNmNjYjNh
YTQwOTc2MTQ2YzY1NQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9w
ZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpAQCAtMCww
ICsxLDIzIEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAg
ICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhy
b3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhy
b3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3Ry
aW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cpOwor
CitmdW5jdGlvbiBmb28oKSB7CisgICAgYmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyh0aGlzKTsKK2ZvbygpOworJC5ldmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycpOworc2hv
dWxkVGhyb3coKCkgPT4gZm9vKCksIGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8g
cmVhZG9ubHkgcHJvcGVydHkuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359720</attachid>
            <date>2019-01-21 22:42:27 -0800</date>
            <delta_ts>2019-01-22 09:48:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193603-20190121224226.patch</filename>
            <type>text/plain</type>
            <size>58597</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YTc5ZGY0MThhMmViNWZmZmJjYzRhMGU0ZDBmNTRiMDU0MzhlMDdjLi42MWJhOTRiNzVmMWU1ZTQx
ODc5Yzc3M2I4YmI5MjFlMmEyYzlmOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NiBAQAorMjAxOS0wMS0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9wZXJhdGlvbnMgdXNpbmcg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4
MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBF
dmVuIGlmIHRoZSBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGRvZXMgbm90IHNoYWRvdyB0aGUgZ2xv
YmFsIHByb3BlcnR5IGF0IHRoYXQgdGltZSwgd2UgbmVlZCB0byBjbGVhciB0aGUgY2FjaGVkIGlu
Zm9ybWF0aW9uIGluCisgICAgICAgIHNjb3BlIHJlbGF0ZWQgb3BlcmF0aW9ucyBzaW5jZSB3ZSBt
YXkgaGF2ZSBhIGdsb2JhbCBwcm9wZXJ0eSBwcmV2aW91c2x5LiBDb25zaWRlciB0aGUgZm9sbG93
aW5nIGV4YW1wbGUsCisKKyAgICAgICAgICAgIGZvbyA9IDA7CisgICAgICAgICAgICBmdW5jdGlv
biBnZXQoKSB7IHJldHVybiBmb287IH0KKyAgICAgICAgICAgIHByaW50KGdldCgpKTsgLy8gMAor
ICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyAwCisgICAgICAgICAgICBkZWxldGUgZ2xvYmFs
VGhpcy5mb287CisgICAgICAgICAgICAkLmV2YWxTY3JpcHQoYGNvbnN0IGZvbyA9IDQyO2ApOwor
ICAgICAgICAgICAgcHJpbnQoZ2V0KCkpOyAvLyBTaG91bGQgYmUgNDIsIGJ1dCBpdCByZXR1cm5z
IDAgaWYgdGhlIGNhY2hlZCBpbmZvcm1hdGlvbiBpbiBnZXQoKSBpcyBub3QgY2xlYXJlZC4KKwor
ICAgICAgICBUbyBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlYXNpbHksIHdlIGludHJvZHVjZSBnbG9i
YWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJdCBpcyBidW1wZWQgZXZlcnkgdGltZSB3ZSBpbnRy
b2R1Y2UgYSBuZXcgbGV4aWNhbCBiaW5kaW5nCisgICAgICAgIGludG8gSlNHbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQsIHNpbmNlIHRoYXQgbmFtZSBjb3VsZCBzaGFkb3cgdGhlIGdsb2JhbCBwcm9w
ZXJ0eSBuYW1lIHByZXZpb3VzbHkuIEluIG9wX3Jlc29sdmVfc2NvcGUsIHdlIGZpcnN0IGNoZWNr
CisgICAgICAgIHRoZSBlcG9jaCBzdG9yZWQgaW4gdGhlIG1ldGFkYXRhLCBhbmQgZ28gdG8gc2xv
dyBwYXRoIGlmIGl0IGlzIG5vdCBlcXVhbCB0byB0aGUgY3VycmVudCBlcG9jaC4gT3VyIHNsb3cg
cGF0aCBjb2RlIGNvbnZlcnQgdGhlIHNjb3BlCisgICAgICAgIG9wZXJhdGlvbiB0byB0aGUgYXBw
cm9wcmlhdGUgb25lIGV2ZW4gaWYgdGhlIHJlc29sdmUgdHlwZSBpcyBub3QgVW5yZXNvbHZlZFBy
b3BlcnR5IHR5cGUuIEFmdGVyIHVwZGF0aW5nIHRoZSByZXNvbHZlIHR5cGUgb2YgdGhlIGJ5dGVj
b2RlLAorICAgICAgICB3ZSB1cGRhdGUgdGhlIGNhY2hlZCBlcG9jaCB0byB0aGUgY3VycmVudCBv
bmUsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMg
d2Ugc3RheSBpbiB0aGUgc2FtZSBlcG9jaC4KKworICAgICAgICBJbiBvcF9nZXRfZnJvbV9zY29w
ZSBhbmQgb3BfcHV0X3RvX3Njb3BlLCB3ZSBkbyBub3QgdXNlIHRoaXMgZXBvY2ggc2luY2UgU3Ry
dWN0dXJlIGNoZWNrIGNhbiBkbyB0aGUgc2FtZSB0aGluZyBpbnN0ZWFkLiBJZiBvcF9yZXNvbHZl
X3R5cGUKKyAgICAgICAgaXMgdXBkYXRlZCBieSB0aGUgZXBvY2gsIGFuZCBpZiBpdCBzdGFydHMg
cmV0dXJuaW5nIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50IGluc3RlYWQgSlNHbG9iYWxPYmpl
Y3QsIG9idmlvdXNseSB0aGUgc3RydWN0dXJlIGNoZWNrIGZhaWxzLgorICAgICAgICBBbmQgaW4g
dGhlIHNsb3cgcGF0aCwgd2UgdXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGFuZCBvcF9wdXRfdG9f
c2NvcGUgYXBwcm9wcmlhdGVseS4KKworICAgICAgICBTbywgdGhlIG1ldGFkYXRhIGZvciBzY29w
ZSByZWxhdGVkIGJ5dGVjb2RlcyBhcmUgZXZlbnR1YWxseSB1cGRhdGVkIHRvIHRoZSBhcHByb3By
aWF0ZSBvbmUuIEluIERGRyBhbmQgRlRMLCB3ZSB1c2UgdGhlIHdhdGNocG9pbnQgYmFzZWQgYXBw
cm9hY2guCisgICAgICAgIEluIERGRyBhbmQgRlRMLCB3ZSBjb25jdXJyZW50bHkgYXR0ZW1wdCB0
byBnZXQgdGhlIHdhdGNocG9pbnQgZm9yIHRoZSBsZXhpY2FsIGJpbmRpbmcgYW5kIGxvb2sgaW50
byBpdCBieSB1c2luZyBgaXNTdGlsbFZhbGlkKClgIHRvIGF2b2lkCisgICAgICAgIGluZmluaXRl
IGNvbXBpbGUtYW5kLWZhaWwgbG9vcC4KKworICAgICAgICBXaGVuIHRoZSBnbG9iYWwgbGV4aWNh
bCBiaW5kaW5nIGVwb2NoIG92ZXJmbG93cyB3ZSBpdGVyYXRlIGFsbCB0aGUgbGl2ZSBDb2RlQmxv
Y2sgYW5kIHVwZGF0ZSB0aGUgb3BfcmVzb2x2ZV9zY29wZSdzIGVwb2NoLiBFdmVuIGlmIHRoZSBz
aGFkb3dpbmcKKyAgICAgICAgaGFwcGVucywgaXQgaXMgT0sgaWYgd2UgYnVtcCB0aGUgZXBvY2gs
IHNpbmNlIG9wX3Jlc29sdmVfc2NvcGUgd2lsbCByZXR1cm4gSlNHbG9iYWxMZXhpY2FsRW52aXJv
bm1lbnQgaW5zdGVhZCBvZiBKU0dsb2JhbE9iamVjdCwgYW5kIGZvbGxvd2luZworICAgICAgICBz
dHJ1Y3R1cmUgY2hlY2sgaW4gb3BfcHV0X3RvX3Njb3BlIGFuZCBvcF9nZXRfZnJvbV9zY29wZSBm
YWlsLiBXZSBkbyBub3QgbmVlZCB0byB1cGRhdGUgb3BfZ2V0X2Zyb21fc2NvcGUgYW5kIG9wX3B1
dF90b19zY29wZSBiZWNhdXNlIG9mIHRoZSBzYW1lCisgICAgICAgIHJlYXNvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2spOgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZEdsb2JhbFByb3BlcnRpZXM6OmlzU3RpbGxWYWxpZE9u
TWFpblRocmVhZCk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmg6
CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
d2F0Y2hHbG9iYWxQcm9wZXJ0eSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAg
ICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmlzU3RpbGxWYWxp
ZE9uTWFpblRocmVhZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c29sdmVfc2NvcGUpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlND
OjpDb21tb25TbG93UGF0aHM6OnRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCk6CisgICAgICAgIChK
U0M6OkNvbW1vblNsb3dQYXRoczo6dHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjplbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Om5vdGlmeUxleGljYWxCaW5kaW5n
U2hhZG93aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2No
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2hPZmZzZXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YWRkcmVzc09m
R2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6Y29ycmVjdE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpPcHRpb25z
Ojppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6c2V0T3B0aW9ucyk6CisgICAg
ICAgIChKU0M6Ok9wdGlvbnM6OnNldE9wdGlvbldpdGhvdXRBbGlhcyk6CisgICAgICAgICogcnVu
dGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHA6
CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVy
dGllcyk6CisKIDIwMTktMDEtMjEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjQwMjIwIGR1ZSB0byBkYXRlLWZvcm1h
dC14cGFyYiByZWdyZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYgppbmRleCBiYjVmMTI2MTYwMGU1ZmRiMTk0ZWFlOThjMDhiNTQ2NDdkN2Qz
YjdkLi4xMTViZDNiMDY1ZDY1MDMxNzczY2MxZjMxMjZkMzNmZDU1NzU0MjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKQEAgLTgzMyw4ICs4
MzMsMTEgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIHJlc29sdmVUeXBlOiBS
ZXNvbHZlVHlwZSwgIyBvZmZzZXQgNAotICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVk
LCAjIG9mZnNldCA1Ci0gICAgICAgIF86IHsgIyBvZmZzZXQgNgorICAgICAgICBfMDogeyAjIG9m
ZnNldCA1CisgICAgICAgICAgICBsb2NhbFNjb3BlRGVwdGg6IHVuc2lnbmVkLAorICAgICAgICAg
ICAgZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaDogdW5zaWduZWQsCisgICAgICAgIH0sCisgICAg
ICAgIF8xOiB7ICMgb2Zmc2V0IDYKICAgICAgICAgICAgICAjIHdyaXR0ZW4gZHVyaW5nIGxpbmtp
bmcKICAgICAgICAgICAgICBsZXhpY2FsRW52aXJvbm1lbnQ6IFdyaXRlQmFycmllckJhc2VbSlND
ZWxsXSwgIyBsZXhpY2FsRW52aXJvbm1lbnQgJiYgdHlwZSA9PSBNb2R1bGVWYXIKICAgICAgICAg
ICAgICBzeW1ib2xUYWJsZTogV3JpdGVCYXJyaWVyQmFzZVtTeW1ib2xUYWJsZV0sICMgbGV4aWNh
bEVudmlyb25tZW50ICYmIHR5cGUgIT0gTW9kdWxlVmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDBjNjM0NTY4NmZhMWU1M2Q1M2M0OTMzODU5
N2U3YzFlMzU1NWUyMWMuLjY1MTc5MjU0MTI3NzFiNjQwMDY1ZjFiODMyNTI2ODBkYjRmZWUyYTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02
MjYsNyArNjI2LDcgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoSlNTY29wZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JD
b2RlQmxvY2sob3AudHlwZSwgdGhpcykpIHsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2Nv
bnN0YW50U2NvcGUuc2V0KHZtLCB0aGlzLCBjb25zdGFudFNjb3BlKTsKICAgICAgICAgICAgICAg
ICBpZiAob3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyIHx8IG9wLnR5cGUgPT0gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fbG9jYWxTY29wZURlcHRoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEu
bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2goKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fZ2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjY2OCwxOCArMjY2OCwyMyBAQCB2b2lkIENvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRl
cygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAKLXZvaWQgQ29kZUJsb2NrOjpub3Rp
ZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYgdm0sIGNvbnN0IElkZW50aWZpZXJTZXQmIHNl
dCkKK3ZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB7CiAgICAg
Ly8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBp
dCBpcyBmaXhlZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkzMzQ3CiAgICAgaWYgKHNjcmlwdE1vZGUoKSA9PSBKU1BhcnNlclNjcmlwdE1vZGU6Ok1v
ZHVsZSkKICAgICAgICAgcmV0dXJuOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dsb2JhbE9iamVjdC5nZXQoKTsKLQotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKyAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50Kj4oZ2xvYmFs
T2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKKyAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPnN5bWJvbFRhYmxlKCk7CiAKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CiAKKyAgICBhdXRvIGlzU2hhZG93ZWQgPSBbJl0gKFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpIHsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHN5bWJvbFRhYmxlLT5jb250
YWlucyhsb2NrZXIsIHVpZCk7CisgICAgfTsKKwogICAgIGZvciAoY29uc3QgYXV0byYgaW5zdHJ1
Y3Rpb24gOiAqbV9pbnN0cnVjdGlvbnMpIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnN0cnVjdGlvbi0+b3Bjb2RlSUQoKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewpAQCAt
MjY4OSw3MiArMjY5NCwxMyBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdT
aGFkb3dpbmcoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyU2V0JiBzZXQpCiAgICAgICAgICAgICBS
ZXNvbHZlVHlwZSBvcmlnaW5hbFJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9yZXNvbHZlVHlwZTsK
ICAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8
IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBpZGVudGlm
aWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKGlk
ZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0dsb2JhbExl
eGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAgICAgICAg
ICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGljYWwgYmlu
ZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMgcmV3cml0
aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29wZTo6YWJz
dHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2RlLm1fbG9j
YWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBHZXQsIGJ5
dGVjb2RlLm1fcmVzb2x2ZVR5cGUsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pOwotICAgICAgICAgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24o
KTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MgfHwgb3AudHlwZSA9PSBHbG9iYWxMZXhpY2FsVmFyKTsK
LSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5q
ZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhW
YXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwotICAgICAgICAgICAgICAgICAg
ICBtZXRhZGF0YS5tX2xvY2FsU2NvcGVEZXB0aCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVCghb3AubGV4aWNhbEVudmlyb25tZW50KTsKLSAgICAgICAgICAgICAgICAgICAgSlNTY29w
ZSogY29uc3RhbnRTY29wZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2sobWV0
YWRhdGEubV9yZXNvbHZlVHlwZSwgdGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChj
b25zdGFudFNjb3BlID09IGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zZXQodm0sIHRoaXMsIGNvbnN0YW50
U2NvcGUpOwotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5h
bDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcmVzb2x2ZV9zY29wZSBmcm9tICIsIG9yaWdpbmFsUmVz
b2x2ZVR5cGUsICIgdG8gIiwgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBhdXRvIGJ5dGVjb2Rl
ID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0RnJvbVNjb3BlPigpOwotICAgICAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgIFJlc29sdmVU
eXBlIG9yaWdpbmFsUmVzb2x2ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5
cGUoKTsKLSAgICAgICAgICAgIGlmIChvcmlnaW5hbFJlc29sdmVUeXBlID09IEdsb2JhbFByb3Bl
cnR5IHx8IG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBp
ZGVudGlmaWVyKGJ5dGVjb2RlLm1fdmFyKTsKLSAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRh
aW5zKGlkZW50LmltcGwoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBKU0ds
b2JhbExleGljYWxTY29wZSBhcyBhIHN0YXJ0IHBvaW50IG9mIHRoZSBzY29wZSBjaGFpbi4KLSAg
ICAgICAgICAgICAgICAgICAgLy8gSXQgc2hvdWxkIGltbWVkaWF0ZWx5IGZpbmQgdGhlIGxleGlj
YWwgYmluZGluZyBiZWNhdXNlIHRoYXQncyB0aGUgcmVhc29uIHdoeSB3ZSBwZXJmb3JtIHRoaXMg
cmV3cml0aW5nIG5vdy4KLSAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZU9wIG9wID0gSlNTY29w
ZTo6YWJzdHJhY3RSZXNvbHZlKG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGJ5dGVjb2Rl
Lm1fbG9jYWxTY29wZURlcHRoLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlKCksIGlkZW50LCBH
ZXQsIGJ5dGVjb2RlLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChvcC50eXBl
ID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5cGUgPT0g
R2xvYmFsTGV4aWNhbFZhcik7Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0
SW5mbyA9IEdldFB1dEluZm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5l
ZWRzVmFySW5qZWN0aW9uQ2hlY2tzKG9yaWdpbmFsUmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyLCBieXRlY29kZS5t
X2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3Bf
Z2V0X2Zyb21fc2NvcGUgZnJvbSAiLCBvcmlnaW5hbFJlc29sdmVUeXBlLCAiIHRvICIsIG1ldGFk
YXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpKTsKLSAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKGlzU2hhZG93ZWQoaWRlbnQuaW1wbCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMDsKKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLQotICAgICAg
ICBjYXNlIG9wX3B1dF90b19zY29wZTogewotICAgICAgICAgICAgYXV0byBieXRlY29kZSA9IGlu
c3RydWN0aW9uLT5hczxPcFB1dFRvU2NvcGU+KCk7Ci0gICAgICAgICAgICBhdXRvJiBtZXRhZGF0
YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgb3Jp
Z2luYWxSZXNvbHZlVHlwZSA9IG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlVHlwZSgpOwot
ICAgICAgICAgICAgaWYgKG9yaWdpbmFsUmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwg
b3JpZ2luYWxSZXNvbHZlVHlwZSA9PSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVj
a3MpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGlkZW50aWZp
ZXIoYnl0ZWNvZGUubV92YXIpOwotICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoaWRl
bnQuaW1wbCgpKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBXZSBwYXNzIEpTR2xvYmFsTGV4
aWNhbFNjb3BlIGFzIGEgc3RhcnQgcG9pbnQgb2YgdGhlIHNjb3BlIGNoYWluLgotICAgICAgICAg
ICAgICAgICAgICAvLyBJdCBzaG91bGQgaW1tZWRpYXRlbHkgZmluZCB0aGUgbGV4aWNhbCBiaW5k
aW5nIGJlY2F1c2UgdGhhdCdzIHRoZSByZWFzb24gd2h5IHdlIHBlcmZvcm0gdGhpcyByZXdyaXRp
bmcgbm93LgotICAgICAgICAgICAgICAgICAgICBSZXNvbHZlT3Agb3AgPSBKU1Njb3BlOjphYnN0
cmFjdFJlc29sdmUobV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgYnl0ZWNvZGUubV9zeW1i
b2xUYWJsZU9yU2NvcGVEZXB0aCwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpLCBpZGVudCwg
UHV0LCBieXRlY29kZS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSwgYnl0ZWNvZGUubV9nZXRQ
dXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgc2NvcGUu
cmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChv
cC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIHx8IG9wLnR5
cGUgPT0gR2xvYmFsTGV4aWNhbFZhciB8fCBvcC50eXBlID09IER5bmFtaWMpOwotCi0gICAgICAg
ICAgICAgICAgICAgIFJlc29sdmVUeXBlIHJlc29sdmVUeXBlID0gb3AudHlwZTsKLSAgICAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gbnVsbHB0cjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5q
ZWN0aW9uQ2hlY2tzIHx8IHJlc29sdmVUeXBlID09IEdsb2JhbExleGljYWxWYXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mo
b3JpZ2luYWxSZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNo
ZWNrcyA6IEdsb2JhbExleGljYWxWYXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0
YS5tX3dhdGNocG9pbnRTZXQgPSBvcC53YXRjaHBvaW50U2V0OwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dElu
Zm8oYnl0ZWNvZGUubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIHJlc29sdmVUeXBlLCBieXRl
Y29kZS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX29wZXJhbmQgPSBvcC5vcGVyYW5kOwotICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG5JZihDb2RlQmxvY2tJbnRlcm5hbDo6dmVyYm9zZSwgIlJld3JpdGUgb3BfcHV0
X3RvX3Njb3BlIGZyb20gIiwgb3JpZ2luYWxSZXNvbHZlVHlwZSwgIiB0byAiLCBtZXRhZGF0YS5t
X2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCBhNjkyNmZkZjk3ZWI0ZTZjNmZjZDBlYjI3NmY4MDUzMTli
YTBiZmU0Li45NGU2YmQyZWUwZWZiMmJhMDc0Y2VhMjUwZDgyZjczMTgyYTZlMTEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0xOTUsNyArMTk1LDcg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCB2aXNpdENoaWxk
cmVuKFNsb3RWaXNpdG9yJik7CiAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseShWTSYp
OwogCi0gICAgdm9pZCBub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyhWTSYsIGNvbnN0IElk
ZW50aWZpZXJTZXQmKTsKKyAgICB2b2lkIG5vdGlmeUxleGljYWxCaW5kaW5nVXBkYXRlKCk7CiAK
ICAgICB2b2lkIGR1bXBTb3VyY2UoKTsKICAgICB2b2lkIGR1bXBTb3VyY2UoUHJpbnRTdHJlYW0m
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggOTJlODBkNjVmYjg1NzgzZjA1MGQxN2M4NTVmNzkyM2VlMzE2OWE2Yy4uNzhjYTY1Zjgz
M2YxOGM4M2I2ZDg3MDdiNGM2Zjk1Njg4MDU0MTVmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYxODIsOSArNjE4MiwxMCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzM0NwogICAg
ICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkg
IT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBpZiAocmVz
b2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFti
eXRlY29kZS5tX3Zhcl07CiAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemls
eShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtieXRlY29kZS5tX3Zhcl07CisgICAgICAgICAg
ICAgICAgICAgIGlmICghbV9ncmFwaC53YXRjaEdsb2JhbFByb3BlcnR5KGdsb2JhbE9iamVjdCwg
aWRlbnRpZmllck51bWJlcikpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZv
cmNlT1NSRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC02Mjk2
LDggKzYyOTcsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hl
Y2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgbW9kdWxlIGNvZGUg
ZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50LiBTbyB0aGlzIGNhc2Ug
c2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMzQ3Ci0gICAgICAgICAg
ICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0g
SlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Z2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFs
T2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2Rl
OjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoLndhdGNoR2xvYmFs
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlv
bigpOwogCkBAIC02NDcxLDggKzY0NzQsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHlXaXRo
VmFySW5qZWN0aW9uQ2hlY2tzOiB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRs
eSwgbW9kdWxlIGNvZGUgZG8gbm90IHF1ZXJ5IHRvIEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
LiBTbyB0aGlzIGNhc2Ugc2hvdWxkIGJlIHJlbW92ZWQgb25jZSBpdCBpcyBmaXhlZC4KICAgICAg
ICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
MzQ3Ci0gICAgICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5z
Y3JpcHRNb2RlKCkgIT0gSlNQYXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpCi0gICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZ2xvYmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFs
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5zY3JpcHRNb2RlKCkgIT0gSlNQ
YXJzZXJTY3JpcHRNb2RlOjpNb2R1bGUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2dy
YXBoLndhdGNoR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCBpZGVudGlmaWVyTnVtYmVyKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1czsKICAg
ICAgICAgICAgICAgICBpZiAodWlkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAppbmRleCA4ZjdiOWNlZDk5Yjhm
NzkwOTBhNzIwZTllNGViZmVkYWQ2ZTlhZjAzLi5iYTY4NDFkZGM0MmY5MzQ0MjMwMmUxNWU0NDQw
MTFhMjAzMWU1ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzLmNwcApAQCAtMzYsMTYgKzM2LDIzIEBACiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotYm9vbCBEZXNpcmVkR2xvYmFsUHJvcGVy
dGllczo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKERlc2lyZWRJZGVudGlmaWVycyYgaWRlbnRp
ZmllcnMpCitib29sIERlc2lyZWRHbG9iYWxQcm9wZXJ0aWVzOjppc1N0aWxsVmFsaWRPbk1haW5U
aHJlYWQoVk0mIHZtLCBEZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzKQogeworICAgIGJv
b2wgaXNTdGlsbFZhbGlkID0gdHJ1ZTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHByb3BlcnR5IDog
bV9zZXQpIHsKICAgICAgICAgYXV0byogdWlkID0gaWRlbnRpZmllcnMuYXQocHJvcGVydHkuaWRl
bnRpZmllck51bWJlcigpKTsKLSAgICAgICAgaWYgKGF1dG8qIHdhdGNocG9pbnRTZXQgPSBwcm9w
ZXJ0eS5nbG9iYWxPYmplY3QoKS0+Z2V0UmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldCh1
aWQpKSB7Ci0gICAgICAgICAgICBpZiAoIXdhdGNocG9pbnRTZXQtPmlzU3RpbGxWYWxpZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHByb3BlcnR5Lmdsb2JhbE9iamVjdCgpOworICAgICAgICB7CisgICAgICAg
ICAgICBTeW1ib2xUYWJsZSogc3ltYm9sVGFibGUgPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpLT5zeW1ib2xUYWJsZSgpOworICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihzeW1ib2xUYWJsZS0+bV9sb2NrKTsKKyAgICAgICAgICAgIGlmICghc3lt
Ym9sVGFibGUtPmNvbnRhaW5zKGxvY2tlciwgdWlkKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQorICAgICAgICAvLyBTZXQgaW52YWxpZGF0ZWQgV2F0Y2hwb2ludFNldCBo
ZXJlIHRvIHByZXZlbnQgZnVydGhlciBjb21waWxlLWFuZC1mYWlsIGxvb3AuCisgICAgICAgIHBy
b3BlcnR5Lmdsb2JhbE9iamVjdCgpLT5lbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50
U2V0KHVpZCkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIGFuIGV4aXN0aW5n
IGdsb2JhbCBwcm9wZXJ0eSIpOworICAgICAgICBpc1N0aWxsVmFsaWQgPSBmYWxzZTsKICAgICB9
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGlzU3RpbGxWYWxpZDsKIH0KIAogdm9pZCBE
ZXNpcmVkR2xvYmFsUHJvcGVydGllczo6cmVhbGx5QWRkKENvZGVCbG9jayogY29kZUJsb2NrLCBE
ZXNpcmVkSWRlbnRpZmllcnMmIGlkZW50aWZpZXJzLCBDb21tb25EYXRhJiBjb21tb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0
aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRHbG9iYWxQcm9wZXJ0
aWVzLmgKaW5kZXggZTM0MGE1OTY1MWU1MTAyMDQ0ZTM4YTQ2YjljZGY5ZjU0ZGFjMDkyOC4uNjli
ZDM2ZGE5YmZiY2NlMTZlYjUyMTVlZjkwMTlmNGQxNzE0NWY3YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkR2xvYmFsUHJvcGVydGllcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZEdsb2JhbFByb3BlcnRpZXMuaApAQCAt
NDcsNyArNDcsNyBAQCBjbGFzcyBEZXNpcmVkR2xvYmFsUHJvcGVydGllcyB7CiAgICAgICAgIG1f
c2V0LmFkZChXVEZNb3ZlKHByb3BlcnR5KSk7CiAgICAgfQogCi0gICAgYm9vbCBpc1N0aWxsVmFs
aWRPbk1haW5UaHJlYWQoRGVzaXJlZElkZW50aWZpZXJzJik7CisgICAgYm9vbCBpc1N0aWxsVmFs
aWRPbk1haW5UaHJlYWQoVk0mLCBEZXNpcmVkSWRlbnRpZmllcnMmKTsKIAogICAgIHZvaWQgcmVh
bGx5QWRkKENvZGVCbG9jayosIERlc2lyZWRJZGVudGlmaWVycyYsIENvbW1vbkRhdGEmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAppbmRleCA4M2NjMWQ0YjY0ZWI0ZGI5
MTYyYTkwOGNiZGNjYzdlN2U4NTVjMDgwLi41YTYwYWZiOWU0ZTNiMGNhNmJmYTBhZWI2MDFkZDMx
YTg1ODg2M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcApAQCAtMTA1
OCw2ICsxMDU4LDIwIEBAIGJvb2wgR3JhcGg6OmlzU2FmZVRvTG9hZChKU09iamVjdCogYmFzZSwg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogICAgIHJldHVybiBtX3NhZmVUb0xvYWQuY29udGFpbnMo
c3RkOjptYWtlX3BhaXIoYmFzZSwgb2Zmc2V0KSk7CiB9CiAKK2Jvb2wgR3JhcGg6OndhdGNoR2xv
YmFsUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlcikKK3sKKyAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gaWRlbnRpZmllcnMo
KVtpZGVudGlmaWVyTnVtYmVyXTsKKyAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBXYXRjaHBv
aW50U2V0LCBhbmQgaXQgaXMgYWxyZWFkeSBpbnZhbGlkYXRlZCwgaXQgbWVhbnMgdGhhdCB0aGlz
IHNjb3BlIG9wZXJhdGlvbiBtdXN0IGJlIGNoYW5nZWQgZnJvbSBHbG9iYWxQcm9wZXJ0eSB0byBH
bG9iYWxMZXhpY2FsVmFyLAorICAgIC8vIGJ1dCB3ZSBzdGlsbCBoYXZlIHN0YWxlIG1ldGFkYXRh
IGhlcmUgc2luY2Ugd2UgaGF2ZSBub3QgeWV0IGV4ZWN1dGVkIHRoaXMgYnl0ZWNvZGUgb3BlcmF0
aW9uIHNpbmNlIHRoZSBpbnZhbGlkYXRpb24uIEp1c3QgZW1pdHRpbmcgRm9yY2VPU1JFeGl0IHRv
IHVwZGF0ZSB0aGUKKyAgICAvLyBtZXRhZGF0YSB3aGVuIGl0IHJlYWNoZXMgdG8gdGhpcyBjb2Rl
LgorICAgIGlmIChhdXRvKiB3YXRjaHBvaW50ID0gZ2xvYmFsT2JqZWN0LT5nZXRSZWZlcmVuY2Vk
UHJvcGVydHlXYXRjaHBvaW50U2V0KHVpZCkpIHsKKyAgICAgICAgaWYgKCF3YXRjaHBvaW50LT5p
c1N0aWxsVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgZ2xv
YmFsUHJvcGVydGllcygpLmFkZExhemlseShEZXNpcmVkR2xvYmFsUHJvcGVydHkoZ2xvYmFsT2Jq
ZWN0LCBpZGVudGlmaWVyTnVtYmVyKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiBHcmFwaDo6bGl2ZW5lc3NGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7
CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2
ZW5lc3M+Pjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVMaXZlbmVzcy5maW5kKGNvZGVCbG9j
ayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggZWUyZTI2N2UwY2U1ZDZj
MjQzOGVkYjMzNTNlYzUzZWZiMGMxN2ZlOC4uMTUxZjU3MzZjN2FjNzA3M2YxZGVkZWU4ZGY2ZWIz
M2UwMDhlZjRlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzkzLDYg
Kzc5Myw4IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBi
b29sIHdhdGNoQ29uZGl0aW9uKGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uJik7CiAgICAg
Ym9vbCB3YXRjaENvbmRpdGlvbnMoY29uc3QgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQmKTsK
IAorICAgIGJvb2wgd2F0Y2hHbG9iYWxQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCosIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIpOworCiAgICAgLy8gQ2hlY2tzIGlmIGl0J3Mga25vd24gdGhhdCBs
b2FkaW5nIGZyb20gdGhlIGdpdmVuIG9iamVjdCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGZpbmUu
IFRoaXMgaXMKICAgICAvLyBjb21wdXRlZCBieSB0cmFja2luZyB3aGljaCBjb25kaXRpb25zIHdl
IHRyYWNrIHdpdGggd2F0Y2hDb25kaXRpb24oKS4KICAgICBib29sIGlzU2FmZVRvTG9hZChKU09i
amVjdCogYmFzZSwgUHJvcGVydHlPZmZzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAKaW5kZXggZTc3NzIzZjg4NGQ5ZjM1NjBkOGJmYTJjZjQxNGFlMDBmZGViMWJmNS4uYzVl
ODk5YmExNTZjNzc0M2I2NmMzZDYzYmEyZDk1YTgzZjIzMTg5NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uY3BwCkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBQbGFuOjpub3RpZnlS
ZWFkeSgpCiAKIGJvb2wgUGxhbjo6aXNTdGlsbFZhbGlkT25NYWluVGhyZWFkKCkKIHsKLSAgICBy
ZXR1cm4gbV9nbG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFpblRocmVhZChtX2lkZW50
aWZpZXJzKTsKKyAgICByZXR1cm4gbV9nbG9iYWxQcm9wZXJ0aWVzLmlzU3RpbGxWYWxpZE9uTWFp
blRocmVhZCgqbV92bSwgbV9pZGVudGlmaWVycyk7CiB9CiAKIENvbXBpbGF0aW9uUmVzdWx0IFBs
YW46OmZpbmFsaXplV2l0aG91dE5vdGlmeWluZ0NhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggOTJmMzdlYzkwOTc3NTdl
YTcwM2EwZTc1NTVhYzIyN2U1N2EwZWRlNy4uMmY0ZjMyZTEwNmI5ZGI1NDZiODRiMjRmN2I5ODk5
NmM5ZDNkYjQ4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKQEAgLTc2Niw3ICs3NjYsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2
ZV9zY29wZShjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGF1dG8g
ZW1pdENvZGUgPSBbJl0gKFJlc29sdmVUeXBlIHJlc29sdmVUeXBlKSB7CiAgICAgICAgIHN3aXRj
aCAocmVzb2x2ZVR5cGUpIHsKICAgICAgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eToKLSAgICAgICAg
Y2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgICAgIGNhc2Ug
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAgICBKU1Nj
b3BlKiBjb25zdGFudFNjb3BlID0gSlNTY29wZTo6Y29uc3RhbnRTY29wZUZvckNvZGVCbG9jayhy
ZXNvbHZlVHlwZSwgbV9jb2RlQmxvY2spOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY29u
c3RhbnRTY29wZSk7CisgICAgICAgICAgICBlbWl0VmFySW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKKyAgICAgICAgICAgIGxvYWQzMigmbWV0YWRh
dGEubV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCByZWdUMSk7CisgICAgICAgICAgICBhZGRT
bG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+YWRkcmVzc09mR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpKSwgcmVn
VDEpKTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihjb25zdGFudFNjb3BlKSwgcmVn
VDApOworICAgICAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICAgICAg
Y2FzZSBHbG9iYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgICAgICBjYXNlIEdsb2Jh
bExleGljYWxWYXI6CkBAIC03OTksMTEgKzgwOSwxNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNv
bHZlX3Njb3BlKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3dp
dGNoIChyZXNvbHZlVHlwZSkgewogICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CiAgICAgY2FzZSBH
bG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKLSAgICAgICAgLy8gU2luY2Ug
dGhlc2UgR2xvYmFsUHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgdG8gR2xvYmFsTGV4aWNhbFZhciwg
d2Ugc2hvdWxkIGxvYWQgdGhlIHZhbHVlIGZyb20gbWV0YWRhdGEuCi0gICAgICAgIEpTU2NvcGUq
KiBjb25zdGFudFNjb3BlU2xvdCA9IG1ldGFkYXRhLm1fY29uc3RhbnRTY29wZS5zbG90KCk7Ci0g
ICAgICAgIGVtaXRWYXJJbmplY3Rpb25DaGVjayhuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNv
bHZlVHlwZSkpOwotICAgICAgICBsb2FkUHRyKGNvbnN0YW50U2NvcGVTbG90LCByZWdUMCk7Ci0g
ICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKKyAgICAgICAgSnVtcExpc3Qgc2tp
cFRvRW5kOworICAgICAgICBsb2FkMzIoJm1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUsIHJlZ1QwKTsK
KworICAgICAgICBKdW1wIG5vdEdsb2JhbFByb3BlcnR5ID0gYnJhbmNoMzIoTm90RXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tMzIocmVzb2x2ZVR5cGUpKTsKKyAgICAgICAgZW1pdENvZGUocmVzb2x2
ZVR5cGUpOworICAgICAgICBza2lwVG9FbmQuYXBwZW5kKGp1bXAoKSk7CisKKyAgICAgICAgbm90
R2xvYmFsUHJvcGVydHkubGluayh0aGlzKTsKKyAgICAgICAgZW1pdENvZGUobmVlZHNWYXJJbmpl
Y3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyKTsKKworICAgICAgICBza2lwVG9FbmQubGluayh0
aGlzKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVW5yZXNvbHZlZFByb3BlcnR5
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKaW5kZXggMzNkNmFlNDYwODY0Mzc2YTA1NDBiNjlkMTU2NGJlNWVmYWMxMzY5Zi4u
ZTJkYTExNWVjZDNjZGYxM2U5ZGIxZDA3NDVkZTM3YmVmOGRjNDI4NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCkBAIC03
NjksNyArNzY5LDE4IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc29sdmVfc2NvcGUoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhdXRvIGVtaXRDb2RlID0gWyZdIChS
ZXNvbHZlVHlwZSByZXNvbHZlVHlwZSkgewogICAgICAgICBzd2l0Y2ggKHJlc29sdmVUeXBlKSB7
CiAgICAgICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6Ci0gICAgICAgIGNhc2UgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgorICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5V2l0
aFZhckluamVjdGlvbkNoZWNrczogeworICAgICAgICAgICAgSlNTY29wZSogY29uc3RhbnRTY29w
ZSA9IEpTU2NvcGU6OmNvbnN0YW50U2NvcGVGb3JDb2RlQmxvY2socmVzb2x2ZVR5cGUsIG1fY29k
ZUJsb2NrKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNvbnN0YW50U2NvcGUpOworICAg
ICAgICAgICAgZW1pdFZhckluamVjdGlvbkNoZWNrKG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJl
c29sdmVUeXBlKSk7CisgICAgICAgICAgICBsb2FkMzIoJm1ldGFkYXRhLm1fZ2xvYmFsTGV4aWNh
bEJpbmRpbmdFcG9jaCwgcmVnVDEpOworICAgICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIEFic29sdXRlQWRkcmVzcyhtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmFk
ZHJlc3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSksIHJlZ1QxKSk7CisgICAgICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwgcmVnVDEpOworICAgICAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGNvbnN0YW50U2NvcGUpLCByZWdUMCk7CisgICAgICAgICAg
ICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVnVDApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIEdsb2JhbFZhcjoKICAgICAgICAgY2FzZSBHbG9iYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiAKICAgICAgICAgY2FzZSBHbG9iYWxMZXhpY2FsVmFyOgpA
QCAtODAzLDEyICs4MTQsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzb2x2ZV9zY29wZShjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN3aXRjaCAocmVzb2x2ZVR5
cGUpIHsKICAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgogICAgIGNhc2UgR2xvYmFsUHJvcGVydHlX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7Ci0gICAgICAgIC8vIFNpbmNlIHRoZXNlIEdsb2JhbFBy
b3BlcnR5IGNhbiBiZSBjaGFuZ2VkIHRvIEdsb2JhbExleGljYWxWYXIsIHdlIHNob3VsZCBsb2Fk
IHRoZSB2YWx1ZSBmcm9tIG1ldGFkYXRhLgotICAgICAgICBKU1Njb3BlKiogY29uc3RhbnRTY29w
ZVNsb3QgPSBtZXRhZGF0YS5tX2NvbnN0YW50U2NvcGUuc2xvdCgpOwotICAgICAgICBlbWl0VmFy
SW5qZWN0aW9uQ2hlY2sobmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpKTsKLSAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHJlZ1QxKTsKLSAgICAg
ICAgbG9hZFB0cihjb25zdGFudFNjb3BlU2xvdCwgcmVnVDApOwotICAgICAgICBlbWl0U3RvcmUo
ZHN0LCByZWdUMSwgcmVnVDApOworICAgICAgICBKdW1wTGlzdCBza2lwVG9FbmQ7CisgICAgICAg
IGxvYWQzMigmbWV0YWRhdGEubV9yZXNvbHZlVHlwZSwgcmVnVDApOworCisgICAgICAgIEp1bXAg
bm90R2xvYmFsUHJvcGVydHkgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0z
MihyZXNvbHZlVHlwZSkpOworICAgICAgICBlbWl0Q29kZShyZXNvbHZlVHlwZSk7CisgICAgICAg
IHNraXBUb0VuZC5hcHBlbmQoanVtcCgpKTsKKworICAgICAgICBub3RHbG9iYWxQcm9wZXJ0eS5s
aW5rKHRoaXMpOworICAgICAgICBlbWl0Q29kZShuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNv
bHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcyA6IEdsb2Jh
bExleGljYWxWYXIpOworCisgICAgICAgIHNraXBUb0VuZC5saW5rKHRoaXMpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHk6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IDZmN2RlYWJjNzI1MWE4NTc5ZjdlOTk1YWQyMDQ3N2I3NmEzMDAzMGYuLmJmMmJjMmRk
MTgxZWRjYTlmOWRmZjBlYjUxZTcxZGY2MGM1ZjdhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0y
MDkyLDExICsyMDkyLDIwIEBAIGVuZAogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVf
c2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRh
dGEsIHJldHVybikKIAotICAgIG1hY3JvIGdldENvbnN0YW50U2NvcGUoKQotICAgICAgICBsb2Fk
cCBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sICB0MAorICAg
IG1hY3JvIGdldENvbnN0YW50U2NvcGUoZHN0KQorICAgICAgICBsb2FkcCBPcFJlc29sdmVTY29w
ZTo6TWV0YWRhdGE6Om1fY29uc3RhbnRTY29wZVt0NV0sIGRzdAorICAgIGVuZAorCisgICAgbWFj
cm8gcmV0dXJuQ29uc3RhbnRTY29wZSgpCisgICAgICAgIGdldENvbnN0YW50U2NvcGUodDApCiAg
ICAgICAgIHJldHVybihDZWxsVGFnLCB0MCkKICAgICBlbmQKIAorICAgIG1hY3JvIGdsb2JhbExl
eGljYWxCaW5kaW5nRXBvY2hDaGVjayhzbG93UGF0aCwgZ2xvYmFsT2JqZWN0LCBzY3JhdGNoKQor
ICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fZ2xvYmFsTGV4aWNhbEJp
bmRpbmdFcG9jaFt0NV0sIHNjcmF0Y2gKKyAgICAgICAgYmluZXEgSlNHbG9iYWxPYmplY3Q6Om1f
Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaFtnbG9iYWxPYmplY3RdLCBzY3JhdGNoLCBzbG93UGF0
aAorICAgIGVuZAorCiAgICAgbWFjcm8gcmVzb2x2ZVNjb3BlKCkKICAgICAgICAgbG9hZGkgT3BS
ZXNvbHZlU2NvcGU6Ok1ldGFkYXRhOjptX2xvY2FsU2NvcGVEZXB0aFt0NV0sIHQyCiAgICAgICAg
IGdldChtX3Njb3BlLCB0MCkKQEAgLTIxMTcsMTUgKzIxMjYsMTcgQEAgbGxpbnRPcFdpdGhNZXRh
ZGF0YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0Y2gKIAogI3JHbG9iYWxQcm9wZXJ0eToKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVy
dHksIC5yR2xvYmFsVmFyCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRT
Y29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0
MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogCiAuckdsb2JhbFZhcjoKICAgICBiaW5l
cSB0MCwgR2xvYmFsVmFyLCAuckdsb2JhbExleGljYWxWYXIKLSAgICBnZXRDb25zdGFudFNjb3Bl
KCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJHbG9iYWxMZXhpY2FsVmFyOgogICAg
IGJpbmVxIHQwLCBHbG9iYWxMZXhpY2FsVmFyLCAuckNsb3N1cmVWYXIKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICByZXR1cm5Db25zdGFudFNjb3BlKCkKIAogLnJDbG9zdXJlVmFyOgogICAg
IGJpbmVxIHQwLCBDbG9zdXJlVmFyLCAuck1vZHVsZVZhcgpAQCAtMjEzMywyMiArMjE0NCwyNCBA
QCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2ZVNjb3BlLCBt
YWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAuck1vZHVsZVZhcjoKICAgICBiaW5lcSB0MCwg
TW9kdWxlVmFyLCAuckdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGdl
dENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2JhbFBy
b3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBiaW5lcSB0MCwgR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVj
a3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3RhbnRTY29w
ZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBnbG9iYWxMZXhpY2FsQmluZGluZ0Vw
b2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0dXJuKENlbGxUYWcsIHQwKQogCiAu
ckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rp
b25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMpCi0gICAgZ2V0Q29uc3Rh
bnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yR2xvYmFsTGV4aWNhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tz
CiAgICAgdmFySW5qZWN0aW9uQ2hlY2soLnJEeW5hbWljKQotICAgIGdldENvbnN0YW50U2NvcGUo
KQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckNsb3N1cmVWYXJXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBDbG9zdXJlVmFyV2l0aFZhckluamVjdGlvbkNoZWNr
cywgLnJEeW5hbWljCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDRlMzdhMDk2MDNmNzNkOTc5NjczNDk4ZGY5OTcw
NmNjYzFhMWZkOTMuLmMyOTcxN2RlYzlkMmEzMTFlZWIwNmY2YjJjOTkwNDEyNjljYWY1OTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
NjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCkBAIC0yMTUwLDExICsyMTUwLDIwIEBAIGVuZAogbGxpbnRPcFdpdGhNZXRhZGF0
YShvcF9yZXNvbHZlX3Njb3BlLCBPcFJlc29sdmVTY29wZSwgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDUsIHQwKQogCi0gICAgbWFj
cm8gZ2V0Q29uc3RhbnRTY29wZSgpCi0gICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRh
ZGF0YTo6bV9jb25zdGFudFNjb3BlW3Q1XSwgIHQwCisgICAgbWFjcm8gZ2V0Q29uc3RhbnRTY29w
ZShkc3QpCisgICAgICAgIGxvYWRwIE9wUmVzb2x2ZVNjb3BlOjpNZXRhZGF0YTo6bV9jb25zdGFu
dFNjb3BlW3Q1XSwgZHN0CisgICAgZW5kCisKKyAgICBtYWNybyByZXR1cm5Db25zdGFudFNjb3Bl
KCkKKyAgICAgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKICAgICAgICAgcmV0dXJuKHQwKQogICAg
IGVuZAogCisgICAgbWFjcm8gZ2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaENoZWNrKHNsb3dQYXRo
LCBnbG9iYWxPYmplY3QsIHNjcmF0Y2gpCisgICAgICAgIGxvYWRpIE9wUmVzb2x2ZVNjb3BlOjpN
ZXRhZGF0YTo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW3Q1XSwgc2NyYXRjaAorICAgICAg
ICBiaW5lcSBKU0dsb2JhbE9iamVjdDo6bV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoW2dsb2Jh
bE9iamVjdF0sIHNjcmF0Y2gsIHNsb3dQYXRoCisgICAgZW5kCisKICAgICBtYWNybyByZXNvbHZl
U2NvcGUoKQogICAgICAgICBsb2FkaSBPcFJlc29sdmVTY29wZTo6TWV0YWRhdGE6Om1fbG9jYWxT
Y29wZURlcHRoW3Q1XSwgdDIKICAgICAgICAgZ2V0KG1fc2NvcGUsIHQwKQpAQCAtMjE3NCwxNSAr
MjE4MywxNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3Jlc29sdmVfc2NvcGUsIE9wUmVzb2x2
ZVNjb3BlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaAogCiAjckdsb2JhbFByb3BlcnR5Ogog
ICAgIGJpbmVxIHQwLCBHbG9iYWxQcm9wZXJ0eSwgLnJHbG9iYWxWYXIKLSAgICBnZXRDb25zdGFu
dFNjb3BlKCkKKyAgICBnZXRDb25zdGFudFNjb3BlKHQwKQorICAgIGdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2hDaGVjayguckR5bmFtaWMsIHQwLCB0MikKKyAgICByZXR1cm4odDApCiAKIC5yR2xv
YmFsVmFyOgogICAgIGJpbmVxIHQwLCBHbG9iYWxWYXIsIC5yR2xvYmFsTGV4aWNhbFZhcgotICAg
IGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAuckdsb2Jh
bExleGljYWxWYXI6CiAgICAgYmluZXEgdDAsIEdsb2JhbExleGljYWxWYXIsIC5yQ2xvc3VyZVZh
cgotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAu
ckNsb3N1cmVWYXI6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXIsIC5yTW9kdWxlVmFyCkBAIC0y
MTkwLDIyICsyMjAxLDI0IEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcmVzb2x2ZV9zY29wZSwg
T3BSZXNvbHZlU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoCiAKIC5yTW9kdWxlVmFy
OgogICAgIGJpbmVxIHQwLCBNb2R1bGVWYXIsIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0
aW9uQ2hlY2tzCi0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29w
ZSgpCiAKIC5yR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVx
IHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsVmFyV2l0
aFZhckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIp
Ci0gICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgZ2V0Q29uc3RhbnRTY29wZSh0MCkKKyAgICBn
bG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoQ2hlY2soLnJEeW5hbWljLCB0MCwgdDIpCisgICAgcmV0
dXJuKHQwKQogCiAuckdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5yR2xvYmFsTGV4aWNhbFZhcldp
dGhWYXJJbmplY3Rpb25DaGVja3MKICAgICB2YXJJbmplY3Rpb25DaGVjayguckR5bmFtaWMsIHQy
KQotICAgIGdldENvbnN0YW50U2NvcGUoKQorICAgIHJldHVybkNvbnN0YW50U2NvcGUoKQogCiAu
ckdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJpbmVxIHQwLCBH
bG9iYWxMZXhpY2FsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrcywgLnJDbG9zdXJlVmFyV2l0aFZh
ckluamVjdGlvbkNoZWNrcwogICAgIHZhckluamVjdGlvbkNoZWNrKC5yRHluYW1pYywgdDIpCi0g
ICAgZ2V0Q29uc3RhbnRTY29wZSgpCisgICAgcmV0dXJuQ29uc3RhbnRTY29wZSgpCiAKIC5yQ2xv
c3VyZVZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M6CiAgICAgYmluZXEgdDAsIENsb3N1cmVWYXJX
aXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuckR5bmFtaWMKQEAgLTIyNTYsNyArMjI2OSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2Zyb21fc2NvcGUsIE9wR2V0RnJvbVNjb3BlLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjCiAKICNnR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEgdDAs
IEdsb2JhbFByb3BlcnR5LCAuZ0dsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2so
T3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKQorICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hl
Y2soT3BHZXRGcm9tU2NvcGUsIGdldCwgLmdEeW5hbWljKSAjIFRoaXMgc3RydWN0dXJlIGNoZWNr
IGluY2x1ZGVzIGxleGljYWwgYmluZGluZyBlcG9jaCBjaGVjayBzaW5jZSB3aGVuIHRoZSBlcG9j
aCBpcyBjaGFuZ2VkLCBzY29wZSB3aWxsIGJlIGNoYW5nZWQgdG9vLgogICAgIGdldFByb3BlcnR5
KCkKIAogLmdHbG9iYWxWYXI6CkBAIC0yMjc3LDcgKzIyOTAsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9mcm9tX3Njb3BlLCBPcEdldEZyb21TY29wZSwgbWFjcm8gKHNpemUsIGdldCwg
ZGlzcGF0YwogCiAuZ0dsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczoKICAgICBi
aW5lcSB0MCwgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzLCAuZ0dsb2JhbFZh
cldpdGhWYXJJbmplY3Rpb25DaGVja3MKLSAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wR2V0
RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9w
R2V0RnJvbVNjb3BlLCBnZXQsIC5nRHluYW1pYykgIyBUaGlzIHN0cnVjdHVyZSBjaGVjayBpbmNs
dWRlcyBsZXhpY2FsIGJpbmRpbmcgZXBvY2ggY2hlY2sgc2luY2Ugd2hlbiB0aGUgZXBvY2ggaXMg
Y2hhbmdlZCwgc2NvcGUgd2lsbCBiZSBjaGFuZ2VkIHRvby4KICAgICBnZXRQcm9wZXJ0eSgpCiAK
IC5nR2xvYmFsVmFyV2l0aFZhckluamVjdGlvbkNoZWNrczoKQEAgLTIzNjQsNyArMjM3Nyw3IEBA
IGxsaW50T3BXaXRoTWV0YWRhdGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3Jv
IChzaXplLCBnZXQsIGRpc3BhdGNoLCBtCiAKIC5wR2xvYmFsUHJvcGVydHk6CiAgICAgYmluZXEg
dDAsIEdsb2JhbFByb3BlcnR5LCAucEdsb2JhbFZhcgotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hl
Y2soT3BQdXRUb1Njb3BlLCBnZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNo
ZWNrKE9wUHV0VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sg
aW5jbHVkZXMgbGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2No
IGlzIGNoYW5nZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHko
KQogICAgIHdyaXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVl
KQogICAgIGRpc3BhdGNoKCkKQEAgLTIzOTEsNyArMjQwNCw3IEBAIGxsaW50T3BXaXRoTWV0YWRh
dGEob3BfcHV0X3RvX3Njb3BlLCBPcFB1dFRvU2NvcGUsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtCiAKIC5wR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOgogICAgIGJp
bmVxIHQwLCBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MsIC5wR2xvYmFsVmFy
V2l0aFZhckluamVjdGlvbkNoZWNrcwotICAgIGxvYWRXaXRoU3RydWN0dXJlQ2hlY2soT3BQdXRU
b1Njb3BlLCBnZXQsIC5wRHluYW1pYykKKyAgICBsb2FkV2l0aFN0cnVjdHVyZUNoZWNrKE9wUHV0
VG9TY29wZSwgZ2V0LCAucER5bmFtaWMpICMgVGhpcyBzdHJ1Y3R1cmUgY2hlY2sgaW5jbHVkZXMg
bGV4aWNhbCBiaW5kaW5nIGVwb2NoIGNoZWNrIHNpbmNlIHdoZW4gdGhlIGVwb2NoIGlzIGNoYW5n
ZWQsIHNjb3BlIHdpbGwgYmUgY2hhbmdlZCB0b28uCiAgICAgcHV0UHJvcGVydHkoKQogICAgIHdy
aXRlQmFycmllck9uT3BlcmFuZHMoc2l6ZSwgZ2V0LCBtX3Njb3BlLCBtX3ZhbHVlKQogICAgIGRp
c3BhdGNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IGI4ODA0NThlYzg3N2U1MTg2MDc0YzA5ZDEyNzU4MzZkNzQ3YzMxNDgu
LmJiYmFkYWI2N2ZkZjZmY2FkNGNhYzA2NjRjZGM4ZTYwYmY1ZTRiMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTA2Nywy
OSArMTA2NywzMSBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSkKICAg
ICAvLyBNb2R1bGVWYXIgZG9lcyBub3Qga2VlcCB0aGUgc2NvcGUgcmVnaXN0ZXIgdmFsdWUgYWxp
dmUgaW4gREZHLgogICAgIEFTU0VSVChyZXNvbHZlVHlwZSAhPSBNb2R1bGVWYXIpOwogCi0gICAg
aWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSB8fCByZXNvbHZlVHlwZSA9PSBV
bnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKSB7CisgICAgc3dpdGNoIChy
ZXNvbHZlVHlwZSkgeworICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVy
dHk6CisgICAgY2FzZSBVbnJlc29sdmVkUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7
CiAgICAgICAgIGlmIChyZXNvbHZlZFNjb3BlLT5pc0dsb2JhbE9iamVjdCgpKSB7CiAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0
Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBib29sIGhhc1Byb3BlcnR5ID0gZ2xvYmFs
T2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCBpZGVudCk7CiAgICAgICAgICAgICBDSEVDS19FWENF
UFRJT04oKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZXhlYy0+Y29kZUJsb2NrKCktPm1fbG9jayk7Ci0g
ICAgICAgICAgICAgICAgaWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKLSAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9yZXNvbHZlVHlwZSA9IEdsb2JhbFByb3BlcnR5
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9y
ZXNvbHZlVHlwZSA9IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrczsKLQorICAg
ICAgICAgICAgICAgIG1ldGFkYXRhLm1fcmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNo
ZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3Mg
OiBHbG9iYWxQcm9wZXJ0eTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbE9iamVj
dCA9IGdsb2JhbE9iamVjdDsKKyAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2ggPSBnbG9iYWxPYmplY3QtPmdsb2JhbExleGljYWxCaW5kaW5nRXBvY2go
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXNvbHZlZFNjb3BlLT5pc0ds
b2JhbExleGljYWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxF
bnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50Kj4ocmVzb2x2ZWRTY29wZSk7CiAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwotICAgICAgICAgICAg
aWYgKHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICBt
ZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4aWNhbFZhcjsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29sdmVUeXBlID0gR2xvYmFsTGV4aWNh
bFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBtZXRhZGF0YS5tX3Jlc29s
dmVUeXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsTGV4
aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxMZXhpY2FsVmFyOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV9nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQgPSBnbG9iYWxMZXhpY2Fs
RW52aXJvbm1lbnQ7CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFJFVFVSTihyZXNvbHZlZFNjb3BlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggMTMwYTBjODJhMmY3ZWY2ZWQ4NzNlMDYyOTU3OWMzYTMzNjc3YWNhYy4uN2VlYWY3MDRiNDMz
NTQzOTYwOTdiOWViNDgyMTE3N2ViNWExNDk1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTEyNCwyOCArMTI0LDM5IEBAIGlubGlu
ZSB2b2lkIHRyeUNhY2hlUHV0VG9TY29wZUdsb2JhbCgKICAgICAvLyBDb3ZlcnMgaW1wbGljaXQg
Z2xvYmFscy4gU2luY2UgdGhleSBkb24ndCBleGlzdCB1bnRpbCB0aGV5IGZpcnN0IGV4ZWN1dGUs
IHdlIGRpZG4ndCBrbm93IGhvdyB0byBjYWNoZSB0aGVtIGF0IGNvbXBpbGUgdGltZS4KICAgICBh
dXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAgIFJlc29sdmVUeXBl
IHJlc29sdmVUeXBlID0gbWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVUeXBlKCk7Ci0gICAg
aWYgKHJlc29sdmVUeXBlICE9IEdsb2JhbFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IEdsb2Jh
bFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcyAKLSAgICAgICAgJiYgcmVzb2x2ZVR5cGUg
IT0gVW5yZXNvbHZlZFByb3BlcnR5ICYmIHJlc29sdmVUeXBlICE9IFVucmVzb2x2ZWRQcm9wZXJ0
eVdpdGhWYXJJbmplY3Rpb25DaGVja3MpCi0gICAgICAgIHJldHVybjsKIAotICAgIGlmIChyZXNv
bHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZl
ZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2ZVR5
cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2ZWRQ
cm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3BlLT5pc0ds
b2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9
IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDogR2xv
YmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOwotICAgICAgICAgICAgcmVzb2x2ZVR5
cGUgPSBuZXdSZXNvbHZlVHlwZTsKKyAgICAgICAgICAgIFJlc29sdmVUeXBlIG5ld1Jlc29sdmVU
eXBlID0gbmVlZHNWYXJJbmplY3Rpb25DaGVja3MocmVzb2x2ZVR5cGUpID8gR2xvYmFsUHJvcGVy
dHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsUHJvcGVydHk7CisgICAgICAgICAgICBy
ZXNvbHZlVHlwZSA9IG5ld1Jlc29sdmVUeXBlOyAvLyBBbGxvdyBiZWxvdyBjYWNoaW5nIG1lY2hh
bmlzbSB0byBraWNrIGluLgogICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX2dldFB1dEluZm8gPSBH
ZXRQdXRJbmZvKG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5yZXNvbHZlTW9kZSgpLCBuZXdSZXNvbHZl
VHlwZSwgbWV0YWRhdGEubV9nZXRQdXRJbmZvLmluaXRpYWxpemF0aW9uTW9kZSgpKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgeworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQor
ICAgIGNhc2UgR2xvYmFsUHJvcGVydHk6CisgICAgY2FzZSBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJ
bmplY3Rpb25DaGVja3M6IHsKKyAgICAgICAgIC8vIEdsb2JhbCBMZXhpY2FsIEJpbmRpbmcgRXBv
Y2ggaXMgY2hhbmdlZC4gVXBkYXRlIG9wX2dldF9mcm9tX3Njb3BlIGZyb20gR2xvYmFsUHJvcGVy
dHkgdG8gR2xvYmFsTGV4aWNhbFZhci4KKyAgICAgICAgaWYgKHNjb3BlLT5pc0dsb2JhbExleGlj
YWxFbnZpcm9ubWVudCgpKSB7CiAgICAgICAgICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVu
dCogZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50ID0ganNDYXN0PEpTR2xvYmFsTGV4aWNhbEVudmly
b25tZW50Kj4oc2NvcGUpOwotICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUg
PSByZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgPyBHbG9iYWxMZXhpY2FsVmFyIDog
R2xvYmFsTGV4aWNhbFZhcldpdGhWYXJJbmplY3Rpb25DaGVja3M7CisgICAgICAgICAgICBSZXNv
bHZlVHlwZSBuZXdSZXNvbHZlVHlwZSA9IG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKHJlc29sdmVU
eXBlKSA/IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzIDogR2xvYmFsTGV4
aWNhbFZhcjsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
bWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgU3lt
Ym9sVGFibGVFbnRyeSBlbnRyeSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFi
bGUoKS0+Z2V0KGlkZW50LmltcGwoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVs
bCgpKTsKICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgICAgICAgICAgbWV0YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0
Y2hwb2ludFNldCgpOwogICAgICAgICAgICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChl
bnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgaWYgKHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5IHx8
IHJlc29sdmVUeXBlID09IEdsb2JhbFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgewog
ICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKQEAgLTE3NiwyMiArMTg3LDM2
IEBAIGlubGluZSB2b2lkIHRyeUNhY2hlR2V0RnJvbVNjb3BlR2xvYmFsKAogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2
ZVR5cGUgPSBtZXRhZGF0YS5tX2dldFB1dEluZm8ucmVzb2x2ZVR5cGUoKTsKIAotICAgIGlmIChy
ZXNvbHZlVHlwZSA9PSBVbnJlc29sdmVkUHJvcGVydHkgfHwgcmVzb2x2ZVR5cGUgPT0gVW5yZXNv
bHZlZFByb3BlcnR5V2l0aFZhckluamVjdGlvbkNoZWNrcykgeworICAgIHN3aXRjaCAocmVzb2x2
ZVR5cGUpIHsKKyAgICBjYXNlIFVucmVzb2x2ZWRQcm9wZXJ0eToKKyAgICBjYXNlIFVucmVzb2x2
ZWRQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3M6IHsKICAgICAgICAgaWYgKHNjb3BlLT5p
c0dsb2JhbE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBSZXNvbHZlVHlwZSBuZXdSZXNvbHZlVHlw
ZSA9IHJlc29sdmVUeXBlID09IFVucmVzb2x2ZWRQcm9wZXJ0eSA/IEdsb2JhbFByb3BlcnR5IDog
R2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOworICAgICAgICAgICAgUmVzb2x2
ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlw
ZSkgPyBHbG9iYWxQcm9wZXJ0eVdpdGhWYXJJbmplY3Rpb25DaGVja3MgOiBHbG9iYWxQcm9wZXJ0
eTsKICAgICAgICAgICAgIHJlc29sdmVUeXBlID0gbmV3UmVzb2x2ZVR5cGU7IC8vIEFsbG93IGJl
bG93IGNhY2hpbmcgbWVjaGFuaXNtIHRvIGtpY2sgaW4uCiAgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGV4ZWMtPmNvZGVCbG9jaygpLT5tX2xvY2spOwogICAgICAgICAgICAg
bWV0YWRhdGEubV9nZXRQdXRJbmZvID0gR2V0UHV0SW5mbyhtZXRhZGF0YS5tX2dldFB1dEluZm8u
cmVzb2x2ZU1vZGUoKSwgbmV3UmVzb2x2ZVR5cGUsIG1ldGFkYXRhLm1fZ2V0UHV0SW5mby5pbml0
aWFsaXphdGlvbk1vZGUoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2NvcGUtPmlzR2xvYmFsTGV4
aWNhbEVudmlyb25tZW50KCkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBjYXNlIEdsb2JhbFByb3BlcnR5OgorICAgIGNh
c2UgR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzOiB7CisgICAgICAgICAvLyBH
bG9iYWwgTGV4aWNhbCBCaW5kaW5nIEVwb2NoIGlzIGNoYW5nZWQuIFVwZGF0ZSBvcF9nZXRfZnJv
bV9zY29wZSBmcm9tIEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCisgICAgICAg
IGlmIChzY29wZS0+aXNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKSkgewogICAgICAgICAgICAg
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQqIGdsb2JhbExleGljYWxFbnZpcm9ubWVudCA9IGpz
Q2FzdDxKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCo+KHNjb3BlKTsKLSAgICAgICAgICAgIFJl
c29sdmVUeXBlIG5ld1Jlc29sdmVUeXBlID0gcmVzb2x2ZVR5cGUgPT0gVW5yZXNvbHZlZFByb3Bl
cnR5ID8gR2xvYmFsTGV4aWNhbFZhciA6IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9u
Q2hlY2tzOworICAgICAgICAgICAgUmVzb2x2ZVR5cGUgbmV3UmVzb2x2ZVR5cGUgPSBuZWVkc1Zh
ckluamVjdGlvbkNoZWNrcyhyZXNvbHZlVHlwZSkgPyBHbG9iYWxMZXhpY2FsVmFyV2l0aFZhcklu
amVjdGlvbkNoZWNrcyA6IEdsb2JhbExleGljYWxWYXI7CiAgICAgICAgICAgICBTeW1ib2xUYWJs
ZUVudHJ5IGVudHJ5ID0gZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5zeW1ib2xUYWJsZSgpLT5n
ZXQoaWRlbnQuaW1wbCgpKTsKICAgICAgICAgICAgIEFTU0VSVCghZW50cnkuaXNOdWxsKCkpOwog
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihleGVjLT5jb2RlQmxvY2soKS0+
bV9sb2NrKTsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fZ2V0UHV0SW5mbyA9IEdldFB1dEluZm8o
bWV0YWRhdGEubV9nZXRQdXRJbmZvLnJlc29sdmVNb2RlKCksIG5ld1Jlc29sdmVUeXBlLCBtZXRh
ZGF0YS5tX2dldFB1dEluZm8uaW5pdGlhbGl6YXRpb25Nb2RlKCkpOwogICAgICAgICAgICAgbWV0
YWRhdGEubV93YXRjaHBvaW50U2V0ID0gZW50cnkud2F0Y2hwb2ludFNldCgpOwogICAgICAgICAg
ICAgbWV0YWRhdGEubV9vcGVyYW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2Jh
bExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90
KCkpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gQ292ZXJz
IGltcGxpY2l0IGdsb2JhbHMuIFNpbmNlIHRoZXkgZG9uJ3QgZXhpc3QgdW50aWwgdGhleSBmaXJz
dCBleGVjdXRlLCB3ZSBkaWRuJ3Qga25vdyBob3cgdG8gY2FjaGUgdGhlbSBhdCBjb21waWxlIHRp
bWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggM2IwMjc1M2NiNjY1MTY4NzQ5YmRlZGU1YjgzN2Q1Y2I1YjM0MGVjZi4uMWE2MWY5
ZGIzMGY0YTg5ZTJjMjQ4Nzk4ZWNkMjUyOWI1ZmRlYzRjYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTg1NywyMCArMTg1Nywx
NyBAQCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIEpTR2xvYmFsT2JqZWN0OjppbnRsUGx1cmFsUnVs
ZXNBdmFpbGFibGVMb2NhbGVzKCkKIH0KICNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAotdm9pZCBK
U0dsb2JhbE9iamVjdDo6bm90aWZ5TGV4aWNhbEJpbmRpbmdTaGFkb3dpbmcoVk0mIHZtLCBjb25z
dCBJZGVudGlmaWVyU2V0JiBzZXQpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpidW1wR2xvYmFsTGV4
aWNhbEJpbmRpbmdFcG9jaChWTSYgdm0pCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZvciAoY29uc3QgYXV0byYg
a2V5IDogc2V0KQotICAgICAgICBlbnN1cmVSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0
KGtleS5nZXQoKSkuZmlyZUFsbCh2bSwgIkxleGljYWwgYmluZGluZyBzaGFkb3dzIHRoZSBleGlz
dGluZyBnbG9iYWwgcHJvcGVydGllcyIpOwotI2VuZGlmCi0gICAgdm0uaGVhcC5jb2RlQmxvY2tT
ZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKLSAgICAgICAgaWYgKGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkgIT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1NoYWRvd2luZyh2bSwgc2V0KTsK
LSAgICAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICB9KTsKLSAgICBzY29wZS5y
ZWxlYXNlKCk7CisgICAgaWYgKCsrbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID09IE9wdGlv
bnM6OnRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSkgeworICAgICAgICAv
LyBTaW5jZSB0aGUgZXBvY2ggb3ZlcmZsb3dzLCB3ZSBzaG91bGQgcmV3cml0ZSBhbGwgdGhlIENv
ZGVCbG9jayB0byBhZGp1c3QgdG8gdGhlIG5ld2x5IHN0YXJ0ZWQgZ2VuZXJhdGlvbi4KKyAgICAg
ICAgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoID0gMTsKKyAgICAgICAgdm0uaGVhcC5jb2Rl
QmxvY2tTZXQoKS5pdGVyYXRlKFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2spIHsKKyAgICAgICAg
ICAgIGlmIChjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpICE9IHRoaXMpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgY29kZUJsb2NrLT5ub3RpZnlMZXhpY2FsQmluZGluZ1Vw
ZGF0ZSgpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnF1
ZXVlTWljcm90YXNrKFJlZjxNaWNyb3Rhc2s+JiYgdGFzaykKQEAgLTE4OTYsMTEgKzE4OTMsMTMg
QEAgYm9vbCBKU0dsb2JhbE9iamVjdDo6aGFzSW50ZXJhY3RpdmVEZWJ1Z2dlcigpIGNvbnN0CiAj
aWYgRU5BQkxFKERGR19KSVQpCiBXYXRjaHBvaW50U2V0KiBKU0dsb2JhbE9iamVjdDo6Z2V0UmVm
ZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewor
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2VkR2xvYmFsUHJvcGVydHlX
YXRjaHBvaW50U2V0c0xvY2spOwogICAgIHJldHVybiBtX3JlZmVyZW5jZWRHbG9iYWxQcm9wZXJ0
eVdhdGNocG9pbnRTZXRzLmdldCh1aWQpOwogfQogCiBXYXRjaHBvaW50U2V0JiBKU0dsb2JhbE9i
amVjdDo6ZW5zdXJlUmVmZXJlbmNlZFByb3BlcnR5V2F0Y2hwb2ludFNldChVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogeworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9yZWZlcmVuY2Vk
R2xvYmFsUHJvcGVydHlXYXRjaHBvaW50U2V0c0xvY2spOwogICAgIHJldHVybiBtX3JlZmVyZW5j
ZWRHbG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzLmVuc3VyZSh1aWQsIFtdIHsKICAgICAgICAg
cmV0dXJuIFdhdGNocG9pbnRTZXQ6OmNyZWF0ZShJc1dhdGNoZWQpOwogICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCmluZGV4IDBjYWNiNzZiYzQ2ZjMyN2EzZDRhNzA4NjNjZDI0YzkwZTQ0Njk0OTQu
LmIxZDk2YWQzYjU4NTg0YjcyMjg3MWM2ODJiMTgwNzFhYWI5YzQyZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDg2LDEwICs0ODYs
MTIgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgdXNpbmcgUmVmZXJlbmNlZEdsb2JhbFBy
b3BlcnR5V2F0Y2hwb2ludFNldHMgPSBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4s
IFJlZjxXYXRjaHBvaW50U2V0PiwgSWRlbnRpZmllclJlcEhhc2g+OwogICAgIFJlZmVyZW5jZWRH
bG9iYWxQcm9wZXJ0eVdhdGNocG9pbnRTZXRzIG1fcmVmZXJlbmNlZEdsb2JhbFByb3BlcnR5V2F0
Y2hwb2ludFNldHM7CisgICAgQ29uY3VycmVudEpTTG9jayBtX3JlZmVyZW5jZWRHbG9iYWxQcm9w
ZXJ0eVdhdGNocG9pbnRTZXRzTG9jazsKICNlbmRpZgogCiAgICAgYm9vbCBtX2V2YWxFbmFibGVk
IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV93ZWJBc3NlbWJseUVuYWJsZWQgeyB0cnVlIH07CisgICAg
dW5zaWduZWQgbV9nbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoIHsgMSB9OwogICAgIFN0cmluZyBt
X2V2YWxEaXNhYmxlZEVycm9yTWVzc2FnZTsKICAgICBTdHJpbmcgbV93ZWJBc3NlbWJseURpc2Fi
bGVkRXJyb3JNZXNzYWdlOwogICAgIFJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKQEAgLTc1
MSw3ICs3NTMsMTAgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBpbnRsUGx1cmFsUnVs
ZXNBdmFpbGFibGVMb2NhbGVzKCk7CiAjZW5kaWYgLy8gRU5BQkxFKElOVEwpCiAKLSAgICB2b2lk
IG5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKFZNJiwgY29uc3QgSWRlbnRpZmllclNldCYp
OworICAgIHZvaWQgYnVtcEdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goVk0mKTsKKyAgICB1bnNp
Z25lZCBnbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxM
ZXhpY2FsQmluZGluZ0Vwb2NoOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBnbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoT2Zmc2V0KCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTR2xvYmFsT2Jq
ZWN0LCBtX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2gpOyB9CisgICAgdW5zaWduZWQqIGFkZHJl
c3NPZkdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKSB7IHJldHVybiAmbV9nbG9iYWxMZXhpY2Fs
QmluZGluZ0Vwb2NoOyB9CiAKICAgICB2b2lkIHNldENvbnNvbGVDbGllbnQoQ29uc29sZUNsaWVu
dCogY29uc29sZUNsaWVudCkgeyBtX2NvbnNvbGVDbGllbnQgPSBjb25zb2xlQ2xpZW50OyB9CiAg
ICAgQ29uc29sZUNsaWVudCogY29uc29sZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc29s
ZUNsaWVudDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAppbmRl
eCA2NmNlYzNhZjc5ZjZhODEzZDk4YjMwNjc4ZTdkNGZkZjg2ZWM2MTI2Li45ZmMzNGZiOWZhYmMz
ZDAwZGIxZmQ5OTcxYWEwOTk2ZGZjM2Q0NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcApAQCAtMzc2LDYgKzM3NiwxMyBAQCBzdGF0aWMgdm9pZCBvdmVycmlk
ZURlZmF1bHRzKCkKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCBjb3JyZWN0T3B0aW9ucygpCit7
CisgICAgdW5zaWduZWQgdGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9IE9w
dGlvbnM6OnRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2goKTsKKyAgICBpZiAo
dGhyZXNob2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCA9PSAwIHx8IHRocmVzaG9sZEZv
ckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPT0gMSkKKyAgICAgICAgT3B0aW9uczo6dGhyZXNo
b2xkRm9yR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpID0gVUlOVF9NQVg7Cit9CisKIHN0YXRp
YyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogewogI2lmICFkZWZpbmVkKE5ERUJV
RykKQEAgLTU2Niw2ICs1NzMsOCBAQCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogI2lmIDAK
ICAgICAgICAgICAgICAgICA7IC8vIERlY29uZnVzZSBlZGl0b3JzIHRoYXQgZG8gYXV0byBpbmRl
bnRhdGlvbgogI2VuZGlmCisKKyAgICAgICAgICAgIGNvcnJlY3RPcHRpb25zKCk7CiAgICAgCiAg
ICAgICAgICAgICByZWNvbXB1dGVEZXBlbmRlbnRPcHRpb25zKCk7CiAKQEAgLTY5OSw2ICs3MDgs
OCBAQCBib29sIE9wdGlvbnM6OnNldE9wdGlvbnMoY29uc3QgY2hhciogb3B0aW9uc1N0cikKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGNvcnJlY3RPcHRpb25zKCk7CisKICAgICByZWNvbXB1dGVE
ZXBlbmRlbnRPcHRpb25zKCk7CiAKICAgICBkdW1wT3B0aW9uc0lmTmVlZGVkKCk7CkBAIC03MzUs
NiArNzQ2LDcgQEAgYm9vbCBPcHRpb25zOjpzZXRPcHRpb25XaXRob3V0QWxpYXMoY29uc3QgY2hh
ciogYXJnKQogICAgICAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSh2YWx1ZVN0ciwgdmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBuYW1lXygpID0g
dmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgY29ycmVjdE9wdGlvbnMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICAgICAgICAgIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAppbmRleCA0OGY2ZTYyYTdhMDJiOTQxYTljMzFlODgxY2E2
Y2IxZjI5ZDIyNGI2Li40YzlmNmI2YjRlMTY5YWRjY2E4MTI0OTM0OTczMDIxMmYxMzgyMTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCkBAIC01MDgsOCArNTA4LDcg
QEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbmdBcGkgPSBmYWxzZTsK
ICAgICB2KGJvb2wsIHRyYWNlTExJbnRFeGVjdXRpb24sIGZhbHNlLCBDb25maWd1cmFibGUsIG51
bGxwdHIpIFwKICAgICB2KGJvb2wsIHRyYWNlTExJbnRTbG93UGF0aCwgZmFsc2UsIENvbmZpZ3Vy
YWJsZSwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdHJhY2VCYXNlbGluZUpJVEV4ZWN1dGlvbiwg
ZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYob3B0aW9uU3RyaW5nLCBkaXNrQ2FjaGVQ
YXRoLCBudWxscHRyLCBSZXN0cmljdGVkLCAiIikgXAotICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2Fj
aGUsIGZhbHNlLCBSZXN0cmljdGVkLCAiIikgXAorICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZv
ckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQg
Zm9yIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRv
IHRoaXMgdmFsdWUsIENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxs
IGJlIHJldmlzZWQgZ2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwK
IAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAppbmRleCAxYzIxOTY3ZmMxZDgyMTgy
ZjczMzVhMGQ3ZjdhYmE5OWVjZGM1YjJlLi4xYTNmMDkyNDJlZDhkMmYwM2RkODIzMjM0M2I5MTM5
MmU4OGNiNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9n
cmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
Z3JhbUV4ZWN1dGFibGUuY3BwCkBAIC0xMDcsNyArMTA3LDYgQEAgSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjppbml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIENhbGxGcmFtZSog
Y2FsbEYKICAgICBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudCogZ2xvYmFsTGV4aWNhbEVudmly
b25tZW50ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICBj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiB2YXJpYWJsZURlY2xhcmF0aW9ucyA9IHVubGlua2Vk
Q29kZUJsb2NrLT52YXJpYWJsZURlY2xhcmF0aW9ucygpOwogICAgIGNvbnN0IFZhcmlhYmxlRW52
aXJvbm1lbnQmIGxleGljYWxEZWNsYXJhdGlvbnMgPSB1bmxpbmtlZENvZGVCbG9jay0+bGV4aWNh
bERlY2xhcmF0aW9ucygpOwotICAgIElkZW50aWZpZXJTZXQgc2hhZG93ZWRQcm9wZXJ0aWVzOwog
ICAgIC8vIFRoZSBFUzYgc3BlYyBzYXlzIHRoYXQgbm8gdmFycy9nbG9iYWwgcHJvcGVydGllcy9s
ZXQvY29uc3QgY2FuIGJlIGR1cGxpY2F0ZWQgaW4gdGhlIGdsb2JhbCBzY29wZS4KICAgICAvLyBU
aGlzIGNhcnJpZWQgb3V0IHNlY3Rpb24gMTUuMS44IG9mIHRoZSBFUzYgc3BlYzogaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC9pbmRleC5odG1sI3NlYy1nbG9i
YWxkZWNsYXJhdGlvbmluc3RhbnRpYXRpb24KICAgICB7CkBAIC0xMzEsMTEgKzEzMCw5IEBAIEpT
T2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMoVk0m
IHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAgICAgICAgLy8gTGV4aWNhbCBiaW5kaW5n
cyBjYW4gc2hhZG93IGdsb2JhbCBwcm9wZXJ0aWVzIGlmIHRoZSBnaXZlbiBwcm9wZXJ0eSdzIGF0
dHJpYnV0ZSBpcyBjb25maWd1cmFibGUuCiAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2xvYmFsZGVjbGFyYXRpb25pbnN0YW50aWF0aW9uIHN0
ZXAgNS1jLCBgaGFzUmVzdHJpY3RlZEdsb2JhbGAgYmVjb21lcyBmYWxzZQogICAgICAgICAgICAg
ICAgIC8vIEhvd2V2ZXIgd2UgbWF5IGVtaXQgR2xvYmFsUHJvcGVydHkgbG9vayB1cCBpbiBieXRl
Y29kZXMgYWxyZWFkeSBhbmQgaXQgbWF5IGNhY2hlIHRoZSB2YWx1ZSBmb3IgdGhlIGdsb2JhbCBz
Y29wZS4KLSAgICAgICAgICAgICAgICAvLyBUbyBtYWtlIGl0IGludmFsaWQsIHdlIGl0ZXJhdGUg
YWxsIHRoZSBDb2RlQmxvY2tzIGFuZCByZXdyaXRlIHRoZSBpbnN0cnVjdGlvbiB0byBjb252ZXJ0
IEdsb2JhbFByb3BlcnR5IHRvIEdsb2JhbExleGljYWxWYXIuCi0gICAgICAgICAgICAgICAgLy8g
MS4gSW4gTExJbnQsIHdlIGFsd2F5cyBjaGVjayBtZXRhZGF0YSdzIHJlc29sdmVUeXBlLiBTbyBy
ZXdyaXR0ZW4gaW5zdHJ1Y3Rpb24ganVzdCB3b3Jrcy4KLSAgICAgICAgICAgICAgICAvLyAyLiBJ
biBCYXNlbGluZSBKSVQsIHdlIGNoZWNrIG1ldGFkYXRhJ3MgcmVzb2x2ZVR5cGUgaW4gR2xvYmFs
UHJvcGVydHkgY2FzZSBzbyB0aGF0IHdlIGNhbiBub3RpY2Ugb25jZSBpdCBpcyBjaGFuZ2VkLgor
ICAgICAgICAgICAgICAgIC8vIFRvIG1ha2UgaXQgaW52YWxpZCwKKyAgICAgICAgICAgICAgICAv
LyAxLiBJbiBMTEludCBhbmQgQmFzZWxpbmUsIHdlIGJ1bXAgdGhlIGdsb2JhbCBsZXhpY2FsIGJp
bmRpbmcgZXBvY2ggYW5kIGl0IHdvcmtzLgogICAgICAgICAgICAgICAgIC8vIDMuIEluIERGRyBh
bmQgRlRMLCB3ZSB3YXRjaCB0aGUgd2F0Y2hwb2ludCBhbmQgamV0dGlzb24gb25jZSBpdCBpcyBm
aXJlZC4KLSAgICAgICAgICAgICAgICBzaGFkb3dlZFByb3BlcnRpZXMuYWRkKGVudHJ5LmtleS5n
ZXQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFBy
b3BlcnR5TG9va1VwU3RhdHVzOjpOb3RGb3VuZDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTIwNiwxMiArMjAzLDE4IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6
ZUdsb2JhbFByb3BlcnRpZXMoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChvZmZzZXRGb3JBc3NlcnQgPT0gb2Zmc2V0KTsKICAgICAgICAgfQogICAg
IH0KLQotICAgIGlmICghc2hhZG93ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewotICAgICAgICBn
bG9iYWxPYmplY3QtPm5vdGlmeUxleGljYWxCaW5kaW5nU2hhZG93aW5nKHZtLCBXVEZNb3ZlKHNo
YWRvd2VkUHJvcGVydGllcykpOwotICAgICAgICB0aHJvd1Njb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7CisgICAgaWYgKGxleGljYWxEZWNsYXJhdGlvbnMuc2l6ZSgpKSB7CisjaWYgRU5BQkxFKERG
R19KSVQpCisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7
CisgICAgICAgICAgICAvLyBJZiBXYXRjaHBvaW50U2V0IGV4aXN0cywganVzdCBmaXJlIGl0LiBT
aW5jZSBERkcgV2F0Y2hwb2ludFNldCBhZGRpdGlvbiBpcyBhbHNvIGRvbmUgb24gdGhlIG1haW4g
dGhyZWFkLCB3ZSBjYW4gc3luYyB0aGVtLgorICAgICAgICAgICAgLy8gU28gdGhhdCB3ZSBkbyBu
b3QgY3JlYXRlIFdhdGNocG9pbnRTZXQgaGVyZS4gREZHIHdpbGwgY3JlYXRlIGlmIG5lY2Vzc2Fy
eSBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICAvLyBBbmQgaXQgd2lsbCBvbmx5IGNy
ZWF0ZSBub3QtaW52YWxpZGF0ZWQgd2F0Y2hwb2ludCBzZXQgaWYgdGhlIGdsb2JhbCBsZXhpY2Fs
IGVudmlyb25tZW50IGJpbmRpbmcgZG9lc24ndCBleGlzdCwgd2hpY2ggaXMgd2h5IHRoaXMgY29k
ZSB3b3Jrcy4KKyAgICAgICAgICAgIGlmIChhdXRvKiB3YXRjaHBvaW50U2V0ID0gZ2xvYmFsT2Jq
ZWN0LT5nZXRSZWZlcmVuY2VkUHJvcGVydHlXYXRjaHBvaW50U2V0KGVudHJ5LmtleS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgd2F0Y2hwb2ludFNldC0+ZmlyZUFsbCh2bSwgIkxleGljYWwgYmlu
ZGluZyBzaGFkb3dzIGFuIGV4aXN0aW5nIGdsb2JhbCBwcm9wZXJ0eSIpOworICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5idW1wR2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9j
aCh2bSk7CiAgICAgfQotCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzA3NTYzYzdlOWViMjMy
MTdjNTkxZDM4MmU0N2FjZWRhNWM3MDE1NC4uNjJlYzJhNWJiNzE2YTVkOWUzN2QwNmI1MTJkYTA0
OTM3ZjI0ZDllMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOS0wMS0yMSAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEludmFsaWRhdGUgb2xkIHNjb3BlIG9w
ZXJhdGlvbnMgdXNpbmcgZ2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NzM4MDg2OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHN0cmVzcy9sZXQtbGV4aWNhbC1iaW5kaW5nLXNoYWRvdy1leGlzdGlu
Zy1nbG9iYWwtcHJvcGVydHktZnRsLmpzOgorICAgICAgICAqIHN0cmVzcy9zY29wZS1vcGVyYXRp
b24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChiYXIpOgorICAgICAgICAqIHN0cmVzcy9zY29w
ZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZXQxKToKKyAgICAgICAgKGdldDIpOgor
ICAgICAgICAoZ2V0MUlmKToKKyAgICAgICAgKGdldDJJZik6CisgICAgICAgICogc3RyZXNzL3Nj
b3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwtcHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChmb28pOgorCiAyMDE5LTAx
LTIxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbCBvdXQgcjI0MDIyMCBkdWUgdG8gZGF0ZS1mb3JtYXQteHBhcmIgcmVncmVzc2lv
bgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbGV0LWxleGljYWwtYmluZGluZy1zaGFkb3ct
ZXhpc3RpbmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2xldC1sZXhp
Y2FsLWJpbmRpbmctc2hhZG93LWV4aXN0aW5nLWdsb2JhbC1wcm9wZXJ0eS1mdGwuanMKaW5kZXgg
MjBiNDMyMmUwN2QwMTZlMTJmZDZjMDM1ODRiNmRjMzJjMjQwZGE3Ni4uYjQ3YjcyY2I2MGRlMjE5
MTM5YzI5YWU3YjhkMjllYjQ0ZDFiNWIzMyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbGV0
LWxleGljYWwtYmluZGluZy1zaGFkb3ctZXhpc3RpbmctZ2xvYmFsLXByb3BlcnR5LWZ0bC5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy9sZXQtbGV4aWNhbC1iaW5kaW5nLXNoYWRvdy1leGlzdGluZy1n
bG9iYWwtcHJvcGVydHktZnRsLmpzCkBAIC00MCw2ICs0MCw3IEBAIGZ1bmN0aW9uIGdldCgpIHsK
ICAgICBzaG91bGRCZShnZXQoKSwgMyk7CiAKIGZvbygpOworc2hvdWxkQmUoZ2xvYmFsVGhpcy5i
YXIsIDQpOwogc2hvdWxkQmUoYmFyLCA0KTsKIHNob3VsZEJlKGdldCgpLCA0KTsKIApkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0
eS1iZWZvcmUtZGVsZXRpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2Fj
aGUtZ2xvYmFsLXByb3BlcnR5LWJlZm9yZS1kZWxldGluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTlmZTBk
NTFjNTg0ZTg1YzBmMjY2YWVhMjE0ODdlMGQ5M2Q0MTIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3Mvc2NvcGUtb3BlcmF0aW9uLWNhY2hlLWdsb2JhbC1wcm9wZXJ0eS1iZWZvcmUt
ZGVsZXRpbmcuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVy
cm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KK25vSW5s
aW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gYmFyKCkKK3sKKyAgICBmb28gPSA0MjsKK30K
KworYmFyKCk7CitiYXIoKTsKK2RlbGV0ZSBnbG9iYWxUaGlzLmZvbzsKKyQuZXZhbFNjcmlwdChg
Y29uc3QgZm9vID0gNTBgKTsKKworc2hvdWxkVGhyb3coKCkgPT4gYmFyKCksIGBUeXBlRXJyb3I6
IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1
bXAtY291bnRlci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9i
YWwtcHJvcGVydHktYnVtcC1jb3VudGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxZGNkZDA2ZDIwODliZDlm
MDk1YTFhMTgyMTlmNmJlN2Y5YmM2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9zY29wZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWJ1bXAtY291bnRlci5qcwpA
QCAtMCwwICsxLDU4IEBACisvL0AgcnVuRGVmYXVsdCgiLS10aHJlc2hvbGRGb3JHbG9iYWxMZXhp
Y2FsQmluZGluZ0Vwb2NoPTIiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKworZm9v
MSA9IDE7Citmb28yID0gMjsKK2Z1bmN0aW9uIGdldDEoKSB7CisgICAgcmV0dXJuIGZvbzE7Cit9
Citub0lubGluZShnZXQxKTsKKworZnVuY3Rpb24gZ2V0MigpIHsKKyAgICByZXR1cm4gZm9vMjsK
K30KK25vSW5saW5lKGdldDIpOworCitmdW5jdGlvbiBnZXQxSWYoY29uZGl0aW9uKSB7CisgICAg
aWYgKGNvbmRpdGlvbikKKyAgICAgICAgcmV0dXJuIGZvbzE7CisgICAgcmV0dXJuIC0xOworfQor
bm9JbmxpbmUoZ2V0MUlmKTsKKworZnVuY3Rpb24gZ2V0MklmKGNvbmRpdGlvbikgeworICAgIGlm
IChjb25kaXRpb24pCisgICAgICAgIHJldHVybiBmb28yOworICAgIHJldHVybiAtMTsKK30KK25v
SW5saW5lKGdldDJJZik7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU1OyArK2kpIHsKKyAgICBz
aG91bGRCZShnZXQxKCksIDEpOworICAgIHNob3VsZEJlKGdldDIoKSwgMik7CisgICAgc2hvdWxk
QmUoZ2V0MSgpLCAxKTsKKyAgICBzaG91bGRCZShnZXQyKCksIDIpOworICAgIHNob3VsZEJlKGdl
dDFJZih0cnVlKSwgMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKHRydWUpLCAyKTsKKyAgICBzaG91
bGRCZShnZXQxSWYoZmFsc2UpLCAtMSk7CisgICAgc2hvdWxkQmUoZ2V0MklmKGZhbHNlKSwgLTEp
OworfQorCiskLmV2YWxTY3JpcHQoYGNvbnN0IGZvbzEgPSA0MTtgKTsKKyQuZXZhbFNjcmlwdChg
Y29uc3QgZm9vMiA9IDQyO2ApOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7Cisg
ICAgc2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAg
c2hvdWxkQmUoZ2V0MSgpLCA0MSk7CisgICAgc2hvdWxkQmUoZ2V0MigpLCA0Mik7CisgICAgc2hv
dWxkQmUoZ2V0MUlmKGZhbHNlKSwgLTEpOworICAgIHNob3VsZEJlKGdldDJJZihmYWxzZSksIC0x
KTsKK30KK3Nob3VsZEJlKGdldDFJZih0cnVlKSwgNDEpOworc2hvdWxkQmUoZ2V0MklmKHRydWUp
LCA0Mik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zY29wZS1vcGVyYXRpb24tY2FjaGUt
Z2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9zY29w
ZS1vcGVyYXRpb24tY2FjaGUtZ2xvYmFsLXByb3BlcnR5LWV2ZW4taWYtaXQtZmFpbHMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTFkYWM4MTFhMzhiZmIyNTJlYjdmNmNjYjNhYTQwOTc2MTQ2YzY1NQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Njb3BlLW9wZXJhdGlvbi1jYWNoZS1nbG9iYWwt
cHJvcGVydHktZXZlbi1pZi1pdC1mYWlscy5qcwpAQCAtMCwwICsxLDIzIEBACitmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBm
YWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JN
ZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJy
b3IpfWApOworfQorbm9JbmxpbmUoc2hvdWxkVGhyb3cpOworCitmdW5jdGlvbiBmb28oKSB7Cisg
ICAgYmFyID0gNDsKK30KK09iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0aGlzKTsKK2ZvbygpOwor
JC5ldmFsU2NyaXB0KCdjb25zdCBiYXIgPSAzOycpOworc2hvdWxkVGhyb3coKCkgPT4gZm9vKCks
IGBUeXBlRXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuYCk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359846</attachid>
            <date>2019-01-22 21:12:32 -0800</date>
            <delta_ts>2019-01-22 21:12:32 -0800</delta_ts>
            <desc>Follow-up</desc>
            <filename>bug-193603-20190122211231.patch</filename>
            <type>text/plain</type>
            <size>3436</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MzRjZWQ0ODU5ZmUzOTMxZmJiYzJhMmFhNWY3Y2I1Y2UwM2JlYjk0Li4yM2NiYjQ4NTMxY2M1ZjI0
MDk5MTA0ZTk1N2VjMGQyZDU2ZDc4MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOS0wMS0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBpbml0aWFsIGdsb2JhbCBsZXhpY2FsIGJpbmRp
bmcgZXBvY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzYwMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczODA4Njk+CisKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKToKKwogMjAxOS0wMS0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtKU0NdIEludGwgY29uc3RydWN0b3JzIHNob3VsZCBmaXQgaW4gc2l6ZW9m
KEludGVybmFsRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IGJmODYzZmI1MjdhMjg2MTk5ZDE1ODRiNGQzNDIyYmE3MWE5ZjgyNTIu
LjQwZGFjNzNiYWRkMTMzZjlmZTA0MjA4Y2ZiNDg0OTk4NjNiZTIwNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC02MjUsNyArNjI1LDcgQEAg
Ym9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9z
eW1ib2xUYWJsZS5zZXQodm0sIHRoaXMsIG9wLmxleGljYWxFbnZpcm9ubWVudC0+c3ltYm9sVGFi
bGUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKEpTU2NvcGUqIGNvbnN0YW50U2NvcGUgPSBK
U1Njb3BlOjpjb25zdGFudFNjb3BlRm9yQ29kZUJsb2NrKG9wLnR5cGUsIHRoaXMpKSB7CiAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9jb25zdGFudFNjb3BlLnNldCh2bSwgdGhpcywgY29uc3Rh
bnRTY29wZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wLnR5cGUgPT0gR2xvYmFsTGV4aWNhbFZh
ciB8fCBvcC50eXBlID09IEdsb2JhbExleGljYWxWYXJXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQor
ICAgICAgICAgICAgICAgIGlmIChvcC50eXBlID09IEdsb2JhbFByb3BlcnR5IHx8IG9wLnR5cGUg
PT0gR2xvYmFsUHJvcGVydHlXaXRoVmFySW5qZWN0aW9uQ2hlY2tzKQogICAgICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX2dsb2JhbExleGljYWxCaW5kaW5nRXBvY2ggPSBtX2dsb2JhbE9iamVj
dC0+Z2xvYmFsTGV4aWNhbEJpbmRpbmdFcG9jaCgpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgbWV0YWRhdGEubV9nbG9iYWxPYmplY3QgPSBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBkODU1YmQ0NzJk
YWZiYWFjZTcxZmQ3ZWMyMjE2YzJlMTE5ZDUyY2MzLi41NDQ3OTNlZmE2NmFiMDIxY2EyYTE5OThl
ZmUwM2UzNjgyZmQwZDk1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTIyICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgZml4IGluaXRpYWwg
Z2xvYmFsIGxleGljYWwgYmluZGluZyBlcG9jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzNjAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzM4
MDg2OT4KKworICAgICAgICAqIHN0cmVzcy9nbG9iYWwtbGV4aWNhbC1iaW5kaW5nLWVwb2NoLXNo
b3VsZC1iZS1jb3JyZWN0LW9uZS5qczogQWRkZWQuCisgICAgICAgIChmMS5mMi5mMy5mNCk6Cisg
ICAgICAgIChmMS5mMi5mMyk6CisgICAgICAgIChmMS5mMik6CisgICAgICAgIChmMSk6CisKIDIw
MTktMDEtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gUm9sbG91dCByMjQwMjIzLiBJdCByZWdyZXNzZWQgSmV0U3RyZWFtMiBieSAxJS4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dsb2JhbC1sZXhpY2FsLWJpbmRpbmctZXBvY2gt
c2hvdWxkLWJlLWNvcnJlY3Qtb25lLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2xvYmFsLWxleGljYWwt
YmluZGluZy1lcG9jaC1zaG91bGQtYmUtY29ycmVjdC1vbmUuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGU1ZDIy
NTYzYWI1Y2JmNTg5ZGUyZmIxYTlkNjVlMGQ4NjU4NDE4NgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2dsb2JhbC1sZXhpY2FsLWJpbmRpbmctZXBvY2gtc2hvdWxkLWJlLWNvcnJl
Y3Qtb25lLmpzCkBAIC0wLDAgKzEsMzEgQEAKK2dsb2JhbFRoaXMuYSA9IDA7CitmdW5jdGlvbiBm
MSh2KQoreworICAgIGxldCB4ID0gNDA7CisgICAgZnVuY3Rpb24gZjIoKSB7CisgICAgICAgIHg7
CisgICAgICAgIGxldCB5ID0gNDE7CisgICAgICAgIGZ1bmN0aW9uIGYzKCkgeworICAgICAgICAg
ICAgbGV0IHogPSA0NDsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGY0KCkgeworICAgICAgICAgICAg
ICAgIHo7CisgICAgICAgICAgICAgICAgaWYgKHYpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBhOworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIGY0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGYzKCk7CisgICAgfQor
ICAgIHJldHVybiBmMigpOworfQordmFyIE4gPSAyOworZm9yICh2YXIgaSA9IDA7IGkgPCBOOyAr
K2kpIHsKKyAgICAkLmV2YWxTY3JpcHQoYGxldCBpJHtpfSA9IDQyYCk7Cit9CitpZiAoZjEoZmFs
c2UpICE9PSAxKSB7CisgICAgdGhyb3cgbmV3IEVycm9yKCdmaXJzdCcpOworfQorJC5ldmFsU2Ny
aXB0KGBsZXQgYSA9IDQyYCk7CitpZiAoZjEodHJ1ZSkgIT09IDQyKQorICAgIHRocm93IG5ldyBF
cnJvcignc2Vjb25kJyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>