<?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>147064</bug_id>
          
          <creation_ts>2015-07-17 20:12:43 -0700</creation_ts>
          <short_desc>Getter and setter on super are called with wrong &quot;this&quot; object</short_desc>
          <delta_ts>2016-08-16 21:19:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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>
          <dependson>157524</dependson>
          <blocked>140491</blocked>
    
    <blocked>148021</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1110311</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-17 20:12:43 -0700</bug_when>
    <thetext>* SUMMARY
Cannot override getter / setter.

* TEST
&lt;script&gt;
&quot;use strict&quot;;
var Base = class Base {
    constructor() { this._name = &quot;Name&quot;; }
    get name() { return this._name; } // If this instead returns a static: return &quot;Foo&quot; things somewhat work.
    set name(x) { this._name = x; }
};

var Subclass = class Subclass extends Base {
    get name() { return super.name; }
};

var instance = new Subclass;
console.log(instance.name); // undefined, but expected &quot;Name&quot;
&lt;/script&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110313</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-17 20:13:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/21885916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110315</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-17 20:15:21 -0700</bug_when>
    <thetext>After discussing with Ryosuke Niwa it sounds like we are invoking the `super.name` getter, but with the wrong &quot;this&quot; object.

Sounds like we were replacing `super` with `this.__proto__` which would be `Base.prototype`. So we are actually getting `Base.prototype._name` instead of `this._name`. You can verify this by setting `Base.prototype._name` to a value, and then instance.name returns that value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117767</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-08-14 14:22:57 -0700</bug_when>
    <thetext>I talked with Geoff about this, and it seems like we&apos;d need to add an extra argument to op_get_by_id, which specifies &quot;this&quot; for the getter/setter.

We should probably split the patch into two.  The first one that just does this refactoring and the second one that actually fixes the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187551</commentid>
    <comment_count>4</comment_count>
      <attachid>277416</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-04-26 15:39:08 -0700</bug_when>
    <thetext>Created attachment 277416
[TEST] Test Page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188159</commentid>
    <comment_count>5</comment_count>
      <attachid>277600</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-28 00:22:57 -0700</bug_when>
    <thetext>Created attachment 277600
WIP

It begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188248</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-28 08:31:17 -0700</bug_when>
    <thetext>*** Bug 157136 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188555</commentid>
    <comment_count>7</comment_count>
      <attachid>277684</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-29 01:26:19 -0700</bug_when>
    <thetext>Created attachment 277684
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188776</commentid>
    <comment_count>8</comment_count>
      <attachid>277730</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-29 13:41:29 -0700</bug_when>
    <thetext>Created attachment 277730
WIP

I think the patch now works and is correct. I need to vet NodesCodegen again to make sure I didn&apos;t miss any places where we support super.
I also want to refactor get_by_id_with_this to not have a bunch of unused arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188882</commentid>
    <comment_count>9</comment_count>
      <attachid>277758</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-29 17:01:09 -0700</bug_when>
    <thetext>Created attachment 277758
WIP

Needs 32-bit support then I think I&apos;m done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188888</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-29 17:03:57 -0700</bug_when>
    <thetext>Attachment 277758 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:886:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:900:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2049:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2050:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2053:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 5 in 33 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>1189031</commentid>
    <comment_count>11</comment_count>
      <attachid>277802</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-30 00:24:33 -0700</bug_when>
    <thetext>Created attachment 277802
WIP

maybe 32-bit is done? Lets see what EWS thinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189032</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-30 00:25:42 -0700</bug_when>
    <thetext>Attachment 277802 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:887:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:901:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2075:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2076:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2079:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 5 in 35 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>1189140</commentid>
    <comment_count>13</comment_count>
      <attachid>277835</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-04-30 17:26:56 -0700</bug_when>
    <thetext>Created attachment 277835
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189141</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-30 17:29:11 -0700</bug_when>
    <thetext>Attachment 277835 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:887:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:901:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2085:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2086:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/jit/CCallHelpers.h:2089:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 5 in 35 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>1189261</commentid>
    <comment_count>15</comment_count>
      <attachid>277872</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-01 16:36:50 -0700</bug_when>
    <thetext>Created attachment 277872
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189341</commentid>
    <comment_count>16</comment_count>
      <attachid>277872</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-02 00:58:22 -0700</bug_when>
    <thetext>Comment on attachment 277872
patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2887
&gt; +        if (GPRInfo::numberOfRegisters &lt; 8) {

I need to actually change this code I think. I did this for X86-32bit originally (which doesn&apos;t have argument registers).
This code is broken for an ABI that has argument registers but still has less than 8 registers like MIPS.
Writing this code for MIPS seems painful. I think you would have to first push the last 5 registers
onto the stack. Then call setupArgumentsWithExecState to get the four argument registers.

Anyway, this code should really be behind
#if CPU(X86)
...
#else

#endif

And then the MIPS folks can add any code they need to as an #elif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189390</commentid>
    <comment_count>17</comment_count>
      <attachid>277906</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-02 07:45:46 -0700</bug_when>
    <thetext>Created attachment 277906
benchmark results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191224</commentid>
    <comment_count>18</comment_count>
      <attachid>278414</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-09 11:36:08 -0700</bug_when>
    <thetext>Created attachment 278414
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191288</commentid>
    <comment_count>19</comment_count>
      <attachid>278414</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-09 13:16:37 -0700</bug_when>
    <thetext>Comment on attachment 278414
patch for landing

Clearing flags on attachment: 278414

Committed r200586: &lt;http://trac.webkit.org/changeset/200586&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191289</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-09 13:16:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191305</commentid>
    <comment_count>21</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-05-09 13:47:12 -0700</bug_when>
    <thetext>Nice! We should update the inspector now (bug 157488).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191472</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-05-10 01:35:01 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Comment on attachment 278414 [details]
&gt; patch for landing
&gt; 
&gt; Clearing flags on attachment: 278414
&gt; 
&gt; Committed r200586: &lt;http://trac.webkit.org/changeset/200586&gt;

The new stress/super-property-access.js test fails (crash/timeout)
on all JSC tester bots, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191527</commentid>
    <comment_count>23</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-10 08:51:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #19)
&gt; &gt; Comment on attachment 278414 [details]
&gt; &gt; patch for landing
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 278414
&gt; &gt; 
&gt; &gt; Committed r200586: &lt;http://trac.webkit.org/changeset/200586&gt;
&gt; 
&gt; The new stress/super-property-access.js test fails (crash/timeout)
&gt; on all JSC tester bots, see build.webkit.org for details.

Thanks I&apos;ll update the test to be shorter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1191595</commentid>
    <comment_count>24</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-05-10 11:56:59 -0700</bug_when>
    <thetext>landed follow up patch to make test run faster:
http://trac.webkit.org/changeset/200632</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220668</commentid>
    <comment_count>25</comment_count>
      <attachid>278414</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-16 17:06:06 -0700</bug_when>
    <thetext>Comment on attachment 278414
patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4036
&gt; +            Node* getByValWithThis = addToGraph(GetByValWithThis, base, thisValue, property);

It should be possible to get a prediction from a value profile here.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4137
&gt; +                addToGraph(GetByIdWithThis, OpInfo(identifierNumber), base, thisValue));

It should be possible to get a prediction from a value profile here.

&gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:666
&gt; +            setPrediction(SpecBytecodeTop);

It&apos;s wrong to ever use any of the Top&apos;s in prediction propagation phase.  This tells the prediction propagator that this node will *definitely* return values of all types, which causes us to assume the worst for all downstream code.

This should just be a matter of giving these bytecode instructions a value profile, and pulling in the value profile&apos;s results in the bytecode parser.

Filed: https://bugs.webkit.org/show_bug.cgi?id=160922</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220694</commentid>
    <comment_count>26</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-16 18:00:48 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Comment on attachment 278414 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=278414&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4036
&gt; &gt; +            Node* getByValWithThis = addToGraph(GetByValWithThis, base, thisValue, property);
&gt; 
&gt; It should be possible to get a prediction from a value profile here.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4137
&gt; &gt; +                addToGraph(GetByIdWithThis, OpInfo(identifierNumber), base, thisValue));
&gt; 
&gt; It should be possible to get a prediction from a value profile here.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:666
&gt; &gt; +            setPrediction(SpecBytecodeTop);
&gt; 
&gt; It&apos;s wrong to ever use any of the Top&apos;s in prediction propagation phase. 
&gt; This tells the prediction propagator that this node will *definitely* return
&gt; values of all types, which causes us to assume the worst for all downstream
&gt; code.
&gt; 
&gt; This should just be a matter of giving these bytecode instructions a value
&gt; profile, and pulling in the value profile&apos;s results in the bytecode parser.
&gt; 
&gt; Filed: https://bugs.webkit.org/show_bug.cgi?id=160922

I think the right thing going forward is just teaching get_by_id
that it can have a different base and |this|. This way, we can remove
get_by_id_with_this completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220695</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-16 18:05:59 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; &gt; Comment on attachment 278414 [details]
&gt; &gt; patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=278414&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4036
&gt; &gt; &gt; +            Node* getByValWithThis = addToGraph(GetByValWithThis, base, thisValue, property);
&gt; &gt; 
&gt; &gt; It should be possible to get a prediction from a value profile here.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4137
&gt; &gt; &gt; +                addToGraph(GetByIdWithThis, OpInfo(identifierNumber), base, thisValue));
&gt; &gt; 
&gt; &gt; It should be possible to get a prediction from a value profile here.
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:666
&gt; &gt; &gt; +            setPrediction(SpecBytecodeTop);
&gt; &gt; 
&gt; &gt; It&apos;s wrong to ever use any of the Top&apos;s in prediction propagation phase. 
&gt; &gt; This tells the prediction propagator that this node will *definitely* return
&gt; &gt; values of all types, which causes us to assume the worst for all downstream
&gt; &gt; code.
&gt; &gt; 
&gt; &gt; This should just be a matter of giving these bytecode instructions a value
&gt; &gt; profile, and pulling in the value profile&apos;s results in the bytecode parser.
&gt; &gt; 
&gt; &gt; Filed: https://bugs.webkit.org/show_bug.cgi?id=160922
&gt; 
&gt; I think the right thing going forward is just teaching get_by_id
&gt; that it can have a different base and |this|. This way, we can remove
&gt; get_by_id_with_this completely.

Right now, if you have any GetByIdWithThis anywhere in a function, then *everything* in the function is likely to get polluted by the bad prediction propagation.

So, fixing this is *much* higher priority than implementing a proper get_by_id.

In the future, we should be very vigilant about this.  It&apos;s OK for some node in DFG IR to emit bad code.  It&apos;s never OK for a node in DFG IR to claim that it produces TOP as its output, since that pessimizes all downstream nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1220762</commentid>
    <comment_count>28</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-16 21:19:12 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; (In reply to comment #25)
&gt; &gt; &gt; Comment on attachment 278414 [details]
&gt; &gt; &gt; patch for landing
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=278414&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4036
&gt; &gt; &gt; &gt; +            Node* getByValWithThis = addToGraph(GetByValWithThis, base, thisValue, property);
&gt; &gt; &gt; 
&gt; &gt; &gt; It should be possible to get a prediction from a value profile here.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:4137
&gt; &gt; &gt; &gt; +                addToGraph(GetByIdWithThis, OpInfo(identifierNumber), base, thisValue));
&gt; &gt; &gt; 
&gt; &gt; &gt; It should be possible to get a prediction from a value profile here.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp:666
&gt; &gt; &gt; &gt; +            setPrediction(SpecBytecodeTop);
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s wrong to ever use any of the Top&apos;s in prediction propagation phase. 
&gt; &gt; &gt; This tells the prediction propagator that this node will *definitely* return
&gt; &gt; &gt; values of all types, which causes us to assume the worst for all downstream
&gt; &gt; &gt; code.
&gt; &gt; &gt; 
&gt; &gt; &gt; This should just be a matter of giving these bytecode instructions a value
&gt; &gt; &gt; profile, and pulling in the value profile&apos;s results in the bytecode parser.
&gt; &gt; &gt; 
&gt; &gt; &gt; Filed: https://bugs.webkit.org/show_bug.cgi?id=160922
&gt; &gt; 
&gt; &gt; I think the right thing going forward is just teaching get_by_id
&gt; &gt; that it can have a different base and |this|. This way, we can remove
&gt; &gt; get_by_id_with_this completely.
&gt; 
&gt; Right now, if you have any GetByIdWithThis anywhere in a function, then
&gt; *everything* in the function is likely to get polluted by the bad prediction
&gt; propagation.
&gt; 
&gt; So, fixing this is *much* higher priority than implementing a proper
&gt; get_by_id.
&gt; 
&gt; In the future, we should be very vigilant about this.  It&apos;s OK for some node
&gt; in DFG IR to emit bad code.  It&apos;s never OK for a node in DFG IR to claim
&gt; that it produces TOP as its output, since that pessimizes all downstream
&gt; nodes.

Sounds good. We should probably do the same thing for tryGetById. 
Maybe we already have a bug open for that. If not, I can create one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>277416</attachid>
            <date>2016-04-26 15:39:08 -0700</date>
            <delta_ts>2016-04-26 15:39:08 -0700</delta_ts>
            <desc>[TEST] Test Page</desc>
            <filename>extend-test.html</filename>
            <type>text/html</type>
            <size>632</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KY2xhc3MgQmFzZSB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICBjb25zb2xl
LmxvZygnYmFzZSBjb25zdHJ1Y3RvcicpOwogICAgfQoKICAgIGdldCBhKCkgewogICAgICAgIGNv
bnNvbGUubG9nKCdiYXNlIGdldHRlcicpOwogICAgICAgIHJldHVybiB0aGlzLl9hOwogICAgfQoK
ICAgIHNldCBhKHZhbHVlKSB7CiAgICAgICAgY29uc29sZS5sb2coJ2Jhc2Ugc2V0dGVyJywgdmFs
dWUpOwogICAgICAgIHRoaXMuX2EgPSB2YWx1ZTsKICAgIH0KfQoKY2xhc3MgRXh0ZW5kIGV4dGVu
ZHMgQmFzZSB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICBzdXBlcigpOwogICAgICAgIGNv
bnNvbGUubG9nKCdleHRlbmQgY29udHJ1Y3RvcicpOwogICAgfQoKICAgIGdldCBhKCkgewogICAg
ICAgIGNvbnNvbGUubG9nKCdleHRlbmQgZ2V0dGVyJyk7CiAgICAgICAgcmV0dXJuIHN1cGVyLmE7
CiAgICB9CgogICAgc2V0IGEodmFsdWUpIHsKICAgICAgICBjb25zb2xlLmxvZygnZXh0ZW5kIHNl
dHRlcicsIHZhbHVlKTsKICAgICAgICBzdXBlci5hID0gJ2V4dGVuZCAnICsgdmFsdWU7CiAgICB9
Cn0KCnZhciBhID0gbmV3IEV4dGVuZDsKYS5hID0gJ2EnOwpjb25zb2xlLmxvZyhhLmEpOwo8L3Nj
cmlwdD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277600</attachid>
            <date>2016-04-28 00:22:57 -0700</date>
            <delta_ts>2016-04-29 01:26:19 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>46750</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24JKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNjAsOCArNjAsMTAgQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2luIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF90cnlfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgIH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfaWRfd2l0aF90aGlzIiwgImxlbmd0aCIgOiAxMCAg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3Ro
IiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV9pZCIsICJsZW5ndGgi
IDogOSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X2J5X2lkX3dpdGhfdGhpcyIs
ICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVsX2J5X2lkIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfdmFsIiwg
Imxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFsIiwg
Imxlbmd0aCIgOiA1IH0sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2
ICsxMTEsMTMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0
KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJf
YnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAgICAgICAgIEFTU0VSVChv
cGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOwpAQCAtMjA5LDYgKzIxNiwxMiBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAg
ICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDgpOworICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvbls4XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNh
c2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206CiAgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3Bl
cnR5OgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CkBAIC0zMTYsNiArMzI5LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3Bfc3dp
dGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9n
ZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3Bf
cHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkBAIC0zNzEsNiArMzg1LDcgQEAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAg
IGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNl
IG9wX2dldF9ieV9pZF93aXRoX3RoaXM6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgog
ICAgIGNhc2Ugb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZToKICAgICBjYXNlIG9wX2luc3RhbmNl
b2Y6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Nyw2ICszNDcsOSBAQCB2b2lkIENvZGVC
bG9jazo6cHJpbnRHZXRCeUlkT3AoUHJpbnRTdHJlCiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVu
Z3RoOgogICAgICAgICBvcCA9ICJhcnJheV9sZW5ndGgiOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6CisgICAgICAgIG9wID0gImdldF9ieV9pZF93aXRo
X3RoaXMiOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogI2lmIENPTVBJTEVSX1FVSVJLKENPTlNJREVSU19VTlJFQUNI
QUJMRV9DT0RFKQpAQCAtMTExNywxMSArMTEyMCwyOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKAogICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50
ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgICAgICBwcmludEdldEJ5SWRPcChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCk7CisgICAgICAgICAgICBwcmludEdldEJ5SWRDYWNoZVN0
YXR1cyhvdXQsIGV4ZWMsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICAgICAgaW50IHJU
aGlzVmFsdWUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiwg
JXMiLCByZWdpc3Rlck5hbWUoclRoaXNWYWx1ZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBW
YWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAgICAg
ICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIp
OwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1
YkluZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3dpdGhfdGhpcyIpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVy
YW5kOwpAQCAtMjAyNSw2ICsyMDQ1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgUwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZToK
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpczoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKICAgICAgICAg
ICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGgg
LSAxXS51Lm9wZXJhbmRdOwogICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPT0gLTEpOwpAQCAtMjczOCw2ICsyNzU5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplTExJbnRJbmxpbmVDYWNoZQogICAgIGZvciAoc2l6ZV90IHNpemUgPSBwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVtwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXV07CiAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZF93aXRoX3RoaXM6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAg
ICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0cnVjdHVyZUlEIHx8IEhlYXA6OmlzTWFya2Vk
KG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChvbGRTdHJ1Y3R1cmVJRCkpKQpAQCAt
Mjc0OCw2ICsyNzcwLDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNo
ZQogICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhp
czoKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAg
ICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgbmV3U3RydWN0dXJlSUQgPSBj
dXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZUlEOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDEwLDYgKzI0MTAsMjUgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeQogICAgIHJldHVybiBkc3Q7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5k
ZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGgg
Z2V0X2J5X3ZhbC4iKTsKKworICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7CisKKyAgICBVbmxpbmtlZFZhbHVlUHJvZmls
ZSBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29u
c3RhbnQocHJvcGVydHkpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRo
aXNWYWwtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAg
ICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJv
cGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5
X3ZhbC4iKTsKQEAgLTI0MzMsNiArMjQ1MiwyNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCog
dGhpc1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
Cit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRl
eGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsLiIpOworCisg
ICAgdW5zaWduZWQgcHJvcGVydHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAg
IC8vIEZJWE1FOiBpcyB0aGlzIG5lZWRlZD8gSSBkb3VidCBpdC4KKyAgICAvL21fc3RhdGljUHJv
cGVydHlBbmFseXplci5wdXRCeUlkKGJhc2UtPmluZGV4KCksIHByb3BlcnR5SW5kZXgpOworCisg
ICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKKworICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmluZGV4
KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUgcHV0
VHlwZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHByb3BlcnR5KSwg
IkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1dF9ieV92YWwoZGly
ZWN0KS4iKTsKQEAgLTQyMTUsNiArNDI1NCwxNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdExvYWRECiAgICAgVmFyaWFibGUgcHJvdG9TY29wZVZhciA9IHZhcmlhYmxlKHBy
b3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7CiAgICAgcmV0dXJu
IGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5KCksIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxl
eGljYWxFbnZpcm9ubWVudChwcm9wZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0
ZU5hbWUpLCBwcm90b1Njb3BlVmFyLCBUaHJvd0lmTm90Rm91bmQpOwogfQorCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcygpCit7CisgICAgaWYgKGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBuZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSAmJiBpc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
KQorICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOworCisgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVy
aXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAgICAgZW1pdFREWkNo
ZWNrKHRoaXNSZWdpc3RlcigpKTsKKworICAgIHJldHVybiB0aGlzUmVnaXN0ZXIoKTsKK30KICAg
ICAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlv
bigpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwMiw2ICs1MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
UHJvZmlsZUNvbnRyb2xGbG93KGludCk7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoY29uc3QgSWRlbnRpZmllciYp
OworICAgICAgICBSZWdpc3RlcklEKiBlbnN1cmVUaGlzKCk7CiAgICAgICAgIHZvaWQgZW1pdExv
YWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9u
bWVudCgpOwogCkBAIC01NTAsNyArNTUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVn
aXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxl
dGVCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZp
c2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMiArMTQ1LDE1IEBAIFJlZ2lzdGVy
SUQqIFJlZ0V4cE5vZGU6OmVtaXRCeXRlY29kZShCeXQKIAogUmVnaXN0ZXJJRCogVGhpc05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB7Ci0gICAgaWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29u
dGV4dCgpICYmIGdlbmVyYXRvci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigp
KQotICAgICAgICBnZW5lcmF0b3IuZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKTsKLQotICAgIGlmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBn
ZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8
IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgIGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCk7CisgICAgLy9pZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93
RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJv
d0Z1bmN0aW9uKCkpCisgICAgLy8gICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CisKKyAgICAvLy8vIEZJWE1FOiBJJ20gcHJldHR5
IHN1cmUgbV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgaXMgYSBwb2ludGxlc3MgZmllbGQuIFZl
cmlmeSB0aGF0IGl0IGlzLgorICAgIC8vaWYgKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNoZWNrIHx8
IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
fHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgIC8vICAgIGdl
bmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKIAorICAgIFVO
VVNFRF9QQVJBTShtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayk7CiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTYyLDE5
ICsxNjUsNiBAQCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjCiAKIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdXBlck5vZGUgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0g
ICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0g
ICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pOwotCi0gICAgUmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7Ci19Ci0KIHN0YXRpYyBSZWdpc3RlcklEKiBl
bWl0SG9tZU9iamVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewog
ICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlz
RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKSB7CkBAIC0xOTMsNiArMTgzLDI1IEBAIHN0YXRp
YyBSZWdpc3RlcklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGUKICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCitzdGF0aWMg
UmVnaXN0ZXJJRCogZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvcikKK3sKKyAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9y
RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5
TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOworCisgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CisgICAg
Y2FsbGVlLnNldEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKK30KKworUmVnaXN0ZXJJRCogU3VwZXJO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQoreworICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBSZWdpc3RlcklEKiByZXN1bHQgPSBlbWl0U3VwZXJCYXNl
Rm9yQ2FsbGVlKGdlbmVyYXRvcik7CisgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5h
dGlvbklmTmVlZGVkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIHJlc3VsdCk7Cit9
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBOZXdUYXJnZXROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogUmVnaXN0ZXJJRCogTmV3VGFyZ2V0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKQEAgLTYyMCwxMiArNjI5LDE5IEBAIHN0YXRpYyBib29sIGlzTm9uSW5kZXhTdHJpbmdF
bGVtZW50KEV4cHIKIFJlZ2lzdGVySUQqIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAg
aWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgewotICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdl
IGdlbmVyYXRlIHRoZSBwcm9maWxlciBpbmZvPworICAgICAgICBSZWdpc3RlcklEKiByZXQ7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9u
KGRzdCk7CiAgICAgICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9zdWJzY3JpcHQp
KSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZCA9IHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGVtaXRTdXBl
ckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSwgaWQpOworICAgICAgICAgICAgcmV0ID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0
b3IpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAgIH0gZWxzZSAgeworICAg
ICAgICAgICAgLy8gRklYTUU6IHRoaXMgdmFsIGZvciBzdXBlci4KKyAgICAgICAgICAgIHJldCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxEZXN0LCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvciksIGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCksIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSwgZ2VuZXJh
dG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KSk7CisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZpbmFsRGVzdCwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKICAgICBSZWdpc3RlcklEKiByZXQ7
CkBAIC02NTAsMTAgKzY2NiwxNSBAQCBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjpl
bWl0Qnl0CiAKIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gYmFzZSA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKSA/IGVtaXRTdXBlckJhc2VG
b3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOworICAgIGJv
b2wgYmFzZUlzU3VwZXIgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCk7CisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBiYXNlSXNTdXBlciA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJh
dG9yKSA6IGdlbmVyYXRvci5lbWl0Tm9kZShtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdp
c3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwotICAg
IFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2Uu
Z2V0KCksIG1faWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAgICBpZiAoYmFzZUlzU3Vw
ZXIpCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2Uu
Z2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIG1faWRlbnQpOworICAgIGVsc2UKKyAgICAg
ICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgbV9p
ZGVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTc1NSwxMCArNzc2LDEx
IEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjplbWl0QnkKIAogUmVnaXN0ZXJJ
RCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgp
KTsKLSAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgIGlmIChtX2V4cHItPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZ1bmMgPSBlbWl0R2V0U3VwZXJGdW5jdGlvbkZvckNvbnN0cnVjdChnZW5lcmF0b3IpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxE
ZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOworICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxB
cmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworCiAgICAgICAgIEFTU0VSVChnZW5lcmF0b3Iu
aXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5kZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJp
dmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQpOwogICAgICAgICBBU1NF
UlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZl
ZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBl
OjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3Zl
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CkBA
IC03NjksNiArNzkxLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0
QgogCiAgICAgICAgIGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkg
fHwgKGRvV2VVc2VBcnJvd0Z1bmN0aW9uSW5Db25zdHJ1Y3RvciAmJiBnZW5lcmF0b3IuaXNTdXBl
ckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKKyAgICAg
ICAgLy8gRklYTUU6IEkgdGhpbmsgdGhpcyBjYW4ganVzdCBiZSByZXBsYWNlZCBieSBlbnN1cmVU
aGlzKCkuCiAgICAgICAgIAogICAgICAgICBSZWZQdHI8TGFiZWw+IHRoaXNJc0VtcHR5TGFiZWwg
PSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZUcnVl
KGdlbmVyYXRvci5lbWl0SXNFbXB0eShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdlbmVyYXRv
ci50aGlzUmVnaXN0ZXIoKSksIHRoaXNJc0VtcHR5TGFiZWwuZ2V0KCkpOwpAQCAtNzgyLDYgKzgw
NSw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKICAgICAgICAg
CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsK
KyAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
IGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQ
b3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CkBAIC05MjIsMTAgKzk0OCwxOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlv
bkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1
bmN0aW9uOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXI7CisgICAgaWYgKGJh
c2VJc1N1cGVyKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhp
cyBvbmNlIGJlY2F1c2Ugd2UgZWl0aGVyIGhhdmUgYSBub24tVERaIHRoaXMgb3Igd2UgdGhyb3cu
IE9uY2Ugd2UgaGF2ZSBhIG5vbi1URFogdGhpcywgd2UgY2FuJ3QgY2hhbmdlIGl0cyB2YWx1ZS4K
KyAgICAgICAgdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICB9CiAg
ICAgaWYgKHN1YnNjcmlwdElzTm9uSW5kZXhTdHJpbmcpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0
KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgc3Rh
dGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAgIGlm
IChiYXNlSXNTdXBlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lz
dGVyLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ugewor
ICAgICAgICAvLyBGSVhNRTogdGhpcyB2YWx1ZSBmb3Igc3VwZXIuCiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCks
IHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwogICAgICAgICBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CkBAIC05MzQsNyArOTY5LDcgQEAgUmVn
aXN0ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaQogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rp
b24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1f
YXJncyk7CiAgICAgaWYgKGJhc2VJc1N1cGVyKQotICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IHRoaXNSZWdpc3Rlci5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CiAgICAgUmVnaXN0
ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUu
Z2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC05NTAsMTMgKzk4NSwxNSBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0CiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBm
dW5jdGlvbi5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICBib29sIGJhc2VJc1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgp
OwotICAgIGlmIChiYXNlSXNTdXBlcikgewotICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
KGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwot
ICAgIH0gZWxzZQorICAgIGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRN
b3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCkp
OworICAgIGVsc2UKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhp
c1JlZ2lzdGVyKCksIG1fYmFzZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBiYXNlSXNT
dXBlciA/IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSA6IGNhbGxBcmd1bWVudHMu
dGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOworICAgIGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBlbWl0U3VwZXJCYXNlRm9yQ2Fs
bGVlKGdlbmVyYXRvciksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG1faWRlbnQpOwor
ICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgpLCBj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklEKiBy
ZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwg
ZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVU
eXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJl
dHVybiByZXQ7CkBAIC0xMjExLDE1ICsxMjQ4LDI1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2Rl
OjplbWl0RG90KEJ5dGVjb2QKICAgICBBU1NFUlQobV9leHByLT5pc0RvdEFjY2Vzc29yTm9kZSgp
KTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdEFjY2Vzc29yID0gc3RhdGljX2Nhc3Q8RG90QWNj
ZXNzb3JOb2RlKj4obV9leHByKTsKICAgICBFeHByZXNzaW9uTm9kZSogYmFzZU5vZGUgPSBkb3RB
Y2Nlc3Nvci0+YmFzZSgpOworICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBiYXNlTm9kZS0+aXNTdXBl
ck5vZGUoKTsKICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGRvdEFjY2Vzc29yLT5pZGVu
dGlmaWVyKCk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShiYXNlTm9kZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFj
Y2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+
ZGl2b3RFbmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOwor
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhp
c1JlZ2lzdGVyOworICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICB0aGlzUmVnaXN0ZXIg
PSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rl
ci5nZXQoKSwgaWRlbnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsK
ICAgICBSZWdpc3RlcklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50
LCB2YWx1ZS5nZXQoKSk7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCwgdmFsdWUu
Z2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIGlkZW50LCB2YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2
YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0yMDE1
LDcgKzIwNjIsMTAgQEAgUmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUu
Z2V0KCksIG1fcmlnaHQpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVz
dWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6
IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdCk7CisgICAgaWYgKG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0
KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAg
IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQs
IGZvcndhcmRSZXN1bHQpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJl
c3VsdCwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKIH0KQEAgLTIwMjcs
MTEgKzIwNzcsMTkgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlYwog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fYmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2Vu
ZXJhdG9yKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Np
b25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsK
KyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0
ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwg
Z2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgp
LCBtX3JpZ2h0LCBzdGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29wZXJhdG9yKSwgT3BlcmFu
ZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0
b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZ2lz
dGVySUQqIHJldDsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICByZXQg
PSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMo
KSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOwogICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yMDU1LDkgKzIxMTMsMTIgQEAgUmVn
aXN0ZXJJRCogQXNzaWduQnJhY2tldE5vZGU6OmVtaXRCeXRlYwogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBS
ZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVk
KGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0LmdldCgpKSwgcmVzdWx0LmdldCgpKTsK
IAotICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9zdWJzY3JpcHQpKQotICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9k
ZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSwgZm9yd2FyZFJlc3VsdCk7Ci0gICAgZWxzZQorICAg
IGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9zdWJzY3JpcHQpKSB7CisgICAgICAgIGlm
IChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgc3RhdGljX2Nhc3Q8U3RyaW5n
Tm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSwgZm9yd2FyZFJlc3VsdCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsK
KyAgICB9IGVsc2UKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSwgZm9yd2FyZFJlc3VsdCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CkBAIC0yNDEw
LDYgKzI0NzEsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIoQnl0ZWNvZGVHCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gYXNzaWduTm9kZS0+aWRlbnRpZmllcigp
OwogICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5v
ZGUtPmJhc2UoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWdu
Tm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dEVuZCgpKTsKKyAgICAgICAgLy8gRklYTUU6IHN1cGVyLgogICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUocHJvcGVydHlOYW1lLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFz
c2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yNjMwLDYgKzI2OTIs
NyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2Rl
LT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwg
YXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTogc3VwZXIuCiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVl
KTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGFzc2lnbk5v
ZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTM2OTUsNiArMzc1
OCw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAgICAg
RG90QWNjZXNzb3JOb2RlKiBsaHMgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2Fz
c2lnbm1lbnRUYXJnZXQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPmJhc2UoKSwgdHJ1ZSwgZmFsc2UpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIC8vIEZJWE1FOiBzdXBlcgogICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0
QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTM3MDIsNiArMzc2Niw3IEBAIHZvaWQgQXNzaWdubWVudEVs
ZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2Ug
PSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobGhzLT5iYXNlKCksIHRydWUsIGZh
bHNlKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVt
aXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+c3Vic2NyaXB0KCksIHRydWUsIGZhbHNlKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICAvLyBGSVhNRTogc3VwZXIKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIwMDExMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1Miw2ICsyMTUyLDExIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVh
cFRvcCgpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhp
czoKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxp
bWl0KTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVh
azsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKICAgICAgICAgSlNB
cnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldygKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk5OCw2ICszOTk4LDE2IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRo
aXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzhdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5l
U3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmRdOworCisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QnlJZFdpdGhU
aGlzLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSkpOworCisgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYg
KzE1Niw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQKICAgICBj
YXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6CiAg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgogICAg
IGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgCiAg
ICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNhc2UgR2V0QnlJ
ZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICBjYXNlIFB1dEJ5SWREaXJlY3Q6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNh
c2UgUHV0QnlJZERpcmVjdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMyw2ICsxMTMzLDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgorICAgICAgICAgICAgLy9pZiAobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNw
ZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgIC8vICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODY5LDYgKzg2OSw3IEBAIHN0
cnVjdCBOb2RlIHsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5
SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRo
VGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoK
ICAgICAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NzMsNiArNzczLDE1IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVG8KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWU6OmRlY29kZSh2YWx1ZSku
dG9QcmltaXRpdmUoZXhlYykpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZEJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVGhp
cyk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbCwgUHJvcGVydHlTbG90OjpQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJh
c2VWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSwgc2xvdCk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCiBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJh
eVN0cnVjdHVyZSwgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3Qp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QnlWYWxTdHJpbmdJbnQoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJpbWl0aXZlKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwg
c2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Vt
cHR5QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NjUsNiArNjY1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CisgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24o
U3BlY0J5dGVjb2RlVG9wKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwMDExMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTQsNiArMTk0LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAg
Y2FzZSBHZXRCeUlkOgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEyOSw2ICs0MTI5LDIzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIo
KTsKKworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMsIHJl
c3VsdEdQUiwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKSkpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgY29tcGlsZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTI2OSw2ICsxMjY5LDExIEBAIHB1YmxpYzoKIAogCiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24s
IEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2ln
bmVkIHZhbHVlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjksNiArMTY5LDcgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlk
V2l0aFRoaXM6CiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0Ogog
ICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjA1LDYgKzYwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAg
ICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeUlkV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY29tcGlsZUluKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0MDksNiAr
MjQxMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQorCisgICAgdm9pZCBjb21waWxlR2V0QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVl
IHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1
ZSByZXN1bHQgPSB2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25H
ZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBtX291dC5jb25z
dEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCld
KSk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBj
b21waWxlUHV0QnlJZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdHJ5X2dldF9ieV9pZCkKICAgICAgICAg
Y2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lk
KQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVG
SU5FX09QKG9wX2dldF9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9vdmVycmlkZXNfaGFz
X2luc3RhbmNlKQogICAgICAgICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZikKQEAgLTI4Niw2ICsy
ODcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklO
RV9PUChvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9wYXJlbnRfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCisgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2luZGV4KQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTA0LDYgKzUwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfZXFfbnVsbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfdHJ5X2dldF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X2J5X2lkKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWRfd2l0
aF90aGlzKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRz
X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJ
bnN0cnVjdGlvbiopOwpAQCAtNTYyLDYgKzU2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfcHV0X2J5X2luZGV4KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfZ2V0
dGVyX2J5X2lkKEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsNyBA
QCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSos
IGludDMyX3QsIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRVpTeW10YWJKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBTeW1ib2xU
YWJsZSosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiAoKkpfSklUT3BlcmF0aW9uX0VPSVVpKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1
ZWRTdHJpbmdJbXBsKiwgdWludDMyX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMy
X3QpOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FQyko
RXhlY1N0YXRlKiwgSlNDZWxsKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU5Myw2ICs1OTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9u
KgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CkBAIC02MzgsNiArNjQ0LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9p
ZChJbnN0cnVjdGlvbioKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0
b3ImIGl0ZXIpCiB7CiAgICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5
KQpAQCAtMTIzMSw2ICsxMjMxLDExIEBAIF9sbGludF9vcF9nZXRfYnlfaWQ6CiAgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgIGRpc3BhdGNoKDkpCiAKK19s
bGludF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKQorICAgIGRpc3BhdGNo
KDEwKQorCiAKIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKQEAgLTEzOTQsNiArMTM5OSwxMiBAQCBfbGxpbnRfb3BfcHV0X2J5X2lkOgogICAgIGRpc3Bh
dGNoKDkpCiAKIAorX2xsaW50X29wX3B1dF9ieV9pZF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMp
CisgICAgZGlzcGF0Y2goNSkKKworCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQyKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZp
c2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTYsNCArODE2LDI5IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQyg4KS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlT
bG90IHNsb3QodGhpc1ZhbCwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywg
aWRlbnQsIHNsb3QpOworICAgIFJFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfaWRfd2l0aF90aGlz
LCByZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhf
dGhpcykKK3sKKyAgICBCRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0Mo
MSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IE9QX0MoMikuanNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgcHV0VmFsdWUgPSBPUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBkYXRhTG9nKCJw
dXRfYnlfaWRfd2l0aF90aGlzXG4iKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFs
LCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxvY2stPnB1dEJ5SWRDb250ZXh0KCkp
OworICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsK
KyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMjAwMTEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsOCBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9sCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0
aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277684</attachid>
            <date>2016-04-29 01:26:19 -0700</date>
            <delta_ts>2016-04-29 13:41:29 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>87297</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24JKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE1IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfdHJ5X2dldF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyIsICJsZW5ndGgiIDogMTAg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWxfd2l0aF90aGlzIiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJyYXlfbGVuZ3Ro
IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaWQi
LCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV9pZF93
aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Rl
bF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0
X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0
X2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0
X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3B1dF9ieV92YWxfZGlyZWN0IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9kZWxfYnlfdmFsIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9wdXRfYnlfaW5kZXgiLCAibGVuZ3RoIiA6IDQgfSwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lv
biAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwyMSBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOgog
ICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV9pZDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF0gPiA0KTsKQEAgLTIwOSw2ICsyMjQsMTkgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICBBU1NF
UlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA4KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bOF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2dl
dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfaW5z
dGFuY2VvZl9jdXN0b206CiAgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgogICAg
IGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CkBAIC0zMTYsNiArMzQ0LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6
CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0
aF90aGlzOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9z
ZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDoKQEAgLTM3
MSw2ICs0MDEsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBj
YXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDoKICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pbnN0
YW5jZW9mOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDkgQEAgdm9pZCBD
b2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZQogICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDoKICAgICAgICAgb3AgPSAiYXJyYXlfbGVuZ3RoIjsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
d2l0aF90aGlzIjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5S
RUFDSEFCTEVfQ09ERSkKQEAgLTExMTcsMTEgKzExMjAsNDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgcHJpbnRHZXRCeUlk
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQpOworICAgICAgICAgICAgcHJpbnRHZXRCeUlkQ2Fj
aGVTdGF0dXMob3V0LCBleGVjLCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgICAgIGlu
dCByVGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgcmVnaXN0ZXJOYW1lKHJUaGlzVmFsdWUpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90
aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImdldF9ieV92YWxfd2l0aF90aGlzIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZCIpOwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2Nh
dGlvbiwgc3R1YkluZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3dpdGhfdGhpcyIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV92YWxfd2l0
aF90aGlzIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0yMDI1LDYgKzIwNjMsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRf
ZGlyZWN0X3BuYW1lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfd2l0aF90aGlzOgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50
czogewogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07CiAgICAgICAgICAgICBBU1NFUlQocHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CkBAIC0yNzM4LDYgKzI3NzcsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAgICAgc3dpdGNoIChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwg
SGVhcDo6aXNNYXJrZWQobV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKSkpCkBAIC0yNzQ4LDYgKzI3ODgsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlCiAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQg
PSAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfd2l0aF90aGlzOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlSUQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MTAs
NiArMjQxMCwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAg
ICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhp
c1ZhbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCit7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hvdWxkIGJl
IGhhbmRsZWQgd2l0aCBnZXRfYnlfdmFsLiIpOworCisgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKworICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGhhbmRs
ZWQgd2l0aCBwdXRfYnlfdmFsLiIpOwpAQCAtMjQzMyw2ICsyNDUyLDI2IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHBy
b3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1dF9i
eV92YWwuIik7CisKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJv
cGVydHkpOworCisgICAgLy8gRklYTUU6IGlzIHRoaXMgbmVlZGVkPyBJIGRvdWJ0IGl0LgorICAg
IC8vbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZS0+aW5kZXgoKSwgcHJvcGVy
dHlJbmRleCk7CisKKyAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWRf
d2l0aF90aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5SW5kZXgpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCh2YWx1ZS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSBwdXRUeXBlKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5k
ZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGgg
cHV0X2J5X3ZhbChkaXJlY3QpLiIpOwpAQCAtMjU1Nyw2ICsyNTk2LDE3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICAvLyBGSVhNRTogd2hhdCBpcyBmb3IgaW4gY29udGV4dCEKKyAgICBlbWl0
T3Bjb2RlKG9wX2dldF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoa2lsbChkc3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAg
ICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsK
QEAgLTI1NjksNiArMjYxOSwxNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIGVtaXRP
cGNvZGUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4g
dmFsdWU7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewogICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0Fy
cmF5UHJvZmlsZSgpOwpAQCAtNDIxNSw2ICs0Mjc2LDE3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TG9hZEQKICAgICBWYXJpYWJsZSBwcm90b1Njb3BlVmFyID0gdmFyaWFi
bGUocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKICAgICBy
ZXR1cm4gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWRBcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQ
cml2YXRlTmFtZSksIHByb3RvU2NvcGVWYXIsIFRocm93SWZOb3RGb3VuZCk7CiB9CisKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbnN1cmVUaGlzKCkKK3sKKyAgICBpZiAoY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIG5lZWRzVG9VcGRhdGVB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkpCisgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50KCk7CisKKyAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgICAgICBlbWl0
VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOworCisgICAgcmV0dXJuIHRoaXNSZWdpc3RlcigpOwor
fQogICAgIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1
bmN0aW9uKCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRQcm9maWxlQ29udHJvbEZsb3coaW50KTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudChjb25zdCBJZGVudGlm
aWVyJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVuc3VyZVRoaXMoKTsKICAgICAgICAgdm9pZCBl
bWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVu
dmlyb25tZW50KCk7CiAKQEAgLTU1MCwxMiArNTUxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeUlkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5
SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldEFyZ3VtZW50QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVn
aXN0ZXJJRCogdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDUsMTIgKzE0NSwxNSBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0CiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVy
YXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNT
dXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICBp
ZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJh
dG9yLnRoaXNSZWdpc3RlcigpKTsKKyAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIC8v
aWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2
ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdl
bmVyYXRvci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgIC8vICAg
IGdlbmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOworCisgICAgLy8vLyBGSVhNRTogSSdtIHByZXR0eSBzdXJlIG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIGlzIGEgcG9pbnRsZXNzIGZpZWxkLiBWZXJpZnkgdGhhdCBpdCBpcy4KKyAgICAv
L2lmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAvLyAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKKyAgICBVTlVTRURfUEFSQU0obV9zaG91bGRBbHdh
eXNFbWl0VERaQ2hlY2spOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2MiwxOSArMTY1LDYgQEAgUmVnaXN0ZXJJRCog
VGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU3VwZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ2VuZXJhdG9y
LmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci5l
bWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25t
ZW50KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKLQotICAg
IFJlZ2lzdGVySUQgY2FsbGVlOwotICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUp
OwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwotfQotCiBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVy
aXZlZENsYXNzQ29udGV4dCgpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkgewpAQCAtMTkzLDYgKzE4MywyNSBAQCBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVy
QmFzZUZvckNhbGxlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGhvbWVPYmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRHZXRTdXBl
ckZ1bmN0aW9uRm9yQ29uc3RydWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7Cisg
ICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdl
bmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3Rv
KTsKKworICAgIFJlZ2lzdGVySUQgY2FsbGVlOworICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNr
OjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90byk7Cit9CisKK1JlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
UmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCByZXN1bHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gTmV3VGFyZ2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIFJlZ2lzdGVySUQqIE5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC02MjAsMTIgKzYyOSwx
NyBAQCBzdGF0aWMgYm9vbCBpc05vbkluZGV4U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklE
KiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2Rl
KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIg
aW5mbz8KKyAgICAgICAgUmVnaXN0ZXJJRCogcmV0OworICAgICAgICBSZWdpc3RlcklEKiBmaW5h
bERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICBpZiAoaXNO
b25JbmRleFN0cmluZ0VsZW1lbnQoKm1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWQgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52
YWx1ZSgpOwotICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRv
ciksIGlkKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZh
bChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvciksIGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworICAgICAgICAg
ICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZv
ckNhbGxlZShnZW5lcmF0b3IpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAg
IH0gZWxzZSAKKyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxE
ZXN0LCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRvci5lbnN1cmVU
aGlzKCksIGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCiAgICAgUmVn
aXN0ZXJJRCogcmV0OwpAQCAtNjUwLDEwICs2NjQsMTUgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZW1pdEJ5dAogCiBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCkgPyBl
bWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9i
YXNlKTsKKyAgICBib29sIGJhc2VJc1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmlu
YWxEZXN0LCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAg
aWYgKGJhc2VJc1N1cGVyKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmlu
YWxEZXN0LCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAg
ICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJh
c2UuZ2V0KCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxE
ZXN0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC03
NTUsMTAgKzc3NCwxMSBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5
CiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgZnVuYy5nZXQoKSk7Ci0gICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICBpZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3Qo
Z2VuZXJhdG9yKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKKyAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKwogICAgICAgICBBU1NF
UlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRU
eXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsK
ICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3
VGFyZ2V0KCkpOwpAQCAtNzY5LDYgKzc4OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEIKIAogICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpIHx8IChkb1dlVXNlQXJyb3dGdW5jdGlvbkluQ29uc3RydWN0b3IgJiYgZ2Vu
ZXJhdG9yLmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25t
ZW50KCk7CisgICAgICAgIC8vIEZJWE1FOiBJIHRoaW5rIHRoaXMgY2FuIGp1c3QgYmUgcmVwbGFj
ZWQgYnkgZW5zdXJlVGhpcygpLgogICAgICAgICAKICAgICAgICAgUmVmUHRyPExhYmVsPiB0aGlz
SXNFbXB0eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzRW1wdHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpLCB0aGlzSXNFbXB0eUxhYmVsLmdldCgpKTsK
QEAgLTc4Miw2ICs4MDMsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVt
aXRCCiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuYy5nZXQoKSk7CisgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVt
aXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtOTIyLDE5ICs5NDYsMzEgQEAgUmVnaXN0
ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaQogICAgIH0KIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbjsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVy
OworICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBu
ZWVkIHRvIGRvIHRoaXMgb25jZSBiZWNhdXNlIHdlIGVpdGhlciBoYXZlIGEgbm9uLVREWiB0aGlz
IG9yIHdlIHRocm93LiBPbmNlIHdlIGhhdmUgYSBub24tVERaIHRoaXMsIHdlIGNhbid0IGNoYW5n
ZSBpdHMgdmFsdWUuCisgICAgICAgIHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgfQogICAgIGlmIChzdWJzY3JpcHRJc05vbkluZGV4U3RyaW5nKSB7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4
cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgICAgICBmdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkp
OworICAgICAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2Ny
aXB0KS0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CiAg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IHRoaXMgdmFsdWUgZm9yIHN1cGVyLgogICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9z
dWJzY3JpcHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJl
c3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsK
LSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAgICBp
ZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0
b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9CiAKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChiYXNlSXNTdXBlcikKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCB0aGlzUmVnaXN0ZXIuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkp
OwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9u
KHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBj
YWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtOTUw
LDEzICs5ODYsMTUgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3Rp
bmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3Vt
ZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+
aXNTdXBlck5vZGUoKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNS
ZWdpc3RlcigpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgIGdl
bmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpKTsKKyAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxs
QXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBz
dWJleHByZXNzaW9uRW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBpZiAoYmFzZUlzU3Vw
ZXIpCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgZW1pdFN1
cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5j
dGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CiAgICAg
UmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJu
VmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICByZXR1cm4gcmV0OwpAQCAtMTE5NSwxMCArMTIzMywxNyBAQCBSZWdpc3RlcklE
KiBQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQoQnl0CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
b3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHN1YnNjcmlwdCk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3QoKSwgYnJhY2tldEFjY2Vz
c29yLT5kaXZvdFN0YXJ0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7
CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVn
aXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0
KCksIHZhbHVlLmdldCgpKTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRo
aXMoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlLmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlLmdl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIG9sZFZhbHVlKTsKIH0KQEAgLTEyMTEsMTUgKzEyNTYsMjUgQEAgUmVn
aXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXREb3QoQnl0ZWNvZAogICAgIEFTU0VSVChtX2V4cHIt
PmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90QWNjZXNzb3Ig
PSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2V4cHIpOwogICAgIEV4cHJlc3Npb25O
b2RlKiBiYXNlTm9kZSA9IGRvdEFjY2Vzc29yLT5iYXNlKCk7CisgICAgYm9vbCBiYXNlSXNTdXBl
ciA9IGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpOwogICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
ID0gZG90QWNjZXNzb3ItPmlkZW50aWZpZXIoKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJhc2VOb2RlKTsKIAogICAgIGdlbmVyYXRvci5lbWl0
RXhwcmVzc2lvbkluZm8oZG90QWNjZXNzb3ItPmRpdm90KCksIGRvdEFjY2Vzc29yLT5kaXZvdFN0
YXJ0KCksIGRvdEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBi
YXNlLmdldCgpLCBpZGVudCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXI7CisgICAgaWYgKGJhc2VJc1N1cGVyKSB7Cisg
ICAgICAgIHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFz
ZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCk7CisgICAgfSBlbHNlCisgICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwg
YmFzZS5nZXQoKSwgaWRlbnQpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJ
bmNPckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUu
Z2V0KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsKKyAgICBpZiAoYmFzZUlzU3VwZXIp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIu
Z2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsKICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIG9s
ZFZhbHVlKTsKIH0KQEAgLTEzOTIsMTAgKzE0NDcsMTcgQEAgUmVnaXN0ZXJJRCogUHJlZml4Tm9k
ZTo6ZW1pdEJyYWNrZXQoQnl0ZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0ID0gZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CisgICAgUmVnaXN0ZXJJRCogdmFsdWU7CisgICAgaWYgKGJhc2VOb2Rl
LT5pc1N1cGVyTm9kZSgpKQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwo
cHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVy
dHkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICBlbWl0
SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVl
KTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVydHku
Z2V0KCksIHZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwog
fQpAQCAtMTQxMSwxMCArMTQ3MywxNyBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90
KEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRv
dEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nv
ci0+ZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZ2lzdGVySUQq
IHZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgZ2VuZXJh
dG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOwogICAg
IGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7Cisg
ICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQsIHZhbHVlKTsK
KyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVu
dCwgdmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlv
bklmTmVlZGVkKGRzdCwgcHJvcERzdC5nZXQoKSk7CiB9CkBAIC0yMDE1LDcgKzIwODQsMTAgQEAg
UmVnaXN0ZXJJRCogQXNzaWduRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKAogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUodmFsdWUuZ2V0KCksIG1fcmlnaHQp
OwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICBSZWdpc3RlcklEKiBmb3J3YXJkUmVzdWx0ID0gKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKSA/IHJlc3VsdC5nZXQoKSA6IGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24ocmVzdWx0Lmdl
dCgpKSwgcmVzdWx0LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQo
KSwgbV9pZGVudCwgZm9yd2FyZFJlc3VsdCk7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUo
KSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAgIGVsc2UKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQp
OwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKIH0KQEAgLTIwMjcsMTEgKzIwOTksMTkgQEAg
UmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlYwogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwg
bV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJl
eHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWU7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZh
bHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBzdGF0
aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29wZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5
cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOworICAgIFJlZ2lzdGVySUQqIHJldDsKKyAg
ICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgbV9pZGVudCwgdXBk
YXRlZFZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCBtX2lkZW50LCB1cGRhdGVkVmFsdWUpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodXBkYXRlZFZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IHJldHVybiByZXQ7CiB9CkBAIC0yMDU1LDEwICsyMTM1LDE3IEBAIFJlZ2lzdGVySUQqIEFzc2ln
bkJyYWNrZXROb2RlOjplbWl0Qnl0ZWMKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZm9y
d2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQu
Z2V0KCkgOiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7CiAKLSAgICBpZiAoaXNO
b25JbmRleFN0cmluZ0VsZW1lbnQoKm1fc3Vic2NyaXB0KSkKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlw
dCktPnZhbHVlKCksIGZvcndhcmRSZXN1bHQpOwotICAgIGVsc2UKLSAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgZm9yd2FyZFJlc3VsdCk7
CisgICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpIHsKKyAgICAg
ICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBzdGF0aWNfY2FzdDxT
dHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHN0
YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCksIGZvcndhcmRSZXN1
bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0
eS5nZXQoKSwgZm9yd2FyZFJlc3VsdCk7CisgICAgfQogCiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShmb3J3YXJkUmVzdWx0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJl
dHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1
bHQpOwpAQCAtMjA3MiwxMSArMjE1OSwxOCBAQCBSZWdpc3RlcklEKiBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGU6OmVtaXRCCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9y
LmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fc3Vic2NyaXB0LCBtX3JpZ2h0SGFzQXNzaWdubWVu
dHMsIG1fcmlnaHQtPmlzUHVyZShnZW5lcmF0b3IpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBz
dWJleHByZXNzaW9uRW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAg
IGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICBSZWdpc3RlcklEKiB1cGRh
dGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0KCksIG1fcmlnaHQs
IHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVyYW5kVHlwZXMoUmVz
dWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3JpcHRvcigpKSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSwgdXBkYXRlZFZhbHVlKTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgp
KQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB1cGRhdGVkVmFsdWUpOworICAgIGVsc2UKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwg
dXBkYXRlZFZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1
ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKIAogICAgIHJldHVybiB1cGRhdGVkVmFsdWU7
CkBAIC0yNDEwLDYgKzI1MDQsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIoQnl0
ZWNvZGVHCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gYXNzaWduTm9kZS0+aWRl
bnRpZmllcigpOwogICAgICAgICBSZWdpc3RlcklEKiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KGFzc2lnbk5vZGUtPmJhc2UoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25O
b2RlLT5kaXZvdEVuZCgpKTsKKyAgICAgICAgLy8gRklYTUU6IHN1cGVyLgogICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocHJvcGVydHlOYW1lLCBhc3NpZ25Ob2RlLT5kaXZvdFN0
YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICByZXR1cm47CkBAIC0yNjMw
LDYgKzI3MjUsNyBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShh
c3NpZ25Ob2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90
U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CisgICAgICAgICAgICAvLyBGSVhNRTog
c3VwZXIuCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRl
bnQsIHZhbHVlKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUs
IGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTM2
OTUsNiArMzc5MSw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkK
ICAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBsaHMgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5v
ZGUqPihtX2Fzc2lnbm1lbnRUYXJnZXQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFz
ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPmJhc2UoKSwgdHJ1ZSwg
ZmFsc2UpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCks
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIC8vIEZJWE1FOiBzdXBlcgogICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCks
IHZhbHVlKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKQEAgLTM3MDIsNiArMzc5OSw3IEBAIHZvaWQgQXNz
aWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobGhzLT5iYXNlKCks
IHRydWUsIGZhbHNlKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+c3Vic2NyaXB0KCksIHRydWUsIGZh
bHNlKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAvLyBGSVhNRTogc3VwZXIKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFs
dWUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE1Miw2ICsyMTUyLDEyIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2Rl
KS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldEJ5
VmFsV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoCkBAIC0yNjUwLDYgKzI2NTYsMTEgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAg
ICB9CiAKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJM
aW1pdCk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0U2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MjQsNiArMzkyNCwxNiBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYnlfdmFsKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRo
aXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdl
dEJ5VmFsV2l0aFRoaXMgPSBhZGRUb0dyYXBoKEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNW
YWx1ZSwgcHJvcGVydHkpOworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgZ2V0QnlWYWxXaXRoVGhpcyk7CisKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X3ZhbDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpAQCAtMzk2NSw2ICszOTc1LDIxIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX3B1dF9ieV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
Tm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpKTsKKworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAg
ICAgICBhZGRWYXJBcmdDaGlsZCh0aGlzVmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQocHJvcGVydHkpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbygw
KSwgT3BJbmZvKDApKTsKKworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93
aXRoX3RoaXMpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7
CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZF07CkBAIC0zOTk4LDYgKzQwMjMsMTYgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYnlfaWQpOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhf
dGhpczogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1Zh
bHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5vcGVyYW5k
KSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07
CisKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCksCisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRCeUlkV2l0aFRoaXMs
IE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlKSk7CisKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpOwpAQCAtNDAxMyw2ICs0MDQ4LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9i
eV9pZCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6
IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwor
ICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kXTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0
aFRoaXMsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7
CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDoKICAgICAgICAgY2FzZSBv
cF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAy
MDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Niw4ICsxNTYsMTIgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAg
Y2FzZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlz
OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24g
MjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzOSw3ICs0MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgICAgICAKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeVZh
bFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoK
KyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAg
Y2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTksOCArOTksMTEgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
IGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNh
c2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgUHV0
QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRHZXR0
ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKQEAgLTIwMiw2ICsyMDUsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAg
ICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICBjYXNlIEdldEJ5VmFs
V2l0aFRoaXM6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2Ug
R2V0QXJyYXlMZW5ndGg6CiAgICAgY2FzZSBBcnJheVB1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMzMsNiArMTEzMywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8
Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KworICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODY5LDkgKzg2OSwx
MSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2Fz
ZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRC
eUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlk
Rmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRT
ZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3Niw2ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyog
dGhpcyBtdXN0IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4gTm90ZSB0
aGF0IFB1dEJ5VmFsICovXAogICAgIC8qIG9wY29kZXMgdXNlIFZhckFyZ3MgYmVhdXNlIHRoZXkg
bWF5IGhhdmUgdXAgdG8gNCBjaGlsZHJlbi4gKi9cCiAgICAgbWFjcm8oR2V0QnlWYWwsIE5vZGVS
ZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeVZhbFdpdGhUaGlz
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlBcmd1
bWVudEJ5VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
R2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhMb2FkVmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAt
MTg2LDkgKzE4NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFj
cm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5SWRXaXRoVGhp
cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEJ5SWQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oUHV0QnlJZFdpdGhUaGlzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
UHV0QnlWYWxXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAg
ICAgbWFjcm8oUHV0R2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1
dFNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJTZXR0
ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2
ICsxNDQsMTYgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSogZQogICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVj
dHVyZSwgc2l6ZSkpOwogfQogCit0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CitzdGF0aWMgQUxXQVlT
X0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOworICAgIEpTVmFsdWUgcHV0VmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBzdHJpY3QpOworICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQs
IHB1dFZhbHVlLCBzbG90KTsKK30KKwogZXh0ZXJuICJDIiB7CiAKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZE9wKQpAQCAtNzczLDYgKzc4Myw3NCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblRvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpk
ZWNvZGUodmFsdWUpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFRoaXMpOworICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIFByb3BlcnR5
U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywg
aW1wbCksIHNsb3QpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQoreworICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYm
IHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9
ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0NlbGw6
OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBpZiAo
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmco
c3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgeworICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3RyaW5nLmdldCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBz
dWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAm
JiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkp
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGksIHNsb3QpKTsKKyAgICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENv
ZXJjaWJsZShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHksIHNsb3QpKTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhp
cywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkK
K3sKKyAgICBwdXRXaXRoVGhpczx0cnVlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMs
IGVuY29kZWRWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9CisKK3Zv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCit7
CisgICAgcHV0V2l0aFRoaXM8ZmFsc2U+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywg
ZW5jb2RlZFZhbHVlLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMsIGltcGwpKTsKK30KKwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRl
KiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgcHV0V2l0aFRoaXM8
dHJ1ZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHByb3Bl
cnR5KTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgcHV0
V2l0aFRoaXM8ZmFsc2U+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZh
bHVlLCBwcm9wZXJ0eSk7Cit9CisKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZm
ZXIsIHNpemVfdCBzaXplKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIwMDExMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw2ICs2MSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxBcnJh
eUludChFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChFeGVjU3Rh
dGUqLCBKU1N0cmluZyosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uVG9QcmltaXRpdmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUpIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwgc2l6ZV90
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0VtcHR5QXJy
YXkoRXhlY1N0YXRlKiwgU3RydWN0dXJlKikgV1RGX0lOVEVSTkFMOwpAQCAtOTgsNiArMTAwLDEw
IEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmUKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCos
IGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpIFdURl9J
TlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShF
eGVjU3RhdGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJy
YXkqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw2ICs2NjUsMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRCeVZh
bFdpdGhUaGlzOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICAgICAg
c2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0
aW9uKFNwZWNCeXRlY29kZVRvcCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk5MCw2ICs5OTUs
OCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9y
ZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KICAgICAgICAgY2FzZSBQdXRC
eVZhbERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNl
IFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQ
dXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwMDEx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeUlk
OgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICBjYXNl
IEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRC
eUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgor
ICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAg
Y2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2Myw2ICsyNzYzLDI1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2Uu
Z3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Cisg
ICAgICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisKKyAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNl
R1BSLCB0aGlzVmFsdWVHUFIsIHN1YnNjcmlwdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2Ug
UHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC00MTI5LDYgKzQxNDgsMjMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVl
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVl
LmdwcigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhp
cywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+
aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjb21waWxlR2V0QXJy
YXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMwOCw2ICs0MzQ0LDQ5IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIo
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwor
ICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLCBOb1Jlc3VsdCwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCB2YWx1ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOiB7Cisg
ICAgICAgIG1faml0Lm5vcCgpOworICAgICAgICBtX2ppdC5ub3AoKTsKKyAgICAgICAgbV9qaXQu
bm9wKCk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJJbmZv
Ojphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRH
UFI0LCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtX2ppdC5ub3AoKTsKKyAgICAg
ICAgbV9qaXQubm9wKCk7CisgICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihBSElzTm90SW50
MzIpOworCisKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgp
LnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdw
cigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0
aGlzVmFsdWUuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAgICAgICBHUFJSZWcgcHJvcGVy
dHlHUFIgPSBwcm9wZXJ0eS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAg
ICAgIGNhbGxPcGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYykgPyBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpcywgTm9SZXN1bHQsIGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgcHJvcGVydHlHUFIs
IHZhbHVlR1BSKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBu
b1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRCeUlk
RGlyZWN0OiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNjksNiArMTI2OSwyMSBAQCBw
dWJsaWM6CiAKIAogI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRy
dXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FSkpKSSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgR1BSUmVnIGFyZzMsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgVHJ1
c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsK
KyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FSkpKSiBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMs
IEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bChvcGVyYXRpb24pOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0ZWRJ
bW1QdHIoaW1wbCksIFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjksNiArMTY5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2Fz
ZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgY2FzZSBUb1Ro
aXM6CiAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNl
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA1LDYgKzYwNSw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQo
QWNjZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEJ5
SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKTsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgogICAgICAgICAgICAgY29tcGlsZUluKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0MDksNiArMjQxMiwxNCBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0
QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwobV9vdXQu
aW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMpLCBtX2NhbGxG
cmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZp
ZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CisgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkocmV2aXNp
b24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMTEgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OnNl
dHVwU2hhZG93Q2hpY2tlblBhYwogICAgIHN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCBBZGRyZXNz
KEdQUkluZm86OnJlZ1QwKSk7CiB9CiAKK3ZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHVi
QXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcg
ZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNE
KQoreworICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBk
ZXN0RCk7CisgICAgUkVMRUFTRV9BU1NFUlQoZGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygp
ID09IDQpOworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8R1BSUmVnLCBHUFJSZWc+IFJlZ1BhaXI7
CisgICAgVmVjdG9yPFJlZ1BhaXIsIDQ+IHBhaXJzOworCisgICAgaWYgKHNyY0EgIT0gZGVzdEEp
CisgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNBLCBkZXN0QSkpOworICAg
IGlmIChzcmNCICE9IGRlc3RCKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
c3JjQiwgZGVzdEIpKTsKKyAgICBpZiAoc3JjQyAhPSBkZXN0QykKKyAgICAgICAgcGFpcnMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0MsIGRlc3RDKSk7CisgICAgaWYgKHNyY0QgIT0gZGVzdEQp
CisgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNELCBkZXN0RCkpOworCisK
KyAgICBhdXRvIG51bVVuaXF1ZVNvdXJjZXMgPSBbJl0oKSAtPiB1bnNpZ25lZCB7CisgICAgICAg
IFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAg
ICAgICAgICAgIGF1dG8gc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIHNldC5zZXQo
c291cmNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygp
OworICAgIH07CisgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSgpIC0+IHVuc2lnbmVkIHsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWly
cykgeworICAgICAgICAgICAgYXV0byBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICBz
ZXQuc2V0KGRlc3QpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRH
UFJzKCk7CisgICAgfTsKKworICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAgUmVn
aXN0ZXJTZXQgZnJlZTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAg
ICAgICAgIGF1dG8gZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgZnJlZS5zZXQoZGVz
dCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAg
ICAgICAgIGF1dG8gc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGZyZWUuY2xlYXIo
c291cmNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmcmVlLm51bWJlck9mU2V0R1BScygp
KSB7CisgICAgICAgICAgICBib29sIG1hZGVNb3ZlID0gZmFsc2U7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBwYWlyID0gcGFpcnNbaV07CisgICAgICAgICAgICAgICAgYXV0byBzb3VyY2UgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIGF1dG8gZGVzdCA9IHBhaXIuc2Vjb25kOworICAg
ICAgICAgICAgICAgIGlmIChmcmVlLmdldChkZXN0KSkgeworICAgICAgICAgICAgICAgICAgICBt
b3ZlKHNvdXJjZSwgZGVzdCk7CisgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsK
KyAgICAgICAgICAgICAgICAgICAgbWFkZU1vdmUgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtYWRlTW92ZSk7CisKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBudW1Vbmlx
dWVTb3VyY2VzKCkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChudW1VbmlxdWVEZXN0cygpID09
IHBhaXJzLnNpemUoKSk7CisgICAgICAgIC8vIFRoZSBzZXQgb2Ygc291cmNlIGFuZCBkZXN0aW5h
dGlvbiByZWdpc3RlcnMgY29udGFpbiB0aGUgc2FtZSB2YWx1ZXMuIFRoaXMgbWVhbnMgd2UgZG9u
J3QgaGF2ZQorICAgICAgICAvLyBhbnkgZnJlZSBkZXN0aW5hdGlvbiByZWdpc3RlcnMgdGhhdCB3
b24ndCBhbHNvIGNsb2JiZXIgYSBzb3VyY2UuIFdlIGdldCBhcm91bmQgdGhpcyBieQorICAgICAg
ICAvLyBleGNoYW5naW5nIHJlZ2lzdGVycy4KKworICAgICAgICBHUFJSZWcgc291cmNlOworICAg
ICAgICBHUFJSZWcgZGVzdDsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgcGFpciA9IHBh
aXJzWzBdOworICAgICAgICAgICAgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGRl
c3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgfQorICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7
CisgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKworICAgICAgICBHUFJSZWcgbmV3U291cmNlID0g
c291cmNlOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAg
YXV0byBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0
KSB7CisgICAgICAgICAgICAgICAgcGFpci5maXJzdCA9IG5ld1NvdXJjZTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgcmVt
b3ZlZFBhaXI7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHJlbW92ZWRQYWlyID0gZmFsc2U7
CisgICAgICAgICAgICAvLyBXZSBtYXkgaGF2ZSBpbnRyb2R1Y2VkIHBhaXJzIHRoYXQgaGF2ZSB0
aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiBSZW1vdmUgdGhvc2Ugbm93LgorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgIGlmIChw
YWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7CisgICAgICAgICAgICAgICAgICAgIHBhaXJzLnJl
bW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZFBhaXIgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0gd2hpbGUocmVtb3ZlZFBhaXIpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCisj
aW5jbHVkZSAiUmVnaXN0ZXJNYXAuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTkxMyw2ICs5MTQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2FwKGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCisgICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQ
UihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQs
IEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKwog
I2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB0ZW1wbGF0ZTxGUFJSZWcgZGVzdEEs
IEZQUlJlZyBkZXN0Qj4KICAgICB2b2lkIHNldHVwVHdvU3R1YkFyZ3NGUFIoRlBSUmVnIHNyY0Es
IEZQUlJlZyBzcmNCKQpAQCAtMTk4Niw2ICsxOTg5LDEyIEBAIHB1YmxpYzoKICNlbmRpZiAvLyBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAogI2lmIE5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQpCisgICAgeworICAgICAgICBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBH
UFJJbmZvOjphcmd1bWVudEdQUjQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKwogICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzMTM0KEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBzZXR1cFRocmVlU3R1YkFyZ3NH
UFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86
OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnMywgYXJnNCk7CkBAIC0yMDM2LDYgKzIwNDUsMTIgQEAg
cHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSNCk7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgfQorCisgICAgLy9BTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQorICAgIC8veworICAgIC8vICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgIC8vICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICAvL30KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0z
MiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsOSBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lk
KQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIERFRklORV9PUChv
cF9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2dl
dF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19p
bnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklO
RV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKQEAgLTI4Niw5ICsyODgsMTEgQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcGFyZW50X3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkK
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9z
ZXR0ZXJfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIwMDEx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwNCw2ICs1MDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vx
X251bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CkBA
IC01NjIsOCArNTY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X2luZGV4KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKElu
c3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBAIHR5cGVkZWYgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50
MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJh
dGlvbl9FWlN5bXRhYkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2Rl
ZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRP
cGVyYXRpb25fRU9JVWkpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwq
LCB1aW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJ
VE9wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAo
KkNfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVm
IEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBK
U0NlbGwqKTsKQEAgLTI0OSw2ICsyNTAsOCBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAo
KlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9u
X0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFU
SU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVu
Y29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7Cit0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
OwordHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJh
dGlvbl9FV3MpKEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCBKSVRf
T1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlw
ZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWkopKEV4ZWNTdGF0ZSos
IGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEzLDYgKzMxMywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3Ry
dWN0aW9uCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBlbmQoQnlWYWxDb21waWxhdGlv
bkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlT2Zmc2V0LCBub3RJbmRleCwgYmFkVHlwZSwgbW9k
ZSwgcHJvZmlsZSwgZG9uZSwgZG9uZSkpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlf
dmFsX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9
CisKIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVKdW1wJiBiYWRUeXBlLCBJbmRl
eGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBpbnQgdmFsdWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwpAQCAtNTkzLDYgKzU5OSwxOCBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1
bHRWUmVnKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCiB7CiAgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwpAQCAtNjM4LDYgKzY1NiwxMiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qCiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAg
LTEyMzIsNiArMTIzMiwxOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lkOgogICAgIGRpc3BhdGNoKDkp
CiAKIAorX2xsaW50X29wX2dldF9ieV9pZF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCisgICAg
ZGlzcGF0Y2goMTApCisKKworX2xsaW50X29wX2dldF9ieV92YWxfd2l0aF90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX3dp
dGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3Ro
OgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDAp
CkBAIC0xMzk0LDYgKzE0MDYsMTggQEAgX2xsaW50X29wX3B1dF9ieV9pZDoKICAgICBkaXNwYXRj
aCg5KQogCiAKK19sbGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQor
ICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3B1dF9ieV92YWxfd2l0aF90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfdmFs
X3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9vcF9nZXRfYnlfdmFsOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMiwgdDIpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxNiw0ICs4MTYsOTQgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBFTkQoKTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4o
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBPUF9DKDgpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV9p
ZF93aXRoX3RoaXMsIHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsX3dpdGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IE9QX0MoMyku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisK
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgU3RydWN0dXJlJiBz
dHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBp
ZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAg
ICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9
IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZh
c3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQo
KSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOyAKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUs
IFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7Cisg
ICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJz
Y3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBh
c1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIFJFVFVSTihh
c1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIAorICAgICAg
ICBSRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFz
ZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIHBy
b3BlcnR5LCBzbG90KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRf
d2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVC
bG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBp
ZGVudCwgcHV0VmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgLy9pZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgIC8vICAgIHVpbnQz
Ml90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAvLyAgICBpZiAoYmFzZVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAvLyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJh
c2VWYWx1ZSk7CisgICAgLy8gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShp
KSkgeworICAgIC8vICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZh
bHVlKTsKKyAgICAvLyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgIC8vICAgICAgICB9Cisg
ICAgLy8gICAgICAgIGVsc2UKKyAgICAvLyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGksIHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpOworICAgIC8vICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAvLyAgICB9
CisgICAgLy8gICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy8gICAgRU5EKCk7CisgICAgLy99CisK
KyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAg
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhl
YywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTAg
QEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbAogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY29weV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5
X2lkX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92
YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lk
X3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxf
d2l0aF90aGlzKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNj
ZXNzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyODIg
QEAKK2Z1bmN0aW9uIGFzc2VydChiLCBtID0gIkJhZCEiKSB7CisgICAgaWYgKCFiKSB7CisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihtKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoZiwgaXRl
cnMgPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyczsgaSsrKQorICAgICAg
ICBmKCk7Cit9CisKK2Z1bmN0aW9uIGZ1bmMoeCkgeworICAgIHJldHVybiB4OworfQorbm9Jbmxp
bmUoZnVuYyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNv
bnN0cnVjdG9yKHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0geDsKKyAg
ICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAg
ICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgIH0KKworICAgIGNs
YXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgc3VwZXIudmFsdWUgPSB4
OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVyLnZhbHVlOyB9CisgICAgfQor
CisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIwKTsK
KyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJy
W2ldLnZhbHVlID0gaTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorfSwgMTApOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHZhbHVlKCkgeyByZXR1cm4gJ3ZhbHVl
JzsgfQorICAgIG5vSW5saW5lKHZhbHVlKTsKKworICAgIGNsYXNzIEEgeworICAgICAgICBjb25z
dHJ1Y3Rvcih4LCBmID0gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUg
PSB4OworICAgICAgICAgICAgdGhpcy5fZnVuYyA9IGY7CisgICAgICAgIH0KKworICAgICAgICBz
ZXQgdmFsdWUoeCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyBy
ZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0IGZ1bmMoKSB7IHJldHVybiB0aGlzLl9m
dW5jOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBzZXQgdmFs
dWUoeCkgeyBzdXBlclt2YWx1ZSgpXSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1
cm4gc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgaW5jKCkgeyByZXR1cm4gc3VwZXJbdmFsdWUo
KV0rKzsgfQorICAgICAgICBkZWMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXS0tOyB9CisgICAg
ICAgIHByZUluYygpIHsgcmV0dXJuICsrc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgcHJlRGVj
KCkgeyByZXR1cm4gLS1zdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBwbHVzRXEoeCkgeyBzdXBl
clt2YWx1ZSgpXSArPSB4OyB9CisgICAgICAgIG1pbnVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAt
PSB4OyB9CisgICAgICAgIHRpbWVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAqPSB4OyB9CisgICAg
ICAgIGRpdkVxKHgpIHsgc3VwZXJbdmFsdWUoKV0gLz0geDsgfQorCisgICAgICAgIGZ1bmNEb3Qo
eCkgeyByZXR1cm4gc3VwZXIuZnVuYyh4KTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4KSB7IHJl
dHVybiBzdXBlci5mdW5jKHgpOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIw
KSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIwKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnZhbHVlID0gaTsKKyAgICB9CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52
YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0uaW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBp
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSsxKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5kZWMoKTsKKyAgICAg
ICAgYXNzZXJ0KHYgPT09IGkrMSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJy
W2ldLnByZUluYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1
ZSA9PT0gaSsxKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBsZXQgdiA9IGFycltpXS5wcmVEZWMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09
IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0ucGx1c0VxKGkpOworICAgIH0KKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ld
LnZhbHVlID09PSBpK2kpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS5taW51c0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhcnJbaV0udGltZXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSppKTsKKyAgICB9CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBpZiAoaSA9PT0g
MCkKKyAgICAgICAgICAgIGFycltpXS52YWx1ZSA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGFycltpXS5kaXZFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldID0gbmV3
IEIoMCwgZnVuY3Rpb24oYSkgeyByZXR1cm4gaSArIGE7IH0pOworICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNEb3Qo
aSkgPT09IGkgKyBpKTsKKyAgICAgICAgYXNzZXJ0KGFycltpXS5mdW5jQnJhY2tldChpKjIpID09
PSBpICsgaSoyKTsKKyAgICB9CisKK30sIDEwKTsKKworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3Rvcih4LCBmID0gZnVuYykKKyAgICAgICAgewor
ICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB4OworICAgICAgICAgICAgdGhpcy5fZnVuYyA9IGY7
CisgICAgICAgIH0KKworICAgICAgICBzZXQgdmFsdWUoeCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0K
KyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0
IGZ1bmMoKSB7IHJldHVybiB0aGlzLl9mdW5jOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRl
bmRzIEEgeworICAgICAgICBzZXQgdmFsdWUoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgPSB4KSgp
OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52YWx1ZSkoKTsg
fQorICAgICAgICBpbmMoKSB7IHJldHVybiAoKCkgPT4gc3VwZXIudmFsdWUrKykoKTsgfQorICAg
ICAgICBkZWMoKSB7IHJldHVybiAoKCkgPT4gc3VwZXIudmFsdWUtLSkoKTsgfQorICAgICAgICBw
cmVJbmMoKSB7IHJldHVybiAoKCkgPT4gKytzdXBlci52YWx1ZSkoKTsgfQorICAgICAgICBwcmVE
ZWMoKSB7IHJldHVybiAoKCkgPT4gLS1zdXBlci52YWx1ZSkoKTsgfQorICAgICAgICBwbHVzRXEo
eCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgKz0geCkoKTsgfQorICAgICAgICBtaW51c0VxKHgpIHsg
KCgpID0+IHN1cGVyLnZhbHVlIC09IHgpKCk7IH0KKyAgICAgICAgdGltZXNFcSh4KSB7ICgoKSA9
PiBzdXBlci52YWx1ZSAqPSB4KSgpOyB9CisgICAgICAgIGRpdkVxKHgpIHsgKCgpID0+IHN1cGVy
LnZhbHVlIC89IHgpKCk7IH0KKworICAgICAgICBmdW5jRG90KHgpIHsgcmV0dXJuICgoKSA9PiBz
dXBlci5mdW5jKHgpKSgpOyB9CisgICAgICAgIGZ1bmNCcmFja2V0KHgpIHsgcmV0dXJuICgoKSA9
PiBzdXBlci5mdW5jKHgpKSgpOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIw
KSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIwKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnZhbHVlID0gaTsKKyAgICB9CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52
YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0uaW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBp
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSsxKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5kZWMoKTsKKyAgICAg
ICAgYXNzZXJ0KHYgPT09IGkrMSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJy
W2ldLnByZUluYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1
ZSA9PT0gaSsxKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBsZXQgdiA9IGFycltpXS5wcmVEZWMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09
IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0ucGx1c0VxKGkpOworICAgIH0KKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ld
LnZhbHVlID09PSBpK2kpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS5taW51c0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhcnJbaV0udGltZXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSppKTsKKyAgICB9CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBpZiAoaSA9PT0g
MCkKKyAgICAgICAgICAgIGFycltpXS52YWx1ZSA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGFycltpXS5kaXZFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldID0gbmV3
IEIoMCwgZnVuY3Rpb24oYSkgeyByZXR1cm4gaSArIGE7IH0pOworICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNEb3Qo
aSkgPT09IGkgKyBpKTsKKyAgICAgICAgYXNzZXJ0KGFycltpXS5mdW5jQnJhY2tldChpKjIpID09
PSBpICsgaSoyKTsKKyAgICB9CisKK30sIDEwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277730</attachid>
            <date>2016-04-29 13:41:29 -0700</date>
            <delta_ts>2016-04-29 17:01:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>96620</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24JKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE1IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfdHJ5X2dldF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyIsICJsZW5ndGgiIDogMTAg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWxfd2l0aF90aGlzIiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYXJyYXlfbGVuZ3Ro
IiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaWQi
LCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV9pZF93
aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2Rl
bF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0
X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0
X2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0
X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3B1dF9ieV92YWxfZGlyZWN0IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9kZWxfYnlfdmFsIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9wdXRfYnlfaW5kZXgiLCAibGVuZ3RoIiA6IDQgfSwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lv
biAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwyMSBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOgog
ICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV9pZDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF0gPiA0KTsKQEAgLTIwOSw2ICsyMjQsMTkgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICBBU1NF
UlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA4KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bOF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjYXNlIG9wX2dl
dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXSA+IDQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfaW5z
dGFuY2VvZl9jdXN0b206CiAgICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgogICAg
IGNhc2Ugb3BfY29uc3RydWN0X3ZhcmFyZ3M6CkBAIC0zMTYsNiArMzQ0LDggQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6
CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0
aF90aGlzOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9z
ZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDoKQEAgLTM3
MSw2ICs0MDEsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgIGNh
c2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBj
YXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDoKICAgICBjYXNlIG9wX292ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pbnN0
YW5jZW9mOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDcsNiArMzQ3LDkgQEAgdm9pZCBD
b2RlQmxvY2s6OnByaW50R2V0QnlJZE9wKFByaW50U3RyZQogICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDoKICAgICAgICAgb3AgPSAiYXJyYXlfbGVuZ3RoIjsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOgorICAgICAgICBvcCA9ICJnZXRfYnlfaWRf
d2l0aF90aGlzIjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICNpZiBDT01QSUxFUl9RVUlSSyhDT05TSURFUlNfVU5S
RUFDSEFCTEVfQ09ERSkKQEAgLTExMTcsMTEgKzExMjAsNDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgcHJpbnRHZXRCeUlk
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQpOworICAgICAgICAgICAgcHJpbnRHZXRCeUlkQ2Fj
aGVTdGF0dXMob3V0LCBleGVjLCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgICAgIGlu
dCByVGhpc1ZhbHVlID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIsICVzIiwgcmVnaXN0ZXJOYW1lKHJUaGlzVmFsdWUpLmRhdGEoKSk7CisgICAgICAgICAgICBk
dW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90
aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImdldF9ieV92YWxfd2l0aF90aGlzIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZCIpOwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2Nh
dGlvbiwgc3R1YkluZm9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGlu
dCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3dpdGhfdGhpcyIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOiB7CisgICAgICAg
ICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7
CisgICAgICAgICAgICBpbnQgcjMgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV92YWxfd2l0
aF90aGlzIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lz
dGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMykuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDogewogICAgICAg
ICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgaWQwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0yMDI1LDYgKzIwNjMsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRf
ZGlyZWN0X3BuYW1lOgogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfd2l0aF90aGlzOgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50
czogewogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07CiAgICAgICAgICAgICBBU1NFUlQocHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CkBAIC0yNzM4LDYgKzI3NzcsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlCiAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKICAgICAgICAgc3dpdGNoIChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
IHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwg
SGVhcDo6aXNNYXJrZWQobV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG9sZFN0cnVj
dHVyZUlEKSkpCkBAIC0yNzQ4LDYgKzI3ODgsOCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVM
TEludElubGluZUNhY2hlCiAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQg
PSAwOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfd2l0aF90aGlzOgorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRCA9IGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBuZXdT
dHJ1Y3R1cmVJRCA9IGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlSUQ7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MTAs
NiArMjQxMCwyNSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAg
ICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhp
c1ZhbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCit7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hvdWxkIGJl
IGhhbmRsZWQgd2l0aCBnZXRfYnlfdmFsLiIpOworCisgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKworICAgIFVubGlu
a2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb2ZpbGUpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
cGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hvdWxkIGJlIGhhbmRs
ZWQgd2l0aCBwdXRfYnlfdmFsLiIpOwpAQCAtMjQzMyw2ICsyNDUyLDI2IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHBy
b3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1dF9i
eV92YWwuIik7CisKKyAgICB1bnNpZ25lZCBwcm9wZXJ0eUluZGV4ID0gYWRkQ29uc3RhbnQocHJv
cGVydHkpOworCisgICAgLy8gRklYTUU6IGlzIHRoaXMgbmVlZGVkPyBJIGRvdWJ0IGl0LgorICAg
IC8vbV9zdGF0aWNQcm9wZXJ0eUFuYWx5emVyLnB1dEJ5SWQoYmFzZS0+aW5kZXgoKSwgcHJvcGVy
dHlJbmRleCk7CisKKyAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworCisgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWRf
d2l0aF90aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5SW5kZXgpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCh2YWx1ZS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIFByb3BlcnR5Tm9k
ZTo6UHV0VHlwZSBwdXRUeXBlKQogewogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5k
ZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGgg
cHV0X2J5X3ZhbChkaXJlY3QpLiIpOwpAQCAtMjU1Nyw2ICsyNTk2LDE3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9w
ZXJ0eSkKK3sKKyAgICAvLyBGSVhNRTogd2hhdCBpcyBmb3IgaW4gY29udGV4dCEKKyAgICBlbWl0
T3Bjb2RlKG9wX2dldF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoa2lsbChkc3QpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVy
SUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAg
ICBVbmxpbmtlZEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsK
QEAgLTI1NjksNiArMjYxOSwxNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1
ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQoreworICAgIGVtaXRP
cGNvZGUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh2YWx1ZS0+aW5kZXgoKSk7CisKKyAgICByZXR1cm4g
dmFsdWU7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0
QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewogICAgIFVubGlua2VkQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0Fy
cmF5UHJvZmlsZSgpOwpAQCAtNDIxNSw2ICs0Mjc2LDE3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TG9hZEQKICAgICBWYXJpYWJsZSBwcm90b1Njb3BlVmFyID0gdmFyaWFi
bGUocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lKTsKICAgICBy
ZXR1cm4gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWRBcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQ
cml2YXRlTmFtZSksIHByb3RvU2NvcGVWYXIsIFRocm93SWZOb3RGb3VuZCk7CiB9CisKK1JlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbnN1cmVUaGlzKCkKK3sKKyAgICBpZiAoY29uc3Ry
dWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIG5lZWRzVG9VcGRhdGVB
cnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkpCisgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50KCk7CisKKyAgICBpZiAoY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQorICAgICAgICBlbWl0
VERaQ2hlY2sodGhpc1JlZ2lzdGVyKCkpOworCisgICAgcmV0dXJuIHRoaXNSZWdpc3RlcigpOwor
fQogICAgIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1
bmN0aW9uKCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTAyLDYgKzUwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRQcm9maWxlQ29udHJvbEZsb3coaW50KTsKICAgICAgICAgCiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudChjb25zdCBJZGVudGlm
aWVyJik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVuc3VyZVRoaXMoKTsKICAgICAgICAgdm9pZCBl
bWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVu
dmlyb25tZW50KCk7CiAKQEAgLTU1MCwxMiArNTUxLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeUlkKFJlZ2lzdGVySUQq
IGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHks
IFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERpcmVjdFB1dEJ5
SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlLCBQcm9wZXJ0eU5vZGU6OlB1dFR5cGUpOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0RGVsZXRlQnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEdldEFyZ3VtZW50QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3Rl
cklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJ
RCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlWYWwo
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5VmFsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0UHV0QnlJbmRleChSZWdpc3RlcklEKiBiYXNlLCB1bnNpZ25lZCBpbmRleCwgUmVn
aXN0ZXJJRCogdmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDUsMTIgKzE0NSwxNSBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0CiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChnZW5lcmF0
b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVy
YXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNT
dXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7Ci0KLSAgICBp
ZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29u
c3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJh
dG9yLnRoaXNSZWdpc3RlcigpKTsKKyAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIC8v
aWYgKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2
ZWQgJiYgZ2VuZXJhdG9yLm5lZWRzVG9VcGRhdGVBcnJvd0Z1bmN0aW9uQ29udGV4dCgpICYmIGdl
bmVyYXRvci5pc1N1cGVyQ2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgIC8vICAg
IGdlbmVyYXRvci5lbWl0TG9hZFRoaXNGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpOworCisgICAgLy8vLyBGSVhNRTogSSdtIHByZXR0eSBzdXJlIG1fc2hvdWxkQWx3YXlzRW1p
dFREWkNoZWNrIGlzIGEgcG9pbnRsZXNzIGZpZWxkLiBWZXJpZnkgdGhhdCBpdCBpcy4KKyAgICAv
L2lmIChtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayB8fCBnZW5lcmF0b3IuY29uc3RydWN0b3JL
aW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAvLyAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdl
bmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7CiAKKyAgICBVTlVTRURfUEFSQU0obV9zaG91bGRBbHdh
eXNFbWl0VERaQ2hlY2spOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2MiwxOSArMTY1LDYgQEAgUmVnaXN0ZXJJRCog
VGhpc05vZGU6OmVtaXRCeXRlY29kZShCeXRlYwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU3VwZXJOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQotewotICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoZ2VuZXJhdG9y
LmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGdlbmVyYXRvci5l
bWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25t
ZW50KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKLQotICAg
IFJlZ2lzdGVySUQgY2FsbGVlOwotICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNrOjpDYWxsZWUp
OwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwotfQotCiBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKIHsKICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVy
aXZlZENsYXNzQ29udGV4dCgpIHx8IGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRl
eHQoKSkgewpAQCAtMTkzLDYgKzE4MywyNSBAQCBzdGF0aWMgUmVnaXN0ZXJJRCogZW1pdFN1cGVy
QmFzZUZvckNhbGxlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGhvbWVPYmplY3QuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkudW5kZXJzY29yZVByb3RvKTsKIH0KIAorc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRHZXRTdXBl
ckZ1bmN0aW9uRm9yQ29uc3RydWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7Cisg
ICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKKyAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdl
bmVyYXRvci5lbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3RvckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3Rv
KTsKKworICAgIFJlZ2lzdGVySUQgY2FsbGVlOworICAgIGNhbGxlZS5zZXRJbmRleChKU1N0YWNr
OjpDYWxsZWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90byk7Cit9CisKK1JlZ2lzdGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBpZiAoZHN0
ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAg
UmVnaXN0ZXJJRCogcmVzdWx0ID0gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOwor
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpLCByZXN1bHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gTmV3VGFyZ2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIFJlZ2lzdGVySUQqIE5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC02MjAsMTIgKzYyOSwx
NyBAQCBzdGF0aWMgYm9vbCBpc05vbkluZGV4U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklE
KiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2Rl
KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIg
aW5mbz8KKyAgICAgICAgUmVnaXN0ZXJJRCogcmV0OworICAgICAgICBSZWdpc3RlcklEKiBmaW5h
bERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICBpZiAoaXNO
b25JbmRleFN0cmluZ0VsZW1lbnQoKm1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciYgaWQgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52
YWx1ZSgpOwotICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRv
ciksIGlkKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZh
bChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvciksIGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworICAgICAgICAg
ICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZv
ckNhbGxlZShnZW5lcmF0b3IpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAg
IH0gZWxzZSAKKyAgICAgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxE
ZXN0LCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRvci5lbnN1cmVU
aGlzKCksIGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworCisgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCiAgICAgUmVn
aXN0ZXJJRCogcmV0OwpAQCAtNjUwLDEwICs2NjQsMTUgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZW1pdEJ5dAogCiBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCkgPyBl
bWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9i
YXNlKTsKKyAgICBib29sIGJhc2VJc1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgpOworICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0KTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmlu
YWxEZXN0LCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAg
aWYgKGJhc2VJc1N1cGVyKQorICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmlu
YWxEZXN0LCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAg
ICBlbHNlCisgICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJh
c2UuZ2V0KCksIG1faWRlbnQpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxE
ZXN0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC03
NTUsMTAgKzc3NCwxMSBAQCBSZWdpc3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5
CiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCwgZnVuYy5nZXQoKSk7Ci0gICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRv
ciwgbV9hcmdzKTsKICAgICBpZiAobV9leHByLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3Qo
Z2VuZXJhdG9yKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKKyAgICAgICAgQ2FsbEFy
Z3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKKwogICAgICAgICBBU1NF
UlQoZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRU
eXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsK
ICAgICAgICAgQVNTRVJUKGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2
ZWRDb250ZXh0VHlwZTo6RGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3
VGFyZ2V0KCkpOwpAQCAtNzY5LDYgKzc4OSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6ZW1pdEIKIAogICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVj
dG9yQ29udGV4dCgpIHx8IChkb1dlVXNlQXJyb3dGdW5jdGlvbkluQ29uc3RydWN0b3IgJiYgZ2Vu
ZXJhdG9yLmlzU3VwZXJDYWxsVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKQogICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25t
ZW50KCk7CisgICAgICAgIC8vIEZJWE1FOiBJIHRoaW5rIHRoaXMgY2FuIGp1c3QgYmUgcmVwbGFj
ZWQgYnkgZW5zdXJlVGhpcygpLgogICAgICAgICAKICAgICAgICAgUmVmUHRyPExhYmVsPiB0aGlz
SXNFbXB0eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzRW1wdHkoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpLCB0aGlzSXNFbXB0eUxhYmVsLmdldCgpKTsK
QEAgLTc4Miw2ICs4MDMsOSBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVt
aXRCCiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KKyAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gZnVuYyA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuYy5nZXQoKSk7CisgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwganNVbmRlZmluZWQoKSk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVt
aXRDYWxsSW5UYWlsUG9zaXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmMuZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwpAQCAtOTIyLDE5ICs5NDYsMzAgQEAgUmVnaXN0
ZXJJRCogRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OmVtaQogICAgIH0KIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBmdW5jdGlvbjsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVy
OworICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICAvLyBOb3RlIHRoYXQgd2Ugb25seSBu
ZWVkIHRvIGRvIHRoaXMgb25jZSBiZWNhdXNlIHdlIGVpdGhlciBoYXZlIGEgbm9uLVREWiB0aGlz
IG9yIHdlIHRocm93LiBPbmNlIHdlIGhhdmUgYSBub24tVERaIHRoaXMsIHdlIGNhbid0IGNoYW5n
ZSBpdHMgdmFsdWUuCisgICAgICAgIHRoaXNSZWdpc3RlciA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgfQogICAgIGlmIChzdWJzY3JpcHRJc05vbkluZGV4U3RyaW5nKSB7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4
cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgICAgICBmdW5jdGlvbiA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJh
c2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkp
OworICAgICAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2Ny
aXB0KS0+dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5n
ZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fc3Vic2NyaXB0KTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4
cHJlc3Npb25FbmQoKSk7Ci0gICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZh
bChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpKTsKKyAgICAgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICAgICAgZnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFz
ZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7
CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9y
LmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAoYmFzZUlzU3VwZXIp
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUo
Y2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdGhpc1JlZ2lzdGVyLmdldCgpKTsKICAgICBl
bHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rl
cigpLCBiYXNlLmdldCgpKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENh
bGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKQEAgLTk1MCwxMyArOTg1LDE1IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJn
dW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGJvb2wgYmFzZUlz
U3VwZXIgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKGJhc2VJc1N1
cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0
ZXIoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSk7CisgICAgZWxzZQogICAgICAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxl
ZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7Cisg
ICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rp
b24uZ2V0KCksIGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJhdG9yKSwgY2FsbEFyZ3VtZW50
cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IG1faWRlbnQpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbEluVGFp
bFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJldDsKQEAgLTExOTUsMTAgKzEyMzIs
MTcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJzY3JpcHQpOwog
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRpdm90
KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNjZXNzb3ItPmRpdm90
RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0
QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQo
KSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+aXNT
dXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwg
cHJvcGVydHkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHku
Z2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5l
cmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3Bl
cmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0
KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1
cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAg
ZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5
LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1
ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0xMjExLDE1
ICsxMjU1LDI1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2QKICAg
ICBBU1NFUlQobV9leHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdEFjY2Vzc29yID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obV9leHByKTsK
ICAgICBFeHByZXNzaW9uTm9kZSogYmFzZU5vZGUgPSBkb3RBY2Nlc3Nvci0+YmFzZSgpOworICAg
IGJvb2wgYmFzZUlzU3VwZXIgPSBiYXNlTm9kZS0+aXNTdXBlck5vZGUoKTsKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCA9IGRvdEFjY2Vzc29yLT5pZGVudGlmaWVyKCk7CiAKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9kZSk7CiAKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RB
Y2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7Ci0gICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyOworICAgIGlmIChi
YXNlSXNTdXBlcikgeworICAgICAgICB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW5zdXJlVGhp
cygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgaWRlbnQpOworICAg
IH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBSZWdpc3RlcklEKiBvbGRW
YWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0
aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQoKSk7CisgICAg
aWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQo
KSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkpOworICAgIGVsc2UKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0xMzkyLDEwICsxNDQ2LDE3IEBAIFJlZ2lz
dGVySUQqIFByZWZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dGUKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKIAogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgpLCBicmFja2V0
QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVuZCgpKTsKLSAg
ICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZ2lzdGVySUQqIHZhbHVlOwor
ICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1
cmVUaGlzKCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHZhbHVlID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5n
ZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3Bl
cnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVU
aGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBw
cm9wRHN0LmdldCgpKTsKIH0KQEAgLTE0MTEsMTAgKzE0NzIsMTcgQEAgUmVnaXN0ZXJJRCogUHJl
Zml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wRHN0
ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRF
eHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3Rh
cnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIGlkZW50KTsK
KyAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkp
CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJh
c2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGlkZW50KTsKKyAgICBlbHNlCisgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0
KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwgbV9vcGVyYXRv
cik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBp
ZGVudCwgdmFsdWUpOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCks
IGlkZW50LCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
bW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogfQpAQCAtMjAx
NSw3ICsyMDgzLDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSgK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKHZhbHVl
LmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogZm9yd2FyZFJl
c3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1bHQuZ2V0KCkg
OiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IudGVtcERlc3Rp
bmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChtX2Jh
c2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdl
dCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKKyAg
ICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50
LCBmb3J3YXJkUmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRS
ZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5t
b3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9CkBAIC0yMDI3
LDExICsyMDk4LDE5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWMK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRI
YW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdl
bmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGlu
YXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgbV9pZGVudCk7
CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwogICAgIFJlZ2lz
dGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChnZW5lcmF0b3Is
IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2YWx1ZS5nZXQo
KSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRvciksIE9wZXJh
bmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1bHREZXNjcmlw
dG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKKyAgICBSZWdp
c3RlcklEKiByZXQ7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgcmV0
ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlz
KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NSwxMCArMjEzNCwxNyBAQCBS
ZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkp
OwogCi0gICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpCi0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdO
b2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAgICBlbHNlCi0g
ICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCks
IGZvcndhcmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9zdWJz
Y3JpcHQpKSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMo
KSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSwgZm9yd2Fy
ZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1
ZSgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdl
dCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgZm9yd2FyZFJlc3Vs
dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIH0KIAogICAgIGdl
bmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQo
ZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAgLTIwNzIsMTEgKzIxNTgsMTggQEAgUmVnaXN0ZXJJRCog
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9w
ZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNjcmlwdCwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1wRGVzdGluYXRp
b24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB2YWx1ZTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICB2YWx1
ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7Cisg
ICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAg
UmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVy
YXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVl
LmdldCgpLCBtX3JpZ2h0LCBzdGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29wZXJhdG9yKSwg
T3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERl
c2NyaXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CisgICAgaWYgKG1fYmFz
ZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdl
dCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgdXBkYXRlZFZhbHVl
KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwg
cHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAKICAgICByZXR1
cm4gdXBkYXRlZFZhbHVlOwpAQCAtMjQxMCw3ICsyNTAzLDEwIEBAIHZvaWQgRm9ySW5Ob2RlOjpl
bWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSBhc3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChhc3NpZ25O
b2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5SWQoYmFzZSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLCBp
ZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShw
cm9wZXJ0eU5hbWUsIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RF
bmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDE5LDcgKzI1MTUsMTAgQEAgdm9p
ZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlRwogICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5iYXNlKCkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWdu
Tm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQo
KSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFz
ZSgpLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChi
YXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBzdWJzY3JpcHQsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3Np
Z25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2MzAsNyAr
MjcyOSwxMSBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3Np
Z25Ob2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3Rh
cnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBzdXBlci4KKyAgICAgICAgICAgIGlmIChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2Rl
KCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdl
bmVyYXRvci5lbnN1cmVUaGlzKCksIGlkZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2
YWx1ZSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3Np
Z25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9
IGVsc2UgaWYgKG1fbGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgICAg
ICBCcmFja2V0QWNjZXNzb3JOb2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFj
Y2Vzc29yTm9kZSo+KG1fbGV4cHIpOwpAQCAtMjYzOCw3ICsyNzQxLDEwIEBAIHZvaWQgRm9yT2ZO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHN1
YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5zdWJzY3JpcHQoKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNz
aWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5k
aXZvdEVuZCgpKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQo
KSwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgp
LT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChi
YXNlLmdldCgpLCBzdWJzY3JpcHQsIHZhbHVlKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUsIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+
ZGl2b3RFbmQoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9sZXhw
ci0+aXNEZXN0cnVjdHVyaW5nTm9kZSgpKTsKQEAgLTM2OTUsNiArMzgwMSw3IEBAIHZvaWQgQXNz
aWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAgICAgRG90QWNjZXNzb3JOb2Rl
KiBsaHMgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2Fzc2lnbm1lbnRUYXJnZXQp
OwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZv
ckxlZnRIYW5kU2lkZShsaHMtPmJhc2UoKSwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CisgICAgICAgIC8vIEZJWE1FOiBzdXBlcgogICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkp
IHsKQEAgLTM3MDIsNiArMzgwOSw3IEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5k
VmFsdWUoQnkKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1p
dE5vZGVGb3JMZWZ0SGFuZFNpZGUobGhzLT5iYXNlKCksIHRydWUsIGZhbHNlKTsKICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKGxocy0+c3Vic2NyaXB0KCksIHRydWUsIGZhbHNlKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdEVuZCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAvLyBGSVhNRTogc3VwZXIKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjE1Miw2ICsyMTUyLDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7
CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJs
ZVZpZXcoCkBAIC0yNjUwLDYgKzI2NTYsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEJ5VmFs
V2l0aFRoaXM6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICBj
YXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5MjQsNiArMzkyNCwxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfdmFsKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsV2l0aFRoaXMgPSBhZGRUb0dy
YXBoKEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHkpOworICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSwgZ2V0QnlWYWxXaXRoVGhpcyk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9i
eV92YWxfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3Zh
bF9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCkpOwpAQCAtMzk2NSw2ICszOTc1LDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWwpOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAg
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh0aGlz
VmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpW
YXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CkBA
IC0zOTk4LDYgKzQwMjMsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBb
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CisKKyAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChHZXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
KSwgYmFzZSwgdGhpc1ZhbHVlKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9i
eV9pZF93aXRoX3RoaXMpOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7
CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpAQCAtNDAx
Myw2ICs0MDQ4LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKKwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2dldHRlcl9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw4
ICsxNTYsMTIgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgog
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoK
KyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF93
aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNlIG9w
X3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOgogICAgIGNh
c2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzOSw3ICs0
MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICAKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0
QnlJZDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAg
IGNhc2UgUHV0R2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksMTEgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNh
c2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0
dGVyQnlJZDoKQEAgLTIwMiw2ICsyMDUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAg
Y2FzZSBHZXRCeVZhbDoKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgY2Fz
ZSBBcnJheVB1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzMsNiArMTEzMywxNSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhp
czoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAg
ICBjYXNlIFB1dEJ5SWRGbHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtODY5LDkgKzg2OSwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNl
IEdldEJ5SWRGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNh
c2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0
QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2Ug
UHV0R2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOgogICAgICAgICBjYXNl
IFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogdGhpcyBtdXN0IGJlIHRoZSBkaXJlY3Rs
eSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4gTm90ZSB0aGF0IFB1dEJ5VmFsICovXAogICAgIC8q
IG9wY29kZXMgdXNlIFZhckFyZ3MgYmVhdXNlIHRoZXkgbWF5IGhhdmUgdXAgdG8gNCBjaGlsZHJl
bi4gKi9cCiAgICAgbWFjcm8oR2V0QnlWYWwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKKyAgICBtYWNybyhHZXRCeVZhbFdpdGhUaGlzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlBcmd1bWVudEJ5VmFsLCBOb2RlUmVzdWx0SlMg
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZC
b3VuZHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhMb2Fk
VmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMTg2LDkgKzE4NywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5SWRXaXRoVGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRC
eUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUHV0QnlJZFdpdGhUaGlz
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUHV0QnlWYWxXaXRoVGhpcywgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0R2V0dGVyQnlJZCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRlckJ5SWQsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw2ICsxNDQsMTYgQEAgY2hhciogbmV3VHlw
ZWRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSogZQogICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgc2l6ZSkpOwogfQogCit0ZW1w
bGF0ZSA8Ym9vbCBzdHJpY3Q+CitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHB1dFdpdGhUaGlz
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFRoaXMpOworICAgIEpTVmFsdWUgcHV0VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBzdHJpY3QpOworICAg
IGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQsIHB1dFZhbHVlLCBzbG90KTsKK30KKwog
ZXh0ZXJuICJDIiB7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9U
aGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wKQpAQCAtNzczLDYg
Kzc4Myw3NCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvUHJpbWl0aXZl
KGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRC
eUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQorewor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0
KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCksIHNsb3QpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkU3Vic2NyaXB0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAg
SlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAg
IGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkg
eworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0
eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+
IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0
b21pY1N0cmluZyhleGVjKSkgeworICAgICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4
aXN0aW5nQXRvbWljU3RyaW5nLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIFByb3BlcnR5U2xvdDo6UHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJ
bnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5j
YW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJp
bmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGksIHNsb3QpKTsKKyAgICB9
CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShleGVjKTsKKyAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgp
KTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsK
KyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhl
YywgcHJvcGVydHksIHNsb3QpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBwdXRXaXRoVGhpczx0cnVl
PihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpCit7CisgICAgcHV0V2l0aFRoaXM8ZmFsc2U+
KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVlLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKGV4ZWMsIGltcGwpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBJZGVu
dGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJv
cGVydHlLZXkoZXhlYyk7CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywgZW5jb2RlZEJhc2Us
IGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKK30KKwordm9pZCBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sK
KyAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3Jp
cHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgcHV0V2l0aFRoaXM8ZmFsc2U+KGV4ZWMsIGVu
Y29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVlLCBwcm9wZXJ0eSk7Cit9CisKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIGFycmF5U3RydWN0dXJlLCB2b2lkKiBidWZmZXIsIHNpemVfdCBzaXplKQogewogICAg
IFZNKiB2bSA9ICZleGVjLT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxBcnJheUludChFeGVjU3RhdGUqLCBKU0FycmF5
KiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludChFeGVjU3RhdGUqLCBKU1N0cmluZyosIGludDMyX3Qp
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9Q
cmltaXRpdmUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdBcnJheShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCB2b2lkKiwgc2l6ZV90KSBXVEZfSU5U
RVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIHNpemVfdCwgc2l6ZV90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXkoRXhlY1N0YXRlKiwgU3RydWN0dXJl
KikgV1RGX0lOVEVSTkFMOwpAQCAtOTgsNiArMTAwLDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbERpcmUKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
aW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJv
dW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2
YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJs
ZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBp
bnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3Ry
aWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRF
Uk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERvdWJsZShFeGVjU3RhdGUqLCBkb3VibGUgdmFsdWUs
IEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSosIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY2NSw2ICs2NjUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNl
IEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNv
ZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBUcnlH
ZXRCeUlkOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTk5MCw2ICs5OTUsOCBAQCBwcml2YXRlOgogI2lmbmRlZiBO
REVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJl
dHVybiBhbnl0aGluZy4KICAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgY2Fz
ZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAg
ICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBj
YXNlIFB1dFRvQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0
LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNl
IFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZs
dXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhp
czoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAg
IGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjc2Myw2ICsyNzYzLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhU
aGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0
aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1
YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRH
UFIgPSBzdWJzY3JpcHQuZ3ByKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisg
ICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9u
R2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHN1YnNj
cmlwdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRC
eVZhbEFsaWFzOiB7CkBAIC00MTI5LDYgKzQxNDgsMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdl
dEJ5SWRXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworCisgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0
aGlzVmFsdWVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7Cisg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEFy
cmF5TGVuZ3RoOgogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNDMwOCw2ICs0MzQ0LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BS
UmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIg
PSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxs
T3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8g
b3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlz
LCBOb1Jlc3VsdCwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCB2YWx1ZUdQUiwgaWRlbnRpZmllclVJ
RChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQ
UlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1Zh
bHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBH
UFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsK
KyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MykpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIE5vUmVzdWx0LCBiYXNlR1BSLCB0aGlz
VmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjY5LDYgKzEyNjksMjEgQEAgcHVibGljOgogCiAKICNpZiBVU0UoSlNWQUxVRTY0KQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSSBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25l
ZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJ
KHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY5LDYgKzE2OSw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
Y2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNhc2UgR2V0QnlJZFdp
dGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAg
ICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CkBAIC0yNjEsNiArMjYyLDggQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJu
IENhbm5vdENvbXBpbGU7CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgaWYgKG5vZGUt
PmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKQogICAgICAgICAgICAgYnJlYWs7
CkBAIC0zMjUsNiArMzI4LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5v
ZGUqIAogICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBicmVhazsKICAg
ICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgpAQCAtMzQxLDYgKzM0Niw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAg
c3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA1LDYgKzYwNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZs
dXNoOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0KTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAg
IGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIEluOgogICAgICAgICAgICAgY29tcGlsZUluKCk7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTYxMyw2ICs2MTYsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeUlkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgICAgICBjb21waWxlUHV0QnlJZFdpdGhUaGlz
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAg
ICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgICAgICAgICBjb21waWxlUHV0QWNjZXNzb3JC
eUlkKCk7CkBAIC02NDksMTEgKzY1NSwxNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15
QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1l
bnRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRo
VGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhU
aGlzOgorICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVBcnJh
eVB1c2goKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQwOSw2ICsyNDIxLDQ1IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVHZXRCeUlkV2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2Fs
bChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyks
IG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pKTsKKyAgICAgICAgc2V0
SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRo
aXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDMoKSk7CisKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwg
YmFzZSwgdGhpc1ZhbHVlLCBzdWJzY3JpcHQpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAg
ICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
TFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAg
dm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1v
ZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlz
U3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKSwKKyAgICAgICAgICAgIG1fY2FsbEZy
YW1lLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlk
ZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CisgICAgfQorCisgICAg
dm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAg
TFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUs
IDEpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1f
Z3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZv
aWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMpLAorICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRo
aXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxl
UHV0QnlJZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9DQ2FsbEhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMDMgQEAgdm9p
ZCBDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93Q2hpY2tlblBhYwogICAgIHN0b3JlUHRyKEdQUklu
Zm86OnJlZ1QyLCBBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7CiB9CiAKK3ZvaWQgQ0NhbGxIZWxw
ZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BS
UmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVn
IHNyY0MsIEdQUlJlZyBzcmNEKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAg
ICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7
CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BS
cygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOworICAgIH0K
KworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgIFZl
Y3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKKworICAgIGlmIChzcmNBICE9IGRlc3RBKQorICAgICAg
ICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKKyAgICBpZiAoc3Jj
QiAhPSBkZXN0QikKKyAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRl
c3RCKSk7CisgICAgaWYgKHNyY0MgIT0gZGVzdEMpCisgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOworICAgIGlmIChzcmNEICE9IGRlc3REKQorICAgICAg
ICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKKworCisgICAgYXV0
byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgUmVnaXN0
ZXJTZXQgc2V0OworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAg
ICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBzZXQuc2V0KHNvdXJj
ZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNldC5udW1iZXJPZlNldEdQUnMoKTsKKyAg
ICB9OworCisgICAgYXV0byBudW1VbmlxdWVEZXN0cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7Cisg
ICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMp
IHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICBz
ZXQuc2V0KGRlc3QpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRH
UFJzKCk7CisgICAgfTsKKworICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAgUmVn
aXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFp
cnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAg
ICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmly
c3Q7CisgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAg
IH0KKworICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgewor
ICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXV0
byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWly
LmZpcnN0OworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAg
ICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIEFTU0VSVChtYWRlTW92ZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bVVuaXF1ZURlc3RzKCkgPT0gbnVtVW5p
cXVlU291cmNlcygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9
PSBwYWlycy5zaXplKCkpOworICAgICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGlu
YXRpb24gcmVnaXN0ZXJzIGNvbnRhaW4gdGhlIHNhbWUgdmFsdWVzLiBUaGlzIG1lYW5zIHdlIGRv
bid0IGhhdmUKKyAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQg
d29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAg
ICAgLy8gZXhjaGFuZ2luZyByZWdpc3RlcnMuCisKKyAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBh
aXJzWzBdLmZpcnN0OworICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAg
ICAgICAgc3dhcChzb3VyY2UsIGRlc3QpOworICAgICAgICBwYWlycy5yZW1vdmUoMCk7CisKKyAg
ICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAg
ICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgcGFpci5maXJz
dCA9IG5ld1NvdXJjZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBo
YXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgaWYgKHBhaXIuZmly
c3QgPT0gcGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Cisg
ICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDIwMDExMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1
ZGUgIkdQUkluZm8uaCIKKyNpbmNsdWRlICJSZWdpc3Rlck1hcC5oIgogI2luY2x1ZGUgIlN0YWNr
QWxpZ25tZW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtOTEzLDYgKzkxNCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIHN3YXAoZGVzdEIsIGRlc3RDKTsKICAgICB9CiAKKyAgICB2b2lkIHNl
dHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVz
dEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywg
R1BSUmVnIHNyY0QpOworCiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBs
YXRlPEZQUlJlZyBkZXN0QSwgRlBSUmVnIGRlc3RCPgogICAgIHZvaWQgc2V0dXBUd29TdHViQXJn
c0ZQUihGUFJSZWcgc3JjQSwgRlBSUmVnIHNyY0IpCkBAIC0xOTg2LDYgKzE5ODksMTIgQEAgcHVi
bGljOgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAjaWYg
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwRm91clN0dWJBcmdz
R1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgYXJnMSwgYXJnMiwgYXJnMywg
YXJnNCk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86
OmFyZ3VtZW50R1BSMCk7CisgICAgfQorCiAgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMxMzQo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHNl
dHVwVGhyZWVTdHViQXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMywgR1BSSW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmczLCBhcmc0KTsKQEAgLTIw
MzYsNiArMjA0NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFI0KTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9CisKKyAgICAvL0FMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgLy97CisgICAgLy8gICAgcG9rZShhcmc0LCBQT0tF
X0FSR1VNRU5UX09GRlNFVCk7CisgICAgLy8gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgIC8vfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODgwLDIw
ICs4ODAsNiBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBDUFUoU0g0KQogCi1pbmxpbmUgR1BSUmVn
IGFyZ3VtZW50UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKLXsKLSNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGlmIChhcmd1bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMpCi0gICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwotCi0gICAgcmV0dXJuIEdQ
UkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGFyZ3VtZW50SW5kZXgpOwotCi0gICAgcmV0dXJuIEludmFsaWRHUFJSZWc7Ci0j
ZW5kaWYKLX0KLQogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUg
ZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAo
Zm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCiAv
LyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4dC4gSGVuY2U6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEs
OSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAg
ICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9nZXRf
YnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Ao
b3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNl
b2YpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKQEAgLTI4Niw5ICsy
ODgsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9PUChv
cF9nZXRfcGFyZW50X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQorICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUwNCw2ICs1MDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFs
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KEluc3RydWN0aW9uKik7CkBAIC01NjIsOCArNTY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2J5X2luZGV4KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRf
YnlfdmFsX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0
X2dldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3Nl
dHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRl
cl9zZXR0ZXJfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1
Niw3IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkoKIHR5cGVkZWYg
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0
YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5
bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRU9JVWkpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
VW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEpTQ2Vs
bCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRl
ZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwg
aW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9u
X0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKQEAgLTI0OSw2ICsyNTAsOCBAQCB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElP
TiAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVk
ZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwg
dm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFU
SU9OICgqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7
Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FSkpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FV3MpKEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsK
IHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0
ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FWkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lv
biAyMDAxMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYgKzMxMywxMiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAgICAgbV9ieVZhbENvbXBpbGF0aW9uSW5mby5hcHBl
bmQoQnlWYWxDb21waWxhdGlvbkluZm8oYnlWYWxJbmZvLCBtX2J5dGVjb2RlT2Zmc2V0LCBub3RJ
bmRleCwgYmFkVHlwZSwgbW9kZSwgcHJvZmlsZSwgZG9uZSwgZG9uZSkpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7Cit9CisKIEpJVDo6SnVtcExpc3QgSklUOjplbWl0R2VuZXJpY0NvbnRp
Z3VvdXNQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBQYXRjaGFibGVK
dW1wJiBiYWRUeXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdTaGFwZSkKIHsKICAgICBpbnQgdmFs
dWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwpAQCAtNTkzLDYgKzU5OSwxOCBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRWUmVnKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsK
KyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0
X2J5X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgaW50IHJlc3VsdFZSZWcgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtNjM4LDYgKzY1NiwxMiBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAgICAgbV9wdXRCeUlkcy5hcHBlbmQoZ2VuKTsK
IH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7
CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX3B1
dF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGludCBiYXNlVlJlZyA9IGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2aXNpb24gMjAwMTEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20J
KHdvcmtpbmcgY29weSkKQEAgLTEyMzIsNiArMTIzMiwxOCBAQCBfbGxpbnRfb3BfZ2V0X2J5X2lk
OgogICAgIGRpc3BhdGNoKDkpCiAKIAorX2xsaW50X29wX2dldF9ieV9pZF93aXRoX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV9p
ZF93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goMTApCisKKworX2xsaW50X29wX2dldF9ieV92YWxf
d2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3df
cGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGludF9v
cF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMiwgdDApCkBAIC0xMzk0LDYgKzE0MDYsMTggQEAgX2xsaW50X29wX3B1dF9i
eV9pZDoKICAgICBkaXNwYXRjaCg5KQogCiAKK19sbGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRf
YnlfaWRfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3B1dF9ieV92
YWxfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Ns
b3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKIF9sbGlu
dF9vcF9nZXRfYnlfdmFsOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oMiwgdDIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMDExMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgxNiw0ICs4MTYsOTQgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCkKICAg
ICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3Ro
aXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBPUF9D
KDgpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQcm9wZXJ0eVNs
b3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOX1BS
T0ZJTEVEKG9wX2dldF9ieV9pZF93aXRoX3RoaXMsIHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1Bf
Qyg0KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBz
dWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAg
ICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUodm0pOworICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3Ry
dWN0dXJlKSkgeworICAgICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlz
dGluZ0F0b21pY1N0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNT
dHJpbmcoZXhlYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNl
VmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGlu
Z0F0b21pY1N0cmluZy5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQp
OyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldCk7CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAg
ICAgICAgICAgIFJFVFVSTihhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7
CisgICAgICAgIAorICAgICAgICBSRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7
CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTihiYXNl
VmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFs
ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNW
YWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZVZhbHVl
LnB1dElubGluZShleGVjLCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQor
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCit7CisgICAg
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQyg0KS5q
c1ZhbHVlKCk7CisgICAgCisgICAgLy9pZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkg
eworICAgIC8vICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAvLyAg
ICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAvLyAgICAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgLy8gICAgICAgIGlmIChvYmplY3QtPmNh
blNldEluZGV4UXVpY2tseShpKSkgeworICAgIC8vICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRl
eFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAgICAvLyAgICAgICAgICAgIExMSU5UX0VORCgpOwor
ICAgIC8vICAgICAgICB9CisgICAgLy8gICAgICAgIGVsc2UKKyAgICAvLyAgICAgICAgICAgIG9i
amVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGksIHZhbHVlLCBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIC8vICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAvLyAgICB9CisgICAgLy8gICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywg
aSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy8gICAg
RU5EKCk7CisgICAgLy99CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVy
dHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QodGhpc1ZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAg
IGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMjAwMTEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI0OCw2ICsyNDgsMTAgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfbAogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY29weV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNj
ZXNzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
c3VwZXItcHJvcGVydHktYWNjZXNzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NDMgQEAKK2Z1bmN0aW9uIGFzc2VydChiLCBtID0gIkJhZCEiKSB7Cisg
ICAgaWYgKCFiKSB7CisgICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHRlc3QoZiwgaXRlcnMgPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBp
dGVyczsgaSsrKQorICAgICAgICBmKCk7Cit9CisKK2Z1bmN0aW9uIGZ1bmMoeCkgeworICAgIHJl
dHVybiB4OworfQorbm9JbmxpbmUoZnVuYyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xh
c3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRo
aXMuX3ZhbHVlID0geDsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMu
X3ZhbHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsg
fQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgp
IHsgc3VwZXIudmFsdWUgPSB4OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVy
LnZhbHVlOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0udmFsdWUgPT09IDIwKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBp
KyspIHsKKyAgICAgICAgYXJyW2ldLnZhbHVlID0gaTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7
CisgICAgfQorfSwgMTApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHZhbHVl
KCkgeyByZXR1cm4gJ3ZhbHVlJzsgfQorICAgIG5vSW5saW5lKHZhbHVlKTsKKworICAgIGNsYXNz
IEEgeworICAgICAgICBjb25zdHJ1Y3Rvcih4LCBmID0gZnVuYykKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fdmFsdWUgPSB4OworICAgICAgICAgICAgdGhpcy5fZnVuYyA9IGY7CisgICAg
ICAgIH0KKworICAgICAgICBzZXQgdmFsdWUoeCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0KKyAgICAg
ICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0IGZ1bmMo
KSB7IHJldHVybiB0aGlzLl9mdW5jOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEg
eworICAgICAgICBzZXQgdmFsdWUoeCkgeyBzdXBlclt2YWx1ZSgpXSA9IHg7IH0KKyAgICAgICAg
Z2V0IHZhbHVlKCkgeyByZXR1cm4gc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgaW5jKCkgeyBy
ZXR1cm4gc3VwZXJbdmFsdWUoKV0rKzsgfQorICAgICAgICBkZWMoKSB7IHJldHVybiBzdXBlclt2
YWx1ZSgpXS0tOyB9CisgICAgICAgIHByZUluYygpIHsgcmV0dXJuICsrc3VwZXJbdmFsdWUoKV07
IH0KKyAgICAgICAgcHJlRGVjKCkgeyByZXR1cm4gLS1zdXBlclt2YWx1ZSgpXTsgfQorICAgICAg
ICBwbHVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSArPSB4OyB9CisgICAgICAgIG1pbnVzRXEoeCkg
eyBzdXBlclt2YWx1ZSgpXSAtPSB4OyB9CisgICAgICAgIHRpbWVzRXEoeCkgeyBzdXBlclt2YWx1
ZSgpXSAqPSB4OyB9CisgICAgICAgIGRpdkVxKHgpIHsgc3VwZXJbdmFsdWUoKV0gLz0geDsgfQor
CisgICAgICAgIGZ1bmNEb3QoeCkgeyByZXR1cm4gc3VwZXIuZnVuYyh4KTsgfQorICAgICAgICBm
dW5jQnJhY2tldCh4KSB7IHJldHVybiBzdXBlci5mdW5jKHgpOyB9CisgICAgfQorCisgICAgbGV0
IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGxldCB0ID0gYXJyW2ldLnZhbHVlOworICAgICAgICBhc3NlcnQo
dCA9PT0gMjApOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhcnJbaV0udmFsdWUgPSBpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9
IGFycltpXS5pbmMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVl
ID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsx
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAg
ICAgIGFzc2VydCh2ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0K
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0g
YXJyW2ldLnByZURlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFs
dWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGFycltpXS5wbHVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7Cisg
ICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJy
W2ldLm1pbnVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJy
W2ldLnZhbHVlID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7
IHJldHVybiBpICsgYTsgfSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAg
ICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNCcmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0K
KworfSwgMTApOworCisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAg
IGNvbnN0cnVjdG9yKHgsIGYgPSBmdW5jKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl92
YWx1ZSA9IHg7CisgICAgICAgICAgICB0aGlzLl9mdW5jID0gZjsKKyAgICAgICAgfQorCisgICAg
ICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUo
KSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgICAgICBnZXQgZnVuYygpIHsgcmV0dXJuIHRo
aXMuX2Z1bmM7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIHNl
dCB2YWx1ZSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSA9IHgpKCk7IH0KKyAgICAgICAgZ2V0IHZh
bHVlKCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLnZhbHVlKSgpOyB9CisgICAgICAgIGluYygpIHsg
cmV0dXJuICgoKSA9PiBzdXBlci52YWx1ZSsrKSgpOyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJu
ICgoKSA9PiBzdXBlci52YWx1ZS0tKSgpOyB9CisgICAgICAgIHByZUluYygpIHsgcmV0dXJuICgo
KSA9PiArK3N1cGVyLnZhbHVlKSgpOyB9CisgICAgICAgIHByZURlYygpIHsgcmV0dXJuICgoKSA9
PiAtLXN1cGVyLnZhbHVlKSgpOyB9CisgICAgICAgIHBsdXNFcSh4KSB7ICgoKSA9PiBzdXBlci52
YWx1ZSArPSB4KSgpOyB9CisgICAgICAgIG1pbnVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUg
LT0geCkoKTsgfQorICAgICAgICB0aW1lc0VxKHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlICo9IHgp
KCk7IH0KKyAgICAgICAgZGl2RXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgLz0geCkoKTsgfQor
CisgICAgICAgIGZ1bmNEb3QoeCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0K
KyAgICAgICAgZnVuY0JyYWNrZXQoeCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7
IH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwOyBpKyspIHsKKyAgICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1
ZSA9PT0gMjApOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhcnJbaV0udmFsdWUgPSBpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9
IGFycltpXS5pbmMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVl
ID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsx
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAg
ICAgIGFzc2VydCh2ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0K
KworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0g
YXJyW2ldLnByZURlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFs
dWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGFycltpXS5wbHVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7Cisg
ICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJy
W2ldLm1pbnVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJy
W2ldLnZhbHVlID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7
IHJldHVybiBpICsgYTsgfSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAg
ICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNCcmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0K
KworfSwgMTApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0
dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUoZm9vKTsKKyAgICBjbGFzcyBBIHsgfQorICAgIGxl
dCBvYmogPSB7fTsKKyAgICBBLnByb3RvdHlwZS5mb28gPSBvYmo7CisgICAgQS5wcm90b3R5cGVb
MF0gPSBvYmo7CisKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KCkgeyBy
ZXR1cm4gc3VwZXJbZm9vKCldOyB9CisgICAgICAgIGpheigpIHsgcmV0dXJuIHN1cGVyLmZvbzsg
fQorICAgICAgICBiYXIoKSB7IHJldHVybiBzdXBlclswXTsgfQorICAgICAgICAKKyAgICB9CisK
KyAgICBhc3NlcnQoKG5ldyBCKS5iYXooKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoKG5ldyBCKS5q
YXooKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoKG5ldyBCKS5iYXIoKSA9PT0gb2JqKTsKK30pOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBvYmogPSB7fTsKKyAgICBjbGFzcyBBIHsgY29u
c3RydWN0b3IocikgeyB0aGlzLl9mb28gPSByOyB9IH0KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoQS5wcm90b3R5cGUsICcwJywgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZm9v
OyB9IH0pOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXIoKSB7IHJldHVy
biBzdXBlclswXTsgfQorICAgIH0KKworICAgIGxldCByYW5kID0gTWF0aC5yYW5kb20oKTsKKyAg
ICBhc3NlcnQoKG5ldyBCKHJhbmQpKS5iYXIoKSA9PT0gcmFuZCk7Cit9KTsKKwordGVzdChmdW5j
dGlvbigpIHsgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9hcnJheSA9
IFtdOyB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fYXJyYXkucHVz
aCh4KTsKKyAgICAgICAgfQorICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVybiB0aGlzLl9hcnJh
eTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsK
KyAgICAgICAgICAgIGxldCBvID0ge3g6MjAsIHk6MzAsIFtpXTppfTsKKyAgICAgICAgICAgIGZv
ciAoc3VwZXIuZm9vIGluIG8pIHsgfQorICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBb
XTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspCisgICAgICAgIGFyci5wdXNoKG5l
dyBCKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAg
ICBsZXQgb2JqID0gYXJyW2ldOworICAgICAgICBvYmouYmF6KGkpOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJy
W2ldLmFycmF5OworICAgICAgICBhc3NlcnQob2JqLmxlbmd0aCA9PT0gMykKKyAgICAgICAgYXNz
ZXJ0KG9ialswXSA9PT0gJycgKyBpKTsKKyAgICAgICAgYXNzZXJ0KG9ialsxXSA9PT0gJ3gnKQor
ICAgICAgICBhc3NlcnQob2JqWzJdID09PSAneScpCisgICAgfQorfSwgMTAwMCk7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAgICBu
b0lubGluZShmb28pOworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsgdGhp
cy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAgICAgICAgIHRoaXMu
X2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGFycmF5KCkgeyByZXR1cm4g
dGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAg
IGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9IHt4OjIwLCB5OjMwLCBbaV06aX07CisgICAg
ICAgICAgICBmb3IgKHN1cGVyW2ZvbygpXSBpbiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAg
ICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
bGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMp
CisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpb
MV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEw
MDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1
Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGFycmF5
KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9IFsnJyArIGksICJ4Iiwg
InkiXTsKKyAgICAgICAgICAgIGZvciAoc3VwZXIuZm9vIG9mIG8pIHsgfQorICAgICAgICB9Cisg
ICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKysp
CisgICAgICAgIGFyci5wdXNoKG5ldyBCKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5s
ZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ldOworICAgICAgICBvYmouYmF6
KGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgewor
ICAgICAgICBsZXQgb2JqID0gYXJyW2ldLmFycmF5OworICAgICAgICBhc3NlcnQob2JqLmxlbmd0
aCA9PT0gMykKKyAgICAgICAgYXNzZXJ0KG9ialswXSA9PT0gJycgKyBpKTsKKyAgICAgICAgYXNz
ZXJ0KG9ialsxXSA9PT0gJ3gnKQorICAgICAgICBhc3NlcnQob2JqWzJdID09PSAneScpCisgICAg
fQorfSwgMTAwMCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeyBy
ZXR1cm4gJ2Zvbyc7IH0KKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRo
aXMuX2FycmF5ID0gW107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlz
Ll9hcnJheS5wdXNoKHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJu
IHRoaXMuX2FycmF5OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAg
ICBiYXooaSkgeworICAgICAgICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIsICJ5Il07CisgICAg
ICAgICAgICBmb3IgKHN1cGVyW2ZvbygpXSBvZiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAg
ICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
bGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMp
CisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpb
MV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEw
MDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277758</attachid>
            <date>2016-04-29 17:01:09 -0700</date>
            <delta_ts>2016-04-30 00:24:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>107594</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxNi0wNC0yOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXR0ZXIgYW5kIHNldHRlciBvbiBzdXBlciBhcmUgY2FsbGVkIHdpdGggd3JvbmcgInRoaXMi
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTg4NTkxNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
Y2FsbHMgdG8gJ3N1cGVyJyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorICAgICAgICBUaGUgcHJvYmxl
bSBiZWZvcmUgaXMgd2Ugd2VyZSBwYXNzaW5nIHRoZSAnc3VwZXInIChpLmUsIHRoZSBwcm90b3R5
cGUKKyAgICAgICAgb2JqZWN0KSBhcyB0aGUgdGhpcyB2YWx1ZSB0byB0aGVzZSBnZXR0ZXJzL3Nl
dHRlcnMsIHdoaWNoIGlzIHdyb25nLiAKKyAgICAgICAgV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhl
IGNhbGxlcidzIHRoaXMgdmFsdWUuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgYmVoYXZp
b3IsIEkndmUgaW50cm9kdWNlZCBmb3VyIG5ldyBvcGNvZGVzIGFuZCB0aGVpciBjb3JyZXNwb25k
aW5nIERGRyBub2RlczoKKyAgICAgICAgLSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHwgR2V0QnlJ
ZFdpdGhUaGlzCisgICAgICAgIC0gb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyB8IFB1dEJ5SWRXaXRo
VGhpcworICAgICAgICAtIG9wX2dldF9ieV92YWxfd2l0aF90aGlzIHwgR2V0QnlWYWxXaXRoVGhp
cworICAgICAgICAtIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzIHwgUHV0QnlWYWxXaXRoVGhpcwor
CisgICAgICAgIFRoZXNlIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG5vIG9wdGltaXphdGlvbnMuIFRo
ZSBmdXR1cmUgcGxhbiBpcyAKKyAgICAgICAgdG8gdW5pdGUgdGhlbSB3aXRoIHRoZSAqYnlfaWQg
YW5kICpieV92YWwgb3Bjb2RlcyBhbmQgbm9kZXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTUKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRGVyaXZlZENvbnN0cnVj
dG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0
U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6Ok5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tl
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVt
aXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAg
IChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdD
bG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBl
ZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OnB1dFdpdGhUaGlzKToKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cFNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBUaHJlZVN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFR3b1N0dWJBcmdzRlBSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwU3R1YkFyZ3VtZW50czEzNCk6CisgICAgICAgICogaml0L0dQ
UkluZm8uaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvcik6IERlbGV0ZWQuCisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZF93aXRo
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3VwZXItcHJvcGVydHktYWNjZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGZ1bmMpOgorICAgICAgICAodGVzdC5BKToKKyAgICAgICAg
KHRlc3QuQS5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUu
Z2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQik6CisgICAg
ICAgICh0ZXN0LnZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IGZ1bmMpOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5pbmMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlw
ZS5kZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wcmVJbmMpOgorICAgICAgICAodGVz
dC5CLnByb3RvdHlwZS5wcmVEZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wbHVzRXEp
OgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5taW51c0VxKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUudGltZXNFcSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmRpdkVxKToKKyAg
ICAgICAgKHRlc3QuQi5wcm90b3R5cGUuZnVuY0RvdCk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZ1bmNCcmFja2V0KToKKyAgICAgICAgKHRlc3QuZm9vKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUuYmF6KToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuamF6KToKKyAgICAgICAg
KHRlc3QuQi5wcm90b3R5cGUuYmFyKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuaW5kZXgp
OgorICAgICAgICAodGVzdC4pOgorICAgICAgICAodGVzdC5wcm90b3R5cGUuYmFyKToKKyAgICAg
ICAgKHRlc3QuQS5wcm90b3R5cGUuc2V0IGZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBl
LmdldCBhcnJheSk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBmb28pOgorICAgICAg
ICAodGVzdC5vYmopOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5nZXQgY2FsbCk6CisgICAg
ICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBhcHBseSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBpKToKKwogMjAxNi0wNC0y
OSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXh0
ZW5kIG1hdGgtcG93LXN0YWJsZS1yZXN1bHRzLmpzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBmYWlsdXJlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTYw
LDExICs2MCwxNSBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RyeV9nZXRfYnlfaWQiLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgi
IDogOSAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93aXRoX3RoaXMi
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWxf
d2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9n
ZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1dF9ieV9pZF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2RlbF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV92YWxfZGlyZWN0IiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWxfYnlfdmFsIiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaW5kZXgiLCAibGVuZ3RoIiA6IDQg
fSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwyMSBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7
CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsK
KyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9wdXRf
Z2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV9pZDogewogICAgICAgICBB
U1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKQEAgLTIwMywxMiArMjE4LDIwIEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25lcToKICAg
ICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgorICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBv
cF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9w
X2luc3RhbmNlb2ZfY3VzdG9tOgogICAgIGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eToK
ICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgpAQCAtMzE2LDYgKzMzOSw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkBA
IC0zNzEsNiArMzk2LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bAogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2dldF9hcnJheV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3Bf
aW5zdGFuY2VvZjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNywxMSArMTExNyw0NyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgZHVtcFZhbHVlUHJv
ZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRf
YnlfaWRfd2l0aF90aGlzIik7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiZ2V0X2J5X3ZhbF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdHViSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfd2l0aF90aGlzIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihp
ZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X3Zh
bF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxMCw2ICsyNDEwLDE4IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICByZXR1cm4gZHN0OwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHByb3Bl
cnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGdldF9ieV92
YWwuIik7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4
KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1
dF9ieV92YWwuIik7CkBAIC0yNDMzLDYgKzI0NDUsMjEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAi
SW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbC4iKTsK
KworICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisK
KyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhp
c1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRl
eCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJl
dHVybiB2YWx1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUpCiB7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3Bl
cnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsKGRpcmVjdCkuIik7CkBAIC0y
NTU3LDYgKzI1ODQsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRC
eQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIGVtaXRPcGNvZGUob3Bf
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRz
dCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIFVubGlua2Vk
QXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwpAQCAtMjU2OSw2
ICsyNjA2LDE3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgZW1pdE9wY29kZShvcF9w
dXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7
CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxl
KCk7CkBAIC00MjE1LDYgKzQyNjMsMTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb2FkRAogICAgIFZhcmlhYmxlIHByb3RvU2NvcGVWYXIgPSB2YXJpYWJsZShwcm9wZXJ0
eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpOwogICAgIHJldHVybiBlbWl0
R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1l
KSwgcHJvdG9TY29wZVZhciwgVGhyb3dJZk5vdEZvdW5kKTsKIH0KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVuc3VyZVRoaXMoKQoreworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgJiYgaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKKyAg
ICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsK
KworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
fHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgIGVtaXRURFpDaGVjayh0
aGlzUmVnaXN0ZXIoKSk7CisKKyAgICByZXR1cm4gdGhpc1JlZ2lzdGVyKCk7Cit9CiAgICAgCiBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MDIsNiArNTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhpbnQpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExv
YWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW5zdXJlVGhpcygpOwogICAgICAgICB2b2lkIGVtaXRMb2FkVGhp
c0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
KTsKIApAQCAtNTUwLDEyICs1NTEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVC
eUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0QXJndW1lbnRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRCeUluZGV4KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSwxMiArMTQ1LDggQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAog
CiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNl
ZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZFRoaXNG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwotCi0gICAgaWYgKG1fc2hvdWxk
QWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSk7Ci0KKyAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIFVOVVNFRF9QQVJB
TShtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTYyLDE5ICsxNTgsNiBA
QCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdXBlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwotCi0gICAgUmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpT
U3RhY2s6OkNhbGxlZSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7Ci19Ci0KIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9i
amVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIGlmIChn
ZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKSB7CkBAIC0xOTMsNiArMTc2LDIyIEBAIHN0YXRpYyBSZWdpc3Rl
cklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCitzdGF0aWMgUmVnaXN0ZXJJ
RCogZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvcikKK3sKKyAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pOworCisgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CisgICAgY2FsbGVlLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvKTsKK30KKworUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
eworICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJh
dG9yKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgcmVzdWx0KTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld1RhcmdldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBOZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMzA5LDEz
ICszMDgsMTkgQEAgUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZQogICAg
ICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGJyYWNrZXQtPmJhc2UoKSk7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShicmFja2V0LT5z
dWJzY3JpcHQoKSk7Ci0gICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAg
IGlmIChicmFja2V0LT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQo
KSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChtX3RhZy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obV90YWcpOwog
ICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGRvdC0+YmFzZSgpKTsKLSAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5n
ZXQoKSwgZG90LT5pZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoZG90LT5iYXNlKCktPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBk
b3QtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhZyA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRv
dC0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcGxh
dGVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgdGhpcyk7CkBAIC02MjAsMTIgKzYyNSwxNyBAQCBzdGF0aWMgYm9vbCBpc05v
bkluZGV4U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIgaW5mbz8KKyAgICAgICAgUmVnaXN0
ZXJJRCogcmV0OworICAgICAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQo
Km1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWQgPSBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGlkKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRv
ci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworICAgICAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAg
IHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxEZXN0LCBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCiAgICAgUmVnaXN0ZXJJRCogcmV0OwpAQCAtNjUw
LDEwICs2NjAsMTUgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dAog
CiBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCkgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKKyAgICBib29sIGJhc2VJ
c1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
ZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKLSAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC03NTUsMTAgKzc3MCwxMSBAQCBSZWdp
c3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAKIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5W
YWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7Ci0gICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAo
bV9leHByLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoZ2VuZXJhdG9yKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBmdW5jLmdldCgpKTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKwogICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgQVNTRVJUKGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkpOwpAQCAtNzgyLDYg
Kzc5OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgp
KTsKKyAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRh
aWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CkBAIC05MjIsMjAgKzk0MSwzMSBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXI7CisgICAgaWYg
KGJhc2VJc1N1cGVyKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZG8g
dGhpcyBvbmNlIGJlY2F1c2Ugd2UgZWl0aGVyIGhhdmUgYSBub24tVERaIHRoaXMgb3Igd2UgdGhy
b3cuIE9uY2Ugd2UgaGF2ZSBhIG5vbi1URFogdGhpcywgd2UgY2FuJ3QgY2hhbmdlIGl0cyB2YWx1
ZS4KKyAgICAgICAgdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICB9
CiAgICAgaWYgKHN1YnNjcmlwdElzTm9uSW5kZXhTdHJpbmcpIHsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0
YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAg
IGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAg
ICAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChiYXNlSXNTdXBlcikgewogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdGhpc1JlZ2lzdGVyLmdldCgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbElu
VGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwpAQCAtOTUxLDEzICs5ODEsMTUgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgYm9vbCBiYXNlSXNTdXBl
ciA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYmFzZUlzU3VwZXIp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpKTsKKyAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdl
bmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBp
ZiAoYmFzZUlzU3VwZXIpCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9p
ZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9z
aXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwpAQCAtOTcyLDcgKzEwMDQsMTAgQEAg
UmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbjsKICAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlz
QnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKLSAgICAgICAgZnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmNhbGxQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1
ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CkBAIC0xMDM5LDcgKzEwNzQsMTAg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuY3Rpb24uZ2V0KCkpOwogICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNC
dWlsdGluRnVuY3Rpb24oKTsKICAgICBpZiAoZW1pdENhbGxDaGVjaykgewotICAgICAgICBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
YXBwbHlQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChtYXlCZUNhbGwpIHsKQEAgLTExOTYs
MTAgKzEyMzQsMTcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJz
Y3JpcHQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNz
b3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNjZXNz
b3ItPmRpdm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChiYXNl
Tm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwg
cHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNP
ckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFs
KGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgaWYgKGJhc2VO
b2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBA
IC0xMjEyLDE1ICsxMjU3LDI1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5
dGVjb2QKICAgICBBU1NFUlQobV9leHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RB
Y2Nlc3Nvck5vZGUqIGRvdEFjY2Vzc29yID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4o
bV9leHByKTsKICAgICBFeHByZXNzaW9uTm9kZSogYmFzZU5vZGUgPSBkb3RBY2Nlc3Nvci0+YmFz
ZSgpOworICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBiYXNlTm9kZS0+aXNTdXBlck5vZGUoKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGRvdEFjY2Vzc29yLT5pZGVudGlmaWVyKCk7CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9k
ZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyOwor
ICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgaWRl
bnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBSZWdpc3Rl
cklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQo
KSk7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkpOworICAg
IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2
YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0xMzkzLDEwICsxNDQ4LDE3
IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dGUKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKIAog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgp
LCBicmFja2V0QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVu
ZCgpKTsKLSAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJv
cERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZ2lzdGVySUQq
IHZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3Bl
cmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0
KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9k
ZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1
ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTE0MTIsMTAgKzE0NzQsMTcgQEAgUmVnaXN0
ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQq
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCks
IGlkZW50KTsKKyAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGlkZW50KTsKKyAgICBl
bHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCBpZGVudCwgdmFsdWUpOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1
cmVUaGlzKCksIGlkZW50LCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwog
fQpAQCAtMjAxNiw3ICsyMDg1LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRC
eXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
Zm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1
bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAg
IGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50LCBmb3J3YXJkUmVz
dWx0KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9
CkBAIC0yMDI4LDExICsyMTAwLDE5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjpl
bWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwg
bV9pZGVudCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChn
ZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2
YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRv
ciksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1
bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsK
KyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAg
ICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICBy
ZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NiwxMCArMjEz
NiwxNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1
bHQuZ2V0KCkpOwogCi0gICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlw
dCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2Fz
dDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAg
ICBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVy
dHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVu
dCgqbV9zdWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUo
KSwgZm9yd2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3Jp
cHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgZm9y
d2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIH0K
IAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAgLTIwNzMsMTEgKzIxNjAsMTggQEAgUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNj
cmlwdCwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25t
ZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQo
KSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBzdGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29w
ZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CisgICAg
aWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgdXBk
YXRlZFZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAK
ICAgICByZXR1cm4gdXBkYXRlZFZhbHVlOwpAQCAtMjQxMSw3ICsyNTA1LDEwIEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBhc3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25O
b2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlm
IChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShwcm9wZXJ0eU5hbWUsIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDIwLDcgKzI1MTcs
MTAgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlRwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5i
YXNlKCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwg
YXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoYXNzaWdu
Tm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBzdWJzY3JpcHQsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI2MzEsNyArMjczMSwxMCBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShhc3NpZ25Ob2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUt
PmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCks
IGlkZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCks
IGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlz
QnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fbGV4cHIp
OwpAQCAtMjYzOSw3ICsyNzQyLDEwIEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHN1YnNjcmlwdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhc3NpZ25Ob2RlLT5zdWJzY3JpcHQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNz
aWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7
CisgICAgICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQs
IHZhbHVlKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGFz
c2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9sZXhwci0+aXNEZXN0cnVjdHVyaW5nTm9k
ZSgpKTsKQEAgLTM2OTYsMTQgKzM4MDIsMjAgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6
OmJpbmRWYWx1ZShCeQogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGxocyA9IHN0YXRpY19jYXN0
PERvdEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+
YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGxocy0+aWRlbnRpZmllcigpLCB2YWx1ZSk7Cisg
ICAgICAgIGlmIChsaHMtPmJhc2UoKS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBsaHMt
PmlkZW50aWZpZXIoKSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNj
ZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbGhzID0gc3RhdGlj
X2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKGxocy0+YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPnN1YnNj
cmlwdCgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAg
ICAgICBpZiAobGhzLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3Bl
cnR5LmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMDAyNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOTcsNiArMjA5NywxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBU
b3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlz
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgu
dHJ5R2V0Rm9sZGFibGVWaWV3KApAQCAtMjU5NSw2ICsyNjAxLDExIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIwMDI2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTM5LDYgKzM5MzksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X3Zh
bCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbFdpdGhU
aGlzID0gYWRkVG9HcmFwaChHZXRCeVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksIGdldEJ5VmFsV2l0aFRoaXMpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKTsKQEAgLTM5ODAsNiArMzk5MCwyMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
dXRfYnlfdmFsKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNW
YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7
CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygw
KSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogewogICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmRdOwpAQCAtNDAxMyw2ICs0MDM4LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lk
KTsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmRdOworCisgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QnlJZFdpdGhUaGlzLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSkpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKQEAgLTQwMjgsNiArNDA2MywxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQpOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZF07CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3NldHRl
cl9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOCArMTU2LDEyIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfdHJ5
X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9p
ZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNl
IG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6
CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9i
eV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMDI2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MzUsNyArNDM1LDExIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNo
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoK
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDEx
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRyeUdl
dEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5SWQ6CkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0
U2V0dGVyOgogICAgIGNhc2UgR2V0QnlWYWw6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgog
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgogICAgIGNhc2UgQXJyYXlQdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM2LDcg
KzExMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewpAQCAtMTU2MCw2ICsxNTYwLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw5
ICs4NjIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2Ug
UHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CiAgICAgICAgIGNh
c2UgUHV0U2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjAwMjY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIC8qIHRoaXMgbXVzdCBiZSB0aGUgZGlyZWN0bHkgc3Vic2VxdWVudCBwcm9wZXJ0eSBwdXQu
IE5vdGUgdGhhdCBQdXRCeVZhbCAqL1wKICAgICAvKiBvcGNvZGVzIHVzZSBWYXJBcmdzIGJlYXVz
ZSB0aGV5IG1heSBoYXZlIHVwIHRvIDQgY2hpbGRyZW4uICovXAogICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0QnlWYWxX
aXRoVGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dE15QXJndW1lbnRCeVZhbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTG9hZFZhcmFyZ3MsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTE4Niw5ICsxODcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1
c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeUlk
V2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
dXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKFB1dEJ5SWRXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKFB1dEJ5VmFsV2l0aFRoaXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKFB1dEdldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhQdXRTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2V0
dGVyU2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsNiArMTQzLDE2IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUq
IGUKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShleGVj
LCBzdHJ1Y3R1cmUsIHNpemUpKTsKIH0KIAordGVtcGxhdGUgPGJvb2wgc3RyaWN0Pgorc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHB1
dFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc1ZhbCwgc3RyaWN0KTsKKyAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4ZWMs
IGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTc0Myw2ICs3NTMsNzQgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1ByaW1pdGl2ZShleGVjKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlz
LCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGltcGwpLCBzbG90KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVGhpcyk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAo
SlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFz
U3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RH
ZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXQpOworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VW
YWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4
ZWMsIGkpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVP
YmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7Cit9CisK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwpCit7CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29k
ZWRUaGlzLCBlbmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCkpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsKQoreworICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2Rl
ZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIHB1dFdp
dGhUaGlzPHRydWU+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVl
LCBwcm9wZXJ0eSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVu
Y29kZWRWYWx1ZSwgcHJvcGVydHkpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9p
ZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQo
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdF
bXB0eUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKQEAgLTk3LDYg
Kzk5LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmUKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERv
dWJsZShFeGVjU3RhdGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSos
IEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw2ICs2NjUsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOiB7CiAgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4NCw2
ICs5ODksOCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0
IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KICAgICAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2Fz
ZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhU
aGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2Myw2ICsyNzYzLDI1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9
IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3By
KCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMo
KSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSBzdWJzY3JpcHQuZ3ByKCk7CisKKyAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Cisg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0R1BS
LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHN1YnNjcmlwdEdQUik7CisgICAgICAgIG1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAg
IGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC00MTMwLDYgKzQx
NDksMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVn
IGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhp
c1ZhbHVlLmdwcigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlz
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRX
aXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIGlkZW50aWZpZXJVSUQo
bm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjb21waWxl
R2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMwOSw2ICs0MzQ1LDQw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNl
R1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1
ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQz
KCkpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLCBOb1Jlc3VsdCwgYmFzZUdQUiwgdGhpc1Zh
bHVlR1BSLCB2YWx1ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBub1Jlc3VsdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlz
OiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1Zh
bHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2ppdC5n
cmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BS
ID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICBHUFJSZWcgdmFsdWVH
UFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBj
YWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
ID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0
aFRoaXMsIE5vUmVzdWx0LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1
ZUdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1
bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlJZERpcmVj
dDogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY2LDYgKzEyNjYsMjEgQEAgcHVibGlj
OgogCiAKICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICB7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVk
SW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Vl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIFRydXN0ZWRJ
bW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAg
fQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpK
Skogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRy
KGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY4LDYgKzE2OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgog
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CkBA
IC0yNTgsNiArMjU5LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgY2FzZSBQ
dXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJh
eTo6U3RyaW5nKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMjIsNiArMzI1LDggQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAgICAgcmV0dXJuIENh
bm5vdENvbXBpbGU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeVZh
bFdpdGhUaGlzOgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2Ug
UHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMzM4LDYgKzM0Myw4
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgICAg
IHJldHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheVB1c2g6
CiAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZUdl
dEJ5SWQoQWNjZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgogICAgICAgICAgICAgY29tcGls
ZUluKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYxMCw2ICs2MTMsOSBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeUlkKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAg
ICAgICAgICBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAg
ICAgICAgICAgICBjb21waWxlUHV0QWNjZXNzb3JCeUlkKCk7CkBAIC02NDYsMTEgKzY1MiwxNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgog
ICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXRC
eVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIFB1dEJ5VmFs
RGlyZWN0OgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsKCk7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5
UHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVBcnJheVB1c2goKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjQ0OSw2ICsyNDYxLDQ1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFs
dWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKV0pKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVl
IGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhp
c1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHN1
YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdl
dEJ5VmFsV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBzdWJzY3JpcHQp
OworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxl
UHV0QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1
ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFs
dWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291
dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdp
dGhUaGlzKSwKKyAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVl
LCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlm
aWVyTnVtYmVyKCldKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhp
cygpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFs
dWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVlIHByb3Bl
cnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAg
ICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAz
KSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9n
cmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9u
UHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpLAorICAg
ICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsK
KyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkocmV2aXNpb24gMjAwMjY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02NCw2ICs2NCwxMDUgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93
Q2hpY2tlblBhYwogICAgIHN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCBBZGRyZXNzKEdQUkluZm86
OnJlZ1QwKSk7CiB9CiAKK3ZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihH
UFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQ
UlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQoreworICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9u
cyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hv
dWxkIG5vdCBiZSBhbGlhc2VkLiIpOworICAgIH0KKworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQ
UlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKKwor
ICAgIGlmIChzcmNBICE9IGRlc3RBKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoc3JjQSwgZGVzdEEpKTsKKyAgICBpZiAoc3JjQiAhPSBkZXN0QikKKyAgICAgICAgcGFpcnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRlc3RCKSk7CisgICAgaWYgKHNyY0MgIT0gZGVz
dEMpCisgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwor
ICAgIGlmIChzcmNEICE9IGRlc3REKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoc3JjRCwgZGVzdEQpKTsKKworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbnVt
VW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIFJlZ2lzdGVyU2V0
IHNldDsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgfTsK
KworICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAg
ICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Cisg
ICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgc2V0LnNl
dChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygp
OworICAgIH07CisjZW5kaWYKKworICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAg
UmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
cGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAg
ICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIu
Zmlyc3Q7CisgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkg
eworICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAg
YXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgcGFp
cnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEFTU0VSVChtYWRlTW92ZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1ZVNv
dXJjZXMoKSk7CisgICAgICAgIEFTU0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUo
KSk7CisgICAgICAgIC8vIFRoZSBzZXQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3Rl
cnMgYXJlIGVxdWl2YWxlbnQgc2V0cy4gVGhpcyBtZWFucyB3ZSBkb24ndCBoYXZlCisgICAgICAg
IC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJlZ2lzdGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJl
ciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0aGlzIGJ5CisgICAgICAgIC8vIGV4Y2hhbmdpbmcg
cmVnaXN0ZXJzLgorCisgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKKyAg
ICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1swXS5zZWNvbmQ7CisgICAgICAgIHN3YXAoc291cmNl
LCBkZXN0KTsKKyAgICAgICAgcGFpcnMucmVtb3ZlKDApOworCisgICAgICAgIEdQUlJlZyBuZXdT
b3VyY2UgPSBzb3VyY2U7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAg
ICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGlmIChzb3Vy
Y2UgPT0gZGVzdCkgeworICAgICAgICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBXZSBtYXkgaGF2ZSBpbnRyb2R1Y2VkIHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3Vy
Y2UgYW5kIGRlc3RpbmF0aW9uLiBSZW1vdmUgdGhvc2Ugbm93LgorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGF1dG8mIHBh
aXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25k
KSB7CisgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGkt
LTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCisj
aW5jbHVkZSAiUmVnaXN0ZXJNYXAuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTkxMyw2ICs5MTQsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBz
d2FwKGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCisgICAgdm9pZCBzZXR1cEZvdXJTdHViQXJnc0dQ
UihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQs
IEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKTsKKwog
I2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB0ZW1wbGF0ZTxGUFJSZWcgZGVzdEEs
IEZQUlJlZyBkZXN0Qj4KICAgICB2b2lkIHNldHVwVHdvU3R1YkFyZ3NGUFIoRlBSUmVnIHNyY0Es
IEZQUlJlZyBzcmNCKQpAQCAtMTk4Niw2ICsxOTg5LDEyIEBAIHB1YmxpYzoKICNlbmRpZiAvLyBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAogI2lmIE5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQpCisgICAgeworICAgICAgICBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJJbmZvOjphcmd1
bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBH
UFJJbmZvOjphcmd1bWVudEdQUjQsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwor
ICAgIH0KKwogICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzMTM0KEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBzZXR1cFRocmVlU3R1YkFyZ3NH
UFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUkluZm86
OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnMywgYXJnNCk7CkBAIC0yMDM2LDYgKzIwNDUsMTIgQEAg
cHVibGljOgogICAgICAgICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSNCk7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CiAgICAgfQorCisgICAgLy9BTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQorICAgIC8veworICAgIC8vICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OworICAgIC8vICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKKyAgICAvL30KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0z
MiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0dQUkluZm8uaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4MCwyMCArODgwLDYgQEAgcHVibGlj
OgogCiAjZW5kaWYgLy8gQ1BVKFNINCkKIAotaW5saW5lIEdQUlJlZyBhcmd1bWVudFJlZ2lzdGVy
Rm9yKHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBp
ZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQotICAgICAg
ICByZXR1cm4gSW52YWxpZEdQUlJlZzsKLQotICAgIHJldHVybiBHUFJJbmZvOjp0b0FyZ3VtZW50
UmVnaXN0ZXIoYXJndW1lbnRJbmRleCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShhcmd1bWVu
dEluZGV4KTsKLQotICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwotI2VuZGlmCi19Ci0KIC8vIFRo
ZSBiYXNlbGluZSBKSVQgdXNlcyAiYWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3aXRoIHJl
Z1QwIChmb3IgNjQtYml0KQogLy8gYW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQpIHNlcnZp
bmcgYXMgdGhlIGFjY3VtdWxhdG9yIHJlZ2lzdGVyKHMpIGZvcgogLy8gcGFzc2luZyByZXN1bHRz
IG9mIG9uZSBvcGNvZGUgdG8gdGhlIG5leHQuIEhlbmNlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDkgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdHJ5X2dldF9ieV9p
ZCkKICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcykK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9n
ZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRlc19oYXNf
aW5zdGFuY2UpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJ
TkVfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCkBAIC0yODYsOSArMjg4LDExIEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3BhcmVudF9zY29w
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKKyAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgp
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJf
c2V0dGVyX2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAyMDAy
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MDQsNiArNTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
cV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90cnlfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwpA
QCAtNTYyLDggKzU2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9i
eV9pbmRleChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKElu
c3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsNyBAQCB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGlu
dDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRVpTeW10YWJKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSosIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VPSVVpKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJpbmdJbXBs
KiwgdWludDMyX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04g
KCpDX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BF
UkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRl
ZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwg
SlNDZWxsKik7CkBAIC0yNDgsNiArMjQ5LDggQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04g
KCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQzMl90LCBF
bmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0
aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
KTsKK3R5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpKSkopKEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVy
YXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90KTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVjU3RhdGUq
LCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxMyw2ICszMTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0
cnVjdGlvbgogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRp
b25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZU9mZnNldCwgbm90SW5kZXgsIGJhZFR5cGUsIG1v
ZGUsIHByb2ZpbGUsIGRvbmUsIGRvbmUpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5
X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOwor
fQorCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5k
ZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgaW50IHZhbHVlID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKQEAgLTU5Myw2ICs1OTksMTggQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVz
dWx0VlJlZyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9pZF93
aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0
X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1
Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBp
dGVyKQogewogICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKQEAgLTYzOCw2ICs2NTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKElu
c3RydWN0aW9uKgogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYg
aXRlcikKIHsKICAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUy
LDYgKzE3NTIsMjggQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCitf
bGxpbnRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQorICAgIGRpc3Bh
dGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQor
ICAgIGRpc3BhdGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHV0X2J5X3ZhbF93
aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCisKIAogIyBMYXN0bHksIG1ha2Ugc3VyZSB0
aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMu
CiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3Ig
ZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgxNiw0ICs4MTYsOTQgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVz
dCkKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93
aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwg
PSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQcm9w
ZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgUkVU
VVJOKHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dp
dGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9D
KDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IE9QX0MoMykuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAo
TElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUg
PSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoSlNDZWxs
OjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAgaWYg
KFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFzU3RyaW5n
KHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Q
cm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5
U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgaWYgKHN1
YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNV
SW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhi
YXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIFJFVFVSTihhc1N0cmluZyhi
YXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIAorICAgICAgICBSRVRVUk4o
YmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJl
cXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
YXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNL
X0VYQ0VQVElPTigpOworICAgIFJFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBz
bG90KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KQoreworICAgIEJFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygxKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0
QnlJZENvbnRleHQoKSk7CisgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwgcHV0
VmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gT1BfQygy
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgCisgICAgLy9pZiAo
TElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgIC8vICAgIHVpbnQzMl90IGkgPSBz
dWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAvLyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0KCkp
IHsKKyAgICAvLyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7
CisgICAgLy8gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpKSkgeworICAg
IC8vICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsKKyAg
ICAvLyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgIC8vICAgICAgICB9CisgICAgLy8gICAg
ICAgIGVsc2UKKyAgICAvLyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0QnlJ
bmRleChvYmplY3QsIGV4ZWMsIGksIHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIC8vICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAvLyAgICB9CisgICAgLy8g
ICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy8gICAgRU5EKCk7CisgICAgLy99CisKKyAgICBhdXRv
IHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTAgQEAgU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbAogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29w
eV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhf
dGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90
aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhp
cyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlz
KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpzCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1w
cm9wZXJ0eS1hY2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1ODYgQEAKK2Z1bmN0
aW9uIGFzc2VydChiLCBtID0gIkJhZCEiKSB7CisgICAgaWYgKCFiKSB7CisgICAgICAgIHRocm93
IG5ldyBFcnJvcihtKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoZiwgaXRlcnMgPSAxMDAw
KSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyczsgaSsrKQorICAgICAgICBmKCk7Cit9
CisKK2Z1bmN0aW9uIGZ1bmMoeCkgeworICAgIHJldHVybiB4OworfQorbm9JbmxpbmUoZnVuYyk7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9y
KHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0geDsKKyAgICAgICAgfQor
CisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAgICAgICBnZXQg
dmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0
ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgc3VwZXIudmFsdWUgPSB4OyB9CisgICAg
ICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVyLnZhbHVlOyB9CisgICAgfQorCisgICAgbGV0
IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIwKTsKKyAgICB9Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnZhbHVl
ID0gaTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorfSwgMTApOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHZhbHVlKCkgeyByZXR1cm4gJ3ZhbHVlJzsgfQorICAg
IG5vSW5saW5lKHZhbHVlKTsKKworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3Rvcih4
LCBmID0gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB4OworICAg
ICAgICAgICAgdGhpcy5fZnVuYyA9IGY7CisgICAgICAgIH0KKworICAgICAgICBzZXQgdmFsdWUo
eCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhp
cy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0IGZ1bmMoKSB7IHJldHVybiB0aGlzLl9mdW5jOyB9Cisg
ICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBzZXQgdmFsdWUoeCkgeyBz
dXBlclt2YWx1ZSgpXSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gc3VwZXJb
dmFsdWUoKV07IH0KKyAgICAgICAgaW5jKCkgeyByZXR1cm4gc3VwZXJbdmFsdWUoKV0rKzsgfQor
ICAgICAgICBkZWMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXS0tOyB9CisgICAgICAgIHByZUlu
YygpIHsgcmV0dXJuICsrc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgcHJlRGVjKCkgeyByZXR1
cm4gLS1zdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBwbHVzRXEoeCkgeyBzdXBlclt2YWx1ZSgp
XSArPSB4OyB9CisgICAgICAgIG1pbnVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAtPSB4OyB9Cisg
ICAgICAgIHRpbWVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAqPSB4OyB9CisgICAgICAgIGRpdkVx
KHgpIHsgc3VwZXJbdmFsdWUoKV0gLz0geDsgfQorCisgICAgICAgIGZ1bmNEb3QoeCkgeyByZXR1
cm4gc3VwZXIuZnVuYyh4KTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4KSB7IHJldHVybiBzdXBl
ci5mdW5jKHgpOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAg
fQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB0ID0g
YXJyW2ldLnZhbHVlOworICAgICAgICBhc3NlcnQodCA9PT0gMjApOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0udmFsdWUgPSBpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsKKyAgICAgICAgYXNz
ZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmRl
YygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
bGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQo
YXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygpOworICAgICAgICBh
c3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS5wbHVzRXEoaSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7CisgICAgfQorICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0u
dmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKmkp
OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsK
KyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
cnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsgfSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNCcmFj
a2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgsIGYgPSBmdW5jKQor
ICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHg7CisgICAgICAgICAgICB0aGlz
Ll9mdW5jID0gZjsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3Zh
bHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQor
ICAgICAgICBnZXQgZnVuYygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7IH0KKyAgICB9CisKKyAgICBj
bGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIHNldCB2YWx1ZSh4KSB7ICgoKSA9PiBzdXBlci52
YWx1ZSA9IHgpKCk7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gKCgpID0+IHN1cGVy
LnZhbHVlKSgpOyB9CisgICAgICAgIGluYygpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52YWx1ZSsr
KSgpOyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52YWx1ZS0tKSgpOyB9
CisgICAgICAgIHByZUluYygpIHsgcmV0dXJuICgoKSA9PiArK3N1cGVyLnZhbHVlKSgpOyB9Cisg
ICAgICAgIHByZURlYygpIHsgcmV0dXJuICgoKSA9PiAtLXN1cGVyLnZhbHVlKSgpOyB9CisgICAg
ICAgIHBsdXNFcSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSArPSB4KSgpOyB9CisgICAgICAgIG1p
bnVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgLT0geCkoKTsgfQorICAgICAgICB0aW1lc0Vx
KHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlICo9IHgpKCk7IH0KKyAgICAgICAgZGl2RXEoeCkgeyAo
KCkgPT4gc3VwZXIudmFsdWUgLz0geCkoKTsgfQorCisgICAgICAgIGZ1bmNEb3QoeCkgeyByZXR1
cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICAgICAgZnVuY0JyYWNrZXQoeCkgeyBy
ZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0g
W107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyLnB1
c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gMjApOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0udmFsdWUgPSBpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsKKyAgICAgICAgYXNz
ZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmRl
YygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
bGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQo
YXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygpOworICAgICAgICBh
c3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS5wbHVzRXEoaSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7CisgICAgfQorICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0u
dmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKmkp
OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsK
KyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
cnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsgfSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNCcmFj
a2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUo
Zm9vKTsKKyAgICBjbGFzcyBBIHsgfQorICAgIGxldCBvYmogPSB7fTsKKyAgICBBLnByb3RvdHlw
ZS5mb28gPSBvYmo7CisgICAgQS5wcm90b3R5cGVbMF0gPSBvYmo7CisKKworICAgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KCkgeyByZXR1cm4gc3VwZXJbZm9vKCldOyB9CisgICAg
ICAgIGpheigpIHsgcmV0dXJuIHN1cGVyLmZvbzsgfQorICAgICAgICBiYXIoKSB7IHJldHVybiBz
dXBlclswXTsgfQorICAgICAgICAKKyAgICB9CisKKyAgICBhc3NlcnQoKG5ldyBCKS5iYXooKSA9
PT0gb2JqKTsKKyAgICBhc3NlcnQoKG5ldyBCKS5qYXooKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQo
KG5ldyBCKS5iYXIoKSA9PT0gb2JqKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNs
YXNzIEEgeyB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspCisgICAgICAgIEEu
cHJvdG90eXBlW2ldID0gaTsKKworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBp
bmRleChpKSB7IHJldHVybiBzdXBlcltpXTsgfQorICAgIH0KKworICAgIGxldCBiID0gbmV3IEI7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGIu
aW5kZXgoaSkgPT09IGkpOworICAgIH0KK30sIDUwKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBsZXQgb2JqID0ge307CisgICAgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKHIpIHsgdGhpcy5fZm9v
ID0gcjsgfSB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAnMCcsIHsg
Z2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX2ZvbzsgfSB9KTsKKworICAgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHsKKyAgICAgICAgYmFyKCkgeyByZXR1cm4gc3VwZXJbMF07IH0KKyAgICB9CisK
KyAgICBsZXQgcmFuZCA9IE1hdGgucmFuZG9tKCk7CisgICAgYXNzZXJ0KChuZXcgQihyYW5kKSku
YmFyKCkgPT09IHJhbmQpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7IGNsYXNzIEEgeworICAg
ICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9v
KHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAg
ICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFz
cyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9IHt4
OjIwLCB5OjMwLCBbaV06aX07CisgICAgICAgICAgICBmb3IgKHN1cGVyLmZvbyBpbiBvKSB7IH0K
KyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAg
ICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVu
Z3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNz
ZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7
CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9
PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0
aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUoZm9vKTsKKyAgICBjbGFz
cyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5ID0gW107IH0KKyAgICAg
ICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5wdXNoKHgpOworICAgICAg
ICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5OyB9CisgICAgfQor
CisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgeworICAgICAgICAgICAg
bGV0IG8gPSB7eDoyMCwgeTozMCwgW2ldOml9OworICAgICAgICAgICAgZm9yIChzdXBlcltmb28o
KV0gaW4gbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2gobmV3IEIpOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmog
PSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBhcnJbaV0uYXJyYXk7
CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBhc3NlcnQob2JqWzBd
ID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcpCisgICAgICAgIGFz
c2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5ID0g
W107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5wdXNo
KHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5
OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgewor
ICAgICAgICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIsICJ5Il07CisgICAgICAgICAgICBmb3Ig
KHN1cGVyLmZvbyBvZiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcg
Qik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
bGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltp
XS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2Vy
dChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAg
ICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgY2xh
c3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9hcnJheSA9IFtdOyB9CisgICAg
ICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fYXJyYXkucHVzaCh4KTsKKyAgICAg
ICAgfQorICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVybiB0aGlzLl9hcnJheTsgfQorICAgIH0K
KworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsKKyAgICAgICAgICAg
IGxldCBvID0gWycnICsgaSwgIngiLCAieSJdOworICAgICAgICAgICAgZm9yIChzdXBlcltmb28o
KV0gb2YgbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2gobmV3IEIpOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmog
PSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBhcnJbaV0uYXJyYXk7
CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBhc3NlcnQob2JqWzBd
ID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcpCisgICAgICAgIGFz
c2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICB0
aGlzLl9mb28gPSBudWxsOworICAgICAgICB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAg
ICAgICAgdGhpcy5fZm9vID0geDsKKyAgICAgICAgfQorICAgICAgICBnZXQgZm9vKCkgeyByZXR1
cm4gdGhpcy5fZm9vOyB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9iaihpKSB7IHJldHVybiB7bzog
aX07IH0KKyAgICBub0lubGluZShvYmopOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAg
ICAgICBiYXooaSkgeworICAgICAgICAgICAgOyh7bzogc3VwZXIuZm9vfSA9IG9iaihpKSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKChuZXcgQikpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0uYmF6KGkpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYXJyW2ldLmZvbyA9PT0gaSk7CisgICAgfQorfSwgMTAwKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAnZm9vJzsgfQorICAgIG5vSW5saW5lKGZv
byk7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAg
dGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2ZvbyA9IHg7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGZvbygpIHsgcmV0
dXJuIHRoaXMuX2ZvbzsgfQorICAgIH0KKyAgICBmdW5jdGlvbiBvYmooaSkgeyByZXR1cm4ge286
IGl9OyB9CisgICAgbm9JbmxpbmUob2JqKTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAg
ICAgICAgYmF6KGkpIHsKKyAgICAgICAgICAgIDsoe286IHN1cGVyW2ZvbygpXX0gPSBvYmooaSkp
OworICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnIucHVzaCgobmV3IEIpKTsKKyAgICB9Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLmJheihp
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXNzZXJ0KGFycltpXS5mb28gPT09IGkpOworICAgIH0KK30sIDEwMCk7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
ICAgdGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBnZXQgY2FsbCgpIHsKKyAg
ICAgICAgICAgIGxldCByZXQgPSAoKSA9PiAnY2FsbCc7CisgICAgICAgICAgICBub0lubGluZShy
ZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgICAgICBnZXQgYXBw
bHkoKSB7IAorICAgICAgICAgICAgbGV0IHJldCA9ICgpID0+ICdhcHBseSc7CisgICAgICAgICAg
ICBub0lubGluZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgZm9vKCkgeworICAgICAgICAg
ICAgcmV0dXJuIHN1cGVyLmNhbGwoe30sIDIwLCAzMCk7CisgICAgICAgIH0KKyAgICAgICAgYmFy
KCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmFwcGx5KHt9LCBbMTAsIDIwXSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAgICAg
ICBsZXQgYiA9IG5ldyBCOworICAgICAgICBhc3NlcnQoYi5mb28oKSA9PT0gJ2NhbGwnKTsKKyAg
ICAgICAgYXNzZXJ0KGIuYmFyKCkgPT09ICdhcHBseScpOworICAgIH0KK30pOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcihpKSB7IHRoaXMu
X2kgPSBpOyB9CisgICAgICAgIGdldCBmb28oKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oc3RyaW5ncywgLi4udmFsdWVzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtzdHJpbmdz
LCB2YWx1ZXNdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdldCBpKCkgeyBy
ZXR1cm4gdGhpcy5faTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAg
ICAgYmF6KCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmZvb2BoZWxsbyR7c3VwZXIuaX13
b3JsZGA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IGIgPSBuZXcgQihpKTsKKyAg
ICAgICAgYXJyLnB1c2goYik7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGxldCByID0gYXJyW2ldLmJheigpOworICAgICAgICBhc3NlcnQoci5s
ZW5ndGggPT09IDIpOworICAgICAgICBhc3NlcnQoclswXS5sZW5ndGggPT09IDIpOworICAgICAg
ICBhc3NlcnQoclswXVswXSA9PT0gJ2hlbGxvJyk7CisgICAgICAgIGFzc2VydChyWzBdWzFdID09
PSAnd29ybGQnKTsKKyAgICAgICAgYXNzZXJ0KHJbMV0ubGVuZ3RoID09PSAxKTsKKyAgICAgICAg
YXNzZXJ0KHJbMV1bMF0gPT09IGkpOworICAgIH0KK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277802</attachid>
            <date>2016-04-30 00:24:33 -0700</date>
            <delta_ts>2016-04-30 17:26:56 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>118997</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxNi0wNC0yOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXR0ZXIgYW5kIHNldHRlciBvbiBzdXBlciBhcmUgY2FsbGVkIHdpdGggd3JvbmcgInRoaXMi
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTg4NTkxNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
Y2FsbHMgdG8gJ3N1cGVyJyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorICAgICAgICBUaGUgcHJvYmxl
bSBiZWZvcmUgaXMgd2Ugd2VyZSBwYXNzaW5nIHRoZSAnc3VwZXInIChpLmUsIHRoZSBwcm90b3R5
cGUKKyAgICAgICAgb2JqZWN0KSBhcyB0aGUgdGhpcyB2YWx1ZSB0byB0aGVzZSBnZXR0ZXJzL3Nl
dHRlcnMsIHdoaWNoIGlzIHdyb25nLiAKKyAgICAgICAgV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhl
IGNhbGxlcidzIHRoaXMgdmFsdWUuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgYmVoYXZp
b3IsIEkndmUgaW50cm9kdWNlZCBmb3VyIG5ldyBvcGNvZGVzIGFuZCB0aGVpciBjb3JyZXNwb25k
aW5nIERGRyBub2RlczoKKyAgICAgICAgLSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHwgR2V0QnlJ
ZFdpdGhUaGlzCisgICAgICAgIC0gb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyB8IFB1dEJ5SWRXaXRo
VGhpcworICAgICAgICAtIG9wX2dldF9ieV92YWxfd2l0aF90aGlzIHwgR2V0QnlWYWxXaXRoVGhp
cworICAgICAgICAtIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzIHwgUHV0QnlWYWxXaXRoVGhpcwor
CisgICAgICAgIFRoZXNlIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG5vIG9wdGltaXphdGlvbnMuIFRo
ZSBmdXR1cmUgcGxhbiBpcyAKKyAgICAgICAgdG8gdW5pdGUgdGhlbSB3aXRoIHRoZSAqYnlfaWQg
YW5kICpieV92YWwgb3Bjb2RlcyBhbmQgbm9kZXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTUKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRGVyaXZlZENvbnN0cnVj
dG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0
U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6Ok5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tl
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVt
aXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAg
IChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdD
bG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBl
ZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OnB1dFdpdGhUaGlzKToKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cFNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBUaHJlZVN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFR3b1N0dWJBcmdzRlBSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwU3R1YkFyZ3VtZW50czEzNCk6CisgICAgICAgICogaml0L0dQ
UkluZm8uaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvcik6IERlbGV0ZWQuCisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZF93aXRo
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3VwZXItcHJvcGVydHktYWNjZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGZ1bmMpOgorICAgICAgICAodGVzdC5BKToKKyAgICAgICAg
KHRlc3QuQS5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUu
Z2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQik6CisgICAg
ICAgICh0ZXN0LnZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IGZ1bmMpOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5pbmMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlw
ZS5kZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wcmVJbmMpOgorICAgICAgICAodGVz
dC5CLnByb3RvdHlwZS5wcmVEZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wbHVzRXEp
OgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5taW51c0VxKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUudGltZXNFcSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmRpdkVxKToKKyAg
ICAgICAgKHRlc3QuQi5wcm90b3R5cGUuZnVuY0RvdCk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZ1bmNCcmFja2V0KToKKyAgICAgICAgKHRlc3QuZm9vKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUuYmF6KToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuamF6KToKKyAgICAgICAg
KHRlc3QuQi5wcm90b3R5cGUuYmFyKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuaW5kZXgp
OgorICAgICAgICAodGVzdC4pOgorICAgICAgICAodGVzdC5wcm90b3R5cGUuYmFyKToKKyAgICAg
ICAgKHRlc3QuQS5wcm90b3R5cGUuc2V0IGZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBl
LmdldCBhcnJheSk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBmb28pOgorICAgICAg
ICAodGVzdC5vYmopOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5nZXQgY2FsbCk6CisgICAg
ICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBhcHBseSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBpKToKKwogMjAxNi0wNC0y
OSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXh0
ZW5kIG1hdGgtcG93LXN0YWJsZS1yZXN1bHRzLmpzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBmYWlsdXJlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTYw
LDExICs2MCwxNSBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RyeV9nZXRfYnlfaWQiLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgi
IDogOSAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93aXRoX3RoaXMi
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWxf
d2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9n
ZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1dF9ieV9pZF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2RlbF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV92YWxfZGlyZWN0IiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWxfYnlfdmFsIiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaW5kZXgiLCAibGVuZ3RoIiA6IDQg
fSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwyMSBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7
CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsK
KyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9wdXRf
Z2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV9pZDogewogICAgICAgICBB
U1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKQEAgLTIwMywxMiArMjE4LDIwIEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25lcToKICAg
ICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgorICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBv
cF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9w
X2luc3RhbmNlb2ZfY3VzdG9tOgogICAgIGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eToK
ICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgpAQCAtMzE2LDYgKzMzOSw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkBA
IC0zNzEsNiArMzk2LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bAogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2dldF9hcnJheV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3Bf
aW5zdGFuY2VvZjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNywxMSArMTExNyw0NyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgZHVtcFZhbHVlUHJv
ZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRf
YnlfaWRfd2l0aF90aGlzIik7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiZ2V0X2J5X3ZhbF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdHViSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfd2l0aF90aGlzIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihp
ZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X3Zh
bF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxMCw2ICsyNDEwLDE4IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICByZXR1cm4gZHN0OwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHByb3Bl
cnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGdldF9ieV92
YWwuIik7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4
KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1
dF9ieV92YWwuIik7CkBAIC0yNDMzLDYgKzI0NDUsMjEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAi
SW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbC4iKTsK
KworICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisK
KyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhp
c1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRl
eCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJl
dHVybiB2YWx1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUpCiB7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3Bl
cnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsKGRpcmVjdCkuIik7CkBAIC0y
NTU3LDYgKzI1ODQsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRC
eQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIGVtaXRPcGNvZGUob3Bf
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRz
dCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIFVubGlua2Vk
QXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwpAQCAtMjU2OSw2
ICsyNjA2LDE3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgZW1pdE9wY29kZShvcF9w
dXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7
CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxl
KCk7CkBAIC00MjE1LDYgKzQyNjMsMTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb2FkRAogICAgIFZhcmlhYmxlIHByb3RvU2NvcGVWYXIgPSB2YXJpYWJsZShwcm9wZXJ0
eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpOwogICAgIHJldHVybiBlbWl0
R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1l
KSwgcHJvdG9TY29wZVZhciwgVGhyb3dJZk5vdEZvdW5kKTsKIH0KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVuc3VyZVRoaXMoKQoreworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgJiYgaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKKyAg
ICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsK
KworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
fHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgIGVtaXRURFpDaGVjayh0
aGlzUmVnaXN0ZXIoKSk7CisKKyAgICByZXR1cm4gdGhpc1JlZ2lzdGVyKCk7Cit9CiAgICAgCiBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MDIsNiArNTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhpbnQpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExv
YWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW5zdXJlVGhpcygpOwogICAgICAgICB2b2lkIGVtaXRMb2FkVGhp
c0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
KTsKIApAQCAtNTUwLDEyICs1NTEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVC
eUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0QXJndW1lbnRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRCeUluZGV4KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSwxMiArMTQ1LDggQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAog
CiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNl
ZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZFRoaXNG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwotCi0gICAgaWYgKG1fc2hvdWxk
QWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSk7Ci0KKyAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIFVOVVNFRF9QQVJB
TShtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTYyLDE5ICsxNTgsNiBA
QCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdXBlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwotCi0gICAgUmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpT
U3RhY2s6OkNhbGxlZSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7Ci19Ci0KIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9i
amVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIGlmIChn
ZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKSB7CkBAIC0xOTMsNiArMTc2LDIyIEBAIHN0YXRpYyBSZWdpc3Rl
cklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCitzdGF0aWMgUmVnaXN0ZXJJ
RCogZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvcikKK3sKKyAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pOworCisgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CisgICAgY2FsbGVlLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvKTsKK30KKworUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
eworICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJh
dG9yKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgcmVzdWx0KTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld1RhcmdldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBOZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMzA5LDEz
ICszMDgsMTkgQEAgUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZQogICAg
ICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGJyYWNrZXQtPmJhc2UoKSk7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShicmFja2V0LT5z
dWJzY3JpcHQoKSk7Ci0gICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAg
IGlmIChicmFja2V0LT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQo
KSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChtX3RhZy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obV90YWcpOwog
ICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGRvdC0+YmFzZSgpKTsKLSAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5n
ZXQoKSwgZG90LT5pZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoZG90LT5iYXNlKCktPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBk
b3QtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhZyA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRv
dC0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcGxh
dGVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgdGhpcyk7CkBAIC02MjAsMTIgKzYyNSwxNyBAQCBzdGF0aWMgYm9vbCBpc05v
bkluZGV4U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIgaW5mbz8KKyAgICAgICAgUmVnaXN0
ZXJJRCogcmV0OworICAgICAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQo
Km1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWQgPSBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGlkKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRv
ci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworICAgICAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAg
IHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxEZXN0LCBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCiAgICAgUmVnaXN0ZXJJRCogcmV0OwpAQCAtNjUw
LDEwICs2NjAsMTUgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dAog
CiBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCkgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKKyAgICBib29sIGJhc2VJ
c1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
ZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKLSAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC03NTUsMTAgKzc3MCwxMSBAQCBSZWdp
c3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAKIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5W
YWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7Ci0gICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAo
bV9leHByLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoZ2VuZXJhdG9yKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBmdW5jLmdldCgpKTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKwogICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgQVNTRVJUKGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkpOwpAQCAtNzgyLDYg
Kzc5OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgp
KTsKKyAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRh
aWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CkBAIC05MjIsMjAgKzk0MSwzMSBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXI7CisgICAgaWYg
KGJhc2VJc1N1cGVyKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZG8g
dGhpcyBvbmNlIGJlY2F1c2Ugd2UgZWl0aGVyIGhhdmUgYSBub24tVERaIHRoaXMgb3Igd2UgdGhy
b3cuIE9uY2Ugd2UgaGF2ZSBhIG5vbi1URFogdGhpcywgd2UgY2FuJ3QgY2hhbmdlIGl0cyB2YWx1
ZS4KKyAgICAgICAgdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICB9
CiAgICAgaWYgKHN1YnNjcmlwdElzTm9uSW5kZXhTdHJpbmcpIHsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0
YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAg
IGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAg
ICAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChiYXNlSXNTdXBlcikgewogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdGhpc1JlZ2lzdGVyLmdldCgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbElu
VGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwpAQCAtOTUxLDEzICs5ODEsMTUgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgYm9vbCBiYXNlSXNTdXBl
ciA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYmFzZUlzU3VwZXIp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpKTsKKyAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdl
bmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBp
ZiAoYmFzZUlzU3VwZXIpCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9p
ZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9z
aXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwpAQCAtOTcyLDcgKzEwMDQsMTAgQEAg
UmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbjsKICAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlz
QnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKLSAgICAgICAgZnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmNhbGxQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1
ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CkBAIC0xMDM5LDcgKzEwNzQsMTAg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuY3Rpb24uZ2V0KCkpOwogICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNC
dWlsdGluRnVuY3Rpb24oKTsKICAgICBpZiAoZW1pdENhbGxDaGVjaykgewotICAgICAgICBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
YXBwbHlQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChtYXlCZUNhbGwpIHsKQEAgLTExOTYs
MTAgKzEyMzQsMTcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJz
Y3JpcHQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNz
b3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNjZXNz
b3ItPmRpdm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChiYXNl
Tm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwg
cHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNP
ckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFs
KGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgaWYgKGJhc2VO
b2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBA
IC0xMjEyLDE1ICsxMjU3LDI1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5
dGVjb2QKICAgICBBU1NFUlQobV9leHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RB
Y2Nlc3Nvck5vZGUqIGRvdEFjY2Vzc29yID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4o
bV9leHByKTsKICAgICBFeHByZXNzaW9uTm9kZSogYmFzZU5vZGUgPSBkb3RBY2Nlc3Nvci0+YmFz
ZSgpOworICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBiYXNlTm9kZS0+aXNTdXBlck5vZGUoKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGRvdEFjY2Vzc29yLT5pZGVudGlmaWVyKCk7CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9k
ZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyOwor
ICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgaWRl
bnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBSZWdpc3Rl
cklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQo
KSk7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkpOworICAg
IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2
YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0xMzkzLDEwICsxNDQ4LDE3
IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dGUKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKIAog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgp
LCBicmFja2V0QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVu
ZCgpKTsKLSAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJv
cERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZ2lzdGVySUQq
IHZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3Bl
cmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0
KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9k
ZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1
ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTE0MTIsMTAgKzE0NzQsMTcgQEAgUmVnaXN0
ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQq
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCks
IGlkZW50KTsKKyAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGlkZW50KTsKKyAgICBl
bHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCBpZGVudCwgdmFsdWUpOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1
cmVUaGlzKCksIGlkZW50LCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwog
fQpAQCAtMjAxNiw3ICsyMDg1LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRC
eXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
Zm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1
bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAg
IGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50LCBmb3J3YXJkUmVz
dWx0KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9
CkBAIC0yMDI4LDExICsyMTAwLDE5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjpl
bWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwg
bV9pZGVudCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChn
ZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2
YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRv
ciksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1
bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsK
KyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAg
ICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICBy
ZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NiwxMCArMjEz
NiwxNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1
bHQuZ2V0KCkpOwogCi0gICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlw
dCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2Fz
dDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAg
ICBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVy
dHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVu
dCgqbV9zdWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUo
KSwgZm9yd2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3Jp
cHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgZm9y
d2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIH0K
IAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAgLTIwNzMsMTEgKzIxNjAsMTggQEAgUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNj
cmlwdCwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25t
ZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQo
KSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBzdGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29w
ZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CisgICAg
aWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgdXBk
YXRlZFZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAK
ICAgICByZXR1cm4gdXBkYXRlZFZhbHVlOwpAQCAtMjQxMSw3ICsyNTA1LDEwIEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBhc3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25O
b2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlm
IChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShwcm9wZXJ0eU5hbWUsIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDIwLDcgKzI1MTcs
MTAgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlRwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5i
YXNlKCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwg
YXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoYXNzaWdu
Tm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBzdWJzY3JpcHQsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI2MzEsNyArMjczMSwxMCBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShhc3NpZ25Ob2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUt
PmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCks
IGlkZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCks
IGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlz
QnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fbGV4cHIp
OwpAQCAtMjYzOSw3ICsyNzQyLDEwIEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHN1YnNjcmlwdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhc3NpZ25Ob2RlLT5zdWJzY3JpcHQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNz
aWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7
CisgICAgICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQs
IHZhbHVlKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGFz
c2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9sZXhwci0+aXNEZXN0cnVjdHVyaW5nTm9k
ZSgpKTsKQEAgLTM2OTYsMTQgKzM4MDIsMjAgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6
OmJpbmRWYWx1ZShCeQogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGxocyA9IHN0YXRpY19jYXN0
PERvdEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+
YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGxocy0+aWRlbnRpZmllcigpLCB2YWx1ZSk7Cisg
ICAgICAgIGlmIChsaHMtPmJhc2UoKS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBsaHMt
PmlkZW50aWZpZXIoKSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNj
ZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbGhzID0gc3RhdGlj
X2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKGxocy0+YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPnN1YnNj
cmlwdCgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAg
ICAgICBpZiAobGhzLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3Bl
cnR5LmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMDAyNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOTcsNiArMjA5NywxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBU
b3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlz
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgu
dHJ5R2V0Rm9sZGFibGVWaWV3KApAQCAtMjU5NSw2ICsyNjAxLDExIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIwMDI2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTM5LDYgKzM5MzksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X3Zh
bCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbFdpdGhU
aGlzID0gYWRkVG9HcmFwaChHZXRCeVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksIGdldEJ5VmFsV2l0aFRoaXMpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKTsKQEAgLTM5ODAsNiArMzk5MCwyMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
dXRfYnlfdmFsKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNW
YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7
CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygw
KSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogewogICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmRdOwpAQCAtNDAxMyw2ICs0MDM4LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lk
KTsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmRdOworCisgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QnlJZFdpdGhUaGlzLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSkpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKQEAgLTQwMjgsNiArNDA2MywxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQpOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZF07CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3NldHRl
cl9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOCArMTU2LDEyIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfdHJ5
X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9p
ZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNl
IG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6
CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9i
eV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMDI2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MzUsNyArNDM1LDExIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNo
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoK
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDEx
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRyeUdl
dEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5SWQ6CkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0
U2V0dGVyOgogICAgIGNhc2UgR2V0QnlWYWw6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgog
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgogICAgIGNhc2UgQXJyYXlQdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM2LDcg
KzExMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewpAQCAtMTU2MCw2ICsxNTYwLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw5
ICs4NjIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2Ug
UHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CiAgICAgICAgIGNh
c2UgUHV0U2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjAwMjY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIC8qIHRoaXMgbXVzdCBiZSB0aGUgZGlyZWN0bHkgc3Vic2VxdWVudCBwcm9wZXJ0eSBwdXQu
IE5vdGUgdGhhdCBQdXRCeVZhbCAqL1wKICAgICAvKiBvcGNvZGVzIHVzZSBWYXJBcmdzIGJlYXVz
ZSB0aGV5IG1heSBoYXZlIHVwIHRvIDQgY2hpbGRyZW4uICovXAogICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0QnlWYWxX
aXRoVGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dE15QXJndW1lbnRCeVZhbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTG9hZFZhcmFyZ3MsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTE4Niw5ICsxODcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1
c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeUlk
V2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
dXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKFB1dEJ5SWRXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKFB1dEJ5VmFsV2l0aFRoaXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKFB1dEdldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhQdXRTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2V0
dGVyU2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsNiArMTQzLDE2IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUq
IGUKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShleGVj
LCBzdHJ1Y3R1cmUsIHNpemUpKTsKIH0KIAordGVtcGxhdGUgPGJvb2wgc3RyaWN0Pgorc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHB1
dFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc1ZhbCwgc3RyaWN0KTsKKyAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4ZWMs
IGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTc0Myw2ICs3NTMsNzQgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1ByaW1pdGl2ZShleGVjKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlz
LCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGltcGwpLCBzbG90KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVGhpcyk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAo
SlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFz
U3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RH
ZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXQpOworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VW
YWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4
ZWMsIGkpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVP
YmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7Cit9CisK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwpCit7CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29k
ZWRUaGlzLCBlbmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCkpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsKQoreworICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2Rl
ZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIHB1dFdp
dGhUaGlzPHRydWU+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVl
LCBwcm9wZXJ0eSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVu
Y29kZWRWYWx1ZSwgcHJvcGVydHkpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9p
ZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQo
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdF
bXB0eUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKQEAgLTk3LDYg
Kzk5LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmUKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERv
dWJsZShFeGVjU3RhdGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSos
IEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw2ICs2NjUsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOiB7CiAgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4NCw2
ICs5ODksOCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0
IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KICAgICAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2Fz
ZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhU
aGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4MSw2ICsyNjgx
LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
YmFzZVRhZyA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJh
c2UucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVl
LnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5w
YXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2Rl
LT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRUYWcgPSBzdWJzY3JpcHQudGFn
R1BSKCk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRQYXlsb2FkID0gc3Vic2NyaXB0LnBheWxv
YWRHUFIoKTsKKworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisKKyAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdp
dGhUaGlzLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQYXls
b2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQsIHN1YnNjcmlwdFRhZywgc3Vic2Ny
aXB0UGF5bG9hZCk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2Ug
UHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC0yODU5LDYgKzI4ODMsNzMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6IHsKKyAgICAgICAgaWYgKEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzIDwgOCkgeworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
aGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIG9uIFg4NiAob3IgTUlQUywgSSBndWVzcykgZm9yIHRoaXMu
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+
PSA2KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIG1faml0
LnBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4KyspOworCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZVRh
ZyA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0g
YmFzZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAg
ICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVRhZyA9IHRoaXNWYWx1ZS50YWdHUFIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BS
KCk7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlUYWcgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlQYXlsb2FkID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICAg
ICAgbV9qaXQucG9rZShiYXNlUGF5bG9hZCwgaW5kZXgrKyk7CisgICAgICAgICAgICAgICAgbV9q
aXQucG9rZShiYXNlVGFnLCBpbmRleCsrKTsKKworICAgICAgICAgICAgICAgIG1faml0LnBva2Uo
dGhpc1ZhbHVlUGF5bG9hZCwgaW5kZXgrKyk7CisgICAgICAgICAgICAgICAgbV9qaXQucG9rZSh0
aGlzVmFsdWVUYWcsIGluZGV4KyspOworCisgICAgICAgICAgICAgICAgbV9qaXQucG9rZShwcm9w
ZXJ0eVBheWxvYWQsIGluZGV4KyspOworICAgICAgICAgICAgICAgIG1faml0LnBva2UocHJvcGVy
dHlUYWcsIGluZGV4KyspOworCisgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgICAgICBHUFJSZWcgdmFs
dWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWQg
PSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKHZhbHVlUGF5bG9h
ZCwgaW5kZXgrKyk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKHZhbHVlVGFnLCBpbmRleCsrKTsK
KworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGwo
bV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyk7CisgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gOCk7Cisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJn
Q2hpbGQobm9kZSwgMCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQ
UigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFzZS5wYXlsb2FkR1BSKCk7
CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbV9qaXQuZ3JhcGgo
KS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFn
ID0gdGhpc1ZhbHVlLnRhZ0dQUigpOworICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVBheWxv
YWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
cHJvcGVydHkodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAg
ICAgICAgICBHUFJSZWcgcHJvcGVydHlUYWcgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eVBheWxvYWQgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7CisgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0No
aWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVRhZyA9IHZhbHVlLnRhZ0dQ
UigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIo
KTsKKworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAgY2FsbE9w
ZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9w
ZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlz
LAorICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1Zh
bHVlVGFnLCB0aGlzVmFsdWVQYXlsb2FkLCBwcm9wZXJ0eVRhZywgcHJvcGVydHlQYXlsb2FkLCB2
YWx1ZVRhZywgdmFsdWVQYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlJl
ZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CkBAIC00MDMzLDYgKzQxMjQs
MjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJh
c2VUYWcgPSBiYXNlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQgPSBiYXNl
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNUYWcgPSB0aGlzVmFsdWUudGFnR1BS
KCk7CisgICAgICAgIEdQUlJlZyB0aGlzUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7
CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKyAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlz
VGFnLCB0aGlzUGF5bG9hZCwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
KTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+
cHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpAQCAtNDMwNSw2ICs0NDE3
LDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlVGFnID0gYmFzZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlzVmFsdWUu
dGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVQYXlsb2FkID0gdGhpc1ZhbHVlLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQzKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3Ry
aWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgICAgICAgICAgTm9SZXN1bHQsIGJh
c2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQsIHZhbHVl
VGFnLCB2YWx1ZVBheWxvYWQsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigp
KSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoK
ICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6IHsKICAgICAgICAgY29tcGlsZVB1dEFjY2Vzc29yQnlJ
ZChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2Myw2
ICsyNzYzLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNW
YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIg
PSB0aGlzVmFsdWUuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlz
LCBub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSBzdWJzY3Jp
cHQuZ3ByKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRo
VGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHN1YnNjcmlwdEdQUik7Cisg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7
CkBAIC00MTMwLDYgKzQxNDksMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhp
czogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhp
c1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVz
dWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIs
IGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgog
ICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
NDMwOSw2ICs0MzQ1LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1
ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIo
KTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1f
aml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLCBOb1Jlc3VsdCwg
YmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCB2YWx1ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBHUFJSZWcgdGhpc1Zh
bHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0
eSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAg
ICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVy
cygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJh
dGlvblB1dEJ5VmFsV2l0aFRoaXMsIE5vUmVzdWx0LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHBy
b3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisK
KyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgUHV0QnlJZERpcmVjdDogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY2LDYgKzEy
NjYsMjEgQEAgcHVibGljOgogCiAKICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAg
IHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9w
ZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9K
SVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE2NjEsNiAr
MTY3NiwyMyBAQCBwdWJsaWM6CiAjZWxzZQogI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlfQVJHCiAj
ZW5kaWYKKyAgICAvLyBIRVJFCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihK
X0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJl
c3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQUlJlZyBh
cmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFnLCBUcnVz
dGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5
bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcsIFRydXN0ZWRJbW1QdHIodWlkKSk7
CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BS
UmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBHUFJS
ZWcgYXJnNFRhZywgR1BSUmVnIGFyZzRQYXlsb2FkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2Fk
LCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcsIGFy
ZzRQYXlsb2FkLCBhcmc0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKKyAgICB9CisgICAgLy8gSEVSRQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVu
c2lnbmVkIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYg
KzE2OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNo
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CkBAIC0yNTgsNiAr
MjU5LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgY2FzZSBQdXRCeUlkV2l0
aFRoaXM6CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5n
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMjIsNiArMzI1LDggQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBp
bGU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlz
OgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxB
bGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMzM4LDYgKzM0Myw4IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgICAgIHJldHVybiBD
YW5ub3RDb21waWxlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHV0QnlW
YWxXaXRoVGhpczoKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2Fz
ZSBBcnJheVBvcDoKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNj
ZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgogICAgICAgICAgICAgY29tcGlsZUluKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTYxMCw2ICs2MTMsOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeUlkKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgICAgICBj
b21waWxlUHV0QnlJZFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQdXRHZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAgICAgICAg
ICBjb21waWxlUHV0QWNjZXNzb3JCeUlkKCk7CkBAIC02NDYsMTEgKzY1MiwxNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgICAgICAg
ICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbFdp
dGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAg
ICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0Ogog
ICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0
aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAg
ICAgICAgICAgIGNvbXBpbGVBcnJheVB1c2goKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ0
OSw2ICsyNDYxLDQ1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKQorICAgIHsKKyAgICAg
ICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBM
VmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbkdldEJ5SWRXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIG1fb3V0
LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV0pKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKworICAgIHZvaWQg
Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0g
bG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0
aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBzdWJzY3JpcHQpOworICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlJZFdp
dGhUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRp
b24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3Bl
cmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKSwK
KyAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBtX291dC5j
b25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCldKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygpCisgICAg
eworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZCht
X25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93
SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBMVmFsdWUg
dmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7CisKKyAg
ICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0
cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxX
aXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpLAorICAgICAgICAgICAg
bV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAgICB9CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw2ICs2NCwxMDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93Q2hpY2tlblBh
YwogICAgIHN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCBBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7
CiB9CiAKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKK3ZvaWQgQ0NhbGxI
ZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0Qiwg
R1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BS
UmVnIHNyY0MsIEdQUlJlZyBzcmNEKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7Cisg
ICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0
RCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJlck9mU2V0
R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIpOworICAg
IH0KKworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAg
IFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKKworICAgIGlmIChzcmNBICE9IGRlc3RBKQorICAg
ICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKKyAgICBpZiAo
c3JjQiAhPSBkZXN0QikKKyAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0Is
IGRlc3RCKSk7CisgICAgaWYgKHNyY0MgIT0gZGVzdEMpCisgICAgICAgIHBhaXJzLmFwcGVuZChz
dGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOworICAgIGlmIChzcmNEICE9IGRlc3REKQorICAg
ICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKKworCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1
bnNpZ25lZCB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0Owor
ICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBz
ZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgfTsKKworICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMg
PSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAg
IGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBh
aXIuc2Vjb25kOworICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOworICAgIH07CisjZW5kaWYKKworICAgIHdo
aWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9u
czsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJl
ZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLnNldChk
ZXN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAg
ICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBmcmVlRGVz
dGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZnJlZURl
c3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgeworICAgICAgICAgICAgYm9vbCBtYWRlTW92
ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAg
ICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAg
IEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0
aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291cmNlLCBk
ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAg
ICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChtYWRlTW92
ZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChu
dW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7CisgICAgICAgIEFTU0VSVChu
dW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAgICAgIC8vIFRoZSBzZXQgb2Yg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgc2V0cy4gVGhp
cyBtZWFucyB3ZSBkb24ndCBoYXZlCisgICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0aW9uIHJl
Z2lzdGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFyb3VuZCB0
aGlzIGJ5CisgICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgorCisgICAgICAgIEdQUlJl
ZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKKyAgICAgICAgR1BSUmVnIGRlc3QgPSBwYWlyc1sw
XS5zZWNvbmQ7CisgICAgICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgcGFpcnMucmVt
b3ZlKDApOworCisgICAgICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIGZv
ciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFp
ci5maXJzdDsKKyAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gZGVzdCkgeworICAgICAgICAgICAg
ICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBpbnRyb2R1Y2Vk
IHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiBSZW1vdmUg
dGhvc2Ugbm93LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMuc2l6ZSgp
OyBpKyspIHsKKyAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAgICAgICAg
IGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7CisgICAgICAgICAgICAgICAgcGFpcnMu
cmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyMDAyNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIKICNpbmNs
dWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJNYXAuaCIKICNpbmNsdWRlICJTdGFj
a0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgyNyw2ICs4MjgsMjEgQEAgcHVi
bGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmczKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIEdQUlJlZyBhcmc3LCBHUFJSZWcg
YXJnOCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRD
YWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICAgICAg
YWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNCk7Cisg
ICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFy
ZzYpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNyk7CisgICAgICAgIGFkZENhbGxBcmd1
bWVudChhcmc4KTsKKyAgICB9CisKICNlbmRpZiAvLyAhTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUwogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBj
b252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gYXQgbGVhc3QgNCBhcmd1bWVudCBy
ZWdpc3RlcnMsIGUuZy4gWDg2XzY0LCBBUk12Ny4KQEAgLTkxMyw2ICs5MjksOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCisgICAgdm9pZCBzZXR1
cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RD
LCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQ
UlJlZyBzcmNEKTsKKwogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB0ZW1wbGF0
ZTxGUFJSZWcgZGVzdEEsIEZQUlJlZyBkZXN0Qj4KICAgICB2b2lkIHNldHVwVHdvU3R1YkFyZ3NG
UFIoRlBSUmVnIHNyY0EsIEZQUlJlZyBzcmNCKQpAQCAtMTk1MSw2ICsxOTY5LDE3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1LCBHUFJSZWcgYXJnNiwgR1BSUmVnIGFyZzcsIEdQUlJlZyBhcmc4
LCBHUFJSZWcgYXJnOSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnOSwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQgKyA1KTsKKyAgICAgICAgcG9rZShhcmc4LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDQp
OworICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMyk7CisgICAgICAg
IHBva2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKKyAgICAgICAgcG9rZShhcmc1
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1LCBHUFJSZWcgYXJnNiwg
R1BSUmVnIGFyZzcpCiAgICAgewogICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMyk7CkBAIC0xOTg2LDYgKzIwMTUsMTIgQEAgcHVibGljOgogI2VuZGlmIC8vIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCkKKyAgICB7CisgICAgICAgIHNldHVwRm91clN0dWJBcmdzR1BSKEdQUkluZm86OmFyZ3VtZW50
R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIEdQUklu
Zm86OmFyZ3VtZW50R1BSNCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
fQorCiAgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMxMzQoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHNldHVwVGhyZWVTdHViQXJnc0dQUjxH
UFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJn
dW1lbnRHUFI0PihhcmcxLCBhcmczLCBhcmc0KTsKQEAgLTIwMzYsNiArMjA3MSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI0KTsKICAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
ICAgICB9CisKKyAgICAvL0FMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQp
CisgICAgLy97CisgICAgLy8gICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7Cisg
ICAgLy8gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgIC8vfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
R1BSSW5mby5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODgwLDIwICs4ODAsNiBAQCBwdWJsaWM6CiAK
ICNlbmRpZiAvLyBDUFUoU0g0KQogCi1pbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3Io
dW5zaWduZWQgYXJndW1lbnRJbmRleCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChh
cmd1bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpCi0gICAgICAgIHJl
dHVybiBJbnZhbGlkR1BSUmVnOwotCi0gICAgcmV0dXJuIEdQUkluZm86OnRvQXJndW1lbnRSZWdp
c3Rlcihhcmd1bWVudEluZGV4KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50SW5k
ZXgpOwotCi0gICAgcmV0dXJuIEludmFsaWRHUFJSZWc7Ci0jZW5kaWYKLX0KLQogLy8gVGhlIGJh
c2VsaW5lIEpJVCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAg
KGZvciA2NC1iaXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBh
cyB0aGUgYWNjdW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Yg
b25lIG9wY29kZSB0byB0aGUgbmV4dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsOSBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQog
ICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF9i
eV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0
YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9P
UChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKQEAgLTI4Niw5ICsyODgsMTEgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcGFyZW50X3Njb3BlKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0
ZXJfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIwMDI2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
NCw2ICs1MDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxX251
bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiop
OworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CkBAIC01
NjIsOCArNTY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X2lk
X3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X2lu
ZGV4KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5o
CShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBAIHR5cGVkZWYgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJf
dCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlv
bl9FWlN5bXRhYkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpT
VmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVy
YXRpb25fRU9JVWkpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCB1
aW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9w
ZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNf
SklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJ
T04gKCpDX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEpT
Q2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0Nl
bGwqKTsKQEAgLTI0OCw2ICsyNDksOCBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZf
SklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQ
YykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9O
ICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29k
ZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25f
RVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7Cit0eXBlZGVmIHZvaWQgSklUX09Q
RVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwor
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhlY1N0
YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlv
bl9FV3MpKEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BF
UkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRl
ZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWkopKEV4ZWNTdGF0ZSosIGlu
dDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjAwMjY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE1NCw2ICsxMTU0LDMwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19hcmd1bWVudHMoSW5zdHIKICAgICBzdG9yZTMyKHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBE
aXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikgKyBQYXlsb2FkT2Zmc2V0KSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhf
dGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMyw2ICszMTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJ
bnN0cnVjdGlvbgogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGls
YXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZU9mZnNldCwgbm90SW5kZXgsIGJhZFR5cGUs
IG1vZGUsIHByb2ZpbGUsIGRvbmUsIGRvbmUpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgp
OworfQorCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwg
SW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgaW50IHZhbHVlID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKQEAgLTU5Myw2ICs1OTksMTggQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIo
cmVzdWx0VlJlZyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9p
ZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjpl
bWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9y
JiBpdGVyKQogewogICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKQEAgLTYzOCw2ICs2NTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lk
KEluc3RydWN0aW9uKgogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYgaXRlcikKIHsKICAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzUyLDYgKzE3NTIsMjggQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQor
CitfbGxpbnRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQorICAgIGRp
c3BhdGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KQorICAgIGRpc3BhdGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHV0X2J5X3Zh
bF93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCisKIAogIyBMYXN0bHksIG1ha2Ugc3Vy
ZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29k
ZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQg
b3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgxNiw0ICs4MTYsOTQgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvcHlf
cmVzdCkKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFuZCk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNW
YWwgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAg
UkVUVVJOKHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
X3dpdGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBP
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IE9QX0MoMykuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisKKyAgICBp
ZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsK
KyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1
cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoSlND
ZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAg
aWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFzU3Ry
aW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRP
d25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOyAKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3Bl
cnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgaWYg
KHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQu
YXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmlu
ZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIFJFVFVSTihhc1N0cmlu
ZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIAorICAgICAgICBSRVRV
Uk4oYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVl
LnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENI
RUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5
LCBzbG90KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90
aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygx
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+
cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwg
cHV0VmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgCisgICAgLy9p
ZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgIC8vICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAvLyAgICBpZiAoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpIHsKKyAgICAvLyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1
ZSk7CisgICAgLy8gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2tseShpKSkgewor
ICAgIC8vICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGksIHZhbHVlKTsK
KyAgICAvLyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgIC8vICAgICAgICB9CisgICAgLy8g
ICAgICAgIGVsc2UKKyAgICAvLyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0
QnlJbmRleChvYmplY3QsIGV4ZWMsIGksIHZhbHVlLCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkpOworICAgIC8vICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAvLyAgICB9CisgICAg
Ly8gICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy8gICAgRU5EKCk7CisgICAgLy99CisKKyAgICBh
dXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgsMTAgQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbAogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y29weV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0
aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhf
dGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBl
ci1wcm9wZXJ0eS1hY2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1ODYgQEAKK2Z1
bmN0aW9uIGFzc2VydChiLCBtID0gIkJhZCEiKSB7CisgICAgaWYgKCFiKSB7CisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihtKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoZiwgaXRlcnMgPSAx
MDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyczsgaSsrKQorICAgICAgICBmKCk7
Cit9CisKK2Z1bmN0aW9uIGZ1bmMoeCkgeworICAgIHJldHVybiB4OworfQorbm9JbmxpbmUoZnVu
Yyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVj
dG9yKHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0geDsKKyAgICAgICAg
fQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAgICAgICBn
ZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgIH0KKworICAgIGNsYXNzIEIg
ZXh0ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgc3VwZXIudmFsdWUgPSB4OyB9Cisg
ICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVyLnZhbHVlOyB9CisgICAgfQorCisgICAg
bGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIwKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnZh
bHVlID0gaTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorfSwgMTApOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHZhbHVlKCkgeyByZXR1cm4gJ3ZhbHVlJzsgfQor
ICAgIG5vSW5saW5lKHZhbHVlKTsKKworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3Rv
cih4LCBmID0gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB4Owor
ICAgICAgICAgICAgdGhpcy5fZnVuYyA9IGY7CisgICAgICAgIH0KKworICAgICAgICBzZXQgdmFs
dWUoeCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4g
dGhpcy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0IGZ1bmMoKSB7IHJldHVybiB0aGlzLl9mdW5jOyB9
CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBzZXQgdmFsdWUoeCkg
eyBzdXBlclt2YWx1ZSgpXSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gc3Vw
ZXJbdmFsdWUoKV07IH0KKyAgICAgICAgaW5jKCkgeyByZXR1cm4gc3VwZXJbdmFsdWUoKV0rKzsg
fQorICAgICAgICBkZWMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXS0tOyB9CisgICAgICAgIHBy
ZUluYygpIHsgcmV0dXJuICsrc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgcHJlRGVjKCkgeyBy
ZXR1cm4gLS1zdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBwbHVzRXEoeCkgeyBzdXBlclt2YWx1
ZSgpXSArPSB4OyB9CisgICAgICAgIG1pbnVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAtPSB4OyB9
CisgICAgICAgIHRpbWVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAqPSB4OyB9CisgICAgICAgIGRp
dkVxKHgpIHsgc3VwZXJbdmFsdWUoKV0gLz0geDsgfQorCisgICAgICAgIGZ1bmNEb3QoeCkgeyBy
ZXR1cm4gc3VwZXIuZnVuYyh4KTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4KSB7IHJldHVybiBz
dXBlci5mdW5jKHgpOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7Cisg
ICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB0
ID0gYXJyW2ldLnZhbHVlOworICAgICAgICBhc3NlcnQodCA9PT0gMjApOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0udmFsdWUgPSBp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsKKyAgICAgICAg
YXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkr
KykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ld
LmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0g
aSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygpOworICAgICAg
ICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS5wbHVzRXEo
aSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsgfSk7CisgICAg
fQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChh
cnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNC
cmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgsIGYgPSBmdW5j
KQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHg7CisgICAgICAgICAgICB0
aGlzLl9mdW5jID0gZjsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMu
X3ZhbHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsg
fQorICAgICAgICBnZXQgZnVuYygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7IH0KKyAgICB9CisKKyAg
ICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIHNldCB2YWx1ZSh4KSB7ICgoKSA9PiBzdXBl
ci52YWx1ZSA9IHgpKCk7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gKCgpID0+IHN1
cGVyLnZhbHVlKSgpOyB9CisgICAgICAgIGluYygpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52YWx1
ZSsrKSgpOyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52YWx1ZS0tKSgp
OyB9CisgICAgICAgIHByZUluYygpIHsgcmV0dXJuICgoKSA9PiArK3N1cGVyLnZhbHVlKSgpOyB9
CisgICAgICAgIHByZURlYygpIHsgcmV0dXJuICgoKSA9PiAtLXN1cGVyLnZhbHVlKSgpOyB9Cisg
ICAgICAgIHBsdXNFcSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSArPSB4KSgpOyB9CisgICAgICAg
IG1pbnVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgLT0geCkoKTsgfQorICAgICAgICB0aW1l
c0VxKHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlICo9IHgpKCk7IH0KKyAgICAgICAgZGl2RXEoeCkg
eyAoKCkgPT4gc3VwZXIudmFsdWUgLz0geCkoKTsgfQorCisgICAgICAgIGZ1bmNEb3QoeCkgeyBy
ZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICAgICAgZnVuY0JyYWNrZXQoeCkg
eyByZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICB9CisKKyAgICBsZXQgYXJy
ID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJy
LnB1c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBp
KyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gMjApOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0udmFsdWUgPSBp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsKKyAgICAgICAg
YXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkr
KykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ld
LmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0g
aSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygpOworICAgICAg
ICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS5wbHVzRXEo
aSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBp
KTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAg
ICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsgfSk7CisgICAg
fQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChh
cnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJyW2ldLmZ1bmNC
cmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9Jbmxp
bmUoZm9vKTsKKyAgICBjbGFzcyBBIHsgfQorICAgIGxldCBvYmogPSB7fTsKKyAgICBBLnByb3Rv
dHlwZS5mb28gPSBvYmo7CisgICAgQS5wcm90b3R5cGVbMF0gPSBvYmo7CisKKworICAgIGNsYXNz
IEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KCkgeyByZXR1cm4gc3VwZXJbZm9vKCldOyB9Cisg
ICAgICAgIGpheigpIHsgcmV0dXJuIHN1cGVyLmZvbzsgfQorICAgICAgICBiYXIoKSB7IHJldHVy
biBzdXBlclswXTsgfQorICAgICAgICAKKyAgICB9CisKKyAgICBhc3NlcnQoKG5ldyBCKS5iYXoo
KSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoKG5ldyBCKS5qYXooKSA9PT0gb2JqKTsKKyAgICBhc3Nl
cnQoKG5ldyBCKS5iYXIoKSA9PT0gb2JqKTsKK30pOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGNsYXNzIEEgeyB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspCisgICAgICAg
IEEucHJvdG90eXBlW2ldID0gaTsKKworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAg
ICBpbmRleChpKSB7IHJldHVybiBzdXBlcltpXTsgfQorICAgIH0KKworICAgIGxldCBiID0gbmV3
IEI7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0
KGIuaW5kZXgoaSkgPT09IGkpOworICAgIH0KK30sIDUwKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBsZXQgb2JqID0ge307CisgICAgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKHIpIHsgdGhpcy5f
Zm9vID0gcjsgfSB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLCAnMCcs
IHsgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX2ZvbzsgfSB9KTsKKworICAgIGNsYXNz
IEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmFyKCkgeyByZXR1cm4gc3VwZXJbMF07IH0KKyAgICB9
CisKKyAgICBsZXQgcmFuZCA9IE1hdGgucmFuZG9tKCk7CisgICAgYXNzZXJ0KChuZXcgQihyYW5k
KSkuYmFyKCkgPT09IHJhbmQpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7IGNsYXNzIEEgewor
ICAgICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQg
Zm9vKHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAg
ICAgICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBj
bGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9
IHt4OjIwLCB5OjMwLCBbaV06aX07CisgICAgICAgICAgICBmb3IgKHN1cGVyLmZvbyBpbiBvKSB7
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsK
KyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAg
YXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsg
aSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsy
XSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1
bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUoZm9vKTsKKyAgICBj
bGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5ID0gW107IH0KKyAg
ICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5wdXNoKHgpOworICAg
ICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5OyB9CisgICAg
fQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgeworICAgICAgICAg
ICAgbGV0IG8gPSB7eDoyMCwgeTozMCwgW2ldOml9OworICAgICAgICAgICAgZm9yIChzdXBlcltm
b28oKV0gaW4gbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2gobmV3IEIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBv
YmogPSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBhcnJbaV0uYXJy
YXk7CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBhc3NlcnQob2Jq
WzBdID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcpCisgICAgICAg
IGFzc2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5
ID0gW107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5w
dXNoKHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2Fy
cmF5OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkg
eworICAgICAgICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIsICJ5Il07CisgICAgICAgICAgICBm
b3IgKHN1cGVyLmZvbyBvZiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0g
W107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChu
ZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFy
cltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFz
c2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykK
KyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAg
Y2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9hcnJheSA9IFtdOyB9Cisg
ICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fYXJyYXkucHVzaCh4KTsKKyAg
ICAgICAgfQorICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVybiB0aGlzLl9hcnJheTsgfQorICAg
IH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsKKyAgICAgICAg
ICAgIGxldCBvID0gWycnICsgaSwgIngiLCAieSJdOworICAgICAgICAgICAgZm9yIChzdXBlcltm
b28oKV0gb2YgbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2gobmV3IEIpOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBv
YmogPSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBhcnJbaV0uYXJy
YXk7CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBhc3NlcnQob2Jq
WzBdID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcpCisgICAgICAg
IGFzc2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAg
ICB0aGlzLl9mb28gPSBudWxsOworICAgICAgICB9CisgICAgICAgIHNldCBmb28oeCkgeworICAg
ICAgICAgICAgdGhpcy5fZm9vID0geDsKKyAgICAgICAgfQorICAgICAgICBnZXQgZm9vKCkgeyBy
ZXR1cm4gdGhpcy5fZm9vOyB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9iaihpKSB7IHJldHVybiB7
bzogaX07IH0KKyAgICBub0lubGluZShvYmopOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgewor
ICAgICAgICBiYXooaSkgeworICAgICAgICAgICAgOyh7bzogc3VwZXIuZm9vfSA9IG9iaihpKSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKChuZXcgQikpOworICAgIH0KKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0uYmF6KGkp
OworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
c3NlcnQoYXJyW2ldLmZvbyA9PT0gaSk7CisgICAgfQorfSwgMTAwKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAnZm9vJzsgfQorICAgIG5vSW5saW5l
KGZvbyk7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAg
ICAgdGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAg
ICAgICAgICAgIHRoaXMuX2ZvbyA9IHg7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGZvbygpIHsg
cmV0dXJuIHRoaXMuX2ZvbzsgfQorICAgIH0KKyAgICBmdW5jdGlvbiBvYmooaSkgeyByZXR1cm4g
e286IGl9OyB9CisgICAgbm9JbmxpbmUob2JqKTsKKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsK
KyAgICAgICAgYmF6KGkpIHsKKyAgICAgICAgICAgIDsoe286IHN1cGVyW2ZvbygpXX0gPSBvYmoo
aSkpOworICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnIucHVzaCgobmV3IEIpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLmJh
eihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGFycltpXS5mb28gPT09IGkpOworICAgIH0KK30sIDEwMCk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICAgICAgdGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBnZXQgY2FsbCgpIHsK
KyAgICAgICAgICAgIGxldCByZXQgPSAoKSA9PiAnY2FsbCc7CisgICAgICAgICAgICBub0lubGlu
ZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgICAgICBnZXQg
YXBwbHkoKSB7IAorICAgICAgICAgICAgbGV0IHJldCA9ICgpID0+ICdhcHBseSc7CisgICAgICAg
ICAgICBub0lubGluZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgZm9vKCkgeworICAgICAg
ICAgICAgcmV0dXJuIHN1cGVyLmNhbGwoe30sIDIwLCAzMCk7CisgICAgICAgIH0KKyAgICAgICAg
YmFyKCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmFwcGx5KHt9LCBbMTAsIDIwXSk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkrKykgeworICAg
ICAgICBsZXQgYiA9IG5ldyBCOworICAgICAgICBhc3NlcnQoYi5mb28oKSA9PT0gJ2NhbGwnKTsK
KyAgICAgICAgYXNzZXJ0KGIuYmFyKCkgPT09ICdhcHBseScpOworICAgIH0KK30pOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcihpKSB7IHRo
aXMuX2kgPSBpOyB9CisgICAgICAgIGdldCBmb28oKSB7CisgICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24oc3RyaW5ncywgLi4udmFsdWVzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFtzdHJp
bmdzLCB2YWx1ZXNdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdldCBpKCkg
eyByZXR1cm4gdGhpcy5faTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAg
ICAgICAgYmF6KCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmZvb2BoZWxsbyR7c3VwZXIu
aX13b3JsZGA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IGIgPSBuZXcgQihpKTsK
KyAgICAgICAgYXJyLnB1c2goYik7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGxldCByID0gYXJyW2ldLmJheigpOworICAgICAgICBhc3NlcnQo
ci5sZW5ndGggPT09IDIpOworICAgICAgICBhc3NlcnQoclswXS5sZW5ndGggPT09IDIpOworICAg
ICAgICBhc3NlcnQoclswXVswXSA9PT0gJ2hlbGxvJyk7CisgICAgICAgIGFzc2VydChyWzBdWzFd
ID09PSAnd29ybGQnKTsKKyAgICAgICAgYXNzZXJ0KHJbMV0ubGVuZ3RoID09PSAxKTsKKyAgICAg
ICAgYXNzZXJ0KHJbMV1bMF0gPT09IGkpOworICAgIH0KK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277835</attachid>
            <date>2016-04-30 17:26:56 -0700</date>
            <delta_ts>2016-05-01 16:36:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>119462</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3MiBA
QAorMjAxNi0wNC0yOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXR0ZXIgYW5kIHNldHRlciBvbiBzdXBlciBhcmUgY2FsbGVkIHdpdGggd3JvbmcgInRoaXMi
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTg4NTkxNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
Y2FsbHMgdG8gJ3N1cGVyJyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorICAgICAgICBUaGUgcHJvYmxl
bSBiZWZvcmUgaXMgd2Ugd2VyZSBwYXNzaW5nIHRoZSAnc3VwZXInIChpLmUsIHRoZSBwcm90b3R5
cGUKKyAgICAgICAgb2JqZWN0KSBhcyB0aGUgdGhpcyB2YWx1ZSB0byB0aGVzZSBnZXR0ZXJzL3Nl
dHRlcnMsIHdoaWNoIGlzIHdyb25nLiAKKyAgICAgICAgV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhl
IGNhbGxlcidzIHRoaXMgdmFsdWUuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgYmVoYXZp
b3IsIEkndmUgaW50cm9kdWNlZCBmb3VyIG5ldyBvcGNvZGVzIGFuZCB0aGVpciBjb3JyZXNwb25k
aW5nIERGRyBub2RlczoKKyAgICAgICAgLSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHwgR2V0QnlJ
ZFdpdGhUaGlzCisgICAgICAgIC0gb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyB8IFB1dEJ5SWRXaXRo
VGhpcworICAgICAgICAtIG9wX2dldF9ieV92YWxfd2l0aF90aGlzIHwgR2V0QnlWYWxXaXRoVGhp
cworICAgICAgICAtIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzIHwgUHV0QnlWYWxXaXRoVGhpcwor
CisgICAgICAgIFRoZXNlIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG5vIG9wdGltaXphdGlvbnMuIFRo
ZSBmdXR1cmUgcGxhbiBpcyAKKyAgICAgICAgdG8gdW5pdGUgdGhlbSB3aXRoIHRoZSAqYnlfaWQg
YW5kICpieV92YWwgb3Bjb2RlcyBhbmQgbm9kZXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTUKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRGVyaXZlZENvbnN0cnVj
dG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0
U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6Ok5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tl
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVt
aXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAg
IChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdD
bG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBl
ZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OnB1dFdpdGhUaGlzKToKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAg
KiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVHZXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlR2V0QnlWYWxXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkV2l0aFRoaXMpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlWYWxXaXRoVGhpcyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeUlkKToKKyAgICAg
ICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cFNoYWRvd0NoaWNrZW5QYWNrZXQpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwRm91clN0dWJBcmdzR1BSKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBUaHJlZVN0dWJBcmdzR1BSKToKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFR3b1N0dWJBcmdzRlBSKToKKyAgICAgICAgKEpTQzo6
Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoSlND
OjpDQ2FsbEhlbHBlcnM6OnNldHVwU3R1YkFyZ3VtZW50czEzNCk6CisgICAgICAgICogaml0L0dQ
UkluZm8uaDoKKyAgICAgICAgKEpTQzo6YXJndW1lbnRSZWdpc3RlckZvcik6IERlbGV0ZWQuCisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRp
b25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3B1dF9ieV92YWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRHZW5lcmljQ29u
dGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9nZXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcHV0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9ieV9pZF93aXRo
X3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3B1dF9ieV9pZCk6CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
c3VwZXItcHJvcGVydHktYWNjZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKGZ1bmMpOgorICAgICAgICAodGVzdC5BKToKKyAgICAgICAg
KHRlc3QuQS5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUu
Z2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQik6CisgICAg
ICAgICh0ZXN0LnZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IGZ1bmMpOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5pbmMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlw
ZS5kZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wcmVJbmMpOgorICAgICAgICAodGVz
dC5CLnByb3RvdHlwZS5wcmVEZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wbHVzRXEp
OgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5taW51c0VxKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUudGltZXNFcSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmRpdkVxKToKKyAg
ICAgICAgKHRlc3QuQi5wcm90b3R5cGUuZnVuY0RvdCk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZ1bmNCcmFja2V0KToKKyAgICAgICAgKHRlc3QuZm9vKToKKyAgICAgICAgKHRlc3QuQi5w
cm90b3R5cGUuYmF6KToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuamF6KToKKyAgICAgICAg
KHRlc3QuQi5wcm90b3R5cGUuYmFyKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuaW5kZXgp
OgorICAgICAgICAodGVzdC4pOgorICAgICAgICAodGVzdC5wcm90b3R5cGUuYmFyKToKKyAgICAg
ICAgKHRlc3QuQS5wcm90b3R5cGUuc2V0IGZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBl
LmdldCBhcnJheSk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBmb28pOgorICAgICAg
ICAodGVzdC5vYmopOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5nZXQgY2FsbCk6CisgICAg
ICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBhcHBseSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90
eXBlLmZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBpKToKKwogMjAxNi0wNC0y
OSAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRXh0
ZW5kIG1hdGgtcG93LXN0YWJsZS1yZXN1bHRzLmpzIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIGFi
b3V0IHRoZSBmYWlsdXJlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTYw
LDExICs2MCwxNSBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3RyeV9nZXRfYnlfaWQiLCAibGVuZ3Ro
IiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgi
IDogOSAgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV9pZF93aXRoX3RoaXMi
LCAibGVuZ3RoIiA6IDUgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9ieV92YWxf
d2l0aF90aGlzIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9n
ZXRfYXJyYXlfbGVuZ3RoIiwgImxlbmd0aCIgOiA5IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9wdXRfYnlfaWQiLCAibGVuZ3RoIiA6IDkgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1dF9ieV9pZF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2RlbF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbCIsICJsZW5ndGgiIDogNSB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV92YWxfZGlyZWN0IiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9kZWxfYnlfdmFsIiwgImxlbmd0aCIgOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfaW5kZXgiLCAibGVuZ3RoIiA6IDQg
fSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSwyMSBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7
CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsK
KyAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBvcF9wdXRf
Z2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9ieV9pZDogewogICAgICAgICBB
U1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKQEAgLTIwMywxMiArMjE4LDIwIEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25lcToKICAg
ICBjYXNlIG9wX2VxOgogICAgIGNhc2Ugb3BfcHVzaF93aXRoX3Njb3BlOgorICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMyk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBv
cF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9w
X2luc3RhbmNlb2ZfY3VzdG9tOgogICAgIGNhc2Ugb3BfaGFzX3N0cnVjdHVyZV9wcm9wZXJ0eToK
ICAgICBjYXNlIG9wX2NvbnN0cnVjdF92YXJhcmdzOgpAQCAtMzE2LDYgKzMzOSw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwKICAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpczoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfc2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkBA
IC0zNzEsNiArMzk2LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bAogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6Cisg
ICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNlIG9wX2dldF9hcnJheV9s
ZW5ndGg6CiAgICAgY2FzZSBvcF9vdmVycmlkZXNfaGFzX2luc3RhbmNlOgogICAgIGNhc2Ugb3Bf
aW5zdGFuY2VvZjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExNywxMSArMTExNyw0NyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgZHVtcFZhbHVlUHJv
ZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRf
YnlfaWRfd2l0aF90aGlzIik7CisgICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgaWQwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJl
Z2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiZ2V0X2J5X3ZhbF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicHV0X2J5X2lkIik7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdHViSW5mb3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAgICAgICBpbnQgcjAg
PSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgaW50IHIyID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfd2l0aF90aGlzIik7Cisg
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzLCAlcyIsIHJlZ2lzdGVyTmFtZShyMCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSwgaWROYW1lKGlkMCwgaWRlbnRpZmllcihp
ZDApKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCByMyA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X3Zh
bF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRhKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOiB7CiAg
ICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBp
ZDAgPSAoKytpdCktPnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxMCw2ICsyNDEwLDE4IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnkKICAgICByZXR1cm4gZHN0OwogfQogCitS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSkKK3sKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4KHByb3Bl
cnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIGdldF9ieV92
YWwuIik7CisKKyAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRzdCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbC0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJzZUluZGV4
KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHB1
dF9ieV92YWwuIik7CkBAIC0yNDMzLDYgKzI0NDUsMjEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZh
bHVlKQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAi
SW5kZXhlZCBwcm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbC4iKTsK
KworICAgIHVuc2lnbmVkIHByb3BlcnR5SW5kZXggPSBhZGRDb25zdGFudChwcm9wZXJ0eSk7CisK
KyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodGhp
c1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcGVydHlJbmRl
eCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJl
dHVybiB2YWx1ZTsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUpCiB7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3Bl
cnRpZXMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsKGRpcmVjdCkuIik7CkBAIC0y
NTU3LDYgKzI1ODQsMTYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRC
eQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5KQoreworICAgIGVtaXRPcGNvZGUob3Bf
Z2V0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChraWxsKGRz
dCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQodGhpc1ZhbHVlLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQocHJvcGVydHktPmluZGV4KCkpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAgIFVubGlua2Vk
QXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZSA9IG5ld0FycmF5UHJvZmlsZSgpOwpAQCAtMjU2OSw2
ICsyNjA2LDE3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKICAg
ICByZXR1cm4gdmFsdWU7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgZW1pdE9wY29kZShvcF9w
dXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKKworICAgIHJldHVybiB2YWx1ZTsKK30K
KwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeVZhbChSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7
CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxl
KCk7CkBAIC00MjE1LDYgKzQyNjMsMTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRMb2FkRAogICAgIFZhcmlhYmxlIHByb3RvU2NvcGVWYXIgPSB2YXJpYWJsZShwcm9wZXJ0
eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpOwogICAgIHJldHVybiBlbWl0
R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1l
KSwgcHJvdG9TY29wZVZhciwgVGhyb3dJZk5vdEZvdW5kKTsKIH0KKworUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVuc3VyZVRoaXMoKQoreworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQo
KSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgJiYgbmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rp
b25Db250ZXh0KCkgJiYgaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkKKyAg
ICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsK
KworICAgIGlmIChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQg
fHwgaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgIGVtaXRURFpDaGVjayh0
aGlzUmVnaXN0ZXIoKSk7CisKKyAgICByZXR1cm4gdGhpc1JlZ2lzdGVyKCk7Cit9CiAgICAgCiBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MDIsNiArNTAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFByb2Zp
bGVDb250cm9sRmxvdyhpbnQpOwogICAgICAgICAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExv
YWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW5zdXJlVGhpcygpOwogICAgICAgICB2b2lkIGVtaXRMb2FkVGhp
c0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
KTsKIApAQCAtNTUwLDEyICs1NTEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFRyeUdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVC
eUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0R2V0QnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0QXJndW1lbnRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IFJlZ2lzdGVySUQqIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5VmFs
KFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSk7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBS
ZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeVZhbChSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0RGVsZXRlQnlWYWwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQ
dXRCeUluZGV4KFJlZ2lzdGVySUQqIGJhc2UsIHVuc2lnbmVkIGluZGV4LCBSZWdpc3RlcklEKiB2
YWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSwxMiArMTQ1LDggQEAgUmVnaXN0ZXJJRCogUmVnRXhwTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAog
CiBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVj
dG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNU
b1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzU3VwZXJDYWxsVXNl
ZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0TG9hZFRoaXNG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwotCi0gICAgaWYgKG1fc2hvdWxk
QWx3YXlzRW1pdFREWkNoZWNrIHx8IGdlbmVyYXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25z
dHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29u
dGV4dCgpKQotICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVn
aXN0ZXIoKSk7Ci0KKyAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIFVOVVNFRF9QQVJB
TShtX3Nob3VsZEFsd2F5c0VtaXRURFpDaGVjayk7CiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3Iu
aWdub3JlZFJlc3VsdCgpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtMTYyLDE5ICsxNTgsNiBA
QCBSZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjCiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdXBlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCi17Ci0gICAgaWYgKGRz
dCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IGlmIChnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0
KSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3Jl
UHJvdG8pOwotCi0gICAgUmVnaXN0ZXJJRCBjYWxsZWU7Ci0gICAgY2FsbGVlLnNldEluZGV4KEpT
U3RhY2s6OkNhbGxlZSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCAmY2FsbGVlLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLnVuZGVyc2NvcmVQcm90byk7Ci19Ci0KIHN0YXRpYyBSZWdpc3RlcklEKiBlbWl0SG9tZU9i
amVjdEZvckNhbGxlZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogewogICAgIGlmIChn
ZW5lcmF0b3IuaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkgfHwgZ2VuZXJhdG9yLmlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpKSB7CkBAIC0xOTMsNiArMTc2LDIyIEBAIHN0YXRpYyBSZWdpc3Rl
cklEKiBlbWl0U3VwZXJCYXNlRm9yQ2FsbGUKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgaG9tZU9iamVjdC5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwogfQogCitzdGF0aWMgUmVnaXN0ZXJJ
RCogZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvcikKK3sKKyAgICBpZiAoZ2VuZXJhdG9yLmlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4
dCgpKQorICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9yRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51
bmRlcnNjb3JlUHJvdG8pOworCisgICAgUmVnaXN0ZXJJRCBjYWxsZWU7CisgICAgY2FsbGVlLnNl
dEluZGV4KEpTU3RhY2s6OkNhbGxlZSk7CisgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkudW5kZXJzY29yZVByb3RvKTsKK30KKworUmVnaXN0ZXJJRCogU3VwZXJOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
eworICAgIFJlZ2lzdGVySUQqIHJlc3VsdCA9IGVtaXRTdXBlckJhc2VGb3JDYWxsZWUoZ2VuZXJh
dG9yKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2Vu
ZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSwgcmVzdWx0KTsKK30KKwogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIE5ld1RhcmdldE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBOZXdUYXJnZXROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQpAQCAtMzA5LDEz
ICszMDgsMTkgQEAgUmVnaXN0ZXJJRCogVGFnZ2VkVGVtcGxhdGVOb2RlOjplbWl0Qnl0ZQogICAg
ICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGJyYWNrZXQtPmJhc2UoKSk7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShicmFja2V0LT5z
dWJzY3JpcHQoKSk7Ci0gICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAg
IGlmIChicmFja2V0LT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQo
KSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChtX3RhZy0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obV90YWcpOwog
ICAgICAgICBiYXNlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgICAgICBiYXNlID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGJhc2UuZ2V0KCksIGRvdC0+YmFzZSgpKTsKLSAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5n
ZXQoKSwgZG90LT5pZGVudGlmaWVyKCkpOworICAgICAgICBpZiAoZG90LT5iYXNlKCktPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBk
b3QtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRhZyA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRv
dC0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcGxh
dGVPYmplY3QgPSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKSwgdGhpcyk7CkBAIC02MjAsMTIgKzYyNSwxNyBAQCBzdGF0aWMgYm9vbCBpc05v
bkluZGV4U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIgaW5mbz8KKyAgICAgICAgUmVnaXN0
ZXJJRCogcmV0OworICAgICAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0b3IuZmlu
YWxEZXN0aW5hdGlvbihkc3QpOwogICAgICAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQo
Km1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWQgPSBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGlkKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRv
ci5lbWl0Tm9kZShtX3N1YnNjcmlwdCkpOworICAgICAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVt
aXRHZXRCeUlkKGZpbmFsRGVzdCwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBpZCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAg
IHJldCA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZmluYWxEZXN0LCBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvciksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGdlbmVyYXRvci5lbWl0
Tm9kZShtX3N1YnNjcmlwdCkpOworCisgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Cisg
ICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogCiAgICAgUmVnaXN0ZXJJRCogcmV0OwpAQCAtNjUw
LDEwICs2NjAsMTUgQEAgUmVnaXN0ZXJJRCogQnJhY2tldEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dAog
CiBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCkgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVl
KGdlbmVyYXRvcikgOiBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKKyAgICBib29sIGJhc2VJ
c1N1cGVyID0gbV9iYXNlLT5pc1N1cGVyTm9kZSgpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvcikgOiBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
ZmluYWxEZXN0ID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KTsKLSAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBt
X2lkZW50KTsKKyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAg
ICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZmluYWxEZXN0LCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QsIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC03NTUsMTAgKzc3MCwxMSBAQCBSZWdp
c3RlcklEKiBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6ZW1pdEJ5CiAKIFJlZ2lzdGVySUQqIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuYyA9IGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5W
YWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuYy5nZXQoKSk7Ci0gICAg
Q2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICBpZiAo
bV9leHByLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5j
ID0gZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JDb25zdHJ1Y3QoZ2VuZXJhdG9yKTsKKyAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRp
b24oZHN0LCBmdW5jLmdldCgpKTsKKyAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKKwogICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBlKCkgPT0gRGVyaXZlZENvbnRl
eHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAgICAgICAgQVNTRVJUKGdlbmVy
YXRvci5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQgfHwgZ2Vu
ZXJhdG9yLmRlcml2ZWRDb250ZXh0VHlwZSgpID09IERlcml2ZWRDb250ZXh0VHlwZTo6RGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJn
dW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5lcmF0b3IubmV3VGFyZ2V0KCkpOwpAQCAtNzgyLDYg
Kzc5OCw5IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6ZW1pdEIKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorICAgIFJlZlB0cjxSZWdpc3RlcklEPiBm
dW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgp
KTsKKyAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgIGdlbmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRh
aWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwgZnVuYy5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUocmV0dXJuVmFsdWUuZ2V0KCksIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CkBAIC05MjIsMjAgKzk0MSwzMSBAQCBSZWdpc3RlcklEKiBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZTo6ZW1pCiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGZ1bmN0aW9uOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzUmVnaXN0ZXI7CisgICAgaWYg
KGJhc2VJc1N1cGVyKSB7CisgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZG8g
dGhpcyBvbmNlIGJlY2F1c2Ugd2UgZWl0aGVyIGhhdmUgYSBub24tVERaIHRoaXMgb3Igd2UgdGhy
b3cuIE9uY2Ugd2UgaGF2ZSBhIG5vbi1URFogdGhpcywgd2UgY2FuJ3QgY2hhbmdlIGl0cyB2YWx1
ZS4KKyAgICAgICAgdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICB9
CiAgICAgaWYgKHN1YnNjcmlwdElzTm9uSW5kZXhTdHJpbmcpIHsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0
YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwg
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAg
IGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1Jl
Z2lzdGVyLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1
ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9zdWJzY3JpcHQpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRv
ci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAg
ICAgICBpZiAoYmFzZUlzU3VwZXIpCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0
aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChiYXNlSXNTdXBlcikgewogICAgICAg
ICBnZW5lcmF0b3IuZW1pdFREWkNoZWNrKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBnZW5l
cmF0b3IudGhpc1JlZ2lzdGVyKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgdGhpc1JlZ2lzdGVyLmdldCgpKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbElu
VGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdldCgpLCBmdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwpAQCAtOTUxLDEzICs5ODEsMTUgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsRG90Tm9k
ZTo6ZW1pdEJ5dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRv
ci5maW5hbERlc3RpbmF0aW9uKGRzdCwgZnVuY3Rpb24uZ2V0KCkpOwogICAgIENhbGxBcmd1bWVu
dHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgYm9vbCBiYXNlSXNTdXBl
ciA9IG1fYmFzZS0+aXNTdXBlck5vZGUoKTsKLSAgICBpZiAoYmFzZUlzU3VwZXIpIHsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAg
ICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2Vu
ZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYmFzZUlzU3VwZXIp
CisgICAgICAgIGdlbmVyYXRvci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpKTsKKyAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2Jhc2UpOwogICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1YmV4cHJlc3Np
b25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChmdW5jdGlvbi5nZXQoKSwgYmFzZUlzU3VwZXIgPyBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdl
bmVyYXRvcikgOiBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBp
ZiAoYmFzZUlzU3VwZXIpCisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5n
ZXQoKSwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBjYWxsQXJndW1lbnRzLnRo
aXNSZWdpc3RlcigpLCBtX2lkZW50KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0
R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwgY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9p
ZGVudCk7CiAgICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRDYWxsSW5UYWlsUG9z
aXRpb24ocmV0dXJuVmFsdWUuZ2V0KCksIGZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGNhbGxBcmd1bWVudHMsIGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwpAQCAtOTcyLDcgKzEwMDQsMTAgQEAg
UmVnaXN0ZXJJRCogQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaQogICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBmdW5jdGlvbjsKICAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlz
QnVpbHRpbkZ1bmN0aW9uKCk7CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKLSAgICAgICAgZnVu
Y3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmNhbGxQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0SnVtcElmTm90RnVuY3Rpb25DYWxsKGZ1bmN0aW9uLmdldCgpLCBy
ZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXR1cm5WYWx1
ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CkBAIC0xMDM5LDcgKzEwNzQsMTAg
QEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbQogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiByZXR1cm5WYWx1ZSA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwg
ZnVuY3Rpb24uZ2V0KCkpOwogICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNC
dWlsdGluRnVuY3Rpb24oKTsKICAgICBpZiAoZW1pdENhbGxDaGVjaykgewotICAgICAgICBmdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
YXBwbHlQdWJsaWNOYW1lKCkpOworICAgICAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgp
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0
b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgp
LCByZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChtYXlCZUNhbGwpIHsKQEAgLTExOTYs
MTAgKzEyMzQsMTcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAog
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJz
Y3JpcHQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNz
b3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNjZXNz
b3ItPmRpdm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9w
ZXJ0eS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChiYXNl
Tm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwg
cHJvcGVydHkuZ2V0KCkpOwogICAgIFJlZ2lzdGVySUQqIG9sZFZhbHVlID0gZW1pdFBvc3RJbmNP
ckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFs
KGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgaWYgKGJhc2VO
b2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQo
KSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCks
IHByb3BlcnR5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4g
Z2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBA
IC0xMjEyLDE1ICsxMjU3LDI1IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5
dGVjb2QKICAgICBBU1NFUlQobV9leHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RB
Y2Nlc3Nvck5vZGUqIGRvdEFjY2Vzc29yID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4o
bV9leHByKTsKICAgICBFeHByZXNzaW9uTm9kZSogYmFzZU5vZGUgPSBkb3RBY2Nlc3Nvci0+YmFz
ZSgpOworICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBiYXNlTm9kZS0+aXNTdXBlck5vZGUoKTsKICAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGRvdEFjY2Vzc29yLT5pZGVudGlmaWVyKCk7CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShiYXNlTm9k
ZSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyOwor
ICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICB0aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgaWRl
bnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBSZWdpc3Rl
cklEKiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKICAgICBnZW5lcmF0
b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
Ci0gICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZS5nZXQo
KSk7CisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkpOworICAg
IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2
YWx1ZS5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rl
c3RpbmF0aW9uSWZOZWVkZWQoZHN0LCBvbGRWYWx1ZSk7CiB9CkBAIC0xMzkzLDEwICsxNDQ4LDE3
IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dGUKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcERzdCA9IGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KTsKIAog
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYnJhY2tldEFjY2Vzc29yLT5kaXZvdCgp
LCBicmFja2V0QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdEVu
ZCgpKTsKLSAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJv
cERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZ2lzdGVySUQq
IHZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3Bl
cmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0
KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9k
ZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1
ZSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVk
ZWQoZHN0LCBwcm9wRHN0LmdldCgpKTsKIH0KQEAgLTE0MTIsMTAgKzE0NzQsMTcgQEAgUmVnaXN0
ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZQogICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wRHN0ID0gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3It
PmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQq
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCks
IGlkZW50KTsKKyAgICBSZWdpc3RlcklEKiB2YWx1ZTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3Vw
ZXJOb2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIGlkZW50KTsKKyAgICBl
bHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCks
IGJhc2UuZ2V0KCksIGlkZW50KTsKICAgICBlbWl0SW5jT3JEZWMoZ2VuZXJhdG9yLCB2YWx1ZSwg
bV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCBpZGVudCwgdmFsdWUpOworICAgIGlmIChiYXNlTm9kZS0+aXNTdXBlck5vZGUoKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1
cmVUaGlzKCksIGlkZW50LCB2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwog
fQpAQCAtMjAxNiw3ICsyMDg1LDEwIEBAIFJlZ2lzdGVySUQqIEFzc2lnbkRvdE5vZGU6OmVtaXRC
eXRlY29kZSgKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKHZhbHVlLmdldCgpLCBtX3JpZ2h0KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25J
bmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
Zm9yd2FyZFJlc3VsdCA9IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkgPyByZXN1
bHQuZ2V0KCkgOiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKHJlc3VsdC5nZXQoKSksIHJlc3VsdC5nZXQoKSk7Ci0gICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQpOworICAg
IGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBtX2lkZW50LCBmb3J3YXJkUmVz
dWx0KTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgp
LCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBl
KGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CiB9
CkBAIC0yMDI4LDExICsyMTAwLDE5IEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlEb3ROb2RlOjpl
bWl0Qnl0ZWMKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZUZvckxlZnRIYW5kU2lkZShtX2Jhc2UsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+
aXNQdXJlKGdlbmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhz
dWJleHByZXNzaW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25F
bmQoKSk7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgbV9pZGVudCk7
CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJO
b2RlKCkpCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwg
bV9pZGVudCk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIG1faWRlbnQpOwog
ICAgIFJlZ2lzdGVySUQqIHVwZGF0ZWRWYWx1ZSA9IGVtaXRSZWFkTW9kaWZ5QXNzaWdubWVudChn
ZW5lcmF0b3IsIGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCwgdmFsdWUuZ2V0KCkpLCB2
YWx1ZS5nZXQoKSwgbV9yaWdodCwgc3RhdGljX2Nhc3Q8SlNDOjpPcGVyYXRvcj4obV9vcGVyYXRv
ciksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpLCBtX3JpZ2h0LT5yZXN1
bHREZXNjcmlwdG9yKCkpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBSZWdpc3RlcklEKiByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsK
KyAgICBSZWdpc3RlcklEKiByZXQ7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAg
ICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5l
bnN1cmVUaGlzKCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICBy
ZXQgPSBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NiwxMCArMjEz
NiwxNyBAQCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0
aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1
bHQuZ2V0KCkpOwogCi0gICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlw
dCkpCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2Fz
dDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAg
ICBlbHNlCi0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVy
dHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVu
dCgqbV9zdWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgZ2VuZXJhdG9yLmVu
c3VyZVRoaXMoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUo
KSwgZm9yd2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3Jp
cHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgZm9y
d2FyZFJlc3VsdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndhcmRSZXN1bHQpOworICAgIH0K
IAogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZm9yd2FyZFJlc3VsdCwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9u
SWZOZWVkZWQoZHN0LCBmb3J3YXJkUmVzdWx0KTsKQEAgLTIwNzMsMTEgKzIxNjAsMTggQEAgUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeUJyYWNrZXROb2RlOjplbWl0QgogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShtX3N1YnNj
cmlwdCwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5n
ZXQoKSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQo
KSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25t
ZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQo
KSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBzdGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29w
ZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQt
PnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CisgICAg
aWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZh
bChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBwcm9wZXJ0eS5nZXQoKSwgdXBk
YXRlZFZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFz
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRQcm9maWxlVHlwZSh1cGRhdGVkVmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAK
ICAgICByZXR1cm4gdXBkYXRlZFZhbHVlOwpAQCAtMjQxMSw3ICsyNTA1LDEwIEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQgPSBhc3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25O
b2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlm
IChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSwgaWRlbnQsIHByb3Bl
cnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudCwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShwcm9wZXJ0eU5hbWUsIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDIwLDcgKzI1MTcs
MTAgQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlRwogICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5i
YXNlKCkpOwogICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoYXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJl
c3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwg
YXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwo
YmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBpZiAoYXNzaWdu
Tm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBzdWJzY3JpcHQsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFy
dCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTI2MzEsNyArMjczMSwxMCBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShhc3NpZ25Ob2RlLT5iYXNlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUt
PmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChhc3NpZ25Ob2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCks
IGlkZW50LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCks
IGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1fbGV4cHItPmlz
QnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fbGV4cHIp
OwpAQCAtMjYzOSw3ICsyNzQyLDEwIEBAIHZvaWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW4KICAgICAgICAgICAgIFJlZ2lzdGVySUQqIHN1YnNjcmlwdCA9IGdlbmVyYXRvci5l
bWl0Tm9kZShhc3NpZ25Ob2RlLT5zdWJzY3JpcHQoKSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNz
aWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7
CisgICAgICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKQorICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJzY3JpcHQs
IHZhbHVlKTsKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGFz
c2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQobV9sZXhwci0+aXNEZXN0cnVjdHVyaW5nTm9k
ZSgpKTsKQEAgLTM2OTYsMTQgKzM4MDIsMjAgQEAgdm9pZCBBc3NpZ25tZW50RWxlbWVudE5vZGU6
OmJpbmRWYWx1ZShCeQogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGxocyA9IHN0YXRpY19jYXN0
PERvdEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+
YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGxocy0+aWRlbnRpZmllcigpLCB2YWx1ZSk7Cisg
ICAgICAgIGlmIChsaHMtPmJhc2UoKS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBnZW5lcmF0b3IuZW5zdXJlVGhpcygpLCBsaHMt
PmlkZW50aWZpZXIoKSwgdmFsdWUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZv
dEVuZCgpKTsKICAgICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNj
ZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbGhzID0gc3RhdGlj
X2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKGxocy0+YmFzZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPnN1YnNj
cmlwdCgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oZGl2b3RFbmQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAg
ICAgICBpZiAobGhzLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIGdlbmVyYXRvci5lbnN1cmVUaGlzKCksIHByb3Bl
cnR5LmdldCgpLCB2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMDAyNjQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOTcsNiArMjA5NywxMiBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBU
b3AoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlz
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBHZXRB
cnJheUxlbmd0aDogewogICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgu
dHJ5R2V0Rm9sZGFibGVWaWV3KApAQCAtMjU5NSw2ICsyNjAxLDExIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAg
ICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRl
ckJ5SWQ6CiAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIwMDI2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTM5LDYgKzM5MzksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X3Zh
bCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7
CisgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIE5vZGUqIHByb3BlcnR5ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiBnZXRCeVZhbFdpdGhU
aGlzID0gYWRkVG9HcmFwaChHZXRCeVZhbFdpdGhUaGlzLCBiYXNlLCB0aGlzVmFsdWUsIHByb3Bl
cnR5KTsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCksIGdldEJ5VmFsV2l0aFRoaXMpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNl
IG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKICAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpKTsKQEAgLTM5ODAsNiArMzk5MCwyMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9w
dXRfYnlfdmFsKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNW
YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZCkpOworICAgICAgICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHZhbHVl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7
CisKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGJhc2UpOworICAgICAgICAgICAgYWRkVmFy
QXJnQ2hpbGQodGhpc1ZhbHVlKTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5
KTsKKyAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZhbHVlKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbFdpdGhUaGlzLCBPcEluZm8oMCksIE9wSW5mbygw
KSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDogewogICAgICAgICAg
ICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCkpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmRdOwpAQCAtNDAxMyw2ICs0MDM4LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lk
KTsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmRdOworCisgICAgICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoR2V0QnlJZFdpdGhUaGlzLCBPcEluZm8oaWRl
bnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSkpOworCisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIE5vZGUq
IGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKQEAgLTQwMjgsNiArNDA2MywxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9wdXRfYnlfaWQpOwogICAg
ICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CisgICAgICAg
ICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBOb2RlKiB0aGlzVmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZF07CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0QnlJZFdpdGhUaGlzLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfcHV0X3NldHRl
cl9ieV9pZDogewogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTYsOCArMTU2LDEyIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwo
T3Bjb2RlSUQKICAgICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OgogICAgIGNhc2Ugb3BfdHJ5
X2dldF9ieV9pZDoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICBjYXNlIG9wX2dldF9ieV9p
ZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNl
IG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXM6
CiAgICAgY2FzZSBvcF9wdXRfZ2V0dGVyX2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X3NldHRlcl9i
eV9pZDoKICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwMDI2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MzUsNyArNDM1LDExIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUKICAgICAgICAgCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNo
OgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoK
ICAgICBjYXNlIFB1dEJ5SWQ6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBQ
dXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJ
ZERpcmVjdDoKICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDEx
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFRyeUdl
dEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgUHV0QnlJZDoKICAgICBjYXNlIFB1dEJ5SWRG
bHVzaDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAg
ICBjYXNlIFB1dFNldHRlckJ5SWQ6CkBAIC0xOTksNiArMjAyLDcgQEAgYm9vbCBkb2VzR0MoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0R2V0dGVyOgogICAgIGNhc2UgR2V0
U2V0dGVyOgogICAgIGNhc2UgR2V0QnlWYWw6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgog
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgogICAgIGNhc2UgQXJyYXlQdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM2LDcg
KzExMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAorCiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAg
ICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewpAQCAtMTU2MCw2ICsxNTYwLDEyIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAg
ICAgICBjYXNlIFR5cGVPZjoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAg
IGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6Cisg
ICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2Miw5
ICs4NjIsMTEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CisgICAgICAgIGNhc2Ug
UHV0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6CiAgICAgICAgIGNh
c2UgUHV0U2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJTZXR0ZXJCeUlkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjAwMjY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNiArMTc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIC8qIHRoaXMgbXVzdCBiZSB0aGUgZGlyZWN0bHkgc3Vic2VxdWVudCBwcm9wZXJ0eSBwdXQu
IE5vdGUgdGhhdCBQdXRCeVZhbCAqL1wKICAgICAvKiBvcGNvZGVzIHVzZSBWYXJBcmdzIGJlYXVz
ZSB0aGV5IG1heSBoYXZlIHVwIHRvIDQgY2hpbGRyZW4uICovXAogICAgIG1hY3JvKEdldEJ5VmFs
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0QnlWYWxX
aXRoVGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dE15QXJndW1lbnRCeVZhbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IG1hY3JvKEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTG9hZFZhcmFyZ3MsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKQEAgLTE4Niw5ICsxODcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEdldEJ5SWQs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1
c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeUlk
V2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQ
dXRCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZEZsdXNoLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0QnlJZERpcmVjdCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKFB1dEJ5SWRXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKFB1dEJ5VmFsV2l0aFRoaXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJn
cykgXAogICAgIG1hY3JvKFB1dEdldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhQdXRTZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0R2V0
dGVyU2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDMsNiArMTQzLDE2IEBAIGNoYXIqIG5ld1R5cGVkQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUq
IGUKICAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihWaWV3Q2xhc3M6OmNyZWF0ZShleGVj
LCBzdHJ1Y3R1cmUsIHNpemUpKTsKIH0KIAordGVtcGxhdGUgPGJvb2wgc3RyaWN0Pgorc3RhdGlj
IEFMV0FZU19JTkxJTkUgdm9pZCBwdXRXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1
ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHB1
dFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QodGhpc1ZhbCwgc3RyaWN0KTsKKyAgICBiYXNlVmFsdWUucHV0SW5saW5lKGV4ZWMs
IGlkZW50LCBwdXRWYWx1ZSwgc2xvdCk7Cit9CisKIGV4dGVybiAiQyIgewogCiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcCkKQEAgLTc0Myw2ICs3NTMsNzQgQEAgRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlKS50b1ByaW1pdGl2ZShleGVjKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlz
LCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlk
KGV4ZWMsIGltcGwpLCBzbG90KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxXaXRo
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFN1YnNjcmlwdCkKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVGhpcyk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1
Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAo
SlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFz
U3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RH
ZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXQpOworICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VW
YWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4
ZWMsIGkpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVP
YmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBhdXRvIHByb3BlcnR5ID0g
c3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7Cit9CisK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IGltcGwpCit7CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29k
ZWRUaGlzLCBlbmNvZGVkVmFsdWUsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgaW1wbCkpOwor
fQorCit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKiBp
bXBsKQoreworICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2Rl
ZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9
CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4
ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIHB1dFdp
dGhUaGlzPHRydWU+KGV4ZWMsIGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVl
LCBwcm9wZXJ0eSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSWRlbnRpZmllciBwcm9wZXJ0eSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KS50b1Byb3BlcnR5S2V5KGV4ZWMpOwor
ICAgIHB1dFdpdGhUaGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVu
Y29kZWRWYWx1ZSwgcHJvcGVydHkpOworfQorCiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBhcnJheVN0cnVjdHVyZSwgdm9p
ZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAy
MDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkdlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5
VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWxTdHJpbmdJbnQo
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvUHJpbWl0aXZlKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJyYXkoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlKiwgdm9pZCosIHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdBcnJheUJ1ZmZlcihFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBzaXplX3Qs
IHNpemVfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdF
bXB0eUFycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopIFdURl9JTlRFUk5BTDsKQEAgLTk3LDYg
Kzk5LDEwIEBAIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmUKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5Qm91bmRzTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc1N0cmljdChFeGVjU3RhdGUqLCBKU09i
amVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25T
dHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBkb3VibGUgdmFsdWUp
IFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeUlkV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRo
aXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UHVzaERv
dWJsZShFeGVjU3RhdGUqLCBkb3VibGUgdmFsdWUsIEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFycmF5UG9wKEV4ZWNTdGF0ZSos
IEpTQXJyYXkqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2NSw2ICs2NjUsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAg
ICAgICAgc2V0UHJlZGljdGlvbihTcGVjQnl0ZWNvZGVUb3ApOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOiB7CiAgICAgICAgICAgICBzZXRQ
cmVkaWN0aW9uKFNwZWNCeXRlY29kZVRvcCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4NCw2
ICs5ODksOCBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICAgICAgLy8gVGhlc2UgZ2V0
IGlnbm9yZWQgYmVjYXVzZSB0aGV5IGRvbid0IHJldHVybiBhbnl0aGluZy4KICAgICAgICAgY2Fz
ZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAg
ICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9u
IDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsOSArMTk0LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2Fz
ZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhU
aGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4MSw2ICsyNjgx
LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
YmFzZVRhZyA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJh
c2UucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVl
LnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5w
YXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2Rl
LT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRUYWcgPSBzdWJzY3JpcHQudGFn
R1BSKCk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRQYXlsb2FkID0gc3Vic2NyaXB0LnBheWxv
YWRHUFIoKTsKKworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRo
aXMpOworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisKKyAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdp
dGhUaGlzLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQYXls
b2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQsIHN1YnNjcmlwdFRhZywgc3Vic2Ny
aXB0UGF5bG9hZCk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2Ug
UHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC0yODU5LDYgKzI4ODMsNzYg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6IHsKKyAgICAgICAgaWYgKEdQ
UkluZm86Om51bWJlck9mUmVnaXN0ZXJzIDwgOCkgeworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qg
aGF2ZSBlbm91Z2ggcmVnaXN0ZXJzIG9uIFg4NiAob3IgTUlQUywgSSBndWVzcykgZm9yIHRoaXMu
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChHUFJJbmZvOjpudW1iZXJPZlJlZ2lzdGVycyA+
PSA2KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgICAgIG1faml0
LnBva2UoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGluZGV4KyspOworCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFw
aCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgYmFzZVRh
ZyA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0g
YmFzZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAxKSk7CisgICAgICAg
ICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVRhZyA9IHRoaXNWYWx1ZS50YWdHUFIoKTsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BS
KCk7CisKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2pp
dC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlUYWcgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcg
cHJvcGVydHlQYXlsb2FkID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICAg
ICAgbV9qaXQucG9rZShiYXNlUGF5bG9hZCwgaW5kZXgrKyk7CisgICAgICAgICAgICAgICAgbV9q
aXQucG9rZShiYXNlVGFnLCBpbmRleCsrKTsKKworICAgICAgICAgICAgICAgIG1faml0LnBva2Uo
dGhpc1ZhbHVlUGF5bG9hZCwgaW5kZXgrKyk7CisgICAgICAgICAgICAgICAgbV9qaXQucG9rZSh0
aGlzVmFsdWVUYWcsIGluZGV4KyspOworCisgICAgICAgICAgICAgICAgbV9qaXQucG9rZShwcm9w
ZXJ0eVBheWxvYWQsIGluZGV4KyspOworICAgICAgICAgICAgICAgIG1faml0LnBva2UocHJvcGVy
dHlUYWcsIGluZGV4KyspOworCisgICAgICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbV9q
aXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAzKSk7CisgICAgICAgICAgICBHUFJSZWcgdmFs
dWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWQg
PSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKHZhbHVlUGF5bG9h
ZCwgaW5kZXgrKyk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKHZhbHVlVGFnLCBpbmRleCsrKTsK
KworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGFwcGVuZENhbGwo
bV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25Q
dXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyk7CisgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gOCk7CisK
KyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJB
cmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZVRhZyA9IGJhc2UudGFn
R1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQgPSBiYXNlLnBheWxvYWRHUFIo
KTsKKworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1
ZVRhZyA9IHRoaXNWYWx1ZS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVQ
YXlsb2FkID0gdGhpc1ZhbHVlLnBheWxvYWRHUFIoKTsKKworICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgcHJvcGVydHkodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7
CisgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlUYWcgPSBwcm9wZXJ0eS50YWdHUFIoKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVBheWxvYWQgPSBwcm9wZXJ0eS5wYXlsb2FkR1BSKCk7
CisKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCku
dmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFnID0gdmFs
dWUudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkID0gdmFsdWUucGF5
bG9hZEdQUigpOworCisgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeVZhbFdp
dGhUaGlzLAorICAgICAgICAgICAgICAgIE5vUmVzdWx0LCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwg
dGhpc1ZhbHVlVGFnLCB0aGlzVmFsdWVQYXlsb2FkLCBwcm9wZXJ0eVRhZywgcHJvcGVydHlQYXls
b2FkLCB2YWx1ZVRhZywgdmFsdWVQYXlsb2FkKTsKKyAgICAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CisgICAgICAgIH0KKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZWdFeHBFeGVjOiB7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CkBAIC00MDMzLDYg
KzQxMjcsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BS
UmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQg
PSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNUYWcgPSB0aGlzVmFsdWUu
dGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB0aGlzUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2Fk
R1BSKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlz
KTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAg
ICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworCisgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlJZFdpdGhU
aGlzLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQYXlsb2Fk
LCB0aGlzVGFnLCB0aGlzUGF5bG9hZCwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICgh
bm9kZS0+cHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpAQCAtNDMwNSw2
ICs0NDIwLDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQ
UlJlZyBiYXNlVGFnID0gYmFzZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2Fk
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlz
VmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVQYXlsb2FkID0gdGhpc1Zh
bHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsK
KyAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKworICAg
ICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3Ry
aWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhU
aGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLAorICAgICAgICAgICAgTm9SZXN1
bHQsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlzVmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQs
IHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51
bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9S
ZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0R2V0dGVy
QnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6IHsKICAgICAgICAgY29tcGlsZVB1dEFjY2Vz
c29yQnlJZChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjc2Myw2ICsyNzYzLDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7
CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFs
dWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlw
dCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAgICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSBz
dWJzY3JpcHQuZ3ByKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworCisgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlW
YWxXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHN1YnNjcmlwdEdQ
Uik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFs
aWFzOiB7CkBAIC00MTMwLDYgKzQxNDksMjMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJS
ZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworCisgICAgICAgIEdQUkZsdXNoZWRD
YWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFs
dWVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgICAg
IG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEFycmF5TGVu
Z3RoOgogICAgICAgICBjb21waWxlR2V0QXJyYXlMZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNDMwOSw2ICs0MzQ1LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRo
aXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1
ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzLCBOb1Jl
c3VsdCwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCB2YWx1ZUdQUiwgaWRlbnRpZmllclVJRChub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
KworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg
Y2FzZSBQdXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRo
aXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBHUFJSZWcg
dGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBw
cm9wZXJ0eSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAg
ICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHkuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVP
cGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOwor
ICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJl
Z2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6
IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIE5vUmVzdWx0LCBiYXNlR1BSLCB0aGlzVmFsdWVH
UFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwog
ICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY2
LDYgKzEyNjYsMjEgQEAgcHVibGljOgogCiAKICNpZiBVU0UoSlNWQUxVRTY0KQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9uLCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMsIFRydXN0ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE2
NjEsNiArMTY3NiwyMyBAQCBwdWJsaWM6CiAjZWxzZQogI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlf
QVJHCiAjZW5kaWYKKyAgICAvLyBIRVJFCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQ
UlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8z
MkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2FkLCBhcmcyVGFn
LCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQorICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkgb3BlcmF0aW9u
LCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BS
UmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2FkLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBh
cmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcsIFRydXN0ZWRJbW1QdHIo
dWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRh
ZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXlsb2Fk
LCBHUFJSZWcgYXJnNFRhZywgR1BSUmVnIGFyZzRQYXlsb2FkKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQ
YXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNU
YWcsIGFyZzRQYXlsb2FkLCBhcmc0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKKyAgICB9CisgICAgLy8gSEVSRQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIGlt
cGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY4LDYgKzE2OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAK
ICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgogICAg
IGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6CkBAIC0y
NTgsNiArMjU5LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CisgICAgY2FzZSBQdXRC
eUlkV2l0aFRoaXM6CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5
U3RvcmFnZToKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6
U3RyaW5nKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMjIsNiArMzI1LDggQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAgICAgcmV0dXJuIENhbm5v
dENvbXBpbGU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBHZXRCeVZhbFdp
dGhUaGlzOgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0
QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgpAQCAtMzM4LDYgKzM0Myw4IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgICAgIHJl
dHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBcnJheVB1c2g6CiAg
ICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJheU1vZGUoKS50eXBl
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHJldmlzaW9uIDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiw5IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5
SWQoQWNjZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdl
dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgogICAgICAgICAgICAgY29tcGlsZUlu
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYxMCw2ICs2MTMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVQdXRCeUlkKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAg
ICAgICBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CiAgICAg
ICAgICAgICBjb21waWxlUHV0QWNjZXNzb3JCeUlkKCk7CkBAIC02NDYsMTEgKzY1MiwxNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAg
ICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGly
ZWN0OgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgY29tcGlsZVB1dEJ5
VmFsV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFycmF5UHVz
aDoKICAgICAgICAgICAgIGNvbXBpbGVBcnJheVB1c2goKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjQ0OSw2ICsyNDYxLDQ1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRCeUlkV2l0aFRoaXMoKQorICAgIHsK
KyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUs
IG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKV0pKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KKworICAg
IHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJh
c2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1Zh
bHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHN1YnNj
cmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5
VmFsV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBzdWJzY3JpcHQpOwor
ICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0
QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUo
bV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5v
cGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
ID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdpdGhU
aGlzKSwKKyAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHZhbHVlLCBt
X291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCldKSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlUHV0QnlWYWxXaXRoVGhpcygp
CisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIHRoaXNWYWx1ZSA9IGxvd0pTVmFsdWUo
bV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAgICAgICAgTFZhbHVlIHByb3BlcnR5
ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMikpOworICAgICAgICBM
VmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAzKSk7
CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFw
aC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0
QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpLAorICAgICAg
ICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHksIHZhbHVlKTsKKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgpCiAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNwcAkocmV2aXNpb24gMjAwMjY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCwxMDcgQEAgdm9pZCBDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93Q2hp
Y2tlblBhYwogICAgIHN0b3JlUHRyKEdQUkluZm86OnJlZ1QyLCBBZGRyZXNzKEdQUkluZm86OnJl
Z1QwKSk7CiB9CiAKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKK3ZvaWQg
Q0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBk
ZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3Jj
QiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQoreworICAgIGlmICghQVNTRVJUX0RJU0FCTEVE
KSB7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9ucyhkZXN0QSwgZGVzdEIsIGRlc3RD
LCBkZXN0RCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVzdGluYXRpb25zLm51bWJl
ck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hvdWxkIG5vdCBiZSBhbGlhc2VkLiIp
OworICAgIH0KKworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQUlJlZywgR1BSUmVnPiBSZWdQYWly
OworICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKKworICAgIGlmIChzcmNBICE9IGRlc3RB
KQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjQSwgZGVzdEEpKTsKKyAg
ICBpZiAoc3JjQiAhPSBkZXN0QikKKyAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHNyY0IsIGRlc3RCKSk7CisgICAgaWYgKHNyY0MgIT0gZGVzdEMpCisgICAgICAgIHBhaXJzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOworICAgIGlmIChzcmNEICE9IGRlc3RE
KQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3JjRCwgZGVzdEQpKTsKKwor
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbnVtVW5pcXVlU291cmNlcyA9IFsmXSAo
KSAtPiB1bnNpZ25lZCB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZp
cnN0OworICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgfTsKKworICAgIGF1dG8gbnVtVW5pcXVl
RGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAgICBSZWdpc3RlclNldCBzZXQ7Cisg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICBHUFJSZWcgZGVz
dCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgc2V0LnNldChkZXN0KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygpOworICAgIH07CisjZW5kaWYKKwor
ICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgZnJlZURlc3Rp
bmF0aW9uczsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAg
IEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25z
LnNldChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykg
eworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBm
cmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
ZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkgeworICAgICAgICAgICAgYm9vbCBt
YWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
aXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ld
OworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgaWYgKGZy
ZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoc291
cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgcGFpcnMucmVtb3ZlKGkpOworICAgICAg
ICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVCht
YWRlTW92ZSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEFT
U0VSVChudW1VbmlxdWVEZXN0cygpID09IG51bVVuaXF1ZVNvdXJjZXMoKSk7CisgICAgICAgIEFT
U0VSVChudW1VbmlxdWVEZXN0cygpID09IHBhaXJzLnNpemUoKSk7CisgICAgICAgIC8vIFRoZSBz
ZXQgb2Ygc291cmNlIGFuZCBkZXN0aW5hdGlvbiByZWdpc3RlcnMgYXJlIGVxdWl2YWxlbnQgc2V0
cy4gVGhpcyBtZWFucyB3ZSBkb24ndCBoYXZlCisgICAgICAgIC8vIGFueSBmcmVlIGRlc3RpbmF0
aW9uIHJlZ2lzdGVycyB0aGF0IHdvbid0IGFsc28gY2xvYmJlciBhIHNvdXJjZS4gV2UgZ2V0IGFy
b3VuZCB0aGlzIGJ5CisgICAgICAgIC8vIGV4Y2hhbmdpbmcgcmVnaXN0ZXJzLgorCisgICAgICAg
IEdQUlJlZyBzb3VyY2UgPSBwYWlyc1swXS5maXJzdDsKKyAgICAgICAgR1BSUmVnIGRlc3QgPSBw
YWlyc1swXS5zZWNvbmQ7CisgICAgICAgIHN3YXAoc291cmNlLCBkZXN0KTsKKyAgICAgICAgcGFp
cnMucmVtb3ZlKDApOworCisgICAgICAgIEdQUlJlZyBuZXdTb3VyY2UgPSBzb3VyY2U7CisgICAg
ICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7CisgICAgICAgICAgICBHUFJSZWcgc291cmNl
ID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGlmIChzb3VyY2UgPT0gZGVzdCkgeworICAgICAg
ICAgICAgICAgIHBhaXIuZmlyc3QgPSBuZXdTb3VyY2U7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBtYXkgaGF2ZSBpbnRy
b2R1Y2VkIHBhaXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLiBS
ZW1vdmUgdGhvc2Ugbm93LgorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGF1dG8mIHBhaXIgPSBwYWlyc1tpXTsKKyAgICAg
ICAgICAgIGlmIChwYWlyLmZpcnN0ID09IHBhaXIuc2Vjb25kKSB7CisgICAgICAgICAgICAgICAg
cGFpcnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
ID49IDQKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCShyZXZpc2lvbiAyMDAy
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJBc3NlbWJseUhlbHBlcnMuaCIK
ICNpbmNsdWRlICJHUFJJbmZvLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJNYXAuaCIKICNpbmNsdWRl
ICJTdGFja0FsaWdubWVudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTgyNyw2ICs4MjgsMjEg
QEAgcHVibGljOgogICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CiAgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmczKTsKICAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIEdQUlJlZyBhcmc3LCBH
UFJSZWcgYXJnOCkKKyAgICB7CisgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAg
ICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBh
ZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAg
ICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJn
NCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc1KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3Vt
ZW50KGFyZzYpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNyk7CisgICAgICAgIGFkZENh
bGxBcmd1bWVudChhcmc4KTsKKyAgICB9CisKICNlbmRpZiAvLyAhTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUwogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2Fs
bGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gYXQgbGVhc3QgNCBhcmd1
bWVudCByZWdpc3RlcnMsIGUuZy4gWDg2XzY0LCBBUk12Ny4KQEAgLTkxMyw2ICs5MjksOCBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzd2FwKGRlc3RCLCBkZXN0Qyk7CiAgICAgfQogCisgICAgdm9p
ZCBzZXR1cEZvdXJTdHViQXJnc0dQUihHUFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVn
IGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQUlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNy
Y0MsIEdQUlJlZyBzcmNEKTsKKwogI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKICAgICB0
ZW1wbGF0ZTxGUFJSZWcgZGVzdEEsIEZQUlJlZyBkZXN0Qj4KICAgICB2b2lkIHNldHVwVHdvU3R1
YkFyZ3NGUFIoRlBSUmVnIHNyY0EsIEZQUlJlZyBzcmNCKQpAQCAtMTk1MSw2ICsxOTY5LDI3IEBA
IHB1YmxpYzoKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVn
IGFyZzQsIEdQUlJlZyBhcmc1LCBHUFJSZWcgYXJnNiwgR1BSUmVnIGFyZzcsIEdQUlJlZyBhcmc4
KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc4LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDQpOwor
ICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMyk7CisgICAgICAgIHBv
a2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKKyAgICAgICAgcG9rZShhcmc1LCBQ
T0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1LCBHUFJSZWcgYXJnNiwgR1BSUmVnIGFyZzcsIEdQ
UlJlZyBhcmc4LCBHUFJSZWcgYXJnOSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnOSwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQgKyA1KTsKKyAgICAgICAgcG9rZShhcmc4LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCArIDQpOworICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMyk7
CisgICAgICAgIHBva2UoYXJnNiwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAyKTsKKyAgICAgICAg
cG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQs
IFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1LCBHUFJS
ZWcgYXJnNiwgR1BSUmVnIGFyZzcpCiAgICAgewogICAgICAgICBwb2tlKGFyZzcsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMyk7CkBAIC0xOTg2LDYgKzIwMjUsMTIgQEAgcHVibGljOgogI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAogCiAjaWYgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA+PSA1CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHNldHVwRm91clN0dWJBcmdzR1BSKEdQUkluZm86
OmFyZ3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjMsIEdQUkluZm86OmFyZ3VtZW50R1BSNCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgfQorCiAgICAgdm9pZCBzZXR1cFN0dWJBcmd1bWVudHMxMzQoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHNldHVwVGhyZWVTdHVi
QXJnc0dQUjxHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BS
SW5mbzo6YXJndW1lbnRHUFI0PihhcmcxLCBhcmczLCBhcmc0KTsKQEAgLTIwMzYsNiArMjA4MSwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJndW1lbnRHUFI0KTsK
ICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKICAgICB9CisKKyAgICAvL0FMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BS
UmVnIGFyZzQpCisgICAgLy97CisgICAgLy8gICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7CisgICAgLy8gICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOworICAgIC8vfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0ciBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtODgwLDIwICs4ODAsNiBAQCBw
dWJsaWM6CiAKICNlbmRpZiAvLyBDUFUoU0g0KQogCi1pbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVn
aXN0ZXJGb3IodW5zaWduZWQgYXJndW1lbnRJbmRleCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgIGlmIChhcmd1bWVudEluZGV4ID49IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpCi0g
ICAgICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwotCi0gICAgcmV0dXJuIEdQUkluZm86OnRvQXJn
dW1lbnRSZWdpc3Rlcihhcmd1bWVudEluZGV4KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFy
Z3VtZW50SW5kZXgpOwotCi0gICAgcmV0dXJuIEludmFsaWRHUFJSZWc7Ci0jZW5kaWYKLX0KLQog
Ly8gVGhlIGJhc2VsaW5lIEpJVCB1c2VzICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdp
dGggcmVnVDAgKGZvciA2NC1iaXQpCiAvLyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkg
c2VydmluZyBhcyB0aGUgYWNjdW11bGF0b3IgcmVnaXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJl
c3VsdHMgb2Ygb25lIG9wY29kZSB0byB0aGUgbmV4dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw3ICsyMzEsOSBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0
X2J5X2lkKQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfYnlfaWQpCisgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90
aGlzKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09Q
KG9wX2dldF9ieV92YWxfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVz
X2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAg
IERFRklORV9PUChvcF9pbnN0YW5jZW9mX2N1c3RvbSkKQEAgLTI4Niw5ICsyODgsMTEgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcGFyZW50
X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQorICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X2lkX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9p
bmRleCkKICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dl
dHRlcl9zZXR0ZXJfYnlfaWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9u
IDIwMDI2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwNCw2ICs1MDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9u
Kik7CkBAIC01NjIsOCArNTY0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVt
aXRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2dldF9wYXJlbnRfc2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cHV0X2J5X2luZGV4KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlf
dmFsKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhf
dGhpcyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9p
ZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAyMDAyNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBAIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiAoKkpfSklUT3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJf
dCwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJ
VE9wZXJhdGlvbl9FWlN5bXRhYkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwg
RW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgq
Sl9KSVRPcGVyYXRpb25fRU9JVWkpKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmlu
Z0ltcGwqLCB1aW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
KCpKX0pJVE9wZXJhdGlvbl9FSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJB
VElPTiAoKkNfSklUT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBKU0NlbGwqIEpJ
VF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0
eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VDKShFeGVjU3Rh
dGUqLCBKU0NlbGwqKTsKQEAgLTI0OCw2ICsyNDksOCBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJB
VElPTiAoKlZfSklUT3BlcmF0CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3Bl
cmF0aW9uX0VQYykoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgdm9pZCBKSVRf
T1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMy
X3QsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRP
cGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVk
SlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKik7Cit0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5n
SW1wbCopOwordHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpK
SikoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJ
VE9wZXJhdGlvbl9FV3MpKEV4ZWNTdGF0ZSosIFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9p
ZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3Qp
OwogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWkopKEV4ZWNT
dGF0ZSosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24g
MjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1NCw2ICsxMTU0LDMwIEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF90b19hcmd1bWVudHMoSW5zdHIKICAgICBzdG9yZTMyKHJlZ1QyLCBBZGRyZXNz
KHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPikgKyBQYXlsb2FkT2Zmc2V0KSk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlf
dmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV92
YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjAw
MjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0
X2J5X3ZhbChJbnN0cnVjdGlvbgogICAgIG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5
VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFsSW5mbywgbV9ieXRlY29kZU9mZnNldCwgbm90SW5kZXgs
IGJhZFR5cGUsIG1vZGUsIHByb2ZpbGUsIGRvbmUsIGRvbmUpKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENh
bGwuY2FsbCgpOworfQorCiBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3Vz
UHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYg
YmFkVHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nU2hhcGUpCiB7CiAgICAgaW50IHZhbHVlID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKQEAgLTU5Myw2ICs1OTksMTggQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93
aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9p
ZChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQogewogICAgIGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKQEAgLTYzOCw2ICs2NTYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
cHV0X2J5X2lkKEluc3RydWN0aW9uKgogICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlf
aWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzUyLDYgKzE3NTIsMjggQEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKICAgICBkaXNwYXRjaCg0KQog
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKKyAgICBkaXNw
YXRjaCg1KQorCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlz
KQorICAgIGRpc3BhdGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfaWRf
d2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKK19sbGludF9vcF9wdXRfYnlfdmFsX3dpdGhf
dGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhf
cHV0X2J5X3ZhbF93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCisKIAogIyBMYXN0bHks
IG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQg
YWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNp
bmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMDI2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgxNiw0ICs4MTYsOTQgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NvcHlfcmVzdCkKICAgICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHRoaXNWYWwgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0
aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXQpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xv
dCk7CisgICAgUkVUVVJOKHJlc3VsdCk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9n
ZXRfYnlfdmFsX3dpdGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IE9QX0Mo
MykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQyg0KS5qc1ZhbHVlKCk7
CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJp
bmcoKSkpIHsKKyAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgU3RydWN0dXJl
JiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAg
ICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3duUHJvcGVydHkoc3RydWN0dXJlKSkgeworICAg
ICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmlu
ZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsK
KyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCkt
PmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5n
ZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTihyZXN1bHQpOyAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFs
dWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBz
dWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAm
JiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIFJFVFVS
Tihhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKSk7CisgICAgICAgIAorICAg
ICAgICBSRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpLCBzbG90KSk7CisgICAgfQorCisgICAg
YmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFJFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMs
IHByb3BlcnR5LCBzbG90KSk7Cit9CisKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlf
aWRfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNv
ZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7CisgICAgYmFzZVZhbHVlLnB1dElubGluZShleGVj
LCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQorCitTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAg
CisgICAgLy9pZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgIC8vICAgIHVp
bnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAvLyAgICBpZiAoYmFzZVZhbHVl
LmlzT2JqZWN0KCkpIHsKKyAgICAvLyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KGJhc2VWYWx1ZSk7CisgICAgLy8gICAgICAgIGlmIChvYmplY3QtPmNhblNldEluZGV4UXVpY2ts
eShpKSkgeworICAgIC8vICAgICAgICAgICAgb2JqZWN0LT5zZXRJbmRleFF1aWNrbHkodm0sIGks
IHZhbHVlKTsKKyAgICAvLyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgIC8vICAgICAgICB9
CisgICAgLy8gICAgICAgIGVsc2UKKyAgICAvLyAgICAgICAgICAgIG9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+cHV0QnlJbmRleChvYmplY3QsIGV4ZWMsIGksIHZhbHVlLCBleGVjLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpOworICAgIC8vICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAvLyAg
ICB9CisgICAgLy8gICAgYmFzZVZhbHVlLnB1dEJ5SW5kZXgoZXhlYywgaSwgdmFsdWUsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgLy8gICAgRU5EKCk7CisgICAgLy99
CisKKyAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVl
LCBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAkocmV2aXNpb24gMjAwMjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw2ICsyNDgs
MTAgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbAogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfY29weV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0
X2J5X2lkX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9i
eV92YWxfd2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5
X2lkX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92
YWxfd2l0aF90aGlzKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHkt
YWNjZXNzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
ODYgQEAKK2Z1bmN0aW9uIGFzc2VydChiLCBtID0gIkJhZCEiKSB7CisgICAgaWYgKCFiKSB7Cisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihtKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHRlc3QoZiwg
aXRlcnMgPSAxMDAwKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyczsgaSsrKQorICAg
ICAgICBmKCk7Cit9CisKK2Z1bmN0aW9uIGZ1bmMoeCkgeworICAgIHJldHVybiB4OworfQorbm9J
bmxpbmUoZnVuYyk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAg
IGNvbnN0cnVjdG9yKHgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0geDsK
KyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQor
ICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgIH0KKworICAg
IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgc3VwZXIudmFsdWUg
PSB4OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHN1cGVyLnZhbHVlOyB9CisgICAg
fQorCisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBCKDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IDIw
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXJyW2ldLnZhbHVlID0gaTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBp
KyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorfSwgMTAp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIHZhbHVlKCkgeyByZXR1cm4gJ3Zh
bHVlJzsgfQorICAgIG5vSW5saW5lKHZhbHVlKTsKKworICAgIGNsYXNzIEEgeworICAgICAgICBj
b25zdHJ1Y3Rvcih4LCBmID0gZnVuYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdmFs
dWUgPSB4OworICAgICAgICAgICAgdGhpcy5fZnVuYyA9IGY7CisgICAgICAgIH0KKworICAgICAg
ICBzZXQgdmFsdWUoeCkgeyB0aGlzLl92YWx1ZSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkg
eyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICAgICAgZ2V0IGZ1bmMoKSB7IHJldHVybiB0aGlz
Ll9mdW5jOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBzZXQg
dmFsdWUoeCkgeyBzdXBlclt2YWx1ZSgpXSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyBy
ZXR1cm4gc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgaW5jKCkgeyByZXR1cm4gc3VwZXJbdmFs
dWUoKV0rKzsgfQorICAgICAgICBkZWMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXS0tOyB9Cisg
ICAgICAgIHByZUluYygpIHsgcmV0dXJuICsrc3VwZXJbdmFsdWUoKV07IH0KKyAgICAgICAgcHJl
RGVjKCkgeyByZXR1cm4gLS1zdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBwbHVzRXEoeCkgeyBz
dXBlclt2YWx1ZSgpXSArPSB4OyB9CisgICAgICAgIG1pbnVzRXEoeCkgeyBzdXBlclt2YWx1ZSgp
XSAtPSB4OyB9CisgICAgICAgIHRpbWVzRXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAqPSB4OyB9Cisg
ICAgICAgIGRpdkVxKHgpIHsgc3VwZXJbdmFsdWUoKV0gLz0geDsgfQorCisgICAgICAgIGZ1bmNE
b3QoeCkgeyByZXR1cm4gc3VwZXIuZnVuYyh4KTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4KSB7
IHJldHVybiBzdXBlci5mdW5jKHgpOyB9CisgICAgfQorCisgICAgbGV0IGFyciA9IFtdOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKG5ldyBC
KDIwKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGxldCB0ID0gYXJyW2ldLnZhbHVlOworICAgICAgICBhc3NlcnQodCA9PT0gMjApOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0u
dmFsdWUgPSBpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsK
KyAgICAgICAgYXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2
ID0gYXJyW2ldLmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52
YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09
PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygp
OworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltp
XS5wbHVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZh
bHVlID09PSBpKmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZh
bHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsg
fSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJy
W2ldLmZ1bmNCcmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgs
IGYgPSBmdW5jKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHg7CisgICAg
ICAgICAgICB0aGlzLl9mdW5jID0gZjsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4
KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlz
Ll92YWx1ZTsgfQorICAgICAgICBnZXQgZnVuYygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7IH0KKyAg
ICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIHNldCB2YWx1ZSh4KSB7ICgo
KSA9PiBzdXBlci52YWx1ZSA9IHgpKCk7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4g
KCgpID0+IHN1cGVyLnZhbHVlKSgpOyB9CisgICAgICAgIGluYygpIHsgcmV0dXJuICgoKSA9PiBz
dXBlci52YWx1ZSsrKSgpOyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJuICgoKSA9PiBzdXBlci52
YWx1ZS0tKSgpOyB9CisgICAgICAgIHByZUluYygpIHsgcmV0dXJuICgoKSA9PiArK3N1cGVyLnZh
bHVlKSgpOyB9CisgICAgICAgIHByZURlYygpIHsgcmV0dXJuICgoKSA9PiAtLXN1cGVyLnZhbHVl
KSgpOyB9CisgICAgICAgIHBsdXNFcSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSArPSB4KSgpOyB9
CisgICAgICAgIG1pbnVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgLT0geCkoKTsgfQorICAg
ICAgICB0aW1lc0VxKHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlICo9IHgpKCk7IH0KKyAgICAgICAg
ZGl2RXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgLz0geCkoKTsgfQorCisgICAgICAgIGZ1bmNE
b3QoeCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICAgICAgZnVuY0Jy
YWNrZXQoeCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLmZ1bmMoeCkpKCk7IH0KKyAgICB9CisKKyAg
ICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gMjApOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0u
dmFsdWUgPSBpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5pbmMoKTsK
KyAgICAgICAgYXNzZXJ0KHYgPT09IGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2
ID0gYXJyW2ldLmRlYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSsxKTsKKyAgICB9CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52
YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlSW5jKCk7CisgICAgICAgIGFzc2VydCh2ID09
PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKzEpOworICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLnByZURlYygp
OworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAg
IH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltp
XS5wbHVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7
CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkraSk7CisgICAgfQorCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLm1pbnVzRXEoaSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS50aW1lc0VxKGkpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZh
bHVlID09PSBpKmkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsr
KSB7CisgICAgICAgIGlmIChpID09PSAwKQorICAgICAgICAgICAgYXJyW2ldLnZhbHVlID0gMDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJyW2ldLmRpdkVxKGkpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZh
bHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykg
eworICAgICAgICBhcnJbaV0gPSBuZXcgQigwLCBmdW5jdGlvbihhKSB7IHJldHVybiBpICsgYTsg
fSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0uZnVuY0RvdChpKSA9PT0gaSArIGkpOworICAgICAgICBhc3NlcnQoYXJy
W2ldLmZ1bmNCcmFja2V0KGkqMikgPT09IGkgKyBpKjIpOworICAgIH0KKworfSwgMTApOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9Cisg
ICAgbm9JbmxpbmUoZm9vKTsKKyAgICBjbGFzcyBBIHsgfQorICAgIGxldCBvYmogPSB7fTsKKyAg
ICBBLnByb3RvdHlwZS5mb28gPSBvYmo7CisgICAgQS5wcm90b3R5cGVbMF0gPSBvYmo7CisKKwor
ICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KCkgeyByZXR1cm4gc3VwZXJbZm9v
KCldOyB9CisgICAgICAgIGpheigpIHsgcmV0dXJuIHN1cGVyLmZvbzsgfQorICAgICAgICBiYXIo
KSB7IHJldHVybiBzdXBlclswXTsgfQorICAgICAgICAKKyAgICB9CisKKyAgICBhc3NlcnQoKG5l
dyBCKS5iYXooKSA9PT0gb2JqKTsKKyAgICBhc3NlcnQoKG5ldyBCKS5qYXooKSA9PT0gb2JqKTsK
KyAgICBhc3NlcnQoKG5ldyBCKS5iYXIoKSA9PT0gb2JqKTsKK30pOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGNsYXNzIEEgeyB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
CisgICAgICAgIEEucHJvdG90eXBlW2ldID0gaTsKKworCisgICAgY2xhc3MgQiBleHRlbmRzIEEg
eworICAgICAgICBpbmRleChpKSB7IHJldHVybiBzdXBlcltpXTsgfQorICAgIH0KKworICAgIGxl
dCBiID0gbmV3IEI7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGIuaW5kZXgoaSkgPT09IGkpOworICAgIH0KK30sIDUwKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBsZXQgb2JqID0ge307CisgICAgY2xhc3MgQSB7IGNvbnN0cnVjdG9yKHIp
IHsgdGhpcy5fZm9vID0gcjsgfSB9CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90
eXBlLCAnMCcsIHsgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMuX2ZvbzsgfSB9KTsKKwor
ICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmFyKCkgeyByZXR1cm4gc3VwZXJbMF07
IH0KKyAgICB9CisKKyAgICBsZXQgcmFuZCA9IE1hdGgucmFuZG9tKCk7CisgICAgYXNzZXJ0KChu
ZXcgQihyYW5kKSkuYmFyKCkgPT09IHJhbmQpOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7IGNs
YXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAg
ICAgICBzZXQgZm9vKHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAg
ICAgIH0KKyAgICAgICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9
CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAg
ICBsZXQgbyA9IHt4OjIwLCB5OjMwLCBbaV06aX07CisgICAgICAgICAgICBmb3IgKHN1cGVyLmZv
byBpbiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9
IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5hcnJheTsK
KyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChvYmpbMF0g
PT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAgICAgYXNz
ZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUoZm9v
KTsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5ID0g
W107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5wdXNo
KHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5
OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgewor
ICAgICAgICAgICAgbGV0IG8gPSB7eDoyMCwgeTozMCwgW2ldOml9OworICAgICAgICAgICAgZm9y
IChzdXBlcltmb28oKV0gaW4gbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9
IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2go
bmV3IEIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGxldCBvYmogPSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBh
cnJbaV0uYXJyYXk7CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBh
c3NlcnQob2JqWzBdID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcp
CisgICAgICAgIGFzc2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRo
aXMuX2FycmF5ID0gW107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlz
Ll9hcnJheS5wdXNoKHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJu
IHRoaXMuX2FycmF5OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAg
ICBiYXooaSkgeworICAgICAgICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIsICJ5Il07CisgICAg
ICAgICAgICBmb3IgKHN1cGVyLmZvbyBvZiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBs
ZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBh
cnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0
IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisg
ICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0g
PT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDAp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28n
OyB9CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9hcnJheSA9
IFtdOyB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fYXJyYXkucHVz
aCh4KTsKKyAgICAgICAgfQorICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVybiB0aGlzLl9hcnJh
eTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsK
KyAgICAgICAgICAgIGxldCBvID0gWycnICsgaSwgIngiLCAieSJdOworICAgICAgICAgICAgZm9y
IChzdXBlcltmb28oKV0gb2YgbykgeyB9CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9
IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykKKyAgICAgICAgYXJyLnB1c2go
bmV3IEIpOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGxldCBvYmogPSBhcnJbaV07CisgICAgICAgIG9iai5iYXooaSk7CisgICAgfQorICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGxldCBvYmogPSBh
cnJbaV0uYXJyYXk7CisgICAgICAgIGFzc2VydChvYmoubGVuZ3RoID09PSAzKQorICAgICAgICBh
c3NlcnQob2JqWzBdID09PSAnJyArIGkpOworICAgICAgICBhc3NlcnQob2JqWzFdID09PSAneCcp
CisgICAgICAgIGFzc2VydChvYmpbMl0gPT09ICd5JykKKyAgICB9Cit9LCAxMDAwKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICB0aGlzLl9mb28gPSBudWxsOworICAgICAgICB9CisgICAgICAgIHNldCBmb28o
eCkgeworICAgICAgICAgICAgdGhpcy5fZm9vID0geDsKKyAgICAgICAgfQorICAgICAgICBnZXQg
Zm9vKCkgeyByZXR1cm4gdGhpcy5fZm9vOyB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9iaihpKSB7
IHJldHVybiB7bzogaX07IH0KKyAgICBub0lubGluZShvYmopOworCisgICAgY2xhc3MgQiBleHRl
bmRzIEEgeworICAgICAgICBiYXooaSkgeworICAgICAgICAgICAgOyh7bzogc3VwZXIuZm9vfSA9
IG9iaihpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKChuZXcgQikpOwor
ICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJb
aV0uYmF6KGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLmZvbyA9PT0gaSk7CisgICAgfQorfSwgMTAwKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAnZm9vJzsgfQorICAg
IG5vSW5saW5lKGZvbyk7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICAgICAgdGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBzZXQgZm9v
KHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZvbyA9IHg7CisgICAgICAgIH0KKyAgICAgICAgZ2V0
IGZvbygpIHsgcmV0dXJuIHRoaXMuX2ZvbzsgfQorICAgIH0KKyAgICBmdW5jdGlvbiBvYmooaSkg
eyByZXR1cm4ge286IGl9OyB9CisgICAgbm9JbmxpbmUob2JqKTsKKworICAgIGNsYXNzIEIgZXh0
ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsKKyAgICAgICAgICAgIDsoe286IHN1cGVyW2Zvbygp
XX0gPSBvYmooaSkpOworICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnIucHVzaCgobmV3IEIp
KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
YXJyW2ldLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKysp
IHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS5mb28gPT09IGkpOworICAgIH0KK30sIDEwMCk7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkg
eworICAgICAgICAgICAgdGhpcy5fZm9vID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBnZXQg
Y2FsbCgpIHsKKyAgICAgICAgICAgIGxldCByZXQgPSAoKSA9PiAnY2FsbCc7CisgICAgICAgICAg
ICBub0lubGluZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAg
ICAgICBnZXQgYXBwbHkoKSB7IAorICAgICAgICAgICAgbGV0IHJldCA9ICgpID0+ICdhcHBseSc7
CisgICAgICAgICAgICBub0lubGluZShyZXQpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgZm9vKCkg
eworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNhbGwoe30sIDIwLCAzMCk7CisgICAgICAgIH0K
KyAgICAgICAgYmFyKCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmFwcGx5KHt9LCBbMTAs
IDIwXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7IGkr
KykgeworICAgICAgICBsZXQgYiA9IG5ldyBCOworICAgICAgICBhc3NlcnQoYi5mb28oKSA9PT0g
J2NhbGwnKTsKKyAgICAgICAgYXNzZXJ0KGIuYmFyKCkgPT09ICdhcHBseScpOworICAgIH0KK30p
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3Rv
cihpKSB7IHRoaXMuX2kgPSBpOyB9CisgICAgICAgIGdldCBmb28oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oc3RyaW5ncywgLi4udmFsdWVzKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIFtzdHJpbmdzLCB2YWx1ZXNdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGdldCBpKCkgeyByZXR1cm4gdGhpcy5faTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5k
cyBBIHsKKyAgICAgICAgYmF6KCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmZvb2BoZWxs
byR7c3VwZXIuaX13b3JsZGA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IGIgPSBu
ZXcgQihpKTsKKyAgICAgICAgYXJyLnB1c2goYik7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCByID0gYXJyW2ldLmJheigpOworICAgICAg
ICBhc3NlcnQoci5sZW5ndGggPT09IDIpOworICAgICAgICBhc3NlcnQoclswXS5sZW5ndGggPT09
IDIpOworICAgICAgICBhc3NlcnQoclswXVswXSA9PT0gJ2hlbGxvJyk7CisgICAgICAgIGFzc2Vy
dChyWzBdWzFdID09PSAnd29ybGQnKTsKKyAgICAgICAgYXNzZXJ0KHJbMV0ubGVuZ3RoID09PSAx
KTsKKyAgICAgICAgYXNzZXJ0KHJbMV1bMF0gPT09IGkpOworICAgIH0KK30pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277872</attachid>
            <date>2016-05-01 16:36:50 -0700</date>
            <delta_ts>2016-05-09 11:36:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>127897</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4OCBA
QAorMjAxNi0wNS0wMSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXR0ZXIgYW5kIHNldHRlciBvbiBzdXBlciBhcmUgY2FsbGVkIHdpdGggd3JvbmcgInRoaXMi
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTg4NTkxNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMg
Y2FsbHMgdG8gJ3N1cGVyJyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorICAgICAgICBUaGUgcHJvYmxl
bSBiZWZvcmUgaXMgd2Ugd2VyZSBwYXNzaW5nIHRoZSAnc3VwZXInIChpLmUsIHRoZSBwcm90b3R5
cGUKKyAgICAgICAgb2JqZWN0KSBhcyB0aGUgdGhpcyB2YWx1ZSB0byB0aGVzZSBnZXR0ZXJzL3Nl
dHRlcnMsIHdoaWNoIGlzIHdyb25nLiAKKyAgICAgICAgV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhl
IGNhbGxlcidzIHRoaXMgdmFsdWUuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgYmVoYXZp
b3IsIEkndmUgaW50cm9kdWNlZCBmb3VyIG5ldyBvcGNvZGVzIGFuZCB0aGVpciBjb3JyZXNwb25k
aW5nIERGRyBub2RlczoKKyAgICAgICAgLSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHwgR2V0QnlJ
ZFdpdGhUaGlzCisgICAgICAgIC0gb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyB8IFB1dEJ5SWRXaXRo
VGhpcworICAgICAgICAtIG9wX2dldF9ieV92YWxfd2l0aF90aGlzIHwgR2V0QnlWYWxXaXRoVGhp
cworICAgICAgICAtIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzIHwgUHV0QnlWYWxXaXRoVGhpcwor
CisgICAgICAgIFRoZXNlIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG5vIG9wdGltaXphdGlvbnMuIFRo
ZSBmdXR1cmUgcGxhbiBpcyAKKyAgICAgICAgdG8gdW5pdGUgdGhlbSB3aXRoIHRoZSAqYnlfaWQg
YW5kICpieV92YWwgb3Bjb2RlcyBhbmQgbm9kZXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTUKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRGVyaXZlZENvbnN0cnVj
dG9yRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAg
ICAgICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0
U3VwZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25G
b3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6Ok5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlRhZ2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tl
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAo
SlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVt
aXRCcmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAg
IChKU0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVy
KToKKyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdD
bG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICog
ZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBl
ZEFycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OnB1dFdpdGhUaGlzKToKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJh
dGlvbik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhp
cyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZh
bFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZVB1dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3Bw
OgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93Q2hpY2tlblBhY2tldCk6
CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBGb3VyU3R1YkFyZ3NHUFIpOgorICAg
ICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6
OnNldHVwVGhyZWVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0
dXBUd29TdHViQXJnc0ZQUik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHVi
QXJndW1lbnRzMTM0KToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjph
cmd1bWVudFJlZ2lzdGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3Zh
bCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0
X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9pZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRz
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
OgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21t
b25TbG93UGF0aHMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNj
ZXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0ZXN0KToKKyAgICAg
ICAgKGZ1bmMpOgorICAgICAgICAodGVzdC5BKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUu
c2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuc2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5
cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKHRlc3QuQik6CisgICAgICAgICh0ZXN0LnZhbHVlKToK
KyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IGZ1bmMpOgorICAgICAgICAodGVzdC5CLnBy
b3RvdHlwZS5pbmMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5kZWMpOgorICAgICAgICAo
dGVzdC5CLnByb3RvdHlwZS5wcmVJbmMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wcmVE
ZWMpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5wbHVzRXEpOgorICAgICAgICAodGVzdC5C
LnByb3RvdHlwZS5taW51c0VxKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUudGltZXNFcSk6
CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmRpdkVxKToKKyAgICAgICAgKHRlc3QuQi5wcm90
b3R5cGUuZnVuY0RvdCk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmZ1bmNCcmFja2V0KToK
KyAgICAgICAgKHRlc3QuZm9vKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuYmF6KToKKyAg
ICAgICAgKHRlc3QuQi5wcm90b3R5cGUuamF6KToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUu
YmFyKToKKyAgICAgICAgKHRlc3QuQi5wcm90b3R5cGUuaW5kZXgpOgorICAgICAgICAodGVzdC4p
OgorICAgICAgICAodGVzdC5wcm90b3R5cGUuYmFyKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5
cGUuc2V0IGZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBhcnJheSk6CisgICAg
ICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCBmb28pOgorICAgICAgICAodGVzdC5vYmopOgorICAg
ICAgICAodGVzdC5BLnByb3RvdHlwZS5nZXQgY2FsbCk6CisgICAgICAgICh0ZXN0LkEucHJvdG90
eXBlLmdldCBhcHBseSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmZvbyk6CisgICAgICAg
ICh0ZXN0LkEucHJvdG90eXBlLmdldCBpKToKKyAgICAgICAgKHRlc3QuZm9vUHJvcCk6CisgICAg
ICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCB4KToKKyAgICAgICAgKHRlc3QuZnVuYyk6CisgICAg
ICAgIChzaG91bGRUaHJvd1REWik6CisgICAgICAgICh0ZXN0LkMpOgorICAgICAgICAodGVzdC5E
KToKKyAgICAgICAgKHRlc3QuRSk6CisgICAgICAgICh0ZXN0LkYpOgorCiAyMDE2LTA0LTMwICBL
b25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBHdWFyZCBP
YmpDLXNwZWNpZmljIGNvZGUgaW4gSGVhcC5jcHAgd2l0aCBVU0UoRk9VTkRBVElPTikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24J
KHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE1IEBACiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfdHJ5X2dldF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyIsICJsZW5ndGgiIDogNSB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6
IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVu
Z3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV9pZCIsICJsZW5n
dGgiIDogOSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X2J5X2lkX3dpdGhfdGhp
cyIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVsX2J5X2lk
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfdmFs
IiwgImxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFs
IiwgImxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFs
X3dpdGhfdGhpcyIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cHV0X2J5X3ZhbF9kaXJlY3QiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2RlbF9ieV92YWwiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3B1dF9ieV9pbmRleCIsICJsZW5ndGgiIDogNCB9LApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIwMDMx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDIxIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgQVNTRVJUKG9wY29k
ZUxlbmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2Fz
ZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXSA+IDQpOwpAQCAtMjAzLDEyICsyMTgsMjAgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmVxOgogICAgIGNhc2Ugb3BfZXE6CiAgICAgY2Fz
ZSBvcF9wdXNoX3dpdGhfc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOgog
ICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiAzKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlz
OiB7CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206CiAg
ICAgY2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfY29uc3RydWN0
X3ZhcmFyZ3M6CkBAIC0zMTYsNiArMzM5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbAogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0
Y2hfc3RyaW5nOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ug
b3BfcHV0X2dldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfaWQ6CiAgICAg
Y2FzZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDoKQEAgLTM3MSw2ICszOTYsOCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAgICAgY2FzZSBvcF9jb25zdHJ1
Y3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgor
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxf
d2l0aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIG9wX292
ZXJyaWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIw
MDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTE3LDExICsxMTE3LDQ3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJp
bnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9ieV9pZF93aXRoX3RoaXMiKTsKKyAg
ICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIx
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgaWROYW1l
KGlkMCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfdmFsX3dpdGhf
dGhpcyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rl
ck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MikuZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAg
ICAgICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQg
aWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInB1dF9ieV9pZF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX3dpdGhfdGhpcyIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdp
c3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDEwLDYgKzI0MTAsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRCeQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJl
Z2lzdGVySUQqIHRoaXNWYWwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQoreworICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0
aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKKworICAgIGVtaXRPcGNv
ZGUob3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtp
bGwoZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICByZXR1cm4gZHN0OworfQor
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewog
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBw
cm9wZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbC4iKTsKQEAgLTI0MzMs
NiArMjQ0NSwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAg
ICAgcmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hv
dWxkIGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsLiIpOworCisgICAgdW5zaWduZWQgcHJvcGVy
dHlJbmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAgIGVtaXRPcGNvZGUob3BfcHV0
X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQodmFsdWUtPmluZGV4KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBQcm9w
ZXJ0eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFw
YXJzZUluZGV4KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxl
ZCB3aXRoIHB1dF9ieV92YWwoZGlyZWN0KS4iKTsKQEAgLTI1NTcsNiArMjU4NCwxNiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgcmV0dXJuIGRzdDsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJ
RCogcHJvcGVydHkpCit7CisgICAgZW1pdE9wY29kZShvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlz
VmFsdWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5k
ZXgoKSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwg
UmVnaXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9m
aWxlID0gbmV3QXJyYXlQcm9maWxlKCk7CkBAIC0yNTY5LDYgKzI2MDYsMTcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBi
YXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUt
PmluZGV4KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBVbmxpbmtlZEFycmF5UHJv
ZmlsZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsKQEAgLTQyMTUsNiArNDI2Mywx
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRECiAgICAgVmFyaWFi
bGUgcHJvdG9TY29wZVZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3Ry
dWN0b3JQcml2YXRlTmFtZSk7CiAgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9y
YXJ5KCksIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudChwcm9wZXJ0eU5h
bWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpLCBwcm90b1Njb3BlVmFyLCBUaHJv
d0lmTm90Rm91bmQpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJl
VGhpcygpCit7CisgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6
RGVyaXZlZCAmJiBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBpc1N1cGVy
Q2FsbFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgICAgICBlbWl0TG9hZFRoaXNGcm9t
QXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOworCisgICAgaWYgKGNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQoKSkKKyAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKKworICAg
IHJldHVybiB0aGlzUmVnaXN0ZXIoKTsKK30KICAgICAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShy
ZXZpc2lvbiAyMDAzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw2ICs1MDIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHJvZmlsZUNvbnRyb2xGbG93KGludCk7CiAg
ICAgICAgIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbnN1
cmVUaGlzKCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhp
Y2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWROZXdUYXJnZXRG
cm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCkBAIC01NTAsMTIgKzU1MSwx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHJ5R2V0QnlJ
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFz
ZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBl
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3Rl
cklEKiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBcmd1bWVudEJ5VmFs
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkp
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwg
UmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxl
dGVCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHBy
b3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SW5kZXgoUmVnaXN0ZXJJRCog
YmFzZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJl
dmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEyICsxNDUsOCBAQCBSZWdpc3Rl
cklEKiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiAKIFJlZ2lzdGVySUQqIFRoaXNOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewotICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0
b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNv
bnRleHQoKSAmJiBnZW5lcmF0b3IuaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24o
KSkKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7Ci0KLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwg
Z2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8
fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIGdlbmVy
YXRvci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLQorICAgIGdlbmVy
YXRvci5lbnN1cmVUaGlzKCk7CisgICAgVU5VU0VEX1BBUkFNKG1fc2hvdWxkQWx3YXlzRW1pdFRE
WkNoZWNrKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCkBAIC0xNjIsMTkgKzE1OCw2IEBAIFJlZ2lzdGVySUQqIFRoaXNOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFN1cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lz
dGVySUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBnZW5lcmF0b3IuZW1pdExvYWRE
ZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpLCBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7Ci0KLSAgICBSZWdpc3Rl
cklEIGNhbGxlZTsKLSAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICBy
ZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRz
dCksICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsK
LX0KLQogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDbGFz
c0NvbnRleHQoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpIHsK
QEAgLTE5Myw2ICsxNzYsMjIgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JD
YWxsZQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVy
c2NvcmVQcm90byk7CiB9CiAKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0R2V0U3VwZXJGdW5jdGlv
bkZvckNvbnN0cnVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIGlmIChn
ZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0b3Iu
ZW1pdExvYWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9u
bWVudCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CisKKyAg
ICBSZWdpc3RlcklEIGNhbGxlZTsKKyAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVl
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8p
OworfQorCitSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgUmVnaXN0ZXJJRCogcmVz
dWx0ID0gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOworICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QpLCByZXN1bHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
TmV3VGFyZ2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lz
dGVySUQqIE5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0zMDksMTMgKzMwOCwyMSBAQCBSZWdpc3RlcklE
KiBUYWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7CiAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZS5n
ZXQoKSwgYnJhY2tldC0+YmFzZSgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3Bl
cnR5ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJyYWNrZXQtPnN1YnNjcmlwdCgpKTsKLSAgICAgICAg
dGFnID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJh
c2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICAgICAgaWYgKGJyYWNrZXQtPmJhc2UoKS0+
aXNTdXBlck5vZGUoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3Iu
ZW1pdEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgdGhpc1Zh
bHVlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
dGFnID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJh
c2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQo
bV90YWctPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRv
dCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KG1fdGFnKTsKICAgICAgICAgYmFzZSA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5lbWl0
Tm9kZShiYXNlLmdldCgpLCBkb3QtPmJhc2UoKSk7Ci0gICAgICAgIHRhZyA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRvdC0+aWRl
bnRpZmllcigpKTsKKyAgICAgICAgaWYgKGRvdC0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKTsKKyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgZG90LT5pZGVu
dGlmaWVyKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5l
bWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRvdC0+aWRl
bnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcGxhdGVPYmpl
Y3QgPSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgdGhpcyk7CkBAIC02MjAsMjkgKzYyNywzNyBAQCBzdGF0aWMgYm9vbCBpc05vbkluZGV4
U3RyaW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewogICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIgaW5mbz8KKyAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CisgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygp
OworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVyQmFzZUZv
ckNhbGxlZShnZW5lcmF0b3IpOwogICAgICAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQo
Km1fc3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWQgPSBzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGlkKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIHN1cGVyQmFzZS5nZXQoKSwg
dGhpc1ZhbHVlLmdldCgpLCBpZCk7CisgICAgICAgIH0gZWxzZSAgeworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlw
dCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdC5nZXQoKSwg
c3VwZXJCYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHN1YnNjcmlwdC5nZXQoKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0KSwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZmluYWxEZXN0LmdldCgpOwogICAgIH0K
IAogICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5l
cmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5h
bERlc3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgaWYgKGlzTm9u
SW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKLSAgICAgICAgcmV0ID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgc3RhdGljX2Nhc3Q8
U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAgIHJldCA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0
PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlz
UHVyZShnZW5lcmF0b3IpKTsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0
b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5VmFsKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOworICAgICAgICByZXQgPSBn
ZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJvcGVy
dHkpOwogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5
cGUoZmluYWxEZXN0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGdlbmVyYXRvci5l
bWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTY1MCwxMCArNjY1LDE2IEBAIFJlZ2lzdGVySUQq
IEJyYWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKIAogUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gbV9iYXNlLT5pc1N1cGVy
Tm9kZSgpID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogZ2VuZXJhdG9yLmVt
aXROb2RlKG1fYmFzZSk7CisgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+aXNTdXBlck5v
ZGUoKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1
cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7
CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCog
cmV0OworICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0ID0gZ2VuZXJh
dG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBt
X2lkZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlk
KGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShmaW5hbERlc3QsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJu
IHJldDsKIH0KQEAgLTc1NSwxMCArNzc2LDExIEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNh
bGxOb2RlOjplbWl0QnkKIAogUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhw
cik7Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKLSAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1
bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChtX2V4cHItPmlzU3VwZXJOb2RlKCkp
IHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBlbWl0R2V0U3VwZXJGdW5jdGlv
bkZvckNvbnN0cnVjdChnZW5lcmF0b3IpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0
dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOwor
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwor
CiAgICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5k
ZXJpdmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1
Y3RvckNvbnRleHQpOwogICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgp
ID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRU
eXBlKCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCks
IGdlbmVyYXRvci5uZXdUYXJnZXQoKSk7CkBAIC03ODIsNiArODA0LDkgQEAgUmVnaXN0ZXJJRCog
RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJl
dDsKICAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOworICAgIENhbGxBcmd1bWVudHMg
Y2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJlZ2lz
dGVySUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVl
LmdldCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9m
aWxlVHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAg
LTkyMiwyMCArOTQ3LDMxIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpl
bWkKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CisgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlcjsKKyAgICBpZiAoYmFzZUlzU3VwZXIpIHsKKyAgICAg
ICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYmVjYXVzZSB3ZSBl
aXRoZXIgaGF2ZSBhIG5vbi1URFogdGhpcyBvciB3ZSB0aHJvdy4gT25jZSB3ZSBoYXZlIGEgbm9u
LVREWiB0aGlzLCB3ZSBjYW4ndCBjaGFuZ2UgaXRzIHZhbHVlLgorICAgICAgICB0aGlzUmVnaXN0
ZXIgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIH0KICAgICBpZiAoc3Vic2NyaXB0SXNO
b25JbmRleFN0cmluZykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2Rl
Kj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGJhc2VJc1N1cGVyKQorICAg
ICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCksIHN0YXRpY19j
YXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPiht
X3N1YnNjcmlwdCktPnZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRpdm90KCksIHN1
YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgICAgICBmdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGlmIChiYXNlSXNTdXBlcikK
KyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5nZXQoKSwgcHJv
cGVydHkuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdl
dCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJl
dHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5jdGlvbi5nZXQo
KSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsK
ICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVjayhn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoY2Fs
bEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIHRo
aXNSZWdpc3Rlci5nZXQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0TW92
ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAgICBSZWdpc3Rl
cklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5n
ZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywg
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTk1MSwxMyArOTg3LDE2IEBA
IFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXQKICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1
bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9y
LCBtX2FyZ3MpOwogICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBtX2Jhc2UtPmlzU3VwZXJOb2RlKCk7
Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0VERaQ2hlY2so
Z2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSk7Ci0g
ICAgfSBlbHNlCisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0b3IuZW1pdE1v
dmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKSk7
CisgICAgZWxzZQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1
YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVu
ZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCksIGJhc2VJc1N1
cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFyZ3VtZW50cy50
aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisgICAgaWYgKGJhc2VJc1N1cGVyKSB7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdl
bmVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlvbi5nZXQoKSwg
c3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsK
KyAgICB9IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0aW9uLmdldCgp
LCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAgICBSZWdpc3RlcklE
KiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQo
KSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2Zp
bGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAg
IHJldHVybiByZXQ7CkBAIC05NzIsNyArMTAxMSwxMSBAQCBSZWdpc3RlcklEKiBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0aW9uOwogICAg
IGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rpb24oKTsKICAg
ICBpZiAoZW1pdENhbGxDaGVjaykgewotICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7Cisg
ICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAg
ICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9y
LnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENhbGwuZ2V0KCkp
OwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QpOwpAQCAtMTAzOSw3ICsxMDgyLDExIEBAIFJlZ2lzdGVySUQq
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0
dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0aW9uLmdldCgp
KTsKICAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRpbkZ1bmN0aW9u
KCk7CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0
b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFt
ZSgpKTsKKyAgICAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7Cisg
ICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdldCgpLCByZWFs
Q2FsbC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChtYXlCZUNhbGwpIHsKQEAgLTExOTYsMTAgKzEy
NDMsMTkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5dAogICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShzdWJzY3JpcHQp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNjZXNzb3ItPmRp
dm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNjZXNzb3ItPmRp
dm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5n
ZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzVmFsdWU7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAg
ICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHZhbHVlID0g
Z2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogb2xkVmFsdWUg
PSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlLmdldCgpKTsK
KyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlWYWwoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFs
dWUuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNl
LmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUp
OwogfQpAQCAtMTIxMiwxNSArMTI2OCwyNSBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1p
dERvdChCeXRlY29kCiAgICAgQVNTRVJUKG1fZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAg
ICAgRG90QWNjZXNzb3JOb2RlKiBkb3RBY2Nlc3NvciA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSo+KG1fZXhwcik7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2VOb2RlID0gZG90QWNjZXNz
b3ItPmJhc2UoKTsKKyAgICBib29sIGJhc2VJc1N1cGVyID0gYmFzZU5vZGUtPmlzU3VwZXJOb2Rl
KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBkb3RBY2Nlc3Nvci0+aWRlbnRpZmll
cigpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nlc3Nv
ci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRpdm90
RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0
QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50KTsKKyAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1
ZTsKKyAgICBpZiAoYmFzZUlzU3VwZXIpIHsKKyAgICAgICAgdGhpc1ZhbHVlID0gZ2VuZXJhdG9y
LmVuc3VyZVRoaXMoKTsKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIGlkZW50
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiAgICAgUmVnaXN0ZXJJ
RCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUuZ2V0KCkp
OworICAgIGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsKKyAgICBlbHNl
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUu
Z2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5h
dGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwogfQpAQCAtMTM5MywxMCArMTQ1OSwxOSBAQCBS
ZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3QoKSwgYnJh
Y2tldEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
Ci0gICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHByb3BEc3Qu
Z2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBSZWdpc3RlcklEKiB2YWx1
ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIGlmIChiYXNlTm9kZS0+
aXNTdXBlck5vZGUoKSkgeworICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhp
cygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgfSBl
bHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9wRHN0LmdldCgp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRv
ciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAgaWYgKGJhc2VO
b2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsKKyAgICBlbHNl
CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0
KCksIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0
YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRp
b25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogfQpAQCAtMTQxMiwxMCArMTQ4NywxOSBA
QCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7CiAKICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RB
Y2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7Ci0gICAgUmVn
aXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvcERzdC5nZXQoKSwgYmFz
ZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHZhbHVlOworICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB0aGlzVmFsdWU7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKSB7Cisg
ICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHZhbHVl
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHRoaXNW
YWx1ZS5nZXQoKSwgaWRlbnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICBp
ZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJ
ZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CisgICAgZWxzZQor
ICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChk
c3QsIHByb3BEc3QuZ2V0KCkpOwogfQpAQCAtMjAxNSwxMCArMjA5OSwxNCBAQCBSZWdpc3RlcklE
KiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1ZS5nZXQoKSwg
bV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZv
dFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihy
ZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChi
YXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKLSAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAg
cmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJl
c3VsdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVU
b0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0
KCkpLCByZXN1bHQuZ2V0KCkpOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUu
Z2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9yd2FyZFJlc3Vs
dC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJkUmVzdWx0Lmdl
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIHJldHVybiBnZW5lcmF0b3IubW92
ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeURvdE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwMjgsMTEgKzIxMTYsMjEgQEAgUmVn
aXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlYwogICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1fYmFzZSwgbV9y
aWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7CiAKICAgICBn
ZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHBy
ZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFs
dWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICBpZiAobV9iYXNlLT5p
c1N1cGVyTm9kZSgpKSB7CisgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci50ZW1w
RGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lkZW50KTsK
KyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKICAgICBSZWdp
c3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQoZ2VuZXJhdG9y
LCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwgdmFsdWUuZ2V0
KCksIG1fcmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0b3IpLCBPcGVy
YW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVzdWx0RGVzY3Jp
cHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgUmVn
aXN0ZXJJRCogcmV0OworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIHJl
dCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIG1f
aWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsKICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NiwxMCArMjE1NCwxOSBAQCBSZWdpc3Rl
cklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIFJlZ2lz
dGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkp
ID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwogCi0g
ICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpCi0gICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4o
bV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAgICBlbHNlCi0gICAgICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIGZvcndh
cmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9zdWJzY3JpcHQp
KSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQo
KSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSwgZm9yd2Fy
ZFJlc3VsdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRC
eUlkKGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZh
bHVlKCksIGZvcndhcmRSZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtX2Jhc2Ut
PmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHByb3BlcnR5LmdldCgpLCBmb3J3
YXJkUmVzdWx0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1
dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICB9
CiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQsIGRpdm90U3Rh
cnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlv
bklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CkBAIC0yMDczLDExICsyMTgwLDIwIEBAIFJl
Z2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEIKICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNpZGUobV9zdWJz
Y3JpcHQsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdlbmVyYXRvcikp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNzaW9uRGl2b3Qo
KSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0gICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVt
cERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsK
KyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIHRoaXNWYWx1ZSA9IGdl
bmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1
ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRlZFZhbHVlID0g
ZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZpbmFsRGVzdGlu
YXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBzdGF0aWNfY2Fz
dDxKU0M6Ok9wZXJhdG9yPihtX29wZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6OnVu
a25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCks
IHVwZGF0ZWRWYWx1ZSk7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkKKyAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHByb3Bl
cnR5LmdldCgpLCB1cGRhdGVkVmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdXBkYXRlZFZhbHVlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKIAogICAgIHJldHVybiB1cGRhdGVkVmFsdWU7CkBAIC0yNDA5LDE4ICsyNTI1
LDI2IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICBpZiAo
bV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUq
IGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2xleHByKTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBhc3NpZ25Ob2RlLT5pZGVudGlmaWVyKCk7
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9k
ZS0+YmFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHBy
ZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCks
IGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChhc3NpZ25Ob2RlLT5iYXNl
KCktPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlz
VmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJh
c2UuZ2V0KCksIGlkZW50LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25O
b2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAobV9sZXhw
ci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9k
ZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihtX2xleHBy
KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXNzaWduTm9kZS0+YmFzZSgpKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogc3Vic2NyaXB0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPnN1YnNjcmlwdCgpKTsKKyAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3NpZ25Ob2RlLT5z
dWJzY3JpcHQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oYXNzaWdu
Tm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dEVuZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBzdWJz
Y3JpcHQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChhc3NpZ25Ob2RlLT5iYXNlKCktPmlz
U3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUg
PSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRC
eVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHN1YnNjcmlwdC5nZXQoKSwgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
VmFsKGJhc2UuZ2V0KCksIHN1YnNjcmlwdC5nZXQoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIGFzc2lnbk5vZGUtPmRpdm90
U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNjMxLDcgKzI3NTUsMTEgQEAgdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbgogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25O
b2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7CisgICAgICAg
ICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlz
KCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRo
aXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFsdWUp
OwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgYXNzaWduTm9k
ZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgfSBlbHNl
IGlmIChtX2xleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICAgICAgQnJh
Y2tldEFjY2Vzc29yTm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nv
ck5vZGUqPihtX2xleHByKTsKQEAgLTI2MzksNyArMjc2NywxMSBAQCB2b2lkIEZvck9mTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBzdWJzY3Jp
cHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+c3Vic2NyaXB0KCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGFzc2lnbk5v
ZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RF
bmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHN1
YnNjcmlwdCwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGFzc2lnbk5vZGUtPmJhc2UoKS0+aXNT
dXBlck5vZGUoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBzdWJzY3JpcHQsIHZhbHVl
KTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0
QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2ln
bk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KG1fbGV4cHItPmlzRGVzdHJ1Y3R1cmluZ05vZGUoKSk7CkBAIC0zNjk2LDE0ICszODI4LDIyIEBA
IHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAgICAgRG90QWNj
ZXNzb3JOb2RlKiBsaHMgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2Fzc2lnbm1l
bnRUYXJnZXQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdlbmVyYXRvci5l
bWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPmJhc2UoKSwgdHJ1ZSwgZmFsc2UpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBs
aHMtPmlkZW50aWZpZXIoKSwgdmFsdWUpOworICAgICAgICBpZiAobGhzLT5iYXNlKCktPmlzU3Vw
ZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBn
ZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5n
ZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICB9IGVsc2Ug
aWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAg
ICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbGhzID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29y
Tm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBi
YXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+YmFzZSgpLCB0cnVl
LCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRv
ci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPnN1YnNjcmlwdCgpLCB0cnVlLCBmYWxzZSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNl
LmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAgICAgICBpZiAobGhzLT5iYXNlKCkt
PmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFs
dWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1
ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChi
YXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOwogICAgICAgICBnZW5lcmF0b3IuZW1p
dFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIH0KIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjA5Nyw2ICsyMDk3LDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7
CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJs
ZVZpZXcoCkBAIC0yNTk1LDYgKzI2MDEsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1dEJ5VmFs
V2l0aFRoaXM6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGJyZWFrOwor
CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICBj
YXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5OTAsNiArMzk5MCwxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfdmFsKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsV2l0aFRoaXMgPSBhZGRUb0dy
YXBoKEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHkpOworICAgICAg
ICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSwgZ2V0QnlWYWxXaXRoVGhpcyk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9i
eV92YWxfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3Zh
bF9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCkpOwpAQCAtNDAzMSw2ICs0MDQxLDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV92YWwpOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAg
ICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZCh0aGlz
VmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOworICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOworICAgICAgICAgICAgYWRkVG9HcmFwaChOb2RlOjpW
YXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbygwKSwgT3BJbmZvKDApKTsKKworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAgICAgICB9CisK
ICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiBiYXNl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZF07CkBA
IC00MDY0LDYgKzQwODksMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAgICAgICAgTm9k
ZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBb
Y3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZF07CisKKyAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisgICAgICAgICAg
ICAgICAgYWRkVG9HcmFwaChHZXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVy
KSwgYmFzZSwgdGhpc1ZhbHVlKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9i
eV9pZF93aXRoX3RoaXMpOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7
CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwpAQCAtNDA3
OSw2ICs0MTE0LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIE5vZGUqIGJh
c2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKKwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVudGlmaWVy
TnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2dldHRlcl9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDAzMTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw4
ICsxNTYsMTIgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRAogICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgog
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoK
KyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5
X2xlbmd0aDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF93
aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKICAgICBjYXNlIG9w
X3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lkOgogICAgIGNh
c2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzNSw3ICs0
MzUsMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAg
ICAKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgUHV0
QnlJZDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5VmFsV2l0aFRo
aXM6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAg
IGNhc2UgUHV0R2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksMTEgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNh
c2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNl
IFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0
dGVyQnlJZDoKQEAgLTE5OSw2ICsyMDIsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0ZXI6CiAgICAg
Y2FzZSBHZXRCeVZhbDoKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRJ
bmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgY2Fz
ZSBBcnJheVB1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzYsNyArMTEzNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAg
Y2FzZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBQ
dXRCeUlkRGlyZWN0OiB7CkBAIC0xNTYwLDYgKzE1NjAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGNhc2UgVHlw
ZU9mOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBH
ZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDAzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODYyLDkgKzg2MiwxMSBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRCeUlkRmx1c2g6
CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRCeUlkV2l0aFRo
aXM6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQdXRTZXR0ZXJC
eUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMDAzMTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2
ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgLyogdGhpcyBt
dXN0IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4gTm90ZSB0aGF0IFB1
dEJ5VmFsICovXAogICAgIC8qIG9wY29kZXMgdXNlIFZhckFyZ3MgYmVhdXNlIHRoZXkgbWF5IGhh
dmUgdXAgdG8gNCBjaGlsZHJlbi4gKi9cCiAgICAgbWFjcm8oR2V0QnlWYWwsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeVZhbFdpdGhUaGlzLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlBcmd1bWVudEJ5
VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlB
cmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhMb2FkVmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXApAQCAtMTg2LDkg
KzE4NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oVHJ5
R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5SWRXaXRoVGhpcywgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEJ5SWQsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oUHV0QnlJZFdpdGhUaGlzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oUHV0QnlW
YWxXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oUHV0R2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dFNldHRl
ckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJTZXR0ZXJCeUlk
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMs
MTYgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSogZQogICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwg
c2l6ZSkpOwogfQogCit0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CitzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkIHB1dFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOworICAgIEpTVmFsdWUgcHV0VmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlz
VmFsLCBzdHJpY3QpOworICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRlbnQsIHB1dFZh
bHVlLCBzbG90KTsKK30KKwogZXh0ZXJuICJDIiB7CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wKQpAQCAtNzQzLDYgKzc1Myw5NCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlOjpkZWNvZGUo
dmFsdWUpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpbXBsKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVGhpcyk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1Zh
bCwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJv
bVVpZChleGVjLCBpbXBsKSwgc2xvdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
V2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQp
Cit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIg
dHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkU3Vic2NyaXB0KTsKKworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYm
IHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0cnVjdHVyZSA9
ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlmIChKU0NlbGw6
OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAgICAgICBpZiAo
UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0gYXNTdHJpbmco
c3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgeworICAgICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3RyaW5nLmdldCgpKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIFByb3BlcnR5U2xvdCBzbG90KHRoaXNW
YWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7
CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBz
dWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAm
JiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkp
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGksIHNsb3QpKTsKKyAgICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENv
ZXJjaWJsZShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3Jp
cHQudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHksIHNsb3QpKTsKK30KKwordm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhp
cywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCkK
K3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHB1dFdpdGhUaGlzPHRydWU+KGV4ZWMsIGVuY29kZWRC
YXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVlLCBJZGVudGlmaWVyOjpmcm9tVWlkKGV4ZWMs
IGltcGwpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhp
cyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCogaW1wbCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHB1dFdpdGhUaGlzPGZhbHNl
PihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwgSWRlbnRpZmll
cjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwg
ZXhlYyk7CisKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywgZW5j
b2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKK30KKwordm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVj
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwdXRXaXRoVGhp
czxmYWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHBy
b3BlcnR5KTsKK30KKwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIHZvaWQqIGJ1ZmZlciwgc2l6
ZV90IHNpemUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjAwMzEyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KEV4
ZWNTdGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50KEV4ZWNTdGF0ZSosIEpT
U3RyaW5nKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
V2l0aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlx
dWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHZvaWQq
LCBzaXplX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpIFdURl9J
TlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RW1wdHlBcnJheShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CkBAIC05Nyw2ICs5OSwxMCBAQCB2b2lk
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxEaXJlCiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3Rh
dGUqLCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dERvdWJsZUJ5
VmFsQmV5b25kQXJyYXlCb3VuZHNTdHJpY3QoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBpbnQzMl90
IGluZGV4LCBkb3VibGUgdmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXREb3VibGVCeVZhbEJleW9uZEFycmF5Qm91bmRzTm9uU3RyaWN0KEV4ZWNTdGF0
ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBpbmRleCwgZG91YmxlIHZhbHVlKSBXVEZfSU5URVJOQUw7
Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRT
dHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
K3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzKEV4ZWNTdGF0ZSos
IEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRK
U1ZhbHVlKSBXVEZfSU5URVJOQUw7Cit2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpc1N0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2goRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVB1c2hEb3VibGUoRXhlY1N0YXRl
KiwgZG91YmxlIHZhbHVlLCBKU0FycmF5KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25BcnJheVBvcChFeGVjU3RhdGUqLCBKU0FycmF5KikgV1RG
X0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwMDMxMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NjUsNiArNjY1LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhp
czoKKyAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgICAgIHNldFByZWRp
Y3Rpb24oU3BlY0J5dGVjb2RlVG9wKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2UgVHJ5R2V0QnlJZDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVj
Qnl0ZWNvZGVUb3ApOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05ODQsNiArOTg5LDggQEAgcHJp
dmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgIC8vIFRoZXNlIGdldCBpZ25vcmVkIGJlY2F1
c2UgdGhleSBkb24ndCByZXR1cm4gYW55dGhpbmcuCiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgY2FzZSBQdXRCeUlk
V2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0Q2xvc3Vy
ZVZhcjoKICAgICAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMDAzMTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTk0LDkgKzE5NCwxMyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBj
YXNlIEdldEJ5SWQ6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeVZh
bFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgUHV0QnlJZDoKICAg
ICBjYXNlIFB1dEJ5SWRGbHVzaDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNl
IFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkRGlyZWN0OgogICAgIGNhc2UgUHV0
R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlz
aW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2ODEsNiArMjY4MSwzMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNl
LnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQgPSBiYXNlLnBheWxvYWRHUFIo
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVRhZyA9IHRoaXNWYWx1ZS50YWdHUFIoKTsKKyAg
ICAgICAgR1BSUmVnIHRoaXNWYWx1ZVBheWxvYWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQUigpOwor
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBzdWJzY3JpcHQodGhpcywgbm9kZS0+Y2hpbGQzKCkpOwor
ICAgICAgICBHUFJSZWcgc3Vic2NyaXB0VGFnID0gc3Vic2NyaXB0LnRhZ0dQUigpOworICAgICAg
ICBHUFJSZWcgc3Vic2NyaXB0UGF5bG9hZCA9IHN1YnNjcmlwdC5wYXlsb2FkR1BSKCk7CisKKyAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKyAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQyIHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJl
c3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0
VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1ZhbHVl
VGFnLCB0aGlzVmFsdWVQYXlsb2FkLCBzdWJzY3JpcHRUYWcsIHN1YnNjcmlwdFBheWxvYWQpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAg
IGNhc2UgUHV0QnlWYWxBbGlhczogewpAQCAtMjg1OSw2ICsyODgzLDc3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIGlmIChHUFJJbmZvOjpudW1iZXJP
ZlJlZ2lzdGVycyA8IDgpIHsKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGhhdmUgZW5vdWdoIHJl
Z2lzdGVycyBvbiBYODYgKG9yIE1JUFMsIEkgZ3Vlc3MpIHRvIGRvIHRoaXMKKyAgICAgICAgICAg
IC8vIHdpdGhvdXQgc2V0dGluZyB1cCB0aGUgY2FsbCBmcmFtZSBpbmNyZW1lbnRhbGx5LgorICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPj0gNik7
CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICBtX2ppdC5wb2tl
KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBpbmRleCsrKTsKKworICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52
YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBi
YXNlLnRhZ0dQUigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJhc2Uu
cGF5bG9hZEdQUigpOworCisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVl
KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICAgICAg
ICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7CisgICAgICAgICAg
ICAgICAgR1BSUmVnIHRoaXNWYWx1ZVBheWxvYWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQUigpOwor
CisgICAgICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbV9qaXQuZ3Jh
cGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5VGFnID0gcHJvcGVydHkudGFnR1BSKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5UGF5bG9hZCA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKworICAgICAgICAgICAgICAgIG1f
aml0LnBva2UoYmFzZVBheWxvYWQsIGluZGV4KyspOworICAgICAgICAgICAgICAgIG1faml0LnBv
a2UoYmFzZVRhZywgaW5kZXgrKyk7CisKKyAgICAgICAgICAgICAgICBtX2ppdC5wb2tlKHRoaXNW
YWx1ZVBheWxvYWQsIGluZGV4KyspOworICAgICAgICAgICAgICAgIG1faml0LnBva2UodGhpc1Zh
bHVlVGFnLCBpbmRleCsrKTsKKworICAgICAgICAgICAgICAgIG1faml0LnBva2UocHJvcGVydHlQ
YXlsb2FkLCBpbmRleCsrKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5wb2tlKHByb3BlcnR5VGFn
LCBpbmRleCsrKTsKKworICAgICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlVGFn
ID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkID0gdmFs
dWUucGF5bG9hZEdQUigpOworICAgICAgICAgICAgbV9qaXQucG9rZSh2YWx1ZVBheWxvYWQsIGlu
ZGV4KyspOworICAgICAgICAgICAgbV9qaXQucG9rZSh2YWx1ZVRhZywgaW5kZXgrKyk7CisKKyAg
ICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBhcHBlbmRDYWxsKG1faml0
LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlW
YWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpOworICAgICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKEdQUkluZm86Om51bWJlck9mUmVnaXN0ZXJzID49IDgpOworCisgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMCkpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigp
OworICAgICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFzZS5wYXlsb2FkR1BSKCk7CisK
KyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgp
LnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVUYWcg
PSB0aGlzVmFsdWUudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9h
ZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHByb3BlcnR5KHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMikpOworICAg
ICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnID0gcHJvcGVydHkudGFnR1BSKCk7CisgICAgICAg
ICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworCisg
ICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDMpKTsKKyAgICAgICAgICAgIEdQUlJlZyB2YWx1ZVRhZyA9IHZhbHVlLnRh
Z0dQUigpOworICAgICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRH
UFIoKTsKKworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24obV9qaXQuaXNTdHJpY3RNb2RlRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhp
cywKKyAgICAgICAgICAgICAgICBOb1Jlc3VsdCwgYmFzZVRhZywgYmFzZVBheWxvYWQsIHRoaXNW
YWx1ZVRhZywgdGhpc1ZhbHVlUGF5bG9hZCwgcHJvcGVydHlUYWcsIHByb3BlcnR5UGF5bG9hZCwg
dmFsdWVUYWcsIHZhbHVlUGF5bG9hZCk7CisgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVj
aygpOworICAgICAgICB9CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgUmVnRXhwRXhlYzogewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBnbG9iYWxPYmplY3QodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJS
ZWcgZ2xvYmFsT2JqZWN0R1BSID0gZ2xvYmFsT2JqZWN0LmdwcigpOwpAQCAtNDAzMyw2ICs0MTI4
LDI3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlVGFnID0gYmFzZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVGFnID0gdGhpc1ZhbHVlLnRhZ0dQ
UigpOworICAgICAgICBHUFJSZWcgdGhpc1BheWxvYWQgPSB0aGlzVmFsdWUucGF5bG9hZEdQUigp
OworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdFBheWxvYWQodGhpcyk7Cisg
ICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywg
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBiYXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhp
c1RhZywgdGhpc1BheWxvYWQsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigp
KSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICBpZiAoIW5vZGUt
PnByZWRpY3Rpb24oKSkgewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oSW5hZGVxdWF0ZUNvdmVyYWdlLCBKU1ZhbHVlUmVncygpLCAwKTsKQEAgLTQzMDUsNiArNDQy
MSwyNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOiB7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
YmFzZVRhZyA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJh
c2UucGF5bG9hZEdQUigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVl
LnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5w
YXlsb2FkR1BSKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMygpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlVGFnID0gdmFsdWUudGFnR1BSKCk7CisgICAg
ICAgIEdQUlJlZyB2YWx1ZVBheWxvYWQgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1v
ZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywKKyAgICAgICAgICAgIE5vUmVzdWx0LCBi
YXNlVGFnLCBiYXNlUGF5bG9hZCwgdGhpc1ZhbHVlVGFnLCB0aGlzVmFsdWVQYXlsb2FkLCB2YWx1
ZVRhZywgdmFsdWVQYXlsb2FkLCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIo
KSkpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIG5vUmVzdWx0
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEdldHRlckJ5SWQ6
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeUlkOiB7CiAgICAgICAgIGNvbXBpbGVQdXRBY2Nlc3NvckJ5
SWQobm9kZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NjMs
NiArMjc2MywyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczogeworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BS
ID0gdGhpc1ZhbHVlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBzdWJzY3JpcHQodGhp
cywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcgc3Vic2NyaXB0R1BSID0gc3Vic2Ny
aXB0LmdwcigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0
aFRoaXMsIHJlc3VsdEdQUiwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBzdWJzY3JpcHRHUFIpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBQdXRC
eVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczog
ewpAQCAtNDEzMCw2ICs0MTQ5LDIzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRCeUlkV2l0aFRo
aXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRo
aXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKKworICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3By
KCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25HZXRCeUlkV2l0aFRoaXMsIHJlc3VsdEdQUiwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BS
LCBpZGVudGlmaWVyVUlEKG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSkpOworICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoK
ICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKG5vZGUpOwogICAgICAgICBicmVhazsKQEAg
LTQzMDksNiArNDM0NSw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOiB7
CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFs
dWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3By
KCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbiht
X2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1
dEJ5SWRXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcywgTm9SZXN1bHQs
IGJhc2VHUFIsIHRoaXNWYWx1ZUdQUiwgdmFsdWVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAg
ICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2Ug
UHV0QnlWYWxXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG1f
aml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDEpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNW
YWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVy
dHkodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7CisgICAgICAgIEdQ
UlJlZyBwcm9wZXJ0eUdQUiA9IHByb3BlcnR5LmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDMpKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihtX2ppdC5pc1N0cmljdE1vZGVGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKSA/IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXNTdHJpY3QgOiBvcGVy
YXRpb25QdXRCeVZhbFdpdGhUaGlzLCBOb1Jlc3VsdCwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCBw
cm9wZXJ0eUdQUiwgdmFsdWVHUFIpOworICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwor
CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBj
YXNlIFB1dEJ5SWREaXJlY3Q6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2Niw2ICsx
MjY2LDIxIEBAIHB1YmxpYzoKIAogCiAjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSkkgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgVHJ1c3RlZEltbVB0cih1aWQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkpJIG9wZXJhdGlvbiwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChv
cGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZf
SklUT3BlcmF0aW9uX0VKSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CisgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRU9KSVVpIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgdmFsdWUpCiAg
ICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgVHJ1c3RlZEltbVB0cihpbXBsKSwgVHJ1c3RlZEltbTMyKHZhbHVlKSk7CkBAIC0xNjYyLDYg
KzE2NzcsMjIgQEAgcHVibGljOgogI2RlZmluZSBTSDRfMzJCSVRfRFVNTVlfQVJHCiAjZW5kaWYK
IAorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpK
SSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRUYWcsIEdQUlJlZyByZXN1bHRQYXlsb2FkLCBHUFJS
ZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJnMlRhZywgR1BSUmVnIGFy
ZzJQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXls
b2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgVHJ1c3RlZEltbVB0cih1aWQpKTsK
KyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHRQYXls
b2FkLCByZXN1bHRUYWcpOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfSklUT3BlcmF0aW9uX0VKSkpJIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcsIEdQUlJl
ZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwgR1BSUmVn
IGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAg
ICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklU
X0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBheWxvYWQsIGFyZzJUYWcsIGFy
ZzNQYXlsb2FkLCBhcmczVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOworICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VKSkpKIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzFUYWcs
IEdQUlJlZyBhcmcxUGF5bG9hZCwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwg
R1BSUmVnIGFyZzNUYWcsIEdQUlJlZyBhcmczUGF5bG9hZCwgR1BSUmVnIGFyZzRUYWcsIEdQUlJl
ZyBhcmc0UGF5bG9hZCkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxUGF5bG9hZCwgYXJnMVRhZywgYXJnMlBh
eWxvYWQsIGFyZzJUYWcsIGFyZzNQYXlsb2FkLCBhcmczVGFnLCBhcmc0UGF5bG9hZCwgYXJnNFRh
Zyk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorCiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FT0pJVWkgb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzJUYWcsIEdQUlJlZyBhcmcyUGF5bG9hZCwg
VW5pcXVlZFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIHZhbHVlKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzJQYXlsb2FkLCBhcmcy
VGFnLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBUcnVzdGVkSW1tMzIodmFsdWUpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9u
IDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRC
eUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgorICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgog
ICAgIGNhc2UgVG9UaGlzOgogICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6CkBAIC0yNTgsNiArMjU5LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmV0dXJuIENhbm5vdENv
bXBpbGU7CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKICAgICAgICAgaWYgKG5vZGUtPmFycmF5TW9k
ZSgpLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5nKQogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMjIs
NiArMzI1LDggQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
ICAgICAgICAgcmV0dXJuIENhbm5vdENvbXBpbGU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICBicmVhazsKICAgICBjYXNlIFB1
dEJ5VmFsOgogICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgpAQCAtMzM4LDYgKzM0Myw4IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICAgICAgICAgIHJldHVybiBDYW5ub3RDb21waWxlOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBcnJheVB1c2g6CiAgICAgY2FzZSBBcnJheVBvcDoKICAgICAgICAgc3dpdGNoIChu
b2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjAyLDYgKzYwMiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAg
ICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0KTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeUlkV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEluOgog
ICAgICAgICAgICAgY29tcGlsZUluKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYxMCw2ICs2
MTMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAgICAgICAg
IGNvbXBpbGVQdXRCeUlkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRC
eUlkV2l0aFRoaXM6CisgICAgICAgICAgICBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgICAgICBjYXNl
IFB1dFNldHRlckJ5SWQ6CiAgICAgICAgICAgICBjb21waWxlUHV0QWNjZXNzb3JCeUlkKCk7CkBA
IC02NDYsMTEgKzY1MiwxNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbE91dE9mQm91bmRzOgogICAgICAgICAgICAgY29tcGlsZUdldE15QXJndW1lbnRCeVZhbCgp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKKyAg
ICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKCk7CisgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgogICAg
ICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgorICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgICAgIGNvbXBpbGVBcnJheVB1c2goKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ0OSw2ICsyNDYxLDQ1IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRC
eUlkV2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1f
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5p
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcyksIG1fY2FsbEZy
YW1lLCBiYXNlLCB0aGlzVmFsdWUsIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmll
cnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV0pKTsKKyAgICAgICAgc2V0SlNWYWx1ZShy
ZXN1bHQpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgTFZhbHVlIHN1YnNjcmlwdCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7
CisKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsV2l0aFRoaXMpLCBtX2NhbGxGcmFtZSwgYmFzZSwgdGhp
c1ZhbHVlLCBzdWJzY3JpcHQpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQor
CisgICAgdm9pZCBjb21waWxlUHV0QnlJZFdpdGhUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHRo
aXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIExWYWx1ZSB2
YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgdm1DYWxsKG1f
b3V0LnZvaWRUeXBlLCBtX291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDog
b3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzKSwKKyAgICAgICAgICAgIG1fY2FsbEZyYW1lLCBiYXNl
LCB0aGlzVmFsdWUsIHZhbHVlLCBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmlkZW50aWZpZXJz
KClbbV9ub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldKSk7CisgICAgfQorCisgICAgdm9pZCBjb21w
aWxlUHV0QnlWYWxXaXRoVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9IGxvd0pT
VmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApKTsKKyAgICAgICAgTFZhbHVlIHRo
aXNWYWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKKyAg
ICAgICAgTFZhbHVlIHByb3BlcnR5ID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMikpOworICAgICAgICBMVmFsdWUgdmFsdWUgPSBsb3dKU1ZhbHVlKG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAzKSk7CisKKyAgICAgICAgdm1DYWxsKG1fb3V0LnZvaWRUeXBlLCBt
X291dC5vcGVyYXRpb24obV9ncmFwaC5pc1N0cmljdE1vZGVGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5
VmFsV2l0aFRoaXMpLAorICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwg
cHJvcGVydHksIHZhbHVlKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlUHV0QnlJZCgp
CiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmNw
cAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhl
bHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMDcgQEAgdm9pZCBDQ2FsbEhl
bHBlcnM6OnNldHVwU2hhZG93Q2hpY2tlblBhYwogICAgIHN0b3JlUHRyKEdQUkluZm86OnJlZ1Qy
LCBBZGRyZXNzKEdQUkluZm86OnJlZ1QwKSk7CiB9CiAKKyNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID49IDQKK3ZvaWQgQ0NhbGxIZWxwZXJzOjpzZXR1cEZvdXJTdHViQXJnc0dQUihH
UFJSZWcgZGVzdEEsIEdQUlJlZyBkZXN0QiwgR1BSUmVnIGRlc3RDLCBHUFJSZWcgZGVzdEQsIEdQ
UlJlZyBzcmNBLCBHUFJSZWcgc3JjQiwgR1BSUmVnIHNyY0MsIEdQUlJlZyBzcmNEKQoreworICAg
IGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CisgICAgICAgIFJlZ2lzdGVyU2V0IGRlc3RpbmF0aW9u
cyhkZXN0QSwgZGVzdEIsIGRlc3RDLCBkZXN0RCk7CisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UoZGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpID09IDQsICJEZXN0aW5hdGlvbnMgc2hv
dWxkIG5vdCBiZSBhbGlhc2VkLiIpOworICAgIH0KKworICAgIHR5cGVkZWYgc3RkOjpwYWlyPEdQ
UlJlZywgR1BSUmVnPiBSZWdQYWlyOworICAgIFZlY3RvcjxSZWdQYWlyLCA0PiBwYWlyczsKKwor
ICAgIGlmIChzcmNBICE9IGRlc3RBKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoc3JjQSwgZGVzdEEpKTsKKyAgICBpZiAoc3JjQiAhPSBkZXN0QikKKyAgICAgICAgcGFpcnMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNyY0IsIGRlc3RCKSk7CisgICAgaWYgKHNyY0MgIT0gZGVz
dEMpCisgICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNDLCBkZXN0QykpOwor
ICAgIGlmIChzcmNEICE9IGRlc3REKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoc3JjRCwgZGVzdEQpKTsKKworCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGF1dG8gbnVt
VW5pcXVlU291cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIFJlZ2lzdGVyU2V0
IHNldDsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQ
UlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAgICAgICAgICAgc2V0LnNldChzb3VyY2UpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgfTsK
KworICAgIGF1dG8gbnVtVW5pcXVlRGVzdHMgPSBbJl0gKCkgLT4gdW5zaWduZWQgeworICAgICAg
ICBSZWdpc3RlclNldCBzZXQ7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Cisg
ICAgICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXIuc2Vjb25kOworICAgICAgICAgICAgc2V0LnNl
dChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0Lm51bWJlck9mU2V0R1BScygp
OworICAgIH07CisjZW5kaWYKKworICAgIHdoaWxlIChwYWlycy5zaXplKCkpIHsKKyAgICAgICAg
UmVnaXN0ZXJTZXQgZnJlZURlc3RpbmF0aW9uczsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
cGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7CisgICAgICAg
ICAgICBmcmVlRGVzdGluYXRpb25zLnNldChkZXN0KTsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIu
Zmlyc3Q7CisgICAgICAgICAgICBmcmVlRGVzdGluYXRpb25zLmNsZWFyKHNvdXJjZSk7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoZnJlZURlc3RpbmF0aW9ucy5udW1iZXJPZlNldEdQUnMoKSkg
eworICAgICAgICAgICAgYm9vbCBtYWRlTW92ZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAg
YXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBw
YWlyLmZpcnN0OworICAgICAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0gcGFpci5zZWNvbmQ7Cisg
ICAgICAgICAgICAgICAgaWYgKGZyZWVEZXN0aW5hdGlvbnMuZ2V0KGRlc3QpKSB7CisgICAgICAg
ICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgcGFp
cnMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICBtYWRlTW92ZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQobWFkZU1vdmUsIG1hZGVNb3ZlKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3Rz
KCkgPT0gbnVtVW5pcXVlU291cmNlcygpKTsKKyAgICAgICAgQVNTRVJUKG51bVVuaXF1ZURlc3Rz
KCkgPT0gcGFpcnMuc2l6ZSgpKTsKKyAgICAgICAgLy8gVGhlIHNldCBvZiBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9uIHJlZ2lzdGVycyBhcmUgZXF1aXZhbGVudCBzZXRzLiBUaGlzIG1lYW5zIHdlIGRv
bid0IGhhdmUKKyAgICAgICAgLy8gYW55IGZyZWUgZGVzdGluYXRpb24gcmVnaXN0ZXJzIHRoYXQg
d29uJ3QgYWxzbyBjbG9iYmVyIGEgc291cmNlLiBXZSBnZXQgYXJvdW5kIHRoaXMgYnkKKyAgICAg
ICAgLy8gZXhjaGFuZ2luZyByZWdpc3RlcnMuCisKKyAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBh
aXJzWzBdLmZpcnN0OworICAgICAgICBHUFJSZWcgZGVzdCA9IHBhaXJzWzBdLnNlY29uZDsKKyAg
ICAgICAgc3dhcChzb3VyY2UsIGRlc3QpOworICAgICAgICBwYWlycy5yZW1vdmUoMCk7CisKKyAg
ICAgICAgR1BSUmVnIG5ld1NvdXJjZSA9IHNvdXJjZTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWly
IDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBzb3VyY2UgPSBwYWlyLmZpcnN0OworICAg
ICAgICAgICAgaWYgKHNvdXJjZSA9PSBkZXN0KSB7CisgICAgICAgICAgICAgICAgcGFpci5maXJz
dCA9IG5ld1NvdXJjZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIC8vIFdlIG1heSBoYXZlIGludHJvZHVjZWQgcGFpcnMgdGhhdCBo
YXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZGVzdGluYXRpb24uIFJlbW92ZSB0aG9zZSBub3cuCisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYWlycy5zaXplKCk7IGkrKykgeworICAg
ICAgICAgICAgYXV0byYgcGFpciA9IHBhaXJzW2ldOworICAgICAgICAgICAgaWYgKHBhaXIuZmly
c3QgPT0gcGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7Cisg
ICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQor
I2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkdQUkluZm8u
aCIKKyNpbmNsdWRlICJSZWdpc3Rlck1hcC5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtODI3LDYgKzgyOCwyMSBAQCBwdWJsaWM6CiAgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmcyKTsKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwog
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1LCBHUFJSZWcgYXJnNiwgR1BSUmVnIGFyZzcsIEdQUlJlZyBhcmc4KQorICAgIHsK
KyAgICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcx
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMyk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmc0KTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzUpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNik7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmc3KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzgpOwor
ICAgIH0KKwogI2VuZGlmIC8vICFOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhh
dCBwcm92aWRlcyBmb3IKICAgICAvLyBhdCBsZWFzdCA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5n
LiBYODZfNjQsIEFSTXY3LgpAQCAtOTEzLDYgKzkyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHN3YXAoZGVzdEIsIGRlc3RDKTsKICAgICB9CiAKKyAgICB2b2lkIHNldHVwRm91clN0dWJBcmdz
R1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RCLCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBkZXN0
RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBHUFJSZWcgc3JjQywgR1BSUmVnIHNyY0QpOwor
CiAjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTTY0KQogICAgIHRlbXBsYXRlPEZQUlJlZyBkZXN0
QSwgRlBSUmVnIGRlc3RCPgogICAgIHZvaWQgc2V0dXBUd29TdHViQXJnc0ZQUihGUFJSZWcgc3Jj
QSwgRlBSUmVnIHNyY0IpCkBAIC0xOTUxLDYgKzE5NjksMjcgQEAgcHVibGljOgogICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUs
IEdQUlJlZyBhcmc2LCBHUFJSZWcgYXJnNywgR1BSUmVnIGFyZzgpCisgICAgeworICAgICAgICBw
b2tlKGFyZzgsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgNCk7CisgICAgICAgIHBva2UoYXJnNywg
UE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAzKTsKKyAgICAgICAgcG9rZShhcmc2LCBQT0tFX0FSR1VN
RU5UX09GRlNFVCArIDIpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VU
ICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOworICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BS
UmVnIGFyZzUsIEdQUlJlZyBhcmc2LCBHUFJSZWcgYXJnNywgR1BSUmVnIGFyZzgsIEdQUlJlZyBh
cmc5KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc5LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDUp
OworICAgICAgICBwb2tlKGFyZzgsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgNCk7CisgICAgICAg
IHBva2UoYXJnNywgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAzKTsKKyAgICAgICAgcG9rZShhcmc2
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDIpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVz
dGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUsIEdQUlJlZyBhcmc2LCBHUFJSZWcgYXJn
NykKICAgICB7CiAgICAgICAgIHBva2UoYXJnNywgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAzKTsK
QEAgLTE5ODYsNiArMjAyNSwxMiBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA9PSA0CiAKICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49
IDUKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsK
KyAgICAgICAgc2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgR1BSSW5mbzo6YXJndW1l
bnRHUFI0LCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICB2
b2lkIHNldHVwU3R1YkFyZ3VtZW50czEzNChHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0KQogICAgIHsKICAgICAgICAgc2V0dXBUaHJlZVN0dWJBcmdzR1BSPEdQUkluZm86OmFy
Z3VtZW50R1BSMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQ+
KGFyZzEsIGFyZzMsIGFyZzQpOwpAQCAtMjAzNiw3ICsyMDgxLDcgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKGFyZzQsIEdQUkluZm86OmFyZ3VtZW50R1BSNCk7CiAgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQotICAg
IAorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3Rl
ZEltbTMyIGFyZzQpCiAgICAgewogICAgICAgICBtb3ZlKGFyZzIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMik7IC8vIEluIGNhc2UgYXJnMiBpcyBhcmd1bWVudEdQUjEuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0dQUkluZm8uaAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9HUFJJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4MCwyMCArODgwLDYgQEAg
cHVibGljOgogCiAjZW5kaWYgLy8gQ1BVKFNINCkKIAotaW5saW5lIEdQUlJlZyBhcmd1bWVudFJl
Z2lzdGVyRm9yKHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgpCi17Ci0jaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBpZiAoYXJndW1lbnRJbmRleCA+PSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTKQot
ICAgICAgICByZXR1cm4gSW52YWxpZEdQUlJlZzsKLQotICAgIHJldHVybiBHUFJJbmZvOjp0b0Fy
Z3VtZW50UmVnaXN0ZXIoYXJndW1lbnRJbmRleCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShh
cmd1bWVudEluZGV4KTsKLQotICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwotI2VuZGlmCi19Ci0K
IC8vIFRoZSBiYXNlbGluZSBKSVQgdXNlcyAiYWNjdW11bGF0b3IiIHN0eWxlIGV4ZWN1dGlvbiB3
aXRoIHJlZ1QwIChmb3IgNjQtYml0KQogLy8gYW5kIHJlZ1QwICsgcmVnVDEgKGZvciAzMi1iaXQp
IHNlcnZpbmcgYXMgdGhlIGFjY3VtdWxhdG9yIHJlZ2lzdGVyKHMpIGZvcgogLy8gcGFzc2luZyBy
ZXN1bHRzIG9mIG9uZSBvcGNvZGUgdG8gdGhlIG5leHQuIEhlbmNlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNyArMjMxLDkgQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfdHJ5X2dl
dF9ieV9pZCkKICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgogICAgICAgICBERUZJ
TkVfT1Aob3BfZ2V0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2J5X2lkX3dpdGhf
dGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWwpCisgICAgICAgIERFRklORV9P
UChvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09QKG9wX292ZXJyaWRl
c19oYXNfaW5zdGFuY2UpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAg
ICBERUZJTkVfT1Aob3BfaW5zdGFuY2VvZl9jdXN0b20pCkBAIC0yODYsOSArMjg4LDExIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3BhcmVu
dF9zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKKyAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9ieV9pZF93aXRoX3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlf
aW5kZXgpCiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X3NldHRlcl9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lv
biAyMDAzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MDQsNiArNTA0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9lcV9udWxsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90cnlfZ2V0
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlv
biopOwpAQCAtNTYyLDggKzU2NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9nZXRfcGFyZW50X3Njb3BlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3B1dF9ieV9pbmRleChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5
X3ZhbChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfYnlf
aWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9zZXR0ZXJfYnlfaWQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5
X2lkKEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkocmV2aXNpb24gMjAwMzEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsNyBAQCB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKCiB0eXBlZGVmIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMy
X3QsIGludDMyX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9K
SVRPcGVyYXRpb25fRVpTeW10YWJKKShFeGVjU3RhdGUqLCBpbnQzMl90LCBTeW1ib2xUYWJsZSos
IEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAo
KkpfSklUT3BlcmF0aW9uX0VPSVVpKShFeGVjU3RhdGUqLCBKU09iamVjdCosIFVuaXF1ZWRTdHJp
bmdJbXBsKiwgdWludDMyX3QpOwordHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
ICgqSl9KSVRPcGVyYXRpb25fRUpKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FKShFeGVjU3RhdGUqKTsKIHR5cGVkZWYgSlNDZWxsKiBK
SVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwog
dHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJhdGlvbl9FQykoRXhlY1N0
YXRlKiwgSlNDZWxsKik7CkBAIC0yNDgsNiArMjQ5LDggQEAgdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdAogdHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9w
ZXJhdGlvbl9FUGMpKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CiB0eXBlZGVmIHZvaWQgSklU
X09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQWkopKEV4ZWNTdGF0ZSosIHZvaWQqLCBpbnQz
Ml90LCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VTc2lKSkkpKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2Rl
ZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiB2
b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpKSSkoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKTsKK3R5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRUpK
SkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9K
SVRPcGVyYXRpb25fRVdzKShFeGVjU3RhdGUqLCBXYXRjaHBvaW50U2V0Kik7CiB0eXBlZGVmIHZv
aWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VaKShFeGVjU3RhdGUqLCBpbnQzMl90
KTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVpKKShFeGVj
U3RhdGUqLCBpbnQzMl90LCBFbmNvZGVkSlNWYWx1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9u
IDIwMDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNTQsNiArMTE1NCwzMCBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKEluc3RyCiAgICAgc3RvcmUzMihyZWdUMiwgQWRkcmVz
cyhyZWdUMCwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCkgKyBpbmRleCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pICsgUGF5bG9hZE9mZnNldCkpOwogfQogCit2b2lkIEpJ
VDo6ZW1pdF9vcF9nZXRfYnlfaWRfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0
aENhbGwuY2FsbCgpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsX3dpdGhfdGhp
cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X2J5
X3ZhbF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX3B1dF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9ieV92YWxfd2l0aF90aGlz
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxs
IHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9wdXRfYnlf
dmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIw
MDMxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9ieV92YWwoSW5zdHJ1Y3Rpb24KICAgICBtX2J5VmFsQ29tcGlsYXRpb25JbmZvLmFwcGVuZChC
eVZhbENvbXBpbGF0aW9uSW5mbyhieVZhbEluZm8sIG1fYnl0ZWNvZGVPZmZzZXQsIG5vdEluZGV4
LCBiYWRUeXBlLCBtb2RlLCBwcm9maWxlLCBkb25lLCBkb25lKSk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhD
YWxsLmNhbGwoKTsKK30KKwogSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRHZW5lcmljQ29udGlndW91
c1B1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFBhdGNoYWJsZUp1bXAm
IGJhZFR5cGUsIEluZGV4aW5nVHlwZSBpbmRleGluZ1NoYXBlKQogewogICAgIGludCB2YWx1ZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CkBAIC01OTMsNiArNTk5LDE4IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKHJlc3VsdFZSZWcpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWRf
d2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9nZXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOworICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9nZXRfYnlf
aWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYgaXRlcikKIHsKICAgICBpbnQgcmVzdWx0VlJlZyA9IGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQ7CkBAIC02MzgsNiArNjU2LDEyIEBAIHZvaWQgSklUOjplbWl0X29w
X3B1dF9ieV9pZChJbnN0cnVjdGlvbioKICAgICBtX3B1dEJ5SWRzLmFwcGVuZChnZW4pOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfcHV0X2J5
X2lkKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgaW50IGJhc2VWUmVnID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDIwMDMxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMTc1Miw2ICsxNzUyLDI1IEBAIF9sbGludF9vcF9pbnN0YW5jZW9mOgogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpCiAgICAgZGlzcGF0Y2goNCkK
IAorX2xsaW50X29wX2dldF9ieV9pZF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCisgICAgZGlz
cGF0Y2goNSkKKworX2xsaW50X29wX2dldF9ieV92YWxfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhp
cykKKyAgICBkaXNwYXRjaCg1KQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHV0X2J5X2lk
X3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCitfbGxpbnRfb3BfcHV0X2J5X3ZhbF93aXRo
X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X3B1dF9ieV92YWxfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCiAKICMgTGFzdGx5LCBtYWtl
IHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBv
cGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExM
SW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMDAzMTIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MTcsNCArODE3LDc4IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
b3B5X3Jlc3QpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWRfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1s0XS51Lm9wZXJhbmQpOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0
aGlzVmFsID0gT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1Zh
bCwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOwor
ICAgIFJFVFVSTihyZXN1bHQpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5
X3ZhbF93aXRoX3RoaXMpCit7CisgICAgQkVHSU4oKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBPUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IE9QX0MoNCkuanNWYWx1ZSgpOworCisg
ICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkp
KSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIFN0cnVjdHVyZSYgc3Ry
dWN0dXJlID0gKmJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKKyAgICAgICAgaWYg
KEpTQ2VsbDo6Y2FuVXNlRmFzdEdldE93blByb3BlcnR5KHN0cnVjdHVyZSkpIHsKKyAgICAgICAg
ICAgIGlmIChSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4gZXhpc3RpbmdBdG9taWNTdHJpbmcgPSBh
c1N0cmluZyhzdWJzY3JpcHQpLT50b0V4aXN0aW5nQXRvbWljU3RyaW5nKGV4ZWMpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0
R2V0T3duUHJvcGVydHkodm0sIHN0cnVjdHVyZSwgZXhpc3RpbmdBdG9taWNTdHJpbmcuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBSRVRVUk4ocmVzdWx0KTsgCisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisgICAgCisgICAgUHJvcGVydHlTbG90IHNsb3QodGhpc1ZhbHVlLCBQ
cm9wZXJ0eVNsb3Q6OlByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAg
IGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2Ny
aXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBSRVRVUk4oYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSkpOworICAgICAgICAKKyAgICAgICAg
UkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaSwgc2xvdCkpOworICAgIH0KKworICAgIGJhc2VW
YWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OworICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKKyAgICBSRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSwgc2xvdCkpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dp
dGhfdGhpcykKK3sKKyAgICBCRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9Q
X0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbCA9IE9QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgcHV0VmFsdWUgPSBPUF9DKDQpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpLCBjb2RlQmxv
Y2stPnB1dEJ5SWRDb250ZXh0KCkpOworICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRl
bnQsIHB1dFZhbHVlLCBzbG90KTsKKyAgICBFTkQoKTsKK30KKworU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBPUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IE9QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIAorICAg
IGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBDSEVD
S19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBw
cm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIEVORCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCShyZXZpc2lvbiAyMDAzMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDYgKzI0OCwxMCBAQCBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sCiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRf
d2l0aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0
aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3Mu
anMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1
cGVyLXByb3BlcnR5LWFjY2Vzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgxMSBAQAor
ZnVuY3Rpb24gYXNzZXJ0KGIsIG0gPSAiQmFkISIpIHsKKyAgICBpZiAoIWIpIHsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKG0pOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdChmLCBpdGVycyA9
IDEwMDApIHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZXJzOyBpKyspCisgICAgICAgIGYo
KTsKK30KKworZnVuY3Rpb24gZnVuYyh4KSB7CisgICAgcmV0dXJuIHg7Cit9Citub0lubGluZShm
dW5jKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3Ry
dWN0b3IoeCkKKyAgICAgICAgeworICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB4OworICAgICAg
ICB9CisKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgdGhpcy5fdmFsdWUgPSB4OyB9CisgICAgICAg
IGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9CisgICAgfQorCisgICAgY2xhc3Mg
QiBleHRlbmRzIEEgeworICAgICAgICBzZXQgdmFsdWUoeCkgeyBzdXBlci52YWx1ZSA9IHg7IH0K
KyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gc3VwZXIudmFsdWU7IH0KKyAgICB9CisKKyAg
ICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gMjApOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0u
dmFsdWUgPSBpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9Cit9LCAxMCk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gdmFsdWUoKSB7IHJldHVybiAndmFsdWUnOyB9
CisgICAgbm9JbmxpbmUodmFsdWUpOworCisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVj
dG9yKHgsIGYgPSBmdW5jKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHg7
CisgICAgICAgICAgICB0aGlzLl9mdW5jID0gZjsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2
YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVy
biB0aGlzLl92YWx1ZTsgfQorICAgICAgICBnZXQgZnVuYygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7
IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIHNldCB2YWx1ZSh4
KSB7IHN1cGVyW3ZhbHVlKCldID0geDsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiBz
dXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBpbmMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXSsr
OyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJuIHN1cGVyW3ZhbHVlKCldLS07IH0KKyAgICAgICAg
cHJlSW5jKCkgeyByZXR1cm4gKytzdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBwcmVEZWMoKSB7
IHJldHVybiAtLXN1cGVyW3ZhbHVlKCldOyB9CisgICAgICAgIHBsdXNFcSh4KSB7IHN1cGVyW3Zh
bHVlKCldICs9IHg7IH0KKyAgICAgICAgbWludXNFcSh4KSB7IHN1cGVyW3ZhbHVlKCldIC09IHg7
IH0KKyAgICAgICAgdGltZXNFcSh4KSB7IHN1cGVyW3ZhbHVlKCldICo9IHg7IH0KKyAgICAgICAg
ZGl2RXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAvPSB4OyB9CisKKyAgICAgICAgZnVuY0RvdCh4KSB7
IHJldHVybiBzdXBlci5mdW5jKHgpOyB9CisgICAgICAgIGZ1bmNCcmFja2V0KHgpIHsgcmV0dXJu
IHN1cGVyLmZ1bmMoeCk7IH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsK
KyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0
IHQgPSBhcnJbaV0udmFsdWU7CisgICAgICAgIGFzc2VydCh0ID09PSAyMCk7CisgICAgfQorICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS52YWx1ZSA9
IGk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmluYygpOworICAgICAg
ICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJb
aV0uZGVjKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09
PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBsZXQgdiA9IGFycltpXS5wcmVJbmMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkrMSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlRGVjKCk7CisgICAg
ICAgIGFzc2VydCh2ID09PSBpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnBsdXNF
cShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaStpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0ubWludXNFcShpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFy
cltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnRpbWVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09
IGkqaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgaWYgKGkgPT09IDApCisgICAgICAgICAgICBhcnJbaV0udmFsdWUgPSAwOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhcnJbaV0uZGl2RXEoaSk7CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09
IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGFycltpXSA9IG5ldyBCKDAsIGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGkgKyBhOyB9KTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0
KGFycltpXS5mdW5jRG90KGkpID09PSBpICsgaSk7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVu
Y0JyYWNrZXQoaSoyKSA9PT0gaSArIGkqMik7CisgICAgfQorCit9LCAxMCk7CisKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoeCwgZiA9IGZ1
bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0geDsKKyAgICAgICAgICAg
IHRoaXMuX2Z1bmMgPSBmOworICAgICAgICB9CisKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgdGhp
cy5fdmFsdWUgPSB4OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVl
OyB9CisgICAgICAgIGdldCBmdW5jKCkgeyByZXR1cm4gdGhpcy5fZnVuYzsgfQorICAgIH0KKwor
ICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgKCgpID0+IHN1
cGVyLnZhbHVlID0geCkoKTsgfQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiAoKCkgPT4g
c3VwZXIudmFsdWUpKCk7IH0KKyAgICAgICAgaW5jKCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLnZh
bHVlKyspKCk7IH0KKyAgICAgICAgZGVjKCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLnZhbHVlLS0p
KCk7IH0KKyAgICAgICAgcHJlSW5jKCkgeyByZXR1cm4gKCgpID0+ICsrc3VwZXIudmFsdWUpKCk7
IH0KKyAgICAgICAgcHJlRGVjKCkgeyByZXR1cm4gKCgpID0+IC0tc3VwZXIudmFsdWUpKCk7IH0K
KyAgICAgICAgcGx1c0VxKHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlICs9IHgpKCk7IH0KKyAgICAg
ICAgbWludXNFcSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSAtPSB4KSgpOyB9CisgICAgICAgIHRp
bWVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFsdWUgKj0geCkoKTsgfQorICAgICAgICBkaXZFcSh4
KSB7ICgoKSA9PiBzdXBlci52YWx1ZSAvPSB4KSgpOyB9CisKKyAgICAgICAgZnVuY0RvdCh4KSB7
IHJldHVybiAoKCkgPT4gc3VwZXIuZnVuYyh4KSkoKTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4
KSB7IHJldHVybiAoKCkgPT4gc3VwZXIuZnVuYyh4KSkoKTsgfQorICAgIH0KKworICAgIGxldCBh
cnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBh
cnIucHVzaChuZXcgQigyMCkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7
IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSAyMCk7CisgICAgfQorICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS52YWx1ZSA9
IGk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGxldCB2ID0gYXJyW2ldLmluYygpOworICAgICAg
ICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJb
aV0uZGVjKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09
PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBsZXQgdiA9IGFycltpXS5wcmVJbmMoKTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkrMSk7
CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFz
c2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0ucHJlRGVjKCk7CisgICAg
ICAgIGFzc2VydCh2ID09PSBpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnBsdXNF
cShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaStpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0ubWludXNFcShpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFy
cltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnRpbWVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09
IGkqaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAg
ICAgICAgaWYgKGkgPT09IDApCisgICAgICAgICAgICBhcnJbaV0udmFsdWUgPSAwOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBhcnJbaV0uZGl2RXEoaSk7CisgICAgfQorICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09
IGkpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAg
ICAgIGFycltpXSA9IG5ldyBCKDAsIGZ1bmN0aW9uKGEpIHsgcmV0dXJuIGkgKyBhOyB9KTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0
KGFycltpXS5mdW5jRG90KGkpID09PSBpICsgaSk7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVu
Y0JyYWNrZXQoaSoyKSA9PT0gaSArIGkqMik7CisgICAgfQorCit9LCAxMCk7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAgICBub0lu
bGluZShmb28pOworICAgIGNsYXNzIEEgeyB9CisgICAgbGV0IG9iaiA9IHt9OworICAgIEEucHJv
dG90eXBlLmZvbyA9IG9iajsKKyAgICBBLnByb3RvdHlwZVswXSA9IG9iajsKKworCisgICAgY2xh
c3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooKSB7IHJldHVybiBzdXBlcltmb28oKV07IH0K
KyAgICAgICAgamF6KCkgeyByZXR1cm4gc3VwZXIuZm9vOyB9CisgICAgICAgIGJhcigpIHsgcmV0
dXJuIHN1cGVyWzBdOyB9CisgICAgICAgIAorICAgIH0KKworICAgIGFzc2VydCgobmV3IEIpLmJh
eigpID09PSBvYmopOworICAgIGFzc2VydCgobmV3IEIpLmpheigpID09PSBvYmopOworICAgIGFz
c2VydCgobmV3IEIpLmJhcigpID09PSBvYmopOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgY2xhc3MgQSB7IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICAg
ICAgQS5wcm90b3R5cGVbaV0gPSBpOworCisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAg
ICAgIGluZGV4KGkpIHsgcmV0dXJuIHN1cGVyW2ldOyB9CisgICAgfQorCisgICAgbGV0IGIgPSBu
ZXcgQjsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3Nl
cnQoYi5pbmRleChpKSA9PT0gaSk7CisgICAgfQorfSwgNTApOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGxldCBvYmogPSB7fTsKKyAgICBjbGFzcyBBIHsgY29uc3RydWN0b3IocikgeyB0aGlz
Ll9mb28gPSByOyB9IH0KKyAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICcw
JywgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZm9vOyB9IH0pOworCisgICAgY2xh
c3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXIoKSB7IHJldHVybiBzdXBlclswXTsgfQorICAg
IH0KKworICAgIGxldCByYW5kID0gTWF0aC5yYW5kb20oKTsKKyAgICBhc3NlcnQoKG5ldyBCKHJh
bmQpKS5iYXIoKSA9PT0gcmFuZCk7Cit9KTsKKwordGVzdChmdW5jdGlvbigpIHsgY2xhc3MgQSB7
CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0aGlzLl9hcnJheSA9IFtdOyB9CisgICAgICAgIHNl
dCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fYXJyYXkucHVzaCh4KTsKKyAgICAgICAgfQor
ICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVybiB0aGlzLl9hcnJheTsgfQorICAgIH0KKworICAg
IGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgYmF6KGkpIHsKKyAgICAgICAgICAgIGxldCBv
ID0ge3g6MjAsIHk6MzAsIFtpXTppfTsKKyAgICAgICAgICAgIGZvciAoc3VwZXIuZm9vIGluIG8p
IHsgfQorICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDIwOyBpKyspCisgICAgICAgIGFyci5wdXNoKG5ldyBCKTsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ld
OworICAgICAgICBvYmouYmF6KGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFy
ci5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ldLmFycmF5OworICAgICAg
ICBhc3NlcnQob2JqLmxlbmd0aCA9PT0gMykKKyAgICAgICAgYXNzZXJ0KG9ialswXSA9PT0gJycg
KyBpKTsKKyAgICAgICAgYXNzZXJ0KG9ialsxXSA9PT0gJ3gnKQorICAgICAgICBhc3NlcnQob2Jq
WzJdID09PSAneScpCisgICAgfQorfSwgMTAwMCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
ZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAgICBub0lubGluZShmb28pOworICAg
IGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQor
ICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAg
ICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAg
ICAgICBsZXQgbyA9IHt4OjIwLCB5OjMwLCBbaV06aX07CisgICAgICAgICAgICBmb3IgKHN1cGVy
W2ZvbygpXSBpbiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0
IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5h
cnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChv
YmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAg
ICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJy
YXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5
LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5f
YXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihp
KSB7CisgICAgICAgICAgICBsZXQgbyA9IFsnJyArIGksICJ4IiwgInkiXTsKKyAgICAgICAgICAg
IGZvciAoc3VwZXIuZm9vIG9mIG8pIHsgfQorICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIg
PSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspCisgICAgICAgIGFyci5wdXNo
KG5ldyBCKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAg
ICAgICBsZXQgb2JqID0gYXJyW2ldOworICAgICAgICBvYmouYmF6KGkpOworICAgIH0KKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0g
YXJyW2ldLmFycmF5OworICAgICAgICBhc3NlcnQob2JqLmxlbmd0aCA9PT0gMykKKyAgICAgICAg
YXNzZXJ0KG9ialswXSA9PT0gJycgKyBpKTsKKyAgICAgICAgYXNzZXJ0KG9ialsxXSA9PT0gJ3gn
KQorICAgICAgICBhc3NlcnQob2JqWzJdID09PSAneScpCisgICAgfQorfSwgMTAwMCk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAg
ICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7IHRoaXMuX2FycmF5ID0gW107IH0K
KyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9hcnJheS5wdXNoKHgpOwor
ICAgICAgICB9CisgICAgICAgIGdldCBhcnJheSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5OyB9Cisg
ICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgeworICAgICAg
ICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIsICJ5Il07CisgICAgICAgICAgICBmb3IgKHN1cGVy
W2ZvbygpXSBvZiBvKSB7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0
IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2JqLmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5h
cnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5sZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChv
YmpbMF0gPT09ICcnICsgaSk7CisgICAgICAgIGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAg
ICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQorICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAg
ICAgIHRoaXMuX2ZvbyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgc2V0IGZvbyh4KSB7Cisg
ICAgICAgICAgICB0aGlzLl9mb28gPSB4OworICAgICAgICB9CisgICAgICAgIGdldCBmb28oKSB7
IHJldHVybiB0aGlzLl9mb287IH0KKyAgICB9CisgICAgZnVuY3Rpb24gb2JqKGkpIHsgcmV0dXJu
IHtvOiBpfTsgfQorICAgIG5vSW5saW5lKG9iaik7CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7
CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICA7KHtvOiBzdXBlci5mb299ID0gb2JqKGkp
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyLnB1c2goKG5ldyBCKSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXS5iYXoo
aSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGFzc2VydChhcnJbaV0uZm9vID09PSBpKTsKKyAgICB9Cit9LCAxMDApOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9Jbmxp
bmUoZm9vKTsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAg
ICAgICB0aGlzLl9mb28gPSBudWxsOworICAgICAgICB9CisgICAgICAgIHNldCBmb28oeCkgewor
ICAgICAgICAgICAgdGhpcy5fZm9vID0geDsKKyAgICAgICAgfQorICAgICAgICBnZXQgZm9vKCkg
eyByZXR1cm4gdGhpcy5fZm9vOyB9CisgICAgfQorICAgIGZ1bmN0aW9uIG9iaihpKSB7IHJldHVy
biB7bzogaX07IH0KKyAgICBub0lubGluZShvYmopOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEg
eworICAgICAgICBiYXooaSkgeworICAgICAgICAgICAgOyh7bzogc3VwZXJbZm9vKCldfSA9IG9i
aihpKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFyci5wdXNoKChuZXcgQikpOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0u
YmF6KGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBhc3NlcnQoYXJyW2ldLmZvbyA9PT0gaSk7CisgICAgfQorfSwgMTAwKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAg
ICAgICAgICB0aGlzLl9mb28gPSBudWxsOworICAgICAgICB9CisgICAgICAgIGdldCBjYWxsKCkg
eworICAgICAgICAgICAgbGV0IHJldCA9ICgpID0+ICdjYWxsJzsKKyAgICAgICAgICAgIG5vSW5s
aW5lKHJldCk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgICAgIGdl
dCBhcHBseSgpIHsgCisgICAgICAgICAgICBsZXQgcmV0ID0gKCkgPT4gJ2FwcGx5JzsKKyAgICAg
ICAgICAgIG5vSW5saW5lKHJldCk7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9
CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBmb28oKSB7CisgICAg
ICAgICAgICByZXR1cm4gc3VwZXIuY2FsbCh7fSwgMjAsIDMwKTsKKyAgICAgICAgfQorICAgICAg
ICBiYXIoKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuYXBwbHkoe30sIFsxMCwgMjBdKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7Cisg
ICAgICAgIGxldCBiID0gbmV3IEI7CisgICAgICAgIGFzc2VydChiLmZvbygpID09PSAnY2FsbCcp
OworICAgICAgICBhc3NlcnQoYi5iYXIoKSA9PT0gJ2FwcGx5Jyk7CisgICAgfQorfSk7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKGkpIHsg
dGhpcy5faSA9IGk7IH0KKyAgICAgICAgZ2V0IGZvbygpIHsKKyAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbihzdHJpbmdzLCAuLi52YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gW3N0
cmluZ3MsIHZhbHVlc107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGko
KSB7IHJldHVybiB0aGlzLl9pOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgewor
ICAgICAgICBiYXooKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZm9vYGhlbGxvJHtzdXBl
ci5pfXdvcmxkYDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBhcnIgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgYiA9IG5ldyBCKGkp
OworICAgICAgICBhcnIucHVzaChiKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHIgPSBhcnJbaV0uYmF6KCk7CisgICAgICAgIGFzc2Vy
dChyLmxlbmd0aCA9PT0gMik7CisgICAgICAgIGFzc2VydChyWzBdLmxlbmd0aCA9PT0gMik7Cisg
ICAgICAgIGFzc2VydChyWzBdWzBdID09PSAnaGVsbG8nKTsKKyAgICAgICAgYXNzZXJ0KHJbMF1b
MV0gPT09ICd3b3JsZCcpOworICAgICAgICBhc3NlcnQoclsxXS5sZW5ndGggPT09IDEpOworICAg
ICAgICBhc3NlcnQoclsxXVswXSA9PT0gaSk7CisgICAgfQorfSk7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZnVuY3Rpb24gZm9vUHJvcCgpIHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9Jbmxp
bmUoZm9vUHJvcCk7CisKKyAgICBsZXQgc2hvdWxkVGhyb3cgPSBmYWxzZTsKKyAgICBjbGFzcyBB
IHsKKyAgICAgICAgZ2V0IGZvbygpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gMjA7Cisg
ICAgICAgIH0KKyAgICAgICAgZ2V0IHgoKSB7IHJldHVybiB0aGlzLl94OyB9CisgICAgfQorCisg
ICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBjb25zdHJ1Y3Rvcih4KSB7CisgICAgICAg
ICAgICBzdXBlcigpOworICAgICAgICAgICAgdGhpcy5feCA9IHg7CisgICAgICAgIH0KKworICAg
ICAgICBiYXIoKSB7CisgICAgICAgICAgICB0aGlzLl94ID0gc3VwZXIuZm9vOworICAgICAgICB9
CisKKyAgICAgICAgYmF6KCkgeworICAgICAgICAgICAgdGhpcy5feCA9IHN1cGVyW2Zvb1Byb3Ao
KV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb28oaSkgeyAKKyAgICAgICAg
bGV0IGIgPSBuZXcgQihpKTsKKyAgICAgICAgbm9JbmxpbmUoYi5fX2xvb2t1cEdldHRlcl9fKCdm
b28nKSk7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgYi5iYXIoKTsgICAgCisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhy
ZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0aHJldykKKyAgICAgICAgICAgIGFz
c2VydChiLnggPT09IGkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoYi54ID09
PSAyMCk7CisgICAgfQorICAgIGZ1bmN0aW9uIGJhcihpKSB7IAorICAgICAgICBsZXQgYiA9IG5l
dyBCKGkpOworICAgICAgICBub0lubGluZShiLl9fbG9va3VwR2V0dGVyX18oJ2ZvbycpKTsKKyAg
ICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBiLmJh
eigpOyAgICAKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRocmV3KQorICAgICAgICAgICAgYXNzZXJ0KGIueCA9
PT0gaSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09IDIwLCAiYi54
ICIgKyBiLnggKyAiICAiICsgaSk7CisgICAgfQorICAgIG5vSW5saW5lKGJhcik7CisKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgZm9vKGkpOworICAgICAg
ICBiYXIoaSk7CisgICAgfQorICAgIHNob3VsZFRocm93ID0gdHJ1ZTsKKyAgICBmb28oMjMpOwor
ICAgIGJhcigyNCk7CisKK30sIDEpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9u
IGZvb1Byb3AoKSB7IHJldHVybiAnZm9vJzsgfQorICAgIG5vSW5saW5lKGZvb1Byb3ApOworCisg
ICAgZnVuY3Rpb24gZnVuYyhpKSB7CisgICAgICAgIGlmIChzaG91bGRUaHJvdykKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgbm9J
bmxpbmUoZnVuYyk7CisKKyAgICBsZXQgc2hvdWxkVGhyb3cgPSBmYWxzZTsKKyAgICBjbGFzcyBB
IHsKKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl94ID0geDsKKyAgICAg
ICAgfQorICAgICAgICBnZXQgeCgpIHsgcmV0dXJuIHRoaXMuX3g7IH0KKyAgICB9CisKKyAgICBj
bGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgpIHsKKyAgICAgICAgICAg
IHN1cGVyKCk7CisgICAgICAgICAgICB0aGlzLl94ID0geDsKKyAgICAgICAgfQorCisgICAgICAg
IGJhcih4KSB7CisgICAgICAgICAgICBzdXBlci5mb28gPSBmdW5jKHgpOworICAgICAgICB9CisK
KyAgICAgICAgYmF6KHgpIHsKKyAgICAgICAgICAgIHN1cGVyW2Zvb1Byb3AoKV0gPSBmdW5jKHgp
OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gZm9vKGkpIHsgCisgICAgICAgIGxl
dCBiID0gbmV3IEIoaSk7CisgICAgICAgIG5vSW5saW5lKGIuX19sb29rdXBHZXR0ZXJfXygnZm9v
JykpOworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgIGIuYmFyKGkgKyAxKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRocmV3KQorICAgICAgICAgICAgYXNz
ZXJ0KGIueCA9PT0gaSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09
IGkgKyAxKTsKKyAgICB9CisgICAgZnVuY3Rpb24gYmFyKGkpIHsgCisgICAgICAgIGxldCBiID0g
bmV3IEIoaSk7CisgICAgICAgIG5vSW5saW5lKGIuX19sb29rdXBHZXR0ZXJfXygnZm9vJykpOwor
ICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGIu
YmF6KGkgKyAxKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRy
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRocmV3KQorICAgICAgICAgICAgYXNzZXJ0KGIu
eCA9PT0gaSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09IGkgKyAx
KTsKKyAgICB9CisgICAgbm9JbmxpbmUoYmFyKTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwMDA7IGkrKykgeworICAgICAgICBmb28oaSk7CisgICAgICAgIGJhcihpKTsKKyAgICB9Cisg
ICAgc2hvdWxkVGhyb3cgPSB0cnVlOworICAgIGZvbygyMyk7CisgICAgYmFyKDI0KTsKKworfSwg
MSk7CisKK2Z1bmN0aW9uIHNob3VsZFRocm93VERaKGYpIHsKKyAgICBsZXQgdGhyZXcgPSBmYWxz
ZTsKKyAgICB0cnkgeworICAgICAgICBmKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGFz
c2VydChlIGluc3RhbmNlb2YgUmVmZXJlbmNlRXJyb3IpOworICAgICAgICBhc3NlcnQoZS50b1N0
cmluZygpID09PSAiUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS4iKTsKKyAgICAgICAgdGhyZXcgPSB0cnVlOworICAgIH0KKyAgICBhc3NlcnQodGhy
ZXcpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAgICAgICBnZXQg
Zm9vKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3g7CisgICAgICAgIH0KKyAgICAgICAg
c2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl94ID0geDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIGZvb1Byb3AoKSB7IHJldHVybiAnZm9vJzsgfQorCisgICAgY2xhc3Mg
QiBleHRlbmRzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHN1cGVy
LmZvbyA9IDIwOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIEEgewor
ICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHN1cGVyW2Zvb1Byb3AoKV0gPSAy
MDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEQgZXh0ZW5kcyBBIHsKKyAgICAgICAg
Y29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlcltmb29Qcm9wKCldOworICAgICAgICB9
CisgICAgfQorCisgICAgY2xhc3MgRSBleHRlbmRzIEEgeworICAgICAgICBjb25zdHJ1Y3Rvcigp
IHsKKyAgICAgICAgICAgIHN1cGVyLmZvbzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNz
IEYgZXh0ZW5kcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAoKCkg
PT4gc3VwZXIuZm9vID0gMjApKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBHIGV4
dGVuZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgKCgpID0+IHN1
cGVyW2Zvb1Byb3AoKV0gPSAyMCkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEgg
ZXh0ZW5kcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAoKCkgPT4g
c3VwZXJbZm9vUHJvcCgpXSkoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEkgZXh0
ZW5kcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICAoKCkgPT4gc3Vw
ZXIuZm9vKSgpOworICAgICAgICB9CisgICAgfQorCisgICAgc2hvdWxkVGhyb3dURFooZnVuY3Rp
b24oKSB7IG5ldyBCOyB9KTsKKyAgICBzaG91bGRUaHJvd1REWihmdW5jdGlvbigpIHsgbmV3IEM7
IH0pOworICAgIHNob3VsZFRocm93VERaKGZ1bmN0aW9uKCkgeyBuZXcgRDsgfSk7CisgICAgc2hv
dWxkVGhyb3dURFooZnVuY3Rpb24oKSB7IG5ldyBFOyB9KTsKKyAgICBzaG91bGRUaHJvd1REWihm
dW5jdGlvbigpIHsgbmV3IEY7IH0pOworICAgIHNob3VsZFRocm93VERaKGZ1bmN0aW9uKCkgeyBu
ZXcgRzsgfSk7CisgICAgc2hvdWxkVGhyb3dURFooZnVuY3Rpb24oKSB7IG5ldyBIOyB9KTsKKyAg
ICBzaG91bGRUaHJvd1REWihmdW5jdGlvbigpIHsgbmV3IEk7IH0pOworfSk7Cg==
</data>
<flag name="review"
          id="302012"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>277906</attachid>
            <date>2016-05-02 07:45:46 -0700</date>
            <delta_ts>2016-05-02 07:45:46 -0700</delta_ts>
            <desc>benchmark results</desc>
            <filename>scratch</filename>
            <type>application/octet-stream</type>
            <size>77167</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">Vk1zIHRlc3RlZDoKIm9nIiBhdCAvVm9sdW1lcy9EYXRhL1dLL2IvT3BlblNvdXJjZS9XZWJLaXRC
dWlsZC9SZWxlYXNlL2pzYyAocjIwMDMxMikKImNoYW5nZSIgYXQgL1ZvbHVtZXMvRGF0YS9XSy9j
L09wZW5Tb3VyY2UvV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MgKHIyMDAzMTIpCgpDb2xsZWN0ZWQg
OCBzYW1wbGVzIHBlciBiZW5jaG1hcmsvVk0sIHdpdGggOCBWTSBpbnZvY2F0aW9ucyBwZXIgYmVu
Y2htYXJrLiBFbWl0dGVkIGEgY2FsbCB0byBnYygpIGJldHdlZW4gc2FtcGxlIG1lYXN1cmVtZW50
cy4KVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24gcGVyIFZNIGludm9jYXRpb24gZm9yIHdhcm0t
dXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYyBwcmVjaXNlVGltZSgpIGZ1bmN0aW9uIHRvIGdldCBt
aWNyb3NlY29uZC1sZXZlbAp0aW1pbmcuIFJlcG9ydGluZyBiZW5jaG1hcmsgZXhlY3V0aW9uIHRp
bWVzIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGluIG1pbGxpc2Vjb25kcy4KCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9n
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgClN1blNwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC41OTM1Ky0wLjE1ODcgICAgID8gICAgICA0LjYyOTMrLTAuMTIy
MyAgICAgICAgPwogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1LjAwODkrLTAuMDU5MyAgICAgICAgICAgIDQuOTkzOSstMC4wNzY5ICAgICAgICAK
ICAgM2QtcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4w
NTU3Ky0wLjM2ODYgICAgICAgICAgICA0Ljk3MzArLTAuMzQwNiAgICAgICAgICBtaWdodCBiZSAx
LjAxNjZ4IGZhc3RlcgogICBhY2Nlc3MtYmluYXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjE3NDIrLTAuNDA4MiAgICAgICAgICAgIDIuMDE5NystMC4wNzk5ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDc2NXggZmFzdGVyCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDUuNDA2MistMC40MDUxICAgICA/ICAgICAgNS43NTM0
Ky0wLjQ2MzYgICAgICAgID8gbWlnaHQgYmUgMS4wNjQyeCBzbG93ZXIKICAgYWNjZXNzLW5ib2R5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NzA2Ky0wLjM4NTcgICAg
ICAgICAgICAyLjMzMzErLTAuMDI3NCAgICAgICAgICBtaWdodCBiZSAxLjEwMTh4IGZhc3Rlcgog
ICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjgx
NTErLTAuMDU3OSAgICAgPyAgICAgIDIuODM5OSstMC4wNzU0ICAgICAgICA/CiAgIGJpdG9wcy0z
Yml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDgyMistMC4wNDk5
ICAgICAgICAgICAgMS4wODExKy0wLjA2MzEgICAgICAgIAogICBiaXRvcHMtYml0cy1pbi1ieXRl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU5NTArLTAuMDUyOSAgICAgICAgICAg
IDIuNTQ3NSstMC4wMzcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4N3ggZmFzdGVyCiAgIGJpdG9w
cy1iaXR3aXNlLWFuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTQzMCstMC4w
NzI2ICAgICAgICAgICAgMS45MTEzKy0wLjA1OTIgICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBm
YXN0ZXIKICAgYml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi44NTg5Ky0wLjA0NjkgICAgID8gICAgICAyLjg5NzMrLTAuMDg5OCAgICAgICAgPyBtaWdo
dCBiZSAxLjAxMzV4IHNsb3dlcgogICBjb250cm9sZmxvdy1yZWN1cnNpdmUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjMxMjUrLTAuMjgwMSAgICAgICAgICAgIDIuMTkyOCstMC4wNDg4
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU0NnggZmFzdGVyCiAgIGNyeXB0by1hZXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuOTk1NystMC4xMTIyICAgICA/ICAgICAg
NC41MDU5Ky0wLjU3MjggICAgICAgID8gbWlnaHQgYmUgMS4xMjc3eCBzbG93ZXIKICAgY3J5cHRv
LW1kNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zMTI4Ky0wLjA0
OTIgICAgICAgICAgICAyLjI2NTArLTAuMDQ3MyAgICAgICAgICBtaWdodCBiZSAxLjAyMTF4IGZh
c3RlcgogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjI0NjIrLTAuMTEyNCAgICAgICAgICAgIDIuMTg1NistMC4wNTA4ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDI3N3ggZmFzdGVyCiAgIGRhdGUtZm9ybWF0LXRvZnRlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDYuNDk4OSstMC4zNjk0ICAgICAgICAgICAgNi40MjczKy0wLjQxODUg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTExeCBmYXN0ZXIKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NzYwKy0wLjQ3NTAgICAgICAgICAgICA0
LjU1MzQrLTAuMjAyMSAgICAgICAgICBtaWdodCBiZSAxLjA3MDh4IGZhc3RlcgogICBtYXRoLWNv
cmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjgwNDErLTAuMjcw
NyAgICAgICAgICAgIDIuNjk1NystMC4xNjk4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQwMnggZmFz
dGVyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuNTY5NystMC4yNDU3ICAgICA/ICAgICAgMy44NTk3Ky0wLjI5MDkgICAgICAgID8gbWlnaHQg
YmUgMS4wODEzeCBzbG93ZXIKICAgbWF0aC1zcGVjdHJhbC1ub3JtICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMS44Nzc1Ky0wLjAyMTAgICAgID8gICAgICAxLjk0NjQrLTAuMTc2OSAg
ICAgICAgPyBtaWdodCBiZSAxLjAzNjd4IHNsb3dlcgogICByZWdleHAtZG5hICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjMxNzQrLTAuMzUzNyAgICAgICAgICAgIDYu
MTcyMCstMC4zNTI1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzNnggZmFzdGVyCiAgIHN0cmluZy1i
YXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTk4OCstMC41NDM4
ICAgICAgICAgICAgNC4zMzUyKy0wLjExMjMgICAgICAgICAgbWlnaHQgYmUgMS4wNjA4eCBmYXN0
ZXIKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS40NTE0Ky0wLjI3MDUgICAgID8gICAgICA1LjQ5NjcrLTAuMzYyMSAgICAgICAgPwogICBzdHJp
bmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA2MzYrLTAu
MzMzOSAgICAgICAgICAgIDcuODU1OCstMC4xMDk1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2NXgg
ZmFzdGVyCiAgIHN0cmluZy11bnBhY2stY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTguODI1MystMS44MDg5ICAgICAgICAgICAxOC4xNjE5Ky0xLjAzMjkgICAgICAgICAgbWln
aHQgYmUgMS4wMzY1eCBmYXN0ZXIKICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC4xMzM1Ky0wLjA5MjcgICAgID8gICAgICA0LjE3NjcrLTAuMDg3
MCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDR4IHNsb3dlcgoKICAgPGFyaXRobWV0aWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zODQxKy0wLjExNjYgICAgICAgICAg
ICA0LjMzODgrLTAuMDMxNSAgICAgICAgICBtaWdodCBiZSAxLjAxMDR4IGZhc3RlcgoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cg
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKTG9uZ1NwaWRlcjoKICAgM2QtY3ViZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDc2My43NjI1Ky04LjE4NzkgICAgID8gICAgNzY4LjI0OTkrLTguNTg5
MyAgICAgICAgPwogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTU2Ljc4MTkrLTUuMTk5NCAgICAgPyAgICA1NTguMzQzNCstNC43ODQwICAgICAgICA/
CiAgIDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0NTQu
MTY3NystNy42ODE2ICAgICA/ICAgIDQ1NC43MzQyKy00LjkyMDEgICAgICAgID8KICAgYWNjZXNz
LWJpbmFyeS10cmVlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc4My4wNDYyKy0yLjMw
ODEgICAgID8gICAgNzg2Ljk5MTQrLTYuODc2NCAgICAgICAgPwogICBhY2Nlc3MtZmFubmt1Y2gg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjI5Ljk5MzcrLTUuNTk0OCAgICAgICAg
ICAyMjUuOTc2MSstNC42OTUxICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3OHggZmFzdGVyCiAgIGFj
Y2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OTAuMDI2Nist
NS4wODg1ICAgICAgICAgIDQ4OC4xMzY3Ky0zLjQxMDIgICAgICAgIAogICBhY2Nlc3MtbnNpZXZl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjc2LjAwMTIrLTEuNDEzOSAgICAg
ISAgICAyODQuMzA2OCstNi40NjcwICAgICAgICAhIGRlZmluaXRlbHkgMS4wMzAxeCBzbG93ZXIK
ICAgYml0b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAgICAgICAzMC45
NTQwKy0wLjE1NjIgICAgID8gICAgIDMxLjk0MzgrLTEuNTU0MSAgICAgICAgPyBtaWdodCBiZSAx
LjAzMjB4IHNsb3dlcgogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDk1LjMwNDcrLTEuNjgxNiAgICAgPyAgICAgOTYuNTI1MistMi4wNzQwICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDEyOHggc2xvd2VyCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzNzQuNTExNCstNC4xMzYxICAgICA/ICAgIDM3NC42MDk3
Ky02Ljk3NjkgICAgICAgID8KICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQzOC42NjY0Ky02LjI4NDQgICAgICAgICAgNDM3LjYyMTArLTUuODExMSAg
ICAgICAgCiAgIGNyeXB0by1hZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1NTMuMTAwNystNS4yNjkyICAgICAgICAgIDU0OS41OTgyKy0zLjkyMjAgICAgICAgIAogICBj
cnlwdG8tbWQ1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcwLjE0ODEr
LTUuOTQxMyAgICAgPyAgICA0NzMuNDEwMSstMy45ODEyICAgICAgICA/CiAgIGNyeXB0by1zaGEx
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2MTEuMzQ1MistNC42NzU4ICAg
ICAgICAgIDYwNy4xNDk5Ky0yLjY5OTEgICAgICAgIAogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDg3LjkxMjIrLTcuNzM5NiAgICAgICAgICA0ODUu
NDk0NCstNi4wOTk4ICAgICAgICAKICAgZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDY0OC45MDQ5Ky03Mi4yNTA1ICAgICAgICAgNjAwLjM1MzYrLTIuMjIz
NiAgICAgICAgICBtaWdodCBiZSAxLjA4MDl4IGZhc3RlcgogICBoYXNoLW1hcCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQyLjM2MjgrLTIuNTExOCAgICAgICAgICAx
NDEuMzQ2NistMS4wMDgxICAgICAgICAKICAgbWF0aC1jb3JkaWMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQwOC40NjI2Ky04LjI1OTEgICAgID8gICAgNDE2Ljc0ODArLTEw
LjgzOTMgICAgICAgPyBtaWdodCBiZSAxLjAyMDN4IHNsb3dlcgogICBtYXRoLXBhcnRpYWwtc3Vt
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg0Ljc0NjArLTMuOTE3MyAgICAgPyAg
ICAyODcuMjY5NCstMi43OTQzICAgICAgICA/CiAgIG1hdGgtc3BlY3RyYWwtbm9ybSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1MjAuOTE0OCstMi43NzUyICAgICAgICAgIDUyMC43OTAy
Ky00LjA1NTggICAgICAgIAogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIyLjgzMTArLTEuNzM4NyAgICAgICAgICAzMjEuOTEzOCstMi42MjA4ICAg
ICAgICAKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMxNC4yNTUxKy0xLjk3NTggICAgID8gICAgMzE2LjQyNTQrLTMuMjI0MyAgICAgICAgPwogICBz
dHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcwLjkzNTgr
LTEuNzg1MiAgICAgICAgICAxNjkuODE3MCstMi40ODgxICAgICAgICAKCiAgIDxnZW9tZXRyaWM+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNDAuMjM1MistMS41NTA3ICAg
ICAgICAgIDM0MC4yMzQyKy0xLjIwMjggICAgICAgICAgbWlnaHQgYmUgMS4wMDAweCBmYXN0ZXIK
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9nICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgClY4U3BpZGVyOgogICBjcnlwdG8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDM0LjU5NjgrLTAuOTQwNiAgICAgICAgICAgMzQuMjY2NSst
MC4zNDM0ICAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0Ny4yNDI5Ky0wLjg0NzggICAgID8gICAgIDQ3LjMxODgrLTEuMjI1MCAgICAg
ICAgPwogICBlYXJsZXktYm95ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM3LjM3MjMrLTAuMzc0NSAgICAgICAgICAgMzcuMjE5MSstMC40NDc5ICAgICAgICAKICAgcmF5
dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS40Mjg0Ky0w
LjU3MjEgICAgICAgICAgIDE5LjI2NTErLTAuMzQzNiAgICAgICAgCiAgIHJlZ2V4cCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMuNDU4MistMS4xMjg2ICAgICAg
ICAgICA1Mi4yMzc5Ky0wLjkzMjUgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBmYXN0ZXIKICAg
cmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOC41NDMy
Ky0xLjIzMTYgICAgID8gICAgIDM4Ljc5NjQrLTEuMTQzMiAgICAgICAgPwogICBzcGxheSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjIwNzYrLTAuNjI1MSAg
ICAgICAgICAgMjcuNjc4OSstMC40NDA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE5MXggZmFzdGVy
CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1
LjMzOTcrLTAuMzczNiAgICAgICAgICAgMzUuMDYxMystMC4zMDM5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDA3OXggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApPY3RhbmU6CiAgIGVuY3J5cHQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4xNTE1MCstMC4wMDg2OCAgICAg
ICAgICAwLjE0ODQ4Ky0wLjAwMTQ5ICAgICAgICAgbWlnaHQgYmUgMS4wMjAzeCBmYXN0ZXIKICAg
ZGVjcnlwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYyNjk5
Ky0wLjAyMzk1ICAgID8gICAgIDIuNjI3ODQrLTAuMDE3NTcgICAgICAgPwogICBkZWx0YWJsdWUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDAuMTIxNTUrLTAuMDAxODEg
ICAgICAgICAgMC4xMjAzNCstMC4wMDEwNiAgICAgICAgIG1pZ2h0IGJlIDEuMDEwMHggZmFzdGVy
CiAgIGVhcmxleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4y
NjkwNSstMC4wMDIxMSAgICA/ICAgICAwLjI2OTg1Ky0wLjAwMzQwICAgICAgID8KICAgYm95ZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjYxOTI0Ky0wLjEy
NjM5ICAgID8gICAgIDQuNjQ0NzUrLTAuMTM5MzQgICAgICAgPwogICBuYXZpZXItc3Rva2VzICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDQuNjQ1MDUrLTAuMDQzMDEgICAgICAg
ICAgNC42NDA3NystMC4wMzQxNSAgICAgICAKICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4MiAgICAgICAwLjc0OTAxKy0wLjAwNjU0ICAgICAgICAgIDAuNzQyODcr
LTAuMDA2MTUgICAgICAgCiAgIHJpY2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIgICAgICAgMC4wODU4MistMC4wMTcxMCAgICAgICAgICAwLjA3OTUxKy0wLjAwNTAzICAg
ICAgICAgbWlnaHQgYmUgMS4wNzk0eCBmYXN0ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjMyNTE0Ky0wLjAwNDc3ICAgICAgICAgIDAuMzIw
ODQrLTAuMDAyMTIgICAgICAgICBtaWdodCBiZSAxLjAxMzR4IGZhc3RlcgogICByZWdleHAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMTQuNjIwOTUrLTAuMDc2NjAg
ICAgPyAgICAxNC42MjQxMystMC4yODkzNCAgICAgICA/CiAgIHBkZmpzICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAzNy4wODE2NistMC40OTkyMCAgICAgICAgIDM2
LjYzNjk1Ky0wLjYwNzU0ICAgICAgICAgbWlnaHQgYmUgMS4wMTIxeCBmYXN0ZXIKICAgbWFuZHJl
ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDM5LjEwMDgwKy0wLjEy
NDU4ICAgID8gICAgMzkuNDMxNDQrLTAuNDc0NDIgICAgICAgPwogICBnYmVtdSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgMjIuNTE5MjErLTAuMjg1ODYgICAgPyAg
ICAyMi44MzI4MistMC40MDkyNCAgICAgICA/IG1pZ2h0IGJlIDEuMDEzOXggc2xvd2VyCiAgIGNs
b3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41MDExNSst
MC4wMDI2MiAgICA/ICAgICAwLjUwMzQyKy0wLjAwMjE2ICAgICAgID8KICAganF1ZXJ5ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQ3MzIzKy0wLjQ5MzUzICAg
ICAgICAgIDYuMzE2MTcrLTAuMDQ3MjQgICAgICAgICBtaWdodCBiZSAxLjAyNDl4IGZhc3Rlcgog
ICBib3gyZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAgIDguNzQ3
MjMrLTAuMDkwMTYgICAgICAgICAgOC42ODg3OSstMC4wNjk4NiAgICAgICAKICAgemxpYiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgMzM1Ljc1NjI5Ky02LjMxNzA1
ICAgID8gICAzMzYuOTg1MDQrLTguNDkwMjEgICAgICAgPwogICB0eXBlc2NyaXB0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA1OTcuNTMxMTMrLTMuNjY0MzkgICAgICAgIDU5
Ny40OTExOCstMy4yMDI3NCAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC43MDQ3OSstMC4wNDcyNCAgICAgICAgICA0LjY3Mzg0Ky0w
LjAxOTczICAgICAgICAgbWlnaHQgYmUgMS4wMDY2eCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCkty
YWtlbjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgODQuMTMxKy0xLjg1OCAgICAgICAgICAgICA4My4zMjIrLTIuNTQ4ICAgICAgICAgCiAgIGF1
ZGlvLWJlYXQtZGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjUzMCst
MC4xNDcgICAgICA/ICAgICAgMzUuODk1Ky0wLjkyOCAgICAgICAgID8gbWlnaHQgYmUgMS4wMTAz
eCBzbG93ZXIKICAgYXVkaW8tZGZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOTYuNDUwKy0yLjcyNSAgICAgICAgICAgICA5NS4xNTErLTIuODcyICAgICAgICAgICBt
aWdodCBiZSAxLjAxMzZ4IGZhc3RlcgogICBhdWRpby1mZnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyOC4zNTArLTAuMTA5ICAgICAgPyAgICAgIDI4LjcwMistMC4z
MzEgICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyNHggc2xvd2VyCiAgIGF1ZGlvLW9zY2lsbGF0b3Ig
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ1LjA1MSstMC41NjYgICAgICAgICAg
ICAgNDQuNzYwKy0wLjIyMSAgICAgICAgIAogICBpbWFnaW5nLWRhcmtyb29tICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA1Ni4zNDcrLTAuOTkwICAgICAgPyAgICAgIDU2LjQzNSst
MC43NDYgICAgICAgICA/CiAgIGltYWdpbmctZGVzYXR1cmF0ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQyLjExNystMC4yNzggICAgICAgICAgICAgNDIuMDg0Ky0wLjcxMiAgICAg
ICAgIAogICBpbWFnaW5nLWdhdXNzaWFuLWJsdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1OC45NjYrLTMuNzQ5ICAgICAgPyAgICAgIDYxLjg5MCstMi41OTYgICAgICAgICA/IG1pZ2h0
IGJlIDEuMDQ5Nnggc2xvd2VyCiAgIGpzb24tcGFyc2UtZmluYW5jaWFsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMzLjIwMystMS4yNzQgICAgICA/ICAgICAgMzMuODI5Ky0xLjAzNiAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTg4eCBzbG93ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVy
Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNTM5Ky0xLjIwMyAgICAgID8gICAgICAy
My43MDArLTEuNTkxICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlwdG8tYWVzICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzNi43OTQrLTEuNjUxICAgICAgICAgICAgIDM1LjQzNSstMC41
OTYgICAgICAgICAgIG1pZ2h0IGJlIDEuMDM4NHggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1j
Y20gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLjA0NystMS40MDMgICAgICAgICAg
ICAgMzEuNzA0Ky0xLjQyMyAgICAgICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgc3Rh
bmZvcmQtY3J5cHRvLXBia2RmMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTEuNjg1Ky0y
LjA3MiAgICAgID8gICAgICA5MS44MDYrLTIuMTM2ICAgICAgICAgPwogICBzdGFuZm9yZC1jcnlw
dG8tc2hhMjU2LWl0ZXJhdGl2ZSAgICAgICAgICAgICAgICAgICAzNS41MTIrLTEuOTk4ICAgICAg
ICAgICAgIDM1LjA5OCstMC42NDkgICAgICAgICAgIG1pZ2h0IGJlIDEuMDExOHggZmFzdGVyCgog
ICA8YXJpdGhtZXRpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS45
ODArLTAuNjAxICAgICAgPyAgICAgIDQ5Ljk4NistMC4zNTYgICAgICAgICA/IG1pZ2h0IGJlIDEu
MDAwMXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIApKU1JlZ3Jlc3M6CiAgIGFiYy1mb3J3YXJkLWxv
b3AtZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMzM5NistMC45MzcyICAgICA/
ICAgICAyNC45Njg2Ky0xLjcwMzkgICAgICAgID8gbWlnaHQgYmUgMS4wNjk4eCBzbG93ZXIKICAg
YWJjLXBvc3RmaXgtYmFja3dhcmQtbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAyOC43NTc0
Ky0wLjcwMDkgICAgID8gICAgIDI5LjMwMjIrLTEuODkwNCAgICAgICAgPyBtaWdodCBiZSAxLjAx
ODl4IHNsb3dlcgogICBhYmMtc2ltcGxlLWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIzLjYzNTcrLTEuNDkyMyAgICAgICAgICAgMjMuMDQ4MistMC42MTU3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDI1NXggZmFzdGVyCiAgIGFiYy1zaW1wbGUtZm9yd2FyZC1sb29wICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjIuNjEyOSstMC4zODg1ICAgICAgICAgICAyMi41MTEwKy0w
LjY2NzcgICAgICAgIAogICBhYmMtc2tpcHB5LWxvb3AgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDE5Ljk5ODArLTAuODYzMCAgICAgPyAgICAgMjAuMzQ0MystMC44NjczICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDE3M3ggc2xvd2VyCiAgIGFicy1ib29sZWFuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTA3MistMC4wNjgwICAgICA/ICAgICAgMi4xMTU4
Ky0wLjA1NjggICAgICAgID8KICAgYWRhcHQtdG8tZG91YmxlLWRpdmlkZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNC4xMjE2Ky0wLjU3OTkgICAgICAgICAgIDEzLjkyMzQrLTAuNDQ5OCAg
ICAgICAgICBtaWdodCBiZSAxLjAxNDJ4IGZhc3RlcgogICBhbGlhc2VkLWFyZ3VtZW50cy1nZXRi
eXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAxLjAyMDcrLTAuMDEzOSAgICAgPyAgICAgIDEu
MTcwMSstMC4yNzkwICAgICAgICA/IG1pZ2h0IGJlIDEuMTQ2NHggc2xvd2VyCiAgIGFsbG9jYXRl
LWJpZy1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjA3MystMC4xMjMz
ICAgICA/ICAgICAgMi4zMDUzKy0wLjI1NzggICAgICAgID8gbWlnaHQgYmUgMS4wNDQ0eCBzbG93
ZXIKICAgYXJndW1lbnRzLW5hbWVkLWFuZC1yZWZsZWN0aXZlICAgICAgICAgICAgICAgICAgICAg
Ny43NTIxKy0wLjY3OTEgICAgICAgICAgICA3LjI1NDArLTAuMDcyNiAgICAgICAgICBtaWdodCBi
ZSAxLjA2ODd4IGZhc3RlcgogICBhcmd1bWVudHMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjQ0NzQrLTAuMzYxNCAgICAgICAgICAgIDYuMzQ4MSstMC4zNDAyICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE1NnggZmFzdGVyCiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9kZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAuNjExOCstMC4zMzc1ICAgICA/ICAgICAzMC44
NDIyKy0wLjM5OTQgICAgICAgID8KICAgYXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4xNzQ5Ky0wLjI1MTggICAgID8gICAgICA2LjIzMjYrLTAuMzIw
NCAgICAgICAgPwogICBhcml0eS1taXNtYXRjaC1pbmxpbmluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjc4OTErLTAuMDE5MCAgICAgICAgICAgIDAuNzg1MistMC4wMjE5ICAgICAgICAK
ICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgMy40
NTM1Ky0wLjA1ODcgICAgID8gICAgICAzLjYyMzkrLTAuMjYwNyAgICAgICAgPyBtaWdodCBiZSAx
LjA0OTR4IHNsb3dlcgogICBhcnJheS1ub25hcnJheS1wb2x5bW9yaHBpYy1hY2Nlc3MgICAgICAg
ICAgICAgICAgIDE5LjU0ODArLTEuNTcwNyAgICAgPyAgICAgMjAuMzgzNCstMS43Njk4ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQyN3ggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1ldmVyeSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNjQuOTcyNistMS4zNDg2ICAgICA/ICAgICA2NS4xNTI2
Ky0xLjM0ODEgICAgICAgID8KICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICA2My44MDEyKy0wLjExNDYgICAgID8gICAgIDY0LjY5ODgrLTEuMzQxMCAg
ICAgICAgPyBtaWdodCBiZSAxLjAxNDF4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtbWFwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3LjkyMDkrLTAuNDQxMiAgICAgPyAgICAgNjgu
MDI1OSstMC44NDk5ICAgICAgICA/CiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNjMuNjgzNCstMS4yMjEyICAgICAgICAgICA2My41NDcxKy0xLjM4
MTggICAgICAgIAogICBhcnJheS1wcm90b3R5cGUtcmVkdWNlUmlnaHQgICAgICAgICAgICAgICAg
ICAgICAgIDg1Ljk4NjgrLTEuODU3NSAgICAgPyAgICAgODguMjczOCstMi4yMTk5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIGFycmF5LXByb3RvdHlwZS1zb21lICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNjQuNjkwNistMC43Mzk2ICAgICA/ICAgICA2NC45MjUzKy0x
LjAyMjkgICAgICAgID8KICAgYXJyYXktc3BsaWNlLWNvbnRpZ3VvdXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMi44MzcyKy0xLjIwNDggICAgID8gICAgIDIzLjAyNTgrLTEuMDM2MSAgICAg
ICAgPwogICBhcnJheS13aXRoLWRvdWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzLjM3OTQrLTAuNjE1NCAgICAgICAgICAgIDMuMDgyNistMC4xMTk2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDk2M3ggZmFzdGVyCiAgIGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNzAxOSstMC4wNTUxICAgICAgICAgICAgMi42NTcyKy0wLjA3MzYg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTY4eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVs
LWFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgMy43Njc5Ky0wLjM0MTYgICAgICAgICAgICAz
Ljc1NjcrLTAuMjcxMSAgICAgICAgCiAgIGFycmF5LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNjU2NystMC4xMTkxICAgICAgICAgICAgMi42MTE5Ky0wLjA0
NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTcyeCBmYXN0ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1h
ZGQtc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41MDcyKy0wLjM0NjMgICAgICAgICAg
ICA0LjQyMTYrLTAuMjU5MiAgICAgICAgICBtaWdodCBiZSAxLjAxOTR4IGZhc3RlcgogICBhcnJh
eS13aXRoLWludDMyLW9yLWRvdWJsZS1zdW0gICAgICAgICAgICAgICAgICAgICAyLjc1NTYrLTAu
MDc4MyAgICAgPyAgICAgIDIuNzYzNCstMC4xNjYyICAgICAgICA/CiAgIEFycmF5QnVmZmVyLURh
dGFWaWV3LWFsbG9jLWxhcmdlLWxvbmctbGl2ZWQgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy4yMzQ5Ky0wLjY1NzAgICAgICAgICAgIDM2
Ljc3OTMrLTAuNDM0MyAgICAgICAgICBtaWdodCBiZSAxLjAxMjR4IGZhc3RlcgogICBBcnJheUJ1
ZmZlci1EYXRhVmlldy1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgIDE0LjQ0MDIrLTAuNTgx
OSAgICAgICAgICAgMTQuMzcwOCstMC40NDA4ICAgICAgICAKICAgQXJyYXlCdWZmZXItSW50MzJB
cnJheS1ieXRlT2Zmc2V0ICAgICAgICAgICAgICAgICAgMy4yNjU3Ky0wLjA3ODQgICAgID8gICAg
ICAzLjQyNzMrLTAuMTk2NSAgICAgICAgPyBtaWdodCBiZSAxLjA0OTV4IHNsb3dlcgogICBBcnJh
eUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbGFyZ2UtbG9uZy1saXZlZCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2LjE3NzIrLTAuNDUyMCAg
ICAgICAgICAgMzUuNjkyNCstMC4yNTgyICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzNnggZmFzdGVy
CiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sb25nLWxpdmVkLWJ1ZmZlciAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LjE1NTMr
LTAuNzI1OCAgICAgICAgICAgMTguNjg5OCstMC4xOTI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0
OXggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAg
ICAgICAgMTMuMjA0OCstMC40Mjg2ICAgICAgICAgICAxMy4wNDQ2Ky0wLjcyODkgICAgICAgICAg
bWlnaHQgYmUgMS4wMTIzeCBmYXN0ZXIKICAgQXJyYXlCdWZmZXItSW50OEFycmF5LWFsbG9jICAg
ICAgICAgICAgICAgICAgICAgICAxMi4yMzk0Ky0wLjc3NjAgICAgICAgICAgIDExLjk4MzYrLTAu
NzkyMCAgICAgICAgICBtaWdodCBiZSAxLjAyMTN4IGZhc3RlcgogICBhcnJvd2Z1bmN0aW9uLWNh
bGwtaW4tY2xhc3MtY29uc3RydWN0b3IgICAgICAgICAgIDY1LjE0MjcrLTAuODIyOCAgICAgICAg
ICAgNjQuNzE3MCstMS40MzAyICAgICAgICAKICAgYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNz
LW1ldGhvZCAgICAgICAgICAgICAgICAyMy4yMjk1Ky0wLjY3MTQgICAgID8gICAgIDIzLjU5OTQr
LTAuODAyOSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTl4IHNsb3dlcgogICBhcnJvd2Z1bmN0aW9u
LWNhbGwtaW4tZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgIDExLjUxODcrLTAuNTQ3MyAgICAg
ICAgICAgMTEuMjY4MSstMC41MDI4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMnggZmFzdGVyCiAg
IGFycm93ZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNzYz
NSstMC4yOTA4ICAgICA/ICAgICAgOC45MDU2Ky0wLjQ2NDggICAgICAgID8gbWlnaHQgYmUgMS4w
MTYyeCBzbG93ZXIKICAgYXNtanNfYm9vbF9idWcgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNy4xNTM0Ky0wLjQ4MzggICAgICAgICAgICA2Ljk2MzArLTAuMzA0NCAgICAgICAg
ICBtaWdodCBiZSAxLjAyNzN4IGZhc3RlcgogICBhc3NpZ24tY3VzdG9tLXNldHRlci1wb2x5bW9y
cGhpYyAgICAgICAgICAgICAgICAgICAyLjUwNTYrLTAuMDQyOSAgICAgPyAgICAgIDIuNTg2NCst
MC4xMjM0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyMnggc2xvd2VyCiAgIGFzc2lnbi1jdXN0b20t
c2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuODA4MSstMC4zMjI5ICAgICA/
ICAgICAgMy44NjkwKy0wLjMyMDYgICAgICAgID8gbWlnaHQgYmUgMS4wMTYweCBzbG93ZXIKICAg
YmFzaWMtc2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4xNzEx
Ky0wLjE3NTYgICAgID8gICAgICA3LjQ2MDcrLTAuNjkxMyAgICAgICAgPyBtaWdodCBiZSAxLjA0
MDR4IHNsb3dlcgogICBiaWctaW50LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzLjA3MzQrLTAuMTEwOCAgICAgICAgICAgIDMuMDI4OCstMC4wNTk1ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE0N3ggZmFzdGVyCiAgIGJvb2xlYW4tdGVzdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuOTg0NCstMC4wMzE2ICAgICA/ICAgICAgMy4wMDc4Ky0w
LjA1NjIgICAgICAgID8KICAgYm91bmQtZnVuY3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOS4wNDI2Ky0wLjA1ODMgICAgICAgICAgICA5LjAxMjgrLTAuMDY2MCAgICAg
ICAgCiAgIGJyYW5jaC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuNTA1MSstMC4wNTUyICAgICA/ICAgICAgMy42Njk5Ky0wLjM1NDMgICAgICAgID8gbWlnaHQg
YmUgMS4wNDcweCBzbG93ZXIKICAgYnJhbmNoLW9uLXN0cmluZy1hcy1ib29sZWFuICAgICAgICAg
ICAgICAgICAgICAgICAxMC4yNzIyKy0wLjY4OTUgICAgICAgICAgIDEwLjA3MjQrLTAuODk3OSAg
ICAgICAgICBtaWdodCBiZSAxLjAxOTh4IGZhc3RlcgogICBidWctMTUzNDMxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjMxNTkrLTAuMDg3NiAgICAgPyAgICAgIDIu
MzIyOCstMC4wNjA3ICAgICAgICA/CiAgIGJ1aWxkLWxhcmdlLW9iamVjdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjguODA1MCstMC4xNDczICAgICA/ICAgICAyOC45NTI0Ky0wLjIz
MzAgICAgICAgID8KICAgYnktdmFsLWdlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy45NjY5Ky0wLjAyMTMgICAgICAgICAgICAzLjkwODUrLTAuMTI2NCAgICAgICAg
ICBtaWdodCBiZSAxLjAxNTB4IGZhc3RlcgogICBjYWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDI4LjYwOTUrLTAuNjE2NSAgICAgPyAgICAgMjguODkyNist
MC41MTgyICAgICAgICA/CiAgIGNhbGwtc3ByZWFkLWNhbGwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzEuNTk3MSstMC44ODY2ICAgICA/ICAgICAzMi43ODk4Ky0yLjAwMjkgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzc3eCBzbG93ZXIKICAgY2FwdHVyZWQtYXNzaWdubWVudHMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zODMxKy0wLjAxMzIgICAgID8gICAgICAwLjM4
NzYrLTAuMDEzNSAgICAgICAgPyBtaWdodCBiZSAxLjAxMTZ4IHNsb3dlcgogICBjYXN0LWludC10
by1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc4OTcrLTAuMzQ3OSAg
ICAgICAgICAgIDQuNjU3NSstMC4wNzUzICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4NHggZmFzdGVy
CiAgIGNlbGwtYXJndW1lbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NzE4MystMC4yMTMzICAgICA/ICAgICAgMi43MjI4Ky0wLjEzMTkgICAgICAgID8KICAgY2ZnLXNp
bXBsaWZ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi43NDUyKy0wLjE5
MDcgICAgICAgICAgICAyLjY4NDMrLTAuMDQ2NCAgICAgICAgICBtaWdodCBiZSAxLjAyMjd4IGZh
c3RlcgogICBjaGFpbi1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwLjE2MzUrLTAuMTM0MiAgICAgPyAgICAgMTAuMTY5MystMC4xMDkyICAgICAgICA/CiAgIGNt
cGVxLW9iai10by1vYmotb3RoZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTE5Nist
MC4yNjg5ICAgICAgICAgICAgNy44NTY3Ky0wLjMzOTkgICAgICAgIAogICBjb25zdGFudC10ZXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQwODArLTAuMDcyMSAgICAg
PyAgICAgIDQuNTE4MistMC4yNjYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI1MHggc2xvd2VyCiAg
IGNyZWF0ZS1sb3RzLW9mLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNTU2
NSstMC4zMzg3ICAgICAgICAgICAgOC40ODE0Ky0wLjM5NTMgICAgICAgIAogICBjc2UtbmV3LWFy
cmF5LWJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA3OTMrLTAuMDQ5MiAg
ICAgPyAgICAgIDIuMjY0MCstMC4zNjAzICAgICAgICA/IG1pZ2h0IGJlIDEuMDg4OHggc2xvd2Vy
CiAgIGNzZS1uZXctYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
MjExNCstMC4zNTM4ICAgICAgICAgICAgMi4xMjgxKy0wLjE5MDQgICAgICAgICAgbWlnaHQgYmUg
MS4wMzkxeCBmYXN0ZXIKICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMtcHV0LWdldC1ieS1pZCAg
ICAgICAgICAgICAgMC40Njg5Ky0wLjAxOTMgICAgICAgICAgICAwLjQ2NjUrLTAuMDE4MiAgICAg
ICAgCiAgIERhdGFWaWV3LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAg
NDEuNjc1MSstMC44NjU0ICAgICAgICAgICA0MS41MzcxKy0wLjU0ODAgICAgICAgIAogICBkZWxh
eS10ZWFyLW9mZi1hcmd1bWVudHMtc3RyaWN0bW9kZSAgICAgICAgICAgICAgICAzLjg2MzQrLTAu
MjM1NCAgICAgPyAgICAgIDMuOTc4NCstMC40MzU3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5OHgg
c2xvd2VyCiAgIGRlbHRhYmx1ZS12YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzcuMjQ0OCstMS4zMTg4ICAgICAgICAgICAzNS44NDE0Ky0wLjQ0NzcgICAgICAgICAgbWln
aHQgYmUgMS4wMzkyeCBmYXN0ZXIKICAgZGVzdHJ1Y3R1cmluZy1hcmd1bWVudHMgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE0Ni4wNzY4Ky03Ljc5MDIgICAgICAgICAgMTQ0LjcxMjYrLTIuNTQ4
NSAgICAgICAgCiAgIGRlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0
aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNDE2MCstMC4wMTAyICAgICA/ICAgICAgMC40MzY1Ky0wLjAzMDUgICAgICAgID8gbWln
aHQgYmUgMS4wNDkyeCBzbG93ZXIKICAgZGVzdHJ1Y3R1cmluZy1zd2FwICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC4zNDU0Ky0wLjIyMzkgICAgID8gICAgICA0LjQzNzErLTAuNDIy
NCAgICAgICAgPyBtaWdodCBiZSAxLjAyMTF4IHNsb3dlcgogICBkaXJlY3QtYXJndW1lbnRzLWdl
dGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgICAxLjA4MTYrLTAuMDU4MSAgICAgPyAgICAg
IDEuMDgzNistMC4xMDY4ICAgICAgICA/CiAgIGRpcmVjdC1hcmd1bWVudHMtbGVuZ3RoICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuNTU4NystMC40MzczICAgICAgICAgICAgNi40NTAxKy0w
LjQ3ODQgICAgICAgICAgbWlnaHQgYmUgMS4wMTY4eCBmYXN0ZXIKICAgZGlyZWN0LWFyZ3VtZW50
cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNi4yNzU4Ky0wLjMwMTUgICAgICAg
ICAgICA2LjIwNzUrLTAuMjk0MyAgICAgICAgICBtaWdodCBiZSAxLjAxMTB4IGZhc3RlcgogICBk
aXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNTE2MistMC4yNzA4
ICAgICA/ICAgICAgNi43MDUxKy0wLjM2MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjkweCBzbG93
ZXIKICAgZGl2LWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My45NDg2Ky0wLjMwMzMgICAgID8gICAgICA0LjAwOTkrLTAuMjIzMSAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNTV4IHNsb3dlcgogICBkaXYtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA3LjA4NDArLTAuMzQ2MSAgICAgICAgICAgIDcuMDY4OSstMC4yMDUwICAg
ICAgICAKICAgZG91YmxlLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAg
ICAgMy45OTgyKy0wLjA4OTEgICAgID8gICAgICA0LjA5NjMrLTAuMDc0MiAgICAgICAgPyBtaWdo
dCBiZSAxLjAyNDV4IHNsb3dlcgogICBkb3VibGUtcG9sbHV0aW9uLWdldGJ5dmFsICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjE3MTMrLTAuNjA3MCAgICAgICAgICAgIDcuNzI0NistMC4zODEy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU3OHggZmFzdGVyCiAgIGRvdWJsZS1wb2xsdXRpb24tcHV0
YnlvZmZzZXQgICAgICAgICAgICAgICAgICAgICAgIDMuMzAwOCstMC4xNjk0ICAgICA/ICAgICAg
My4zMjI2Ky0wLjEyNjcgICAgICAgID8KICAgZG91YmxlLXJlYWwtdXNlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyNC44NjUxKy0yLjM2NDMgICAgID8gICAgIDI2LjEyOTcrLTIu
NzkwMCAgICAgICAgPyBtaWdodCBiZSAxLjA1MDl4IHNsb3dlcgogICBkb3VibGUtdG8taW50MzIt
dHlwZWQtYXJyYXktbm8taW5saW5lICAgICAgICAgICAgICAxLjk4MjYrLTAuMjgwMCAgICAgICAg
ICAgIDEuODUyMCstMC4wNDQyICAgICAgICAgIG1pZ2h0IGJlIDEuMDcwNnggZmFzdGVyCiAgIGRv
dWJsZS10by1pbnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgIDEuODAxNist
MC4wNTAzICAgICAgICAgICAgMS43NjU3Ky0wLjAzOTcgICAgICAgICAgbWlnaHQgYmUgMS4wMjAz
eCBmYXN0ZXIKICAgZG91YmxlLXRvLXVpbnQzMi10eXBlZC1hcnJheS1uby1pbmxpbmUgICAgICAg
ICAgICAgMS45ODAwKy0wLjA3OTkgICAgICAgICAgICAxLjk1ODUrLTAuMDUwOCAgICAgICAgICBt
aWdodCBiZSAxLjAxMTB4IGZhc3RlcgogICBkb3VibGUtdG8tdWludDMyLXR5cGVkLWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAyLjAxODMrLTAuNDQ4MiAgICAgICAgICAgIDEuOTEyMistMC4x
NDk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU1NXggZmFzdGVyCiAgIGVsaWRhYmxlLW5ldy1vYmpl
Y3QtZGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkuNDQxOSstMC43MjUwICAgICA/ICAg
ICAxOS45NDQ2Ky0wLjYzODcgICAgICAgID8gbWlnaHQgYmUgMS4wMjU5eCBzbG93ZXIKICAgZWxp
ZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAgICAgICAgICAgICAgICAgICAyMy4xMjAzKy00
Ljg2NTcgICAgICAgICAgIDIwLjU3MjkrLTMuMjIzMCAgICAgICAgICBtaWdodCBiZSAxLjEyMzh4
IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAg
ICAgIDE3LjI5MTkrLTEuMDc0NiAgICAgPyAgICAgMTcuNjgxNSstMC45NTIzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIyNXggc2xvd2VyCiAgIGVsaWRhYmxlLW5ldy1vYmplY3QtdHJlZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTkuMDgyMSstMC40ODE3ICAgICA/ICAgICAyMC4yODc5Ky0yLjI2
MzAgICAgICAgID8gbWlnaHQgYmUgMS4wNjMyeCBzbG93ZXIKICAgZW1wdHktc3RyaW5nLXBsdXMt
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40NzM5Ky0wLjE0OTEgICAgICAgICAg
ICA0LjQzNTkrLTAuMTAzMSAgICAgICAgCiAgIGVtc2NyaXB0ZW4tY3ViZTJoYXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjMuMzAwNistMS45MDAwICAgICA/ICAgICAyNC43NDk2Ky0z
LjMyMDYgICAgICAgID8gbWlnaHQgYmUgMS4wNjIyeCBzbG93ZXIKICAgZXhpdC1sZW5ndGgtb24t
cGxhaW4tb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgNy43NzMzKy0wLjIyMDAgICAgID8g
ICAgICA4LjI1MzErLTAuNDQyNyAgICAgICAgPyBtaWdodCBiZSAxLjA2MTd4IHNsb3dlcgogICBl
eHRlcm5hbC1hcmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAxLjI5MTAr
LTAuMjcwNyAgICAgICAgICAgIDEuMTY0OSstMC4xMTMyICAgICAgICAgIG1pZ2h0IGJlIDEuMTA4
M3ggZmFzdGVyCiAgIGV4dGVybmFsLWFyZ3VtZW50cy1wdXRieXZhbCAgICAgICAgICAgICAgICAg
ICAgICAgIDIuMDYwOCstMC4wNjEwICAgICA/ICAgICAgMi4xNzUxKy0wLjM3MDkgICAgICAgID8g
bWlnaHQgYmUgMS4wNTU1eCBzbG93ZXIKICAgZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS12YXIt
aW5kZXggICAgICAgICAgICAgICAgMS4wNTk1Ky0wLjAxNzggICAgID8gICAgICAxLjA4OTIrLTAu
MDI2NiAgICAgICAgPyBtaWdodCBiZSAxLjAyODB4IHNsb3dlcgogICBmaXhlZC10eXBlZC1hcnJh
eS1zdG9yYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAwLjgyOTUrLTAuMDM4NSAgICAgICAg
ICAgIDAuODI1NystMC4wMTYwICAgICAgICAKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC4wODEwKy0wLjAzNTkgICAgID8gICAgICA0LjI1NzQr
LTAuMzUwOCAgICAgICAgPyBtaWdodCBiZSAxLjA0MzJ4IHNsb3dlcgogICBGbG9hdDMyQXJyYXkt
dG8tRmxvYXQ2NEFycmF5LXNldCAgICAgICAgICAgICAgICAgIDM4LjM2NTArLTQuNTYyMiAgICAg
ICAgICAgMzYuMTg1MistMC43NjcyICAgICAgICAgIG1pZ2h0IGJlIDEuMDYwMnggZmFzdGVyCiAg
IEZsb2F0NjRBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAgICAgICAgICAgNDkuNTkx
NistMC4zNDkwICAgICA/ICAgICA1MC4zMjA0Ky0xLjgxNjYgICAgICAgID8gbWlnaHQgYmUgMS4w
MTQ3eCBzbG93ZXIKICAgRmxvYXQ2NEFycmF5LXRvLUludDE2QXJyYXktc2V0ICAgICAgICAgICAg
ICAgICAgICA0NS41MTQ0Ky0wLjUxNjMgICAgID8gICAgIDQ2LjEzMzQrLTAuNTcyMyAgICAgICAg
PyBtaWdodCBiZSAxLjAxMzZ4IHNsb3dlcgogICBmb2xkLWRvdWJsZS10by1pbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLjUxOTcrLTAuNDU2MCAgICAgICAgICAgMTEuMjc1OCst
MC4yMTM3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxNnggZmFzdGVyCiAgIGZvbGQtZ2V0LWJ5LWlk
LXRvLW11bHRpLWdldC1ieS1vZmZzZXQtcmFyZS1pbnQgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi41NTYzKy0wLjE2MzkgICAgID8gICAg
ICA2Ljc2MTQrLTAuNDAwOCAgICAgICAgPyBtaWdodCBiZSAxLjAzMTN4IHNsb3dlcgogICBmb2xk
LWdldC1ieS1pZC10by1tdWx0aS1nZXQtYnktb2Zmc2V0ICAgICAgICAgICAgICA1LjY4NzMrLTAu
MjI1NCAgICAgICAgICAgIDUuNTcyMistMC4xMDY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwN3gg
ZmFzdGVyCiAgIGZvbGQtbXVsdGktZ2V0LWJ5LW9mZnNldC10by1nZXQtYnktb2Zmc2V0ICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTUy
NistMS4wMTcyICAgICAgICAgICAgNC4yMzExKy0wLjM2NzEgICAgICAgICAgbWlnaHQgYmUgMS4w
NzYweCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLXBvbHktZ2V0LWJ5LW9m
ZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LjIyMzArLTAuNDQ0MCAgICAgPyAgICAgIDQuOTA0MCstMS4xODAzICAgICAgICA/IG1p
Z2h0IGJlIDEuMTYxM3ggc2xvd2VyCiAgIGZvbGQtbXVsdGktcHV0LWJ5LW9mZnNldC10by1wb2x5
LXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC4xNDY1Ky0wLjI4ODUgICAgID8gICAgICA0LjMyOTIrLTAuMzg3NyAg
ICAgICAgPyBtaWdodCBiZSAxLjA0NDB4IHNsb3dlcgogICBmb2xkLW11bHRpLXB1dC1ieS1vZmZz
ZXQtdG8tcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA0LjA4NzcrLTAuOTMyNyAgICAgPyAgICAgIDQuODgyMSstMS4y
MTEzICAgICAgICA/IG1pZ2h0IGJlIDEuMTk0NHggc2xvd2VyCiAgIGZvbGQtbXVsdGktcHV0LWJ5
LW9mZnNldC10by1yZXBsYWNlLW9yLXRyYW5zaXRpb24tcHV0LWJ5LW9mZnNldCAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjU0ODIrLTAu
MzQ2NyAgICAgICAgICAgIDYuNDEwMystMC4xNTY4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxNXgg
ZmFzdGVyCiAgIGZvbGQtcHV0LWJ5LWlkLXRvLW11bHRpLXB1dC1ieS1vZmZzZXQgICAgICAgICAg
ICAgIDYuMzIzNistMC4zMTA3ICAgICA/ICAgICAgNi40MjM4Ky0wLjMyMTYgICAgICAgID8gbWln
aHQgYmUgMS4wMTU4eCBzbG93ZXIKICAgZm9sZC1wdXQtYnktdmFsLXdpdGgtc3RyaW5nLXRvLW11
bHRpLXB1dC1ieS1vZmZzZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi42NzcyKy0wLjUzMTQgICAgICAgICAgICA2LjUxODQrLTAuNDQ2
MCAgICAgICAgICBtaWdodCBiZSAxLjAyNDN4IGZhc3RlcgogICBmb2xkLXB1dC1ieS12YWwtd2l0
aC1zeW1ib2wtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjI2MDkrLTAuMDcxNyAgICAgPyAgICAg
IDYuNDE0MystMC4zOTMyICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0NXggc2xvd2VyCiAgIGZvbGQt
cHV0LXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMzIxNCstMC4z
MDEyICAgICAgICAgICAgMy4xNDg3Ky0wLjA0NjkgICAgICAgICAgbWlnaHQgYmUgMS4wNTQ5eCBm
YXN0ZXIKICAgZm9yLW9mLWl0ZXJhdGUtYXJyYXktZW50cmllcyAgICAgICAgICAgICAgICAgICAg
ICAgOC40NTYyKy0wLjI4NjcgICAgICAgICAgICA4LjM1OTYrLTAuMzg3NiAgICAgICAgICBtaWdo
dCBiZSAxLjAxMTZ4IGZhc3RlcgogICBmb3Itb2YtaXRlcmF0ZS1hcnJheS1rZXlzICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk2MzcrLTAuMTk2NCAgICAgPyAgICAgIDIuOTY0NystMC4wOTk3
ICAgICAgICA/CiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LXZhbHVlcyAgICAgICAgICAgICAgICAg
ICAgICAgIDIuNzI0MystMC4wNDk4ICAgICAhICAgICAgMi44NDQxKy0wLjA2OTYgICAgICAgICEg
ZGVmaW5pdGVseSAxLjA0NDB4IHNsb3dlcgogICBmcm91bmQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjU0NDYrLTAuNDA4NSAgICAgICAgICAgIDkuNDgzNCst
MC40Mjk5ICAgICAgICAKICAgZnRsLWxpYnJhcnktaW5saW5pbmctZGF0YXZpZXcgICAgICAgICAg
ICAgICAgICAgICA1NC44NTMzKy0yLjQyNzEgICAgICAgICAgIDUzLjUxMjErLTEuMDUxMyAgICAg
ICAgICBtaWdodCBiZSAxLjAyNTF4IGZhc3RlcgogICBmdGwtbGlicmFyeS1pbmxpbmluZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjEzOTQrLTEuODI4MSAgICAgICAgICAgMjIuMTU1
OSstMS4wNDQyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ0NHggZmFzdGVyCiAgIGZ0bC1wb2x5bW9y
cGhpYy1iaXRhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAxMjUuNjE5MSstMC44NjkzICAg
ICA/ICAgIDEyNS43NDYzKy0wLjQ1NzIgICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLWJpdG9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyNS42NTQ5Ky0wLjUwOTcgICAgID8gICAgMTI3
LjAzMzgrLTEuNjgzMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTB4IHNsb3dlcgogICBmdGwtcG9s
eW1vcnBoaWMtYml0eG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI4LjE2NjQrLTIuMTY0
OCAgICAgICAgICAxMjcuMzcxMistMi4xNDM0ICAgICAgICAKICAgZnRsLXBvbHltb3JwaGljLWRp
diAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzOS4xMDE4Ky00LjA0MjIgICAgID8gICAg
NDQ0Ljg0NDErLTguMzg4NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMzF4IHNsb3dlcgogICBmdGwt
cG9seW1vcnBoaWMtbHNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU0LjU4MTQrLTIu
MzQwNSAgICAgICAgICAxNTMuMzMyNystMS44OTIxICAgICAgICAKICAgZnRsLXBvbHltb3JwaGlj
LW11bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyNS4xOTg0Ky0yLjMyNTcgICAgID8g
ICAgMjI1Ljc4NDArLTMuMTkwNiAgICAgICAgPwogICBmdGwtcG9seW1vcnBoaWMtcnNoaWZ0ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTUzLjAxNzkrLTEuMzc0OCAgICAgPyAgICAxNTMuMDkw
MystMS4xODE2ICAgICAgICA/CiAgIGZ0bC1wb2x5bW9ycGhpYy1TdHJpbmdGcm9tQ2hhckNvZGUg
ICAgICAgICAgICAgICAgNDAuNDIyNystMC40MTkwICAgICA/ICAgICA0MC41Mzc4Ky0wLjI3NDcg
ICAgICAgID8KICAgZnRsLXBvbHltb3JwaGljLXN1YiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE3NS4wNjc1Ky0xLjY0NDQgICAgICAgICAgMTc0Ljk2NzMrLTIuMDA4OSAgICAgICAgCiAg
IGZ0bC1wb2x5bW9ycGhpYy11cnNoaWZ0ICAgICAgICAgICAgICAgICAgICAgICAgICAxNjQuMjgz
NystMS4wNzg2ICAgICAgICAgIDE2NC4xNDMwKy0wLjY1MDAgICAgICAgIAogICBmdW5jdGlvbi1j
YWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjQzMjYrLTAuMzEwMiAg
ICAgPyAgICAgMTAuNTI0NCstMC40NjMxICAgICAgICA/CiAgIGZ1bmN0aW9uLWRvdC1hcHBseSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuODQ2NystMC4wNDkyICAgICAgICAgICAg
MS44MzUzKy0wLjAyMDQgICAgICAgIAogICBmdW5jdGlvbi10ZXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjI0NDUrLTAuMjUwMCAgICAgICAgICAgIDMuMTg0NCstMC40
OTA4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE4OXggZmFzdGVyCiAgIGZ1bmN0aW9uLXdpdGgtZXZh
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgODcuODY2NCstMi40Njg5ICAgICA/ICAg
ICA4OS4yMjczKy0wLjMxODAgICAgICAgID8gbWlnaHQgYmUgMS4wMTU1eCBzbG93ZXIKICAgZ2Nz
ZS1wb2x5LWdldC1sZXNzLW9idmlvdXMgICAgICAgICAgICAgICAgICAgICAgICAgOC42Nzg5Ky0w
LjMwMDYgICAgICAgICAgICA4LjQ2ODArLTAuNDI4NSAgICAgICAgICBtaWdodCBiZSAxLjAyNDl4
IGZhc3RlcgogICBnY3NlLXBvbHktZ2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LjA3NTMrLTAuMzkxNSAgICAgPyAgICAgIDguMTUyOSstMC40Njc1ICAgICAgICA/CiAg
IGdjc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjQ4
MistMC4wNjQ5ICAgICA/ICAgICAgMy4zNDA5Ky0wLjMzMDkgICAgICAgID8gbWlnaHQgYmUgMS4w
Mjg1eCBzbG93ZXIKICAgZ2VuZXJhdG9yLWNyZWF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC42OTUwKy0wLjAzNTMgICAgICAgICAgICAwLjY3MjUrLTAuMDI1NiAgICAgICAg
ICBtaWdodCBiZSAxLjAzMzV4IGZhc3RlcgogICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkwLjA2ODErLTEuMTkyMyAgICAgPyAgICAgOTEuNzg5Mist
MS4wMDM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE5MXggc2xvd2VyCiAgIGdlbmVyYXRvci1mdW5j
dGlvbi1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzc1NistMC4zNjI4ICAgICA/
ICAgICAgNC4xNjY2Ky0wLjQ1NjcgICAgICAgID8gbWlnaHQgYmUgMS4xMDM2eCBzbG93ZXIKICAg
Z2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgNS41MjQ1
Ky0wLjM5NzMgICAgICAgICAgICA1LjMyNjgrLTAuMjg2NiAgICAgICAgICBtaWdodCBiZSAxLjAz
NzF4IGZhc3RlcgogICBnZW5lcmF0b3Itd2l0aC1zZXZlcmFsLXR5cGVzICAgICAgICAgICAgICAg
ICAgICAgMzAxLjAwMTArLTIuNzYyNCAgICAgPyAgICAzMDMuOTA0NCstNS4zOTM5ICAgICAgICA/
CiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBs
ZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjIwMDcrLTAuMDc2NyAgICAgICAgICAgIDIuMTkxMistMC4wNTkzICAgICAgICAKICAgZ2V0
LWJ5LWlkLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yNjk1Ky0wLjI4
OTggICAgICAgICAgICA0LjE1OTErLTAuMDc5NyAgICAgICAgICBtaWdodCBiZSAxLjAyNjZ4IGZh
c3RlcgogICBnZXQtYnktaWQtY2hhaW4tZnJvbS10cnktYmxvY2sgICAgICAgICAgICAgICAgICAg
ICAxLjg1NTUrLTAuMDU1MSAgICAgICAgICAgIDEuODM1NCstMC4wMzQwICAgICAgICAgIG1pZ2h0
IGJlIDEuMDExMHggZmFzdGVyCiAgIGdldC1ieS1pZC1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRp
b24gICAgICAgICAgICAgIDIuOTc1NSstMC4zMzgyICAgICAgICAgICAgMi43NzUzKy0wLjA1NTMg
ICAgICAgICAgbWlnaHQgYmUgMS4wNzIxeCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXByb3RvLW9yLXNl
bGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4xMDEyKy0wLjkyNzUgICAgID8gICAgICA4
LjI1MTMrLTAuOTAwNyAgICAgICAgPyBtaWdodCBiZSAxLjAxODV4IHNsb3dlcgogICBnZXQtYnkt
aWQtcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjY0MDMr
LTAuMDU3NCAgICAgPyAgICAgIDIuNjk0NystMC4wNTYwICAgICAgICA/IG1pZ2h0IGJlIDEuMDIw
Nnggc2xvd2VyCiAgIGdldC1ieS1pZC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDguNTU2MCstMS4xODEyICAgICA/ICAgICAgOC42MDY1Ky0wLjg3ODUgICAgICAgID8K
ICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4x
MDYzKy0wLjM0MjMgICAgICAgICAgICA0LjAyMTMrLTAuMzE5NCAgICAgICAgICBtaWdodCBiZSAx
LjAyMTF4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1jaGVjay1z
dHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjY2MCstMC4wNDE3ICAgICAgICAgICAgMy4y
Mzc1Ky0wLjAzMTcgICAgICAgIAogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1j
aGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zMTA4Ky0wLjMyMzUgICAgICAgICAgICA2LjA5
MjgrLTAuMTgyNyAgICAgICAgICBtaWdodCBiZSAxLjAzNTh4IGZhc3RlcgogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLWNoYWluLWZyb20tdHJ5LWJsb2NrICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTg1MCstMC4yMDE5ICAgICAgICAg
ICAgMS45MTA2Ky0wLjA5MjUgICAgICAgICAgbWlnaHQgYmUgMS4wMzg5eCBmYXN0ZXIKICAgZ2V0
LWJ5LXZhbC13aXRoLXN0cmluZy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS43OTY5Ky0w
LjU4NzkgICAgID8gICAgICA1LjgxNjYrLTAuMzI0MyAgICAgICAgPwogICBnZXQtYnktdmFsLXdp
dGgtc3RyaW5nLXByb3RvLW9yLXNlbGYgICAgICAgICAgICAgICA5Ljg4NzUrLTAuMzc3MSAgICAg
PyAgICAgMTAuMzc2NSstMC42ODU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5NXggc2xvd2VyCiAg
IGdldC1ieS12YWwtd2l0aC1zdHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1p
bmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzLjg2NDUrLTAuMTQ2NSAgICAgPyAgICAgIDMuOTQ1MSstMC4yODg1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDIwOXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmct
c2VsZi1vci1wcm90byAgICAgICAgICAgICAgMTAuMTU2NSstMC4zNTc4ICAgICA/ICAgICAxMC4y
Mjk4Ky0wLjUzODAgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjUwOTIrLTAuMDYyMSAgICAgPyAg
ICAgIDIuNTg2MistMC4wNzM0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwN3ggc2xvd2VyCiAgIGdl
dC1ieS12YWwtd2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlv
biAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA4LjQyODArLTAuMjczMCAgICAgPyAgICAgIDguNTQwMCstMC4xOTMxICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEzM3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hhaW4tZnJvbS10
cnktYmxvY2sgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMS45MDU5Ky0wLjA2MDYgICAgICAgICAgICAxLjg4NjcrLTAuMDU4OCAgICAgICAg
ICBtaWdodCBiZSAxLjAxMDF4IGZhc3RlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoZWNr
LXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjcwMjQrLTAuMDgxMiAgICAgPyAgICAgIDcuMDgyNyst
MC40MTkyICAgICAgICA/IG1pZ2h0IGJlIDEuMDU2N3ggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0
aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAgICAgIDkuNzI0OCstMC4zMzAzICAgICA/
ICAgICAxMC4xODk4Ky0wLjM1MDIgICAgICAgID8gbWlnaHQgYmUgMS4wNDc4eCBzbG93ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWlu
YXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuNDI5MSstMC40MzE0ICAgICAgICAgICAgMy4zMDE4Ky0wLjI4NzggICAg
ICAgICAgbWlnaHQgYmUgMS4wMzg2eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1z
ZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMC4yOTAzKy0wLjQ2MTQgICAgICAgICAgICA5LjY5
MDYrLTAuMjA4NyAgICAgICAgICBtaWdodCBiZSAxLjA2MTl4IGZhc3RlcgogICBnZXRfY2FsbGVl
X21vbm9tb3JwaGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI0NjUrLTAuMzMxNCAg
ICAgICAgICAgIDIuMTgzMSstMC4zMDM4ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5MHggZmFzdGVy
CiAgIGdldF9jYWxsZWVfcG9seW1vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
OTc5NystMC4yODQ2ICAgICA/ICAgICAgMi45OTcwKy0wLjMwNzUgICAgICAgID8KICAgZ2V0dGVy
LW5vLWFjdGl2YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMDkxKy0wLjM1
MzYgICAgICAgICAgICAyLjc3ODgrLTAuMDc1MyAgICAgICAgICBtaWdodCBiZSAxLjA4Mjl4IGZh
c3RlcgogICBnZXR0ZXItcHJvdG90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA0LjQ2NTkrLTAuMDQ2MiAgICAgPyAgICAgIDQuNjE5OSstMC4yMTc5ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDM0NXggc2xvd2VyCiAgIGdldHRlci1yaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICA5MTYuNzQ1MCstMTQuNzU5OSAgICAgICAgIDkwNi43NDUzKy0xMi4wOTQ0
ICAgICAgICAgbWlnaHQgYmUgMS4wMTEweCBmYXN0ZXIKICAgZ2V0dGVyLXJpY2hhcmRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1OC43OTA5Ky0zLjc5MDIgICAgID8gICAgIDU5
LjkxMDcrLTMuOTY4MSAgICAgICAgPyBtaWdodCBiZSAxLjAxOTB4IHNsb3dlcgogICBnZXR0ZXIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk4MjArLTAuMDM5
NSAgICAgPyAgICAgIDMuMDU1NystMC4xNDcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0N3ggc2xv
d2VyCiAgIGdsb2JhbC1vYmplY3QtYWNjZXNzLXdpdGgtbXV0YXRpbmctc3RydWN0dXJlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMzk1
OSstMC4zMDAyICAgICAgICAgICAgNC4yODU5Ky0wLjA5MjMgICAgICAgICAgbWlnaHQgYmUgMS4w
MjU3eCBmYXN0ZXIKICAgZ2xvYmFsLXZhci1jb25zdC1pbmZlci1maXJlLWZyb20tb3B0ICAgICAg
ICAgICAgICAgMC43OTY1Ky0wLjA5OTQgICAgID8gICAgICAwLjgwMDYrLTAuMDk5MiAgICAgICAg
PwogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjY1MjgrLTAuMDU1MCAgICAgICAgICAgIDAuNjEzMystMC4wNDI0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY0NHggZmFzdGVyCiAgIGhhcmQtb3ZlcmZsb3ctY2hlY2stZXF1YWwgICAgICAgICAgICAg
ICAgICAgICAgICAgMjIuOTg2MCstMS4wMDE2ICAgICA/ICAgICAyMy44MzI5Ky0xLjYzOTggICAg
ICAgID8gbWlnaHQgYmUgMS4wMzY4eCBzbG93ZXIKICAgaGFyZC1vdmVyZmxvdy1jaGVjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4zNjY5Ky0xLjg1NjIgICAgID8gICAgIDIzLjQx
NzArLTEuMzQ2MCAgICAgICAgPwogICBIYXNoTWFwLXB1dC1nZXQtaXRlcmF0ZS1rZXlzICAgICAg
ICAgICAgICAgICAgICAgIDIxLjgwNjArLTAuNDkxMSAgICAgPyAgICAgMjEuOTczNystMC44ODMw
ICAgICAgICA/CiAgIEhhc2hNYXAtcHV0LWdldC1pdGVyYXRlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjEuNDIzNistMC45MjkyICAgICAgICAgICAyMS40MDc3Ky0wLjc2NDUgICAgICAgIAog
ICBIYXNoTWFwLXN0cmluZy1wdXQtZ2V0LWl0ZXJhdGUgICAgICAgICAgICAgICAgICAgIDIzLjcy
NTkrLTEuMDQ4OSAgICAgICAgICAgMjMuNDA0OCstMC41NDc2ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDEzN3ggZmFzdGVyCiAgIGhvaXN0LW1ha2Utcm9wZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMuOTc4MCstMC42Mzc1ICAgICAgICAgICAgMy43NDk1Ky0wLjM1MzMgICAgICAg
ICAgbWlnaHQgYmUgMS4wNjA5eCBmYXN0ZXIKICAgaG9pc3QtcG9seS1jaGVjay1zdHJ1Y3R1cmUt
ZWZmZWN0ZnVsLWxvb3AgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMi44NDI0Ky0wLjA3ODAgICAgID8gICAgICAyLjg0NjUrLTAuMDczMiAg
ICAgICAgPwogICBob2lzdC1wb2x5LWNoZWNrLXN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjEzMjcrLTAuMzc3NCAgICAgICAgICAgIDEuOTQ4NSstMC4wNTgwICAgICAgICAgIG1p
Z2h0IGJlIDEuMDk0NXggZmFzdGVyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuOTU0MystMC4wNjYwICAgICA/ICAgICAgMy4xODQ4Ky0wLjQy
OTIgICAgICAgID8gbWlnaHQgYmUgMS4wNzgweCBzbG93ZXIKICAgaW11bC1pbnQtb25seSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44NTAxKy0wLjM5NjEgICAgICAgICAg
ICA0LjczNDMrLTAuMDY0MSAgICAgICAgICBtaWdodCBiZSAxLjAyNDV4IGZhc3RlcgogICBpbXVs
LW1peGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjg4MDYrLTAu
MDk1MiAgICAgICAgICAgIDIuNzU0OCstMC4wNTIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ1N3gg
ZmFzdGVyCiAgIGluLWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYuMzg1MSstMS42MjgwICAgICA/ICAgICAxNi43MDk2Ky0xLjA5MDQgICAgICAgID8gbWln
aHQgYmUgMS4wMTk4eCBzbG93ZXIKICAgaW4tb25lLWNhc2UtZmFsc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNy42MTM1Ky0wLjEzMzYgICAgID8gICAgICA3LjY5NjUrLTAuMjUw
NyAgICAgICAgPyBtaWdodCBiZSAxLjAxMDl4IHNsb3dlcgogICBpbi1vbmUtY2FzZS10cnVlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjkzNjkrLTAuNDc0MCAgICAgICAgICAg
IDcuNjg4MystMC4zMzM2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyM3ggZmFzdGVyCiAgIGluLXR3
by1jYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuOTkxOCstMC4y
NzY3ICAgICAgICAgICAgNy45NTg1Ky0wLjEzOTAgICAgICAgIAogICBpbmRleGVkLXByb3BlcnRp
ZXMtaW4tb2JqZWN0cyAgICAgICAgICAgICAgICAgICAgICAyLjYyMDcrLTAuMDQzOCAgICAgICAg
ICAgIDIuNTkxNystMC4wMjU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMnggZmFzdGVyCiAgIGlu
ZmVyLWNsb3N1cmUtY29uc3QtdGhlbi1tb3Ytbm8taW5saW5lICAgICAgICAgICAgIDIuODk4Mist
MC4wNTU2ICAgICA/ICAgICAgMy4wNDU2Ky0wLjM2ODYgICAgICAgID8gbWlnaHQgYmUgMS4wNTA5
eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLW1vdiAgICAgICAgICAgICAgICAg
ICAgICAgNi40NzczKy0wLjI3NTIgICAgICAgICAgICA2LjM1NTMrLTAuMjI0NyAgICAgICAgICBt
aWdodCBiZSAxLjAxOTJ4IGZhc3RlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRv
LXNjb3BlLW5vLWlubGluZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5LjQ1MjkrLTAuMDk0MiAgICAgPyAgICAgIDkuNTU5OCstMC4xNzQ0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIGluZmVyLWNsb3N1cmUtY29uc3Qt
dGhlbi1wdXQtdG8tc2NvcGUgICAgICAgICAgICAgMjIuMTE3NCstMC44NDMxICAgICA/ICAgICAy
Mi4xNDk5Ky0wLjk4NzQgICAgICAgID8KICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50
ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNDYuNDk3NCstMC4wOTUwICAgICA/ICAgICA0Ny4wOTQwKy0xLjE0NTIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTI4eCBzbG93ZXIKICAgaW5mZXItY2xvc3VyZS1jb25zdC10aGVu
LXJlZW50ZXIgICAgICAgICAgICAgICAgICAyMi4zOTQxKy0wLjgzNjcgICAgID8gICAgIDIyLjY4
NDYrLTEuMzc1NiAgICAgICAgPyBtaWdodCBiZSAxLjAxMzB4IHNsb3dlcgogICBpbmZlci1jb25z
dGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAgICAgICAzLjMxMTgrLTAuMjg2MCAg
ICAgICAgICAgIDMuMTUwOSstMC4wNTYxICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxMXggZmFzdGVy
CiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
MDMzMSstMC4wODAzICAgICA/ICAgICAgMi4wNjcwKy0wLjA3NjYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTY3eCBzbG93ZXIKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZS10ZW4tdmFycyAgICAgICAg
ICAgICAgICAgICAgNi4xODEzKy0wLjE5MDcgICAgID8gICAgICA2LjYyNTQrLTAuOTUwNyAgICAg
ICAgPyBtaWdodCBiZSAxLjA3MTl4IHNsb3dlcgogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXR3
by12YXJzICAgICAgICAgICAgICAgICAgICA1Ljg3NDgrLTAuMTgxMyAgICAgICAgICAgIDUuODM0
NystMC4xNjA1ICAgICAgICAKICAgaW5mZXItb25lLXRpbWUtY2xvc3VyZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS43NTc4Ky0wLjA0OTQgICAgID8gICAgICA1LjgwMTYrLTAuMTg5MSAg
ICAgICAgPwogICBpbmZlci1vbmUtdGltZS1kZWVwLWNsb3N1cmUgICAgICAgICAgICAgICAgICAg
ICAgIDEwLjczNTcrLTAuMjU5NCAgICAgPyAgICAgMTAuOTkwNystMC40MjkwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIzOHggc2xvd2VyCiAgIGlubGluZS1hcmd1bWVudHMtYWNjZXNzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDMuMzMzOSstMC4xNDc1ICAgICA/ICAgICAgMy40MjAzKy0wLjI4
NTAgICAgICAgID8gbWlnaHQgYmUgMS4wMjU5eCBzbG93ZXIKICAgaW5saW5lLWFyZ3VtZW50cy1h
bGlhc2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgMy4zNzg5Ky0wLjIzODQgICAgICAgICAg
ICAzLjI1MTkrLTAuMjA2NiAgICAgICAgICBtaWdodCBiZSAxLjAzOTF4IGZhc3RlcgogICBpbmxp
bmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAgICAgICAgICAgICAgICAgICAgICAzLjUwOTQrLTAu
MTA0OSAgICAgICAgICAgIDMuNDQ4NSstMC4yMTg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE3N3gg
ZmFzdGVyCiAgIGlubGluZS1nZXQtc2NvcGVkLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuMDg4OCstMC4wMzM5ICAgICA/ICAgICAgMi4xOTU1Ky0wLjA5NzkgICAgICAgID8gbWln
aHQgYmUgMS4wNTExeCBzbG93ZXIKICAgaW5saW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgNy4zNjk0Ky0wLjQxNDYgICAgID8gICAgICA3LjUyNTArLTAuNTI4
NiAgICAgICAgPyBtaWdodCBiZSAxLjAyMTF4IHNsb3dlcgogICBpbmxpbmVkLXB1dC1ieS12YWwt
d2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDM2LjkyNjIrLTIuMzU1MSAgICAgICAgICAgMzUuNjA5OCst
MC4yMzkyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM3MHggZmFzdGVyCiAgIGlubGluZWQtcHV0LWJ5
LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuODExNSstMC4xODM4ICAgICBeICAgICAzNS4z
NzI4Ky0wLjIzNzQgICAgICAgIF4gZGVmaW5pdGVseSAxLjAxMjR4IGZhc3RlcgogICBpbnN0YW5j
ZW9mLWJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjYxNDcrLTEuNDE2
NSAgICAgPyAgICAgMjAuODY5MCstMS4yOTk5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEyM3ggc2xv
d2VyCiAgIGludC1vci1vdGhlci1hYnMtdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAg
IDMuOTIzOSstMC4wODg4ICAgICA/ICAgICAgMy45NTQ0Ky0wLjIwMjUgICAgICAgID8KICAgaW50
LW9yLW90aGVyLWFicy16ZXJvLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAxNS43MTExKy0w
LjgyMzYgICAgICAgICAgIDE0LjkwMzgrLTAuOTQwNyAgICAgICAgICBtaWdodCBiZSAxLjA1NDJ4
IGZhc3RlcgogICBpbnQtb3Itb3RoZXItYWRkLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAg
ICAgICAzLjkxNDErLTAuMjQ4MiAgICAgICAgICAgIDMuNzgyMSstMC4wODI0ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDM0OXggZmFzdGVyCiAgIGludC1vci1vdGhlci1hZGQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNDI1OSstMC4xMjYwICAgICA/ICAgICAgNC40NDI3Ky0wLjA4
MzQgICAgICAgID8KICAgaW50LW9yLW90aGVyLWRpdi10aGVuLWdldC1ieS12YWwgICAgICAgICAg
ICAgICAgICAgMy4zNTY1Ky0wLjExODQgICAgICAgICAgICAzLjMxNzArLTAuMDQzMiAgICAgICAg
ICBtaWdodCBiZSAxLjAxMTl4IGZhc3RlcgogICBpbnQtb3Itb3RoZXItbWF4LXRoZW4tZ2V0LWJ5
LXZhbCAgICAgICAgICAgICAgICAgICAzLjY3NjUrLTAuMjc5NiAgICAgICAgICAgIDMuNTMyMCst
MC4wNzY1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQwOXggZmFzdGVyCiAgIGludC1vci1vdGhlci1t
aW4tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAgIDMuNDkwNSstMC4yMDEyICAgICA/
ICAgICAgMy40OTM1Ky0wLjI3MTggICAgICAgID8KICAgaW50LW9yLW90aGVyLW1vZC10aGVuLWdl
dC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy4yNTA4Ky0wLjExMjIgICAgICAgICAgICAzLjIw
MjQrLTAuMDQzNSAgICAgICAgICBtaWdodCBiZSAxLjAxNTF4IGZhc3RlcgogICBpbnQtb3Itb3Ro
ZXItbXVsLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAzLjM1OTMrLTAuMDQ5MCAg
ICAgICAgICAgIDMuMzUzOCstMC4wNDAwICAgICAgICAKICAgaW50LW9yLW90aGVyLW5lZy10aGVu
LWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy45MzExKy0wLjIzOTcgICAgID8gICAgICA0
LjAzNjUrLTAuMzQ0MyAgICAgICAgPyBtaWdodCBiZSAxLjAyNjh4IHNsb3dlcgogICBpbnQtb3It
b3RoZXItbmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE1LjMzNzQrLTEuMjMy
NyAgICAgPyAgICAgMTUuODcyMystMC45MzAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM0OXggc2xv
d2VyCiAgIGludC1vci1vdGhlci1zdWItdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgICAgICAg
IDMuODA3NCstMC4yMDE3ICAgICAgICAgICAgMy43MDkwKy0wLjA1NzIgICAgICAgICAgbWlnaHQg
YmUgMS4wMjY1eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLXN1YiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy4yODUyKy0wLjIwNzcgICAgICAgICAgICAzLjIxMDYrLTAuMDYxOSAg
ICAgICAgICBtaWdodCBiZSAxLjAyMzJ4IGZhc3RlcgogICBpbnQtb3ZlcmZsb3ctbG9jYWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY2NTMrLTAuMDQ2OCAgICAgPyAgICAgIDMu
NzY3MSstMC4xMzkwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI3OHggc2xvd2VyCiAgIEludDE2QXJy
YXktYWxsb2MtbG9uZy1saXZlZCAgICAgICAgICAgICAgICAgICAgICAgMzcuNzQ2MCstMC4xNjg4
ICAgICA/ICAgICAzOC40NTYzKy0xLjI2NTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTg4eCBzbG93
ZXIKICAgSW50MTZBcnJheS1idWJibGUtc29ydC13aXRoLWJ5dGVMZW5ndGggICAgICAgICAgICAx
NS4yNjIwKy0xLjE3NzEgICAgICAgICAgIDE0LjcxMDYrLTAuNzAyOSAgICAgICAgICBtaWdodCBi
ZSAxLjAzNzV4IGZhc3RlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjY2OTYrLTAuMzA0OSAgICAgISAgICAgMTQuNDQ2MSstMC40NjAxICAg
ICAgICAhIGRlZmluaXRlbHkgMS4wNTY4eCBzbG93ZXIKICAgSW50MTZBcnJheS1sb2FkLWludC1t
dWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS40NDczKy0wLjA3OTYgICAgICAgICAgICAx
LjQwNjMrLTAuMDQyMSAgICAgICAgICBtaWdodCBiZSAxLjAyOTJ4IGZhc3RlcgogICBJbnQxNkFy
cmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAgICAgICAgICAgIDM0Ljk2ODkrLTAuNTky
NSAgICAgPyAgICAgMzUuMDc5MCstMC4yMTQ5ICAgICAgICA/CiAgIEludDMyQXJyYXktYWxsb2Mt
bGFyZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuOTQwOSstMC4xOTU1ICAgICA/ICAg
ICAxMS45NzE2Ky0wLjQ3MDEgICAgICAgID8KICAgSW50MzJBcnJheS1hbGxvYy1sb25nLWxpdmVk
ICAgICAgICAgICAgICAgICAgICAgICA0Mi40NzgwKy0wLjk5NTMgICAgICAgICAgIDQxLjk5MjYr
LTAuNTA4MCAgICAgICAgICBtaWdodCBiZSAxLjAxMTZ4IGZhc3RlcgogICBJbnQzMkFycmF5LWFs
bG9jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI4MDQrLTAuMDc0MCAgICAg
ICAgICAgIDIuMjAxNCstMC4xNTkzICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1OHggZmFzdGVyCiAg
IEludDMyQXJyYXktSW50OEFycmF5LXZpZXctYWxsb2MgICAgICAgICAgICAgICAgICAgIDYuMjM2
MistMC40MTk0ICAgICAgICAgICAgNS44NjQ5Ky0wLjEyMjcgICAgICAgICAgbWlnaHQgYmUgMS4w
NjMzeCBmYXN0ZXIKICAgaW50NTItc3BpbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgNC44OTU5Ky0wLjMyMzcgICAgID8gICAgICA0Ljk3NjgrLTAuMjMxNCAgICAgICAg
PyBtaWdodCBiZSAxLjAxNjV4IHNsb3dlcgogICBJbnQ4QXJyYXktYWxsb2MtbG9uZy1saXZlZCAg
ICAgICAgICAgICAgICAgICAgICAgIDM0LjU2NjArLTAuMzg0NyAgICAgPyAgICAgMzQuNzM2Mist
MC4xMjE1ICAgICAgICA/CiAgIEludDhBcnJheS1sb2FkLXdpdGgtYnl0ZUxlbmd0aCAgICAgICAg
ICAgICAgICAgICAgIDMuMDY4NCstMC4wODQ0ICAgICA/ICAgICAgMy4wODgwKy0wLjA1NjggICAg
ICAgID8KICAgSW50OEFycmF5LWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy40MDcxKy0wLjMwMjcgICAgICAgICAgICAzLjIxODcrLTAuMzQ2MiAgICAgICAgICBtaWdo
dCBiZSAxLjA1ODV4IGZhc3RlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwLjAxODYrLTAuNTU2NiAgICAgPyAgICAgMTAuMTM3NSstMC41OTcz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExOXggc2xvd2VyCiAgIGludGVnZXItbW9kdWxvICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuNDY1NistMC4wMzM5ICAgICAgICAgICAg
MS40NDc2Ky0wLjAyNTEgICAgICAgICAgbWlnaHQgYmUgMS4wMTI0eCBmYXN0ZXIKICAgaXMtYm9v
bGVhbi1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42NzQ3Ky0wLjA2
MTEgICAgID8gICAgICAyLjcwNzMrLTAuMDQwMyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjJ4IHNs
b3dlcgogICBpcy1ib29sZWFuLWZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjEwOTkrLTAuMDc0MiAgICAgICAgICAgIDIuMDYwNystMC4xMDA2ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIzOXggZmFzdGVyCiAgIGlzLWZ1bmN0aW9uLWZvbGQtdHJpY2t5LWludGVybmFsLWZ1
bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTAuMDYzOCstMC4zNTk4ICAgICA/ICAgICAxMC4xOTgwKy0wLjMxNTMgICAgICAgID8g
bWlnaHQgYmUgMS4wMTMzeCBzbG93ZXIKICAgaXMtZnVuY3Rpb24tZm9sZC10cmlja3kgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi44NTQxKy0wLjA3MjggICAgID8gICAgICAyLjg3NDIrLTAu
MDY5NiAgICAgICAgPwogICBpcy1mdW5jdGlvbi1mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjEzNzErLTAuMzM0MyAgICAgICAgICAgIDIuMDYyNSstMC4wODI0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM2MnggZmFzdGVyCiAgIGlzLW51bWJlci1mb2xkLXRyaWNreSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODYxOCstMC4xMjk2ICAgICAgICAgICAgMi44MDc5
Ky0wLjExNzggICAgICAgICAgbWlnaHQgYmUgMS4wMTkyeCBmYXN0ZXIKICAgaXMtbnVtYmVyLWZv
bGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4yMDQ1Ky0wLjI0MDkgICAg
ICAgICAgICAyLjE3ODYrLTAuMTk2OCAgICAgICAgICBtaWdodCBiZSAxLjAxMTl4IGZhc3Rlcgog
ICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xkLWZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAyLjAz
NDUrLTAuMDQxNyAgICAgPyAgICAgIDIuMDg1OCstMC4wNTQwICAgICAgICA/IG1pZ2h0IGJlIDEu
MDI1Mnggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLWZvbGQtbGVzcy10cmlja3kgICAgICAg
ICAgICAgICAgIDIuOTI1NistMC4yOTUyICAgICAgICAgICAgMi44NDg1Ky0wLjA1OTEgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjcxeCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZC10cmlj
a3kgICAgICAgICAgICAgICAgICAgICAgMy4xMTUwKy0wLjEwNTggICAgID8gICAgICAzLjE4NzYr
LTAuMTIyOSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzN4IHNsb3dlcgogICBpcy1vYmplY3Qtb3It
bnVsbC1mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA2MjQrLTAuMDUwMCAgICAg
ICAgICAgIDEuOTk3MCstMC4wMzk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyOHggZmFzdGVyCiAg
IGlzLW9iamVjdC1vci1udWxsLXRyaWNraWVyLWZ1bmN0aW9uICAgICAgICAgICAgICAgIDMuMDQ4
OCstMC4zNDA5ICAgICAgICAgICAgMi44NzU2Ky0wLjA3NzUgICAgICAgICAgbWlnaHQgYmUgMS4w
NjAyeCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2tpZXItaW50ZXJuYWwtZnVuY3Rp
b24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOS42NTQ0Ky0wLjMyNDkgICAgICAgICAgICA5LjU5ODkrLTAuMjU1MiAgICAgICAgCiAgIGlz
LW9iamVjdC1vci1udWxsLXRyaWNreS1mdW5jdGlvbiAgICAgICAgICAgICAgICAgIDMuMDU5Mist
MC4zODg4ICAgICAgICAgICAgMi45ODAzKy0wLjI5MzcgICAgICAgICAgbWlnaHQgYmUgMS4wMjY1
eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtdHJpY2t5LWludGVybmFsLWZ1bmN0aW9uICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
ODYyNCstMC42MjIwICAgICAgICAgICAgNi42MTU1Ky0wLjA2MzkgICAgICAgICAgbWlnaHQgYmUg
MS4wMzczeCBmYXN0ZXIKICAgaXMtc3RyaW5nLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi44MjgwKy0wLjExNjkgICAgID8gICAgICAyLjg0MDQrLTAuMTA5MiAgICAg
ICAgPwogICBpcy1zdHJpbmctZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyLjAzMDIrLTAuMDQ0MyAgICAgPyAgICAgIDIuMjM0MSstMC4zMTcxICAgICAgICA/IG1pZ2h0
IGJlIDEuMTAwNHggc2xvd2VyCiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuNTUzNistMC4yNDM4ICAgICA/ICAgICAgMi42MzIyKy0wLjE0NzUg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzA4eCBzbG93ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45OTEwKy0wLjA0NTYgICAgID8gICAgICAy
LjE1MzgrLTAuMzI2MSAgICAgICAgPyBtaWdodCBiZSAxLjA4MTh4IHNsb3dlcgogICBKU09OUC1u
ZWdhdGl2ZS0wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjI1MTArLTAuMDE1
NiAgICAgPyAgICAgIDAuMjU2MSstMC4wMTY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMnggc2xv
d2VyCiAgIGxhcmdlLWludC1jYXB0dXJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMzg0MystMC4xMDUwICAgICA/ICAgICAgMy40MDc4Ky0wLjE0MjYgICAgICAgID8KICAgbGFy
Z2UtaW50LW5lZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi4yNTAyKy0w
LjQ5MDYgICAgID8gICAgIDEyLjQ0MDkrLTAuNDkwNSAgICAgICAgPyBtaWdodCBiZSAxLjAxNTZ4
IHNsb3dlcgogICBsYXJnZS1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDExLjU5MzErLTAuOTg0MSAgICAgICAgICAgMTAuOTQxNCstMC4yMDUzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU5NnggZmFzdGVyCiAgIGxvYWQtdmFyYXJncy1lbGltaW5hdGlvbiAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYuNjgwOSstMC40NzYwICAgICA/ICAgICAxNy4yMDE3Ky0wLjYw
OTIgICAgICAgID8gbWlnaHQgYmUgMS4wMzEyeCBzbG93ZXIKICAgbG9jYWxlLWNvbXBhcmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi40NTY1Ky0wLjkwNjIgICAgID8gICAg
IDIyLjg3MTIrLTEuNDQ1NCAgICAgICAgPyBtaWdodCBiZSAxLjAxODV4IHNsb3dlcgogICBsb2dp
Y2FsLW5vdC13ZWlyZC10eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjM4NjArLTAu
MDUwOSAgICAgICAgICAgIDIuMzI3NistMC4wNDY5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1MXgg
ZmFzdGVyCiAgIGxvZ2ljYWwtbm90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuNTc3NSstMC4xODg1ICAgICAgICAgICAgMy40NTMwKy0wLjA3NzggICAgICAgICAgbWln
aHQgYmUgMS4wMzYweCBmYXN0ZXIKICAgbG90cy1vZi1maWVsZHMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOC4zODkyKy0wLjQxNDYgICAgID8gICAgICA4LjQ5MTMrLTAuMjgz
MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMjJ4IHNsb3dlcgogICBtYWtlLWluZGV4ZWQtc3RvcmFn
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYyNzcrLTAuNDYwOSAgICAgICAgICAg
IDIuNDk4MCstMC4yNTMzICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxOXggZmFzdGVyCiAgIG1ha2Ut
cm9wZS1jc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNDk1MSstMC4y
Mjk5ICAgICA/ICAgICAgMy41MjAyKy0wLjI3NzcgICAgICAgID8KICAgbWFueS1mb3JlYWNoLWNh
bGxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi43OTU5Ky0wLjQ3ODYgICAgID8g
ICAgIDE0LjM4MDMrLTIuNTg4NiAgICAgICAgPyBtaWdodCBiZSAxLjEyMzh4IHNsb3dlcgogICBt
YW55LXJlcGVhdC1zdG9yZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljg1MTUr
LTAuNjgxOCAgICAgICAgICAgMTQuODYxOCstMC4zNDA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2
NnggZmFzdGVyCiAgIG1hcC1mb3ItZWFjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQuNjU2OSstMC4yODExICAgICAgICAgICAgNC40NDc2Ky0wLjA4MDcgICAgICAgICAg
bWlnaHQgYmUgMS4wNDcweCBmYXN0ZXIKICAgbWFwLWZvci1vZiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNC43OTUyKy0wLjQ3OTkgICAgICAgICAgIDE0LjM0MDgrLTEu
MTA5NiAgICAgICAgICBtaWdodCBiZSAxLjAzMTd4IGZhc3RlcgogICBtYXJzYWdsaWEtbGFyZ2Vy
LWludHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LjgzMjYrLTAuOTkyMyAgICAgPyAg
ICAgMjkuMDY1OSstMC44MjM0ICAgICAgICA/CiAgIG1hcnNhZ2xpYS1vc3ItZW50cnkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTcuOTUzMCstMi4wOTM4ICAgICAgICAgICAxNi45MTA3
Ky0wLjc1MjIgICAgICAgICAgbWlnaHQgYmUgMS4wNjE2eCBmYXN0ZXIKICAgbWF0aC1yYW5kb20g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy44ODQyKy0wLjYwMDQgICAg
ID8gICAgIDE0LjM4MTQrLTAuOTUyMSAgICAgICAgPyBtaWdodCBiZSAxLjAzNTh4IHNsb3dlcgog
ICBtYXRoLXRydW5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjE3
MjErLTAuMTQ1NyAgICAgPyAgICAgIDUuMzcxOCstMC4yNjU4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDM4Nnggc2xvd2VyCiAgIG1hdGgtd2l0aC1vdXQtb2YtYm91bmRzLWFycmF5LXZhbHVlcyAgICAg
ICAgICAgICAgMjcuMDU3MistMS4zOTgxICAgICAgICAgICAyNi42MDA2Ky0wLjQ3NzUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTcyeCBmYXN0ZXIKICAgbWF4LWJvb2xlYW4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi4xMzMxKy0wLjIzOTYgICAgICAgICAgICAyLjExNDcr
LTAuMTMyNCAgICAgICAgCiAgIG1lZ2Ftb3JwaGljLWxvYWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzAuMDgwMistMy40Nzg4ICAgICAgICAgICAyOS4wMDIxKy0yLjYxMzkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzcyeCBmYXN0ZXIKICAgbWV0aG9kLW9uLW51bWJlciAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNi40NjAxKy0wLjQ0NzkgICAgID8gICAgIDE2LjU0
NjIrLTAuOTI1MyAgICAgICAgPwogICBtaW4tYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjI4MTgrLTAuMzg5MSAgICAgICAgICAgIDIuMjA0OSstMC4yNDg3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0OXggZmFzdGVyCiAgIG1pbnVzLWJvb2xlYW4tZG91Ymxl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjMzMistMC4wNzg1ICAgICA/ICAgICAg
Mi4yMzM1Ky0wLjA0NzIgICAgICAgID8KICAgbWludXMtYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4wMTc4Ky0wLjE3OTggICAgID8gICAgICAyLjA2OTcrLTAu
MTY5OCAgICAgICAgPyBtaWdodCBiZSAxLjAyNTd4IHNsb3dlcgogICBtaXNjLXN0cmljdC1lcSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5Ljg4OTcrLTEuNjUzOCAgICAgICAg
ICAgMTkuMjc3OCstMC45MjEwICAgICAgICAgIG1pZ2h0IGJlIDEuMDMxN3ggZmFzdGVyCiAgIG1v
ZC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguNzUyOCst
MC4yODQwICAgICA/ICAgICAgOC44OTE1Ky0wLjQ1NzcgICAgICAgID8gbWlnaHQgYmUgMS4wMTU5
eCBzbG93ZXIKICAgbW9kLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi43NDYyKy0wLjIyNjUgICAgICAgICAgICA2LjY2MDQrLTAuMDgwMCAgICAgICAgICBt
aWdodCBiZSAxLjAxMjl4IGZhc3RlcgogICBtdWwtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyLjY0NzQrLTAuMDY2NyAgICAgICAgICAgIDIuNjQ1NSstMC4w
NjA4ICAgICAgICAKICAgbXVsLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi4zMzk0Ky0wLjE0ODEgICAgICAgICAgICAyLjI3NDgrLTAuMDcwMSAgICAgICAg
ICBtaWdodCBiZSAxLjAyODR4IGZhc3RlcgogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjI3ODkrLTAuMDY2MyAgICAgPyAgICAgIDIuMzIxNist
MC4xNDM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4N3ggc2xvd2VyCiAgIG5lZ2F0aXZlLXplcm8t
ZGl2aWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzQyOSstMC4wMTkzICAgICA/
ICAgICAgMC4zNDUyKy0wLjAyNDEgICAgICAgID8KICAgbmVnYXRpdmUtemVyby1tb2R1bG8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTY3Ky0wLjA1NjggICAgICAgICAgICAwLjM1
NTMrLTAuMDMzMiAgICAgICAgCiAgIG5lZ2F0aXZlLXplcm8tbmVnYXRlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzMyMystMC4wMzk4ICAgICAgICAgICAgMC4zMjc3Ky0wLjAyNzMg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgbmVzdGVkLWZ1bmN0aW9uLXBhcnNp
bmcgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi4wODE5Ky0wLjYzNTggICAgICAgICAgIDMx
LjcwOTgrLTAuNTg0MCAgICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZhc3RlcgogICBuZXctYXJy
YXktYnVmZmVyLWRlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcxLjk5MDUrLTAuODEx
NiAgICAgICAgICAgNzEuNTg3MystMC41MTg3ICAgICAgICAKICAgbmV3LWFycmF5LWJ1ZmZlci1w
dXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42OTMyKy0wLjEwODEgICAgID8gICAg
ICA0LjcxNjkrLTAuMjA0MiAgICAgICAgPwogICBuZXctYXJyYXktZGVhZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA2LjY4MzgrLTAuMzcwNCAgICAgICAgICAgIDYuNDUzMSst
MC4xMjgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1OHggZmFzdGVyCiAgIG5ldy1hcnJheS1wdXNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDI5NistMC4yNzg1ICAgICAg
ICAgICAgMi45OTI1Ky0wLjIzNjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTI0eCBmYXN0ZXIKICAg
bm8taW5saW5lLWNvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy43NDMz
Ky0wLjMyMTIgICAgICAgICAgIDI3LjUyODMrLTAuMTQyMCAgICAgICAgCiAgIG51bWJlci10ZXN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDQ2OSstMC4wNzQ5ICAg
ICA/ICAgICAgMy4wNTI4Ky0wLjIzMzUgICAgICAgID8KICAgb2JqZWN0LWNsb3N1cmUtY2FsbCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC42MDg5Ky0wLjM2NDcgICAgICAgICAgICA0
LjI4NTErLTAuMDMyNiAgICAgICAgICBtaWdodCBiZSAxLjA3NTZ4IGZhc3RlcgogICBvYmplY3Qt
Z2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuODE1OCstMC4wNTExICAg
ICA/ICAgICAgMC44MjMzKy0wLjA1OTQgICAgICAgID8KICAgb2JqZWN0LXRlc3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44NzIxKy0wLjA4MDggICAgICAgICAgICAy
Ljg2MTgrLTAuMDU0MCAgICAgICAgCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3ktdGFrZW4gICAg
ICAgICAgICAgICAgICAgICAxMDYuNDcyOSstMS4yODQwICAgICAgICAgIDEwNi4xMTA1Ky0xLjA5
MjAgICAgICAgIAogICBvYnZpb3VzLXNpbmstcGF0aG9sb2d5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE3LjcwMjkrLTAuODk0NiAgICAgICAgICAgMTYuNjQ5MistMC4zMzMzICAgICAgICAg
IG1pZ2h0IGJlIDEuMDYzM3ggZmFzdGVyCiAgIG9idmlvdXNseS1lbGlkYWJsZS1uZXctb2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgMTUuMzIzMystMC44MTQwICAgICA/ICAgICAxNS43OTgyKy0x
LjAzNjQgICAgICAgID8gbWlnaHQgYmUgMS4wMzEweCBzbG93ZXIKICAgcGx1cy1ib29sZWFuLWFy
aXRoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45MjI5Ky0wLjA3NjAgICAgID8g
ICAgICAxLjk3MDkrLTAuMDU5MyAgICAgICAgPyBtaWdodCBiZSAxLjAyNTB4IHNsb3dlcgogICBw
bHVzLWJvb2xlYW4tZG91YmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjI3Njkr
LTAuMDcyOCAgICAgPyAgICAgIDIuNDQyOSstMC4zNDA3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDcy
OXggc2xvd2VyCiAgIHBsdXMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuMDE1MistMC4wNTE4ICAgICA/ICAgICAgMi4wMTgxKy0wLjExNDMgICAgICAgID8K
ICAgcG9seS1jaGFpbi1hY2Nlc3MtZGlmZmVyZW50LXByb3RvdHlwZXMtc2ltcGxlICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNDUyNSst
MC4yNzc4ICAgICAgICAgICAgMi40MzU3Ky0wLjI2NjEgICAgICAgIAogICBwb2x5LWNoYWluLWFj
Y2Vzcy1kaWZmZXJlbnQtcHJvdG90eXBlcyAgICAgICAgICAgICAyLjM1NDcrLTAuMTM4MiAgICAg
ICAgICAgIDIuMjg0MSstMC4wNDk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMwOXggZmFzdGVyCiAg
IHBvbHktY2hhaW4tYWNjZXNzLXNpbXBsZXIgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjY0
NistMC4wMjI5ICAgICA/ICAgICAgMi4yODg0Ky0wLjA1NzQgICAgICAgID8gbWlnaHQgYmUgMS4w
MTA1eCBzbG93ZXIKICAgcG9seS1jaGFpbi1hY2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi40Njc1Ky0wLjM0MDYgICAgICAgICAgICAyLjMxMDIrLTAuMTA5MyAgICAgICAg
ICBtaWdodCBiZSAxLjA2ODF4IGZhc3RlcgogICBwb2x5LXN0cmljdGVxICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQ5LjA2ODIrLTEuNTUzNCAgICAgPyAgICAgNDkuNTkyNyst
Mi40MzMzICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwN3ggc2xvd2VyCiAgIHBvbHltb3JwaGljLWFy
cmF5LWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMzM5MSstMC4yNzUyICAgICA/
ICAgICAgMS4zODA1Ky0wLjIxNDcgICAgICAgID8gbWlnaHQgYmUgMS4wMzA5eCBzbG93ZXIKICAg
cG9seW1vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45MDIz
Ky0wLjE1NjUgICAgICAgICAgICAxLjg2MDIrLTAuMDU0MCAgICAgICAgICBtaWdodCBiZSAxLjAy
Mjd4IGZhc3RlcgogICBwb2x5bW9ycGhpYy1wdXQtYnktaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMwLjIwNjcrLTQuNzE0MSAgICAgICAgICAgMjUuODM1NistMy4wNTMyICAgICAgICAg
IG1pZ2h0IGJlIDEuMTY5MnggZmFzdGVyCiAgIHBvbHltb3JwaGljLXB1dC1ieS12YWwtd2l0aC1z
dHJpbmcgICAgICAgICAgICAgICAgMjYuNjE0NystMi4wMTE3ICAgICAgICAgICAyNi41NDM2Ky0z
LjQ1MDMgICAgICAgIAogICBwb2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3ltYm9sICAgICAg
ICAgICAgICAgIDI4LjYyNzUrLTQuNTA2OCAgICAgPyAgICAgMzAuNjk2NystNS4zNDg5ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDcyM3ggc2xvd2VyCiAgIHBvbHltb3JwaGljLXN0cnVjdHVyZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTIuMDU3MCstMC4zNzY5ICAgICAgICAgICAxMS43Nzk5
Ky0wLjIzNzkgICAgICAgICAgbWlnaHQgYmUgMS4wMjM1eCBmYXN0ZXIKICAgcG9seXZhcmlhbnQt
bW9ub21vcnBoaWMtZ2V0LWJ5LWlkICAgICAgICAgICAgICAgICAgMy4zNjI4Ky0wLjExNDggICAg
ICAgICAgICAzLjM1ODUrLTAuMDcwMyAgICAgICAgCiAgIHByb3RvLWdldHRlci1hY2Nlc3MgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNjcyNSstMC42MjMxICAgICAgICAgICAxMC4y
MTk2Ky0wLjA5NDQgICAgICAgICAgbWlnaHQgYmUgMS4wNDQzeCBmYXN0ZXIKICAgcHJvdG90eXBl
LWFjY2Vzcy13aXRoLW11dGF0aW5nLXByb3RvdHlwZSAgICAgICAgICAgNC4xMzk0Ky0wLjE0MzIg
ICAgID8gICAgICA0LjIyNDQrLTAuMTc1NSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDV4IHNsb3dl
cgogICBwdXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICA3
LjMxMDYrLTAuODY2NCAgICAgICAgICAgIDYuNzkyNCstMC40NTMwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDc2M3ggZmFzdGVyCiAgIHB1dC1ieS1pZC1zbGlnaHRseS1wb2x5bW9ycGhpYyAgICAgICAg
ICAgICAgICAgICAgIDIuNDQ5MSstMC4zMjk0ICAgICAgICAgICAgMi4zOTg4Ky0wLjMyNTIgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjEweCBmYXN0ZXIKICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0
aC1pbmRleGluZy1oZWFkZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMC44MjU0Ky0wLjYzMTcgICAgICAgICAgIDEwLjQ0NTcrLTAuMzE0
OCAgICAgICAgICBtaWdodCBiZSAxLjAzNjN4IGZhc3RlcgogICBwdXQtYnktaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU0NjMrLTAuMTE4MCAgICAgPyAgICAg
IDguOTQyNystMC4yOTg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2NHggc2xvd2VyCiAgIHB1dC1i
eS12YWwtZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzkxNistMC4w
MjUwICAgICAgICAgICAgMC4zNjkyKy0wLjAwNzggICAgICAgICAgbWlnaHQgYmUgMS4wNjA3eCBm
YXN0ZXIKICAgcHV0LWJ5LXZhbC1sYXJnZS1pbmRleC1ibGFuay1pbmRleGluZy10eXBlICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTQ0
OSstMC4wMjE2ICAgICA/ICAgICAgNC4yOTMyKy0wLjMwNDYgICAgICAgID8gbWlnaHQgYmUgMS4w
MzU4eCBzbG93ZXIKICAgcHV0LWJ5LXZhbC1tYWNoaW5lLWludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi4xODYzKy0wLjA4MTQgICAgICAgICAgICAyLjE0ODkrLTAuMDg5MCAgICAgICAg
ICBtaWdodCBiZSAxLjAxNzR4IGZhc3RlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nLXJlcGxh
Y2UtYW5kLXRyYW5zaXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMC4yODQxKy0wLjM2MTIgICAgICAgICAgIDEwLjE4MzUrLTAuMzIx
NCAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1vcnBoaWMg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
My4yMzAxKy0wLjA0MTMgICAgID8gICAgICAzLjM5ODkrLTAuMjQ5OCAgICAgICAgPyBtaWdodCBi
ZSAxLjA1MjN4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA5LjI1NjcrLTAuMjUxOCAgICAgPyAgICAgIDkuNDI2MCstMC4yNzQ0ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wt
cmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA5LjMyMDIrLTAuMjkxNiAgICAgICAgICAgIDkuMTk5MCst
MC4yMDk0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0
aC1zeW1ib2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41MTUzKy0wLjA0NzkgICAgID8gICAgICAy
LjU2MTQrLTAuMDYwNCAgICAgICAgPyBtaWdodCBiZSAxLjAxODN4IHNsb3dlcgogICBwdXQtYnkt
dmFsLXdpdGgtc3ltYm9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjExNzYrLTAuMzQ2
NiAgICAgPyAgICAgIDkuNTM2OSstMC41NTQ4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2MHggc2xv
d2VyCiAgIHJhcmUtb3NyLWV4aXQtb24tbG9jYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTEuNTA3NSstMC43MDU1ICAgICAgICAgICAxMS4zMTEyKy0wLjY0MTAgICAgICAgICAgbWlnaHQg
YmUgMS4wMTc0eCBmYXN0ZXIKICAgcmF5dHJhY2Utd2l0aC1lbXB0eS10cnktY2F0Y2ggICAgICAg
ICAgICAgICAgICAgICAgNS4wODAxKy0wLjEzMTQgICAgID8gICAgICA1LjI3NDArLTAuNDE4NiAg
ICAgICAgPyBtaWdodCBiZSAxLjAzODJ4IHNsb3dlcgogICByYXl0cmFjZS13aXRoLXRyeS1jYXRj
aCAgICAgICAgICAgICAgICAgICAgICAgICAgICA4Ljc5NzcrLTAuNTQ1NSAgICAgICAgICAgIDgu
NzQ1MystMC4zNTU2ICAgICAgICAKICAgcmVnZXhwLWV4ZWMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzMi43ODYzKy0xLjYwMzggICAgICAgICAgIDMxLjc2OTArLTAuOTQ0
NiAgICAgICAgICBtaWdodCBiZSAxLjAzMjB4IGZhc3RlcgogICByZWdleHAtbGFzdC1pbmRleCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU0NzMrLTAuNDY0OSAgICAgICAgICAg
IDguNDkzMystMC4zNTI0ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFu
Y2UgICAgICAgICAgICAgICAgICAgMC40MDgwKy0wLjAzMjMgICAgID8gICAgICAwLjQwOTgrLTAu
MDMyNyAgICAgICAgPwogICByZWdleHAtcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjgwNjYrLTAuMDc0OSAgICAgICAgICAgIDAuNzE5MistMC4wMTk2ICAgICAgICAg
IG1pZ2h0IGJlIDEuMTIxNXggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc2VhcmNoLW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjI5NDUrLTAuMDEwMSAgICAgICAgICAgIDAuMjkzMCstMC4w
MTQzICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZm
ZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjUxMjArLTAuMTQzNiAgICAgPyAgICAgIDEuNTQzNSstMC4yMDUwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIwOHggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzMxNistMC4wMTUxICAgICAgICAgICAgMC4zMjc4Ky0wLjAxODUg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTE1eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxp
dC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMzIzKy0wLjAyNDkgICAgID8gICAg
ICAwLjM1MjQrLTAuMDQ3NSAgICAgICAgPyBtaWdodCBiZSAxLjA2MDZ4IHNsb3dlcgogICByZWdl
eHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zMjA0
Ky0wLjAxNjIgICAgID8gICAgICAwLjM0MDYrLTAuMDUwMiAgICAgICAgPyBtaWdodCBiZSAxLjA2
MzF4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZl
Y3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMzIzMistMC4wMTczICAgICA/ICAgICAgMC4zMjM5Ky0wLjAyNzQg
ICAgICAgID8KICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0
czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMzEwMistMC4wMDU4ICAgICA/ICAgICAgMC4zMjQ1Ky0wLjAxODkgICAg
ICAgID8gbWlnaHQgYmUgMS4wNDYweCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1v
YnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzIwNistMC4wMTMxICAgICA/ICAgICAg
MC4zMjgzKy0wLjAyNDUgICAgICAgID8gbWlnaHQgYmUgMS4wMjM5eCBzbG93ZXIKICAgcmVnZXhw
LXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMyNjgr
LTAuMDExMiAgICAgICAgICAgIDAuMzIwMystMC4wMTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIw
NHggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVj
dHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuMzIxMCstMC4wMTAxICAgICA/ICAgICAgMC4zMzIyKy0wLjAxODMgICAgICAgID8gbWln
aHQgYmUgMS4wMzQ3eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9ic2VydmFibGUt
c2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuNzcwNSstMC4xNzc2ICAgICAgICAgICAgMC43MTU4Ky0wLjAyMDcgICAg
ICAgICAgbWlnaHQgYmUgMS4wNzY0eCBmYXN0ZXIKICAgcmVnZXhwLXByb3RvdHlwZS10ZXN0LW9i
c2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjI5OTErLTAuMDE0NyAgICAgPyAgICAgIDAuMzMwNyst
MC4wMTc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMTA1Nnggc2xvd2VyCiAgIHJlZ2V4cC1zZXQtbGFz
dC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMjUzNSstMC41NTM4ICAgICAg
ICAgICAgOS4wMjE3Ky0wLjM1NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjU3eCBmYXN0ZXIKICAg
cmVnaXN0ZXItcHJlc3N1cmUtZnJvbS1vc3IgICAgICAgICAgICAgICAgICAgICAgICAxNC45OTU4
Ky0wLjk0MTYgICAgID8gICAgIDE1LjIxNTArLTAuOTcyMyAgICAgICAgPyBtaWdodCBiZSAxLjAx
NDZ4IHNsb3dlcgogICByZXBlYXQtbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAgICAgICAg
ICAgICAgIDE4LjI1MjMrLTEuNjI4NiAgICAgICAgICAgMTcuOTUyNistMS4yOTEwICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE2N3ggZmFzdGVyCiAgIHJpY2hhcmRzLWVtcHR5LXRyeS1jYXRjaCAgICAg
ICAgICAgICAgICAgICAgICAgICAgNDIuNzQxMCstMC4zNzc5ICAgICAgICAgICA0Mi42NjYwKy0w
LjU2NDggICAgICAgIAogICByaWNoYXJkcy10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjEwLjI5NzgrLTIuMDUwMyAgICAgPyAgICAyMTEuMzYzMystMi4wMzgzICAgICAg
ICA/CiAgIHNjb3BlZC1hcmd1bWVudHMtbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYuMTEyNystMC4wNjk0ICAgICA/ICAgICAgNi40MTE5Ky0wLjM0NTkgICAgICAgID8gbWlnaHQg
YmUgMS4wNDg5eCBzbG93ZXIKICAgc2NvcGVkLWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAg
ICAgICAgICAgICAgICAgNi4yOTczKy0wLjM2MDkgICAgICAgICAgICA2LjAwMjMrLTAuMDM0MiAg
ICAgICAgICBtaWdodCBiZSAxLjA0OTF4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLXBvc3Np
Ymx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDYuNDk1NSstMC4wOTU5ICAgICA/ICAgICAgNi41NDI1Ky0w
LjI5NTAgICAgICAgID8KICAgc2V0LWZvci1lYWNoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMy42NTg1Ky0wLjExMzAgICAgICAgICAgICAzLjUyNjMrLTAuMDQ0NiAgICAg
ICAgICBtaWdodCBiZSAxLjAzNzV4IGZhc3RlcgogICBzZXQtZm9yLW9mICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA3LjA3OTQrLTAuNjY2NSAgICAgICAgICAgIDYuNjM3
MistMC4yNTE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2NnggZmFzdGVyCiAgIHNldHRlci1wcm90
b3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNTQ5OCstMC4zMjgxICAg
ICAgICAgICAgNC40ODcwKy0wLjI4NzcgICAgICAgICAgbWlnaHQgYmUgMS4wMTQweCBmYXN0ZXIK
ICAgc2V0dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4w
NjE0Ky0wLjM2NDkgICAgICAgICAgICAzLjAwNjkrLTAuMzM2MiAgICAgICAgICBtaWdodCBiZSAx
LjAxODF4IGZhc3RlcgogICBzaW1wbGUtYWN0aXZhdGlvbi1kZW1vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIxLjQxODUrLTAuODE3MCAgICAgPyAgICAgMjEuNTgwNystMS4xNTIxICAgICAg
ICA/CiAgIHNpbXBsZS1nZXR0ZXItYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTYuMjQ3NSstMC42MDQ3ICAgICA/ICAgICAxNy41Njc2Ky0xLjAyOTUgICAgICAgID8gbWlnaHQg
YmUgMS4wODEyeCBzbG93ZXIKICAgc2ltcGxlLXBvbHktY2FsbC1uZXN0ZWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy43MDQ3Ky0wLjA3MjEgICAgICAgICAgICAzLjY0MTQrLTAuMDM2NiAg
ICAgICAgICBtaWdodCBiZSAxLjAxNzR4IGZhc3RlcgogICBzaW1wbGUtcG9seS1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjI2NDkrLTAuMjYxMSAgICAgICAgICAgIDEu
MTYzMSstMC4wMzA5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg3NXggZmFzdGVyCiAgIHNpbXBsZS1y
ZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAgICAgIDIuOTQ2OCstMC4yMjY3
ICAgICAgICAgICAgMi44NTY0Ky0wLjExNTggICAgICAgICAgbWlnaHQgYmUgMS4wMzE3eCBmYXN0
ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcgICAgICAgICAgICAgICAgICAgICAgICAx
Ni40NjM4Ky0xLjA3MDcgICAgICAgICAgIDE2LjIwMzIrLTAuNjQ5OSAgICAgICAgICBtaWdodCBi
ZSAxLjAxNjF4IGZhc3RlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLXdpdGgt
aG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOC4xMzkwKy0wLjA3NDYgICAgID8gICAgICA4LjM1NTIrLTAuMzY2NiAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjZ4IHNsb3dlcgogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9s
ZGluZy1mYWlsICAgICAgICAgICAgICAgICAgIDE1LjAyMjQrLTAuMzIyNiAgICAgICAgICAgMTQu
NjgyMystMC40OTIwICAgICAgICAgIG1pZ2h0IGJlIDEuMDIzMnggZmFzdGVyCiAgIHNpbXBsZS1y
ZWdleHAtdGVzdC1mb2xkaW5nLXdpdGgtaG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS4yOTA5Ky0wLjI3ODEgICAg
ID8gICAgICA5Ljg4MjQrLTAuODQzMiAgICAgICAgPyBtaWdodCBiZSAxLjA2Mzd4IHNsb3dlcgog
ICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAgIDE1Ljcw
MjErLTAuNDA4MCAgICAgICAgICAgMTUuNjA4MCstMC40MjQyICAgICAgICAKICAgc2luLWJvb2xl
YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xMDE0Ky0wLjM3Njcg
ICAgICAgICAgICA2LjEwMDUrLTAuMzM3NyAgICAgICAgCiAgIHNpbmdsZXRvbi1zY29wZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTQuMDY4NistMC4xMzI3ICAgICA/ICAgICA1
NC41OTExKy0xLjA3NTEgICAgICAgID8KICAgc2luay1mdW5jdGlvbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS4yNDE2Ky0wLjY2NjMgICAgICAgICAgICA1LjIxNTUrLTAu
NDYzNiAgICAgICAgCiAgIHNpbmstaHVnZS1hY3RpdmF0aW9uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTEuOTY0OSstMC4zMjAzICAgICA/ICAgICAxMi42MDU2Ky0wLjk2MDkgICAgICAg
ID8gbWlnaHQgYmUgMS4wNTM2eCBzbG93ZXIKICAgc2lua2FibGUtbmV3LW9iamVjdC1kYWcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAzNy4wMDg2Ky0wLjcxNzcgICAgID8gICAgIDM3LjMyMjQr
LTAuNzY0MSAgICAgICAgPwogICBzaW5rYWJsZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAg
ICAgICAgICAgICAgIDMxLjgyNjMrLTAuMzg1NyAgICAgPyAgICAgMzIuMTYxOSstMS4wNjE1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDEwNXggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuODEzMystMC42MDEzICAgICAgICAgICAxNi41
NjcwKy0wLjQwNTkgICAgICAgICAgbWlnaHQgYmUgMS4wMTQ5eCBmYXN0ZXIKICAgc2xvdy1hcnJh
eS1wcm9maWxlLWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMi40MTMxKy0wLjA2NjIg
ICAgICAgICAgICAyLjMzNDArLTAuMDgwNiAgICAgICAgICBtaWdodCBiZSAxLjAzMzl4IGZhc3Rl
cgogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjQ0NzkrLTAuMjA1NiAgICAgICAgICAgIDIuMzYwMCstMC4wNjE5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDM3MnggZmFzdGVyCiAgIHNsb3ctdGVybmFyaWVzICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTEuNjA5OSstMC4zMDc0ICAgICA/ICAgICAxMS44NjA3Ky0wLjk0MjUgICAg
ICAgID8gbWlnaHQgYmUgMS4wMjE2eCBzbG93ZXIKICAgc29ydGluZy1iZW5jaG1hcmsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNy42ODUyKy0xLjMxNTQgICAgID8gICAgIDE3Ljcw
MzErLTAuNzU0NiAgICAgICAgPwogICBzcGFyc2UtY29uZGl0aW9uYWwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLjA5MDkrLTAuMDQ1NiAgICAgPyAgICAgIDEuMTE3OSstMC4wNjcz
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI0OHggc2xvd2VyCiAgIHNwbGljZS10by1yZW1vdmUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMuMTAyMCstMS4xMjY0ICAgICA/ICAgICAx
My4xOTM2Ky0xLjE4NTUgICAgICAgID8KICAgc3RyY2F0LWNvbnN0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC41ODY4Ky0wLjA1NzcgICAgID8gICAgICA0LjU5NjUrLTAu
MDgzOSAgICAgICAgPwogICBzdHJjYXQtbGVuZ3RoLWNvbnN0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjkxMDkrLTAuMTIyNyAgICAgPyAgICAgIDUuMDU2OCstMC4zMjk0ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDI5N3ggc2xvd2VyCiAgIHN0cmluZy1jaGFyLWNvZGUtYXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTEuODY4MCstMC40NTA3ICAgICA/ICAgICAxMS45OTk4
Ky0wLjI2MTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTExeCBzbG93ZXIKICAgc3RyaW5nLWNvbmNh
dC1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wODYwKy0wLjQyODUgICAg
ICAgICAgICAxLjg5MjQrLTAuMDcxNCAgICAgICAgICBtaWdodCBiZSAxLjEwMjN4IGZhc3Rlcgog
ICBzdHJpbmctY29uY2F0LXBhaXItb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjA1
NzQrLTAuMjkyMiAgICAgICAgICAgIDIuMDEzNSstMC4zMDE1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDIxOHggZmFzdGVyCiAgIHN0cmluZy1jb25jYXQtcGFpci1zaW1wbGUgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIuNjkxMystMC4xMjcyICAgICAgICAgICAgMi42Njk3Ky0wLjAzNjcgICAgICAg
IAogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4
LjQ2MDMrLTAuMzE5OSAgICAgICAgICAgIDguMzAyMSstMC4yODA4ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE5MXggZmFzdGVyCiAgIHN0cmluZy1jb25zLXJlcGVhdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuOTMxMSstMC4yNzQ4ICAgICAgICAgICAgNS44Njc1Ky0wLjE5NzYgICAg
ICAgICAgbWlnaHQgYmUgMS4wMTA4eCBmYXN0ZXIKICAgc3RyaW5nLWNvbnMtdG93ZXIgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4zODExKy0wLjM4MzAgICAgICAgICAgICA1Ljk5
NjErLTAuMTI5NCAgICAgICAgICBtaWdodCBiZSAxLjA2NDJ4IGZhc3RlcgogICBzdHJpbmctZXF1
YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjEwODYrLTEuMDI4NCAg
ICAgICAgICAgMTUuMDA4NistMC44NDEwICAgICAgICAKICAgc3RyaW5nLWZyb20tY2hhci1jb2Rl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS41Nzk3Ky0wLjA0MTAgICAgID8gICAgICA1
LjY3NjIrLTAuMTU2NyAgICAgICAgPyBtaWdodCBiZSAxLjAxNzN4IHNsb3dlcgogICBzdHJpbmct
Z2V0LWJ5LXZhbC1iaWctY2hhciAgICAgICAgICAgICAgICAgICAgICAgICA0LjA2NjErLTAuMDcy
MCAgICAgPyAgICAgIDQuMDgxMystMC4xODUzICAgICAgICA/CiAgIHN0cmluZy1nZXQtYnktdmFs
LW91dC1vZi1ib3VuZHMtaW5zYW5lICAgICAgICAgICAgIDMuMTM1MistMC4xMzYzICAgICAgICAg
ICAgMy4xMDAxKy0wLjA5MzUgICAgICAgICAgbWlnaHQgYmUgMS4wMTEzeCBmYXN0ZXIKICAgc3Ry
aW5nLWdldC1ieS12YWwtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgMy45MDY2Ky0w
LjA4NjIgICAgID8gICAgICA0LjA3MTIrLTAuMzE0NiAgICAgICAgPyBtaWdodCBiZSAxLjA0MjF4
IHNsb3dlcgogICBzdHJpbmctZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjg2NDkrLTAuMDY3MyAgICAgICAgICAgIDEuODU4MCstMC4wODIwICAgICAgICAKICAg
c3RyaW5nLWhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS44MzE4
Ky0wLjA1OTYgICAgID8gICAgICAxLjg0NTYrLTAuMDI5OCAgICAgICAgPwogICBzdHJpbmctbG9u
Zy1pZGVudC1lcXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgIDEyLjM0MTErLTAuNjA5MSAg
ICAgPyAgICAgMTIuMzY5NCstMC43MzQzICAgICAgICA/CiAgIHN0cmluZy1vdXQtb2YtYm91bmRz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjY5MistMC40MDg5ICAgICAgICAgICAg
Ni4xMDI5Ky0wLjA3MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjcyeCBmYXN0ZXIKICAgc3RyaW5n
LXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC44NzgyKy0wLjAzNzIg
ICAgID8gICAgICAwLjg4MzErLTAuMDQyOCAgICAgICAgPwogICBzdHJpbmctcHJvdG90eXBlLXNl
YXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40Mjc4Ky0wLjAxMTcgICAgID8gICAgICAw
LjQ0NzYrLTAuMDMyNyAgICAgICAgPyBtaWdodCBiZSAxLjA0NjN4IHNsb3dlcgogICBzdHJpbmct
cHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40NDc4Ky0wLjAzMzkg
ICAgICAgICAgICAwLjQzNzMrLTAuMDI0OSAgICAgICAgICBtaWdodCBiZSAxLjAyNDB4IGZhc3Rl
cgogICBzdHJpbmctcHJvdG90eXBlLXNlYXJjaC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czQgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4z
NDkwKy0wLjAwODEgICAgID8gICAgICAwLjM1OTIrLTAuMDEyMSAgICAgICAgPyBtaWdodCBiZSAx
LjAyOTB4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEuNzkyOSstMC4xODI5ICAgICAgICAgICAgMS43NjE1Ky0wLjI4NzcgICAgICAgICAg
bWlnaHQgYmUgMS4wMTc4eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZh
YmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMC4zNzk1Ky0wLjAzMjQgICAgID8gICAgICAwLjM5OTgrLTAuMDMz
NSAgICAgICAgPyBtaWdodCBiZSAxLjA1MzZ4IHNsb3dlcgogICBzdHJpbmctcHJvdG90eXBlLXNw
bGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1mbGFncyAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQwNDgrLTAuMDQ3NCAgICAgICAg
ICAgIDAuMzY5MCstMC4wMDQ2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDk2OHggZmFzdGVyCiAgIHN0
cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQw
ODgrLTAuMDMxMyAgICAgXiAgICAgIDAuMzY5MystMC4wMDM5ICAgICAgICBeIGRlZmluaXRlbHkg
MS4xMDcxeCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0czMtaWdub3JlQ2FzZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjM4MzQrLTAuMDE2NyAgICAgPyAgICAgIDAuNDk5MSstMC4y
Nzk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMzAxOHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5MDArLTAuMDE2MSAg
ICAgPyAgICAgIDAuNDAyNistMC4wMzQ5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyM3ggc2xvd2Vy
CiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0aWNr
eSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjM4NTcrLTAuMDIxNCAgICAgPyAgICAgIDAuNDQxNistMC4xMjMyICAgICAgICA/IG1pZ2h0
IGJlIDEuMTQ1MHggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1z
aWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMC4zOTQxKy0wLjAzOTggICAgICAgICAgICAwLjM3NDQrLTAu
MDEzMCAgICAgICAgICBtaWdodCBiZSAxLjA1MjZ4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBl
LXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5MzcrLTAuMDI2NyAgICAgICAgICAg
IDAuMzkzMystMC4wNTUxICAgICAgICAKICAgc3RyaW5nLXJlcGVhdC1hcml0aCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMS45MzgxKy0yLjA3ODQgICAgICAgICAgIDIxLjkxNjMrLTEu
MjkxOSAgICAgICAgCiAgIHN0cmluZy1yZXBlYXQtbm90LXJlc29sdmluZy1maXhlZCAgICAgICAg
ICAgICAgICAgIDIuOTQ4NystMC4xODMyICAgICAgICAgICAgMi45MDA1Ky0wLjE2NjIgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVhdC1ub3QtcmVzb2x2aW5n
LW5vLWlubGluZSAgICAgICAgICAgICAgMy44MjM0Ky0wLjA5NDUgICAgICAgICAgICAzLjc0MTkr
LTAuMDY5MCAgICAgICAgICBtaWdodCBiZSAxLjAyMTh4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0
LW5vdC1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAgICAzLjkwMDkrLTAuMTUwNyAgICAg
ICAgICAgIDMuODk1MSstMC4xOTI1ICAgICAgICAKICAgc3RyaW5nLXJlcGVhdC1yZXNvbHZpbmct
Zml4ZWQgICAgICAgICAgICAgICAgICAgICAxOS4xMTMwKy0wLjgwNjMgICAgID8gICAgIDE5LjU1
MjErLTAuOTg5OSAgICAgICAgPyBtaWdodCBiZSAxLjAyMzB4IHNsb3dlcgogICBzdHJpbmctcmVw
ZWF0LXJlc29sdmluZy1uby1pbmxpbmUgICAgICAgICAgICAgICAgIDI0LjA5NjIrLTAuNTQyNSAg
ICAgPyAgICAgMjUuMDE4NistMS4xNzAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDM4M3ggc2xvd2Vy
CiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQu
MDc3MistMC42NjMwICAgICA/ICAgICAyNS4wNDk3Ky0wLjkyNjMgICAgICAgID8gbWlnaHQgYmUg
MS4wNDA0eCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zaW5nbGUtbm90LXJlc29sdmluZyAgICAg
ICAgICAgICAgICAgNi44NDY0Ky0xLjEyODcgICAgID8gICAgICA2LjkxMzYrLTAuOTY4MSAgICAg
ICAgPwogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1yZXNvbHZpbmcgICAgICAgICAgICAgICAgICAg
ICA2Ljg3MjErLTAuNTQ4NSAgICAgPyAgICAgIDcuMDIxOCstMC43MDQzICAgICAgICA/IG1pZ2h0
IGJlIDEuMDIxOHggc2xvd2VyCiAgIHN0cmluZy1yZXBlYXQtc21hbGwtbm90LXJlc29sdmluZyAg
ICAgICAgICAgICAgICAgIDMuMTg4OSstMC4xNDM0ICAgICA/ICAgICAgMy4yODUzKy0wLjI3NDUg
ICAgICAgID8gbWlnaHQgYmUgMS4wMzAzeCBzbG93ZXIKICAgc3RyaW5nLXJlcGVhdC1zbWFsbC1y
ZXNvbHZpbmcgICAgICAgICAgICAgICAgICAgICAyNS41MDA3Ky0wLjg2NjkgICAgICAgICAgIDI0
Ljk3ODIrLTAuNTM2MSAgICAgICAgICBtaWdodCBiZSAxLjAyMDl4IGZhc3RlcgogICBzdHJpbmct
cmVwbGFjZS1lbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjA2MDYrLTAuMzkw
NSAgICAgPyAgICAgIDguMTk5NystMC4zMTA0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE3M3ggc2xv
d2VyCiAgIHN0cmluZy1yZXBsYWNlLWdlbmVyaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTIuMTUwNistMC41OTEyICAgICA/ICAgICA1Mi4zMjA0Ky0wLjY0MTggICAgICAgID8KICAgc3Ry
aW5nLXJlcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC40NTk2Ky0w
LjgyMjYgICAgICAgICAgICA4LjExMjQrLTAuMTc2NSAgICAgICAgICBtaWdodCBiZSAxLjA0Mjh4
IGZhc3RlcgogICBzdHJpbmctcm9wZS13aXRoLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDE2LjQ3NzArLTEuNjAzMiAgICAgICAgICAgMTUuMzExMSstMC4yNjQwICAgICAgICAgIG1p
Z2h0IGJlIDEuMDc2MnggZmFzdGVyCiAgIHN0cmluZy1zdWIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzIuMTI0NistMC4zNjIwICAgICAhICAgICAzMi45MzIyKy0wLjE2
MzkgICAgICAgICEgZGVmaW5pdGVseSAxLjAyNTF4IHNsb3dlcgogICBzdHJpbmctdGVzdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjEyNTErLTAuNDAxMyAgICAgICAg
ICAgIDIuODYzNSstMC4wMTk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDkxM3ggZmFzdGVyCiAgIHN0
cmluZy10cmFuc2NvZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjg3MSst
MC45MjczICAgICA/ICAgICAxNi43MzYzKy0wLjg4OTIgICAgICAgID8KICAgc3RyaW5nLXZhci1l
cXVhbGl0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC44NDY2Ky0wLjcyNTUgICAg
ID8gICAgIDI1LjE4MzIrLTEuMTY1MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMzV4IHNsb3dlcgog
ICBzdHJ1Y3R1cmUtaG9pc3Qtb3Zlci10cmFuc2l0aW9ucyAgICAgICAgICAgICAgICAgICAyLjE0
NzErLTAuMDY2NSAgICAgPyAgICAgIDIuMjIwMistMC4wNzkzICAgICAgICA/IG1pZ2h0IGJlIDEu
MDM0MHggc2xvd2VyCiAgIHN1YnN0cmluZy1jb25jYXQtd2VpcmQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzIuOTQwNSstMS4xNTk5ICAgICAgICAgICAzMi43MTUzKy0wLjM4NDggICAgICAg
IAogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM1
Ljc5OTcrLTAuNzQwOCAgICAgPyAgICAgMzUuOTIyNystMC42MTYxICAgICAgICA/CiAgIHN1YnN0
cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuNDk1MistMC42
ODkwICAgICA/ICAgICA0Mi41ODA0Ky0xLjU5MTcgICAgICAgID8gbWlnaHQgYmUgMS4wMjYyeCBz
bG93ZXIKICAgc3dpdGNoLWNoYXItY29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi4wNDc0Ky0wLjE1NzEgICAgICAgICAgICAxLjk3NjArLTAuMDkyMiAgICAgICAgICBtaWdo
dCBiZSAxLjAzNjF4IGZhc3RlcgogICBzd2l0Y2gtY2hhciAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjUxMjArLTAuMzUwMCAgICAgICAgICAgIDQuMzY5NistMC4xMDQx
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDMyNnggZmFzdGVyCiAgIHN3aXRjaC1jb25zdGFudCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTA0MistMC4xMDg1ICAgICA/ICAgICAg
My4yMTMyKy0wLjE5MDQgICAgICAgID8gbWlnaHQgYmUgMS4wMzUxeCBzbG93ZXIKICAgc3dpdGNo
LXN0cmluZy1iYXNpYy1iaWctdmFyICAgICAgICAgICAgICAgICAgICAgICAxMy44MDgwKy0wLjcx
NDEgICAgICAgICAgIDEzLjI0ODMrLTAuNzc5NCAgICAgICAgICBtaWdodCBiZSAxLjA0MjJ4IGZh
c3RlcgogICBzd2l0Y2gtc3RyaW5nLWJhc2ljLWJpZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEyLjE3MDgrLTAuMjI3NSAgICAgPyAgICAgMTIuNTU0NistMC41MDMxICAgICAgICA/IG1pZ2h0
IGJlIDEuMDMxNXggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtdmFyICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMTMuMDI3OSstMC41MzI4ICAgICA/ICAgICAxMy4wODExKy0wLjczNTkg
ICAgICAgID8KICAgc3dpdGNoLXN0cmluZy1iYXNpYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMS41OTQ1Ky0wLjczMTcgICAgICAgICAgIDExLjUxNTErLTAuNDczNSAgICAgICAgCiAg
IHN3aXRjaC1zdHJpbmctYmlnLWxlbmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgMTguMTM0
NSstMC44NjU4ICAgICA/ICAgICAxOC4xNTI2Ky0wLjk5NDMgICAgICAgID8KICAgc3dpdGNoLXN0
cmluZy1sZW5ndGgtdG93ZXItdmFyICAgICAgICAgICAgICAgICAgICAxNC4yMDkyKy0wLjkwODEg
ICAgID8gICAgIDE0LjQ1MTErLTEuMDY1MiAgICAgICAgPyBtaWdodCBiZSAxLjAxNzB4IHNsb3dl
cgogICBzd2l0Y2gtc3RyaW5nLWxlbmd0aC10b3dlciAgICAgICAgICAgICAgICAgICAgICAgIDEw
LjczOTIrLTAuNDE4NSAgICAgICAgICAgMTAuNjQzOSstMC4yNDM4ICAgICAgICAKICAgc3dpdGNo
LXN0cmluZy1zaG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC42MTk0Ky0wLjI1
ODYgICAgID8gICAgIDEwLjY4MjgrLTAuMjM2NyAgICAgICAgPwogICBzd2l0Y2ggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjA3ODkrLTAuMzQ3OSAgICAgICAg
ICAgIDUuOTAzOCstMC4yMTE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5N3ggZmFzdGVyCiAgIHN5
bWJvbC10b3N0cmluZ3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDU0MSst
MC40MzgwICAgICAgICAgICAgMi45MDk0Ky0wLjA2NTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDk3
eCBmYXN0ZXIKICAgdGVhci1vZmYtYXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi41MTIyKy0wLjIxNjUgICAgID8gICAgICAyLjU1MjIrLTAuMTExNiAgICAgICAgPyBt
aWdodCBiZSAxLjAxNTl4IHNsb3dlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzLjAyOTQrLTAuMjIxNSAgICAgPyAgICAgIDMuMDk2MistMC4y
MzA4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMXggc2xvd2VyCiAgIHRlbXBvcmFsLXN0cnVjdHVy
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEuMDgyNistMC40Mzc3ICAgICA/ICAg
ICAxMS4wODgzKy0wLjM3NDMgICAgICAgID8KICAgdG8taW50MzItYm9vbGVhbiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMy42NjAzKy0xLjE2MjIgICAgICAgICAgIDEzLjYxNjgr
LTAuOTM4OCAgICAgICAgCiAgIHRyeS1jYXRjaC1nZXQtYnktdmFsLWNsb25lZC1hcmd1bWVudHMg
ICAgICAgICAgICAgIDMuMDM3NystMC4wODc1ICAgICA/ICAgICAgMy4xMjExKy0wLjA4MTggICAg
ICAgID8gbWlnaHQgYmUgMS4wMjc0eCBzbG93ZXIKICAgdHJ5LWNhdGNoLWdldC1ieS12YWwtZGly
ZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMS45NDQ3Ky0wLjE2NjIgICAgID8gICAgICAxLjk2
OTUrLTAuMDk2NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMjh4IHNsb3dlcgogICB0cnktY2F0Y2gt
Z2V0LWJ5LXZhbC1zY29wZWQtYXJndW1lbnRzICAgICAgICAgICAgICAzLjkyNTYrLTAuMTE0MyAg
ICAgPyAgICAgIDQuMjU0OSstMC4zMjcxICAgICAgICA/IG1pZ2h0IGJlIDEuMDgzOXggc2xvd2Vy
CiAgIHR5cGVkLWFycmF5LWdldC1zZXQtYnktdmFsLXByb2ZpbGluZyAgICAgICAgICAgICAgMTgu
MzE2NSstMC40NzAwICAgICA/ICAgICAxOC45MTUxKy0wLjUwOTQgICAgICAgID8gbWlnaHQgYmUg
MS4wMzI3eCBzbG93ZXIKICAgdW5kZWZpbmVkLXByb3BlcnR5LWFjY2VzcyAgICAgICAgICAgICAg
ICAgICAgICAgIDI2Mi41NDcxKy0yLjQ5OTQgICAgICAgICAgMjYwLjA4MjcrLTEuMTkzNiAgICAg
ICAgCiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMuMDg2NystMC4wNTIxICAgICA/ICAgICAgMy4xMjkyKy0wLjExMTEgICAgICAgID8gbWlnaHQg
YmUgMS4wMTM4eCBzbG93ZXIKICAgdW5wcm9maWxlZC1saWNtICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS44MzMwKy0wLjM5MjkgICAgICAgICAgICA1LjczNzkrLTAuMzI4NiAg
ICAgICAgICBtaWdodCBiZSAxLjAxNjZ4IGZhc3RlcgogICB1bnR5cGVkLXN0cmluZy1mcm9tLWNo
YXItY29kZSAgICAgICAgICAgICAgICAgICAgICA5LjE3OTUrLTAuMzc3MCAgICAgPyAgICAgIDku
MjY3MistMC4zNzE1ICAgICAgICA/CiAgIHY4LXJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNo
ICAgICAgICAgICAgICAgICAgMjUuNzA4MystMC40NDE0ICAgICA/ICAgICAyNi4xMjY2Ky0wLjU1
NzQgICAgICAgID8gbWlnaHQgYmUgMS4wMTYzeCBzbG93ZXIKICAgdjgtcmF5dHJhY2Utd2l0aC10
cnktY2F0Y2gtaGlnaC1mcmVxdWVuY3ktdGhyb3dzICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNjUuMzkwNystNC40MzgwICAgICA/ICAgIDM2
OC4zNDc3Ky02LjE4ODkgICAgICAgID8KICAgdjgtcmF5dHJhY2Utd2l0aC10cnktY2F0Y2ggICAg
ICAgICAgICAgICAgICAgICAgICA1Ny45MzczKy0wLjY4NzkgICAgID8gICAgIDU4LjIyMzArLTAu
OTY3MyAgICAgICAgPwogICB2OC1yZWdleHAtc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDQ5Ljg4NDYrLTAuNTMwOSAgICAgICAgICAgNDkuODM5OSstMS4xOTc1ICAgICAg
ICAKICAgdmFyYXJncy1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NC44MTc0Ky0yLjcyNzAgICAgICAgICAgIDEzLjc1MDkrLTEuMTIzNyAgICAgICAgICBtaWdodCBi
ZSAxLjA3NzZ4IGZhc3RlcgogICB2YXJhcmdzLWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE4LjEzNjQrLTAuNDM5NiAgICAgICAgICAgMTguMDI4OSstMC41NTAwICAg
ICAgICAKICAgdmFyYXJncy1jb25zdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMS44OTMwKy0wLjYwNTEgICAgID8gICAgIDIyLjM4ODQrLTAuNzQ1MSAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMjZ4IHNsb3dlcgogICB2YXJhcmdzLWlubGluZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3LjU1NTIrLTAuMTk0MSAgICAgPyAgICAgIDcuNjgyMSstMC4zMjY1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2OHggc2xvd2VyCiAgIHZhcmFyZ3Mtc3RyaWN0LW1vZGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMDAwNSstMC42NDQ0ICAgICAgICAgICAg
OC41NzYyKy0wLjA5ODIgICAgICAgICAgbWlnaHQgYmUgMS4wNDk1eCBmYXN0ZXIKICAgdmFyYXJn
cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC43MTU3Ky0wLjM1
NDkgICAgICAgICAgICA4LjU3NDMrLTAuMzY0OSAgICAgICAgICBtaWdodCBiZSAxLjAxNjV4IGZh
c3RlcgogICB3ZWlyZC1pbmxpbmluZy1jb25zdC1wcm9wICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLjk4MDArLTAuMTM1NSAgICAgPyAgICAgIDIuMDAxNistMC4xNDA3ICAgICAgICA/IG1pZ2h0
IGJlIDEuMDEwOXggc2xvd2VyCgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2LjM0NjkrLTAuMDIwNyAgICAgICAgICAgIDYuMzQ1MistMC4wMTU3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDAwM3ggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApBc21CZW5j
aDoKICAgYmlnZmliLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQx
NC45MTMxKy00LjE0MzYgICAgICAgICAgNDExLjgzNTkrLTMuOTIxOCAgICAgICAgCiAgIGNyYXku
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNDguNzY0NSstNy4w
NDY5ICAgICAgICAgIDM0NC42MDQ5Ky0xLjcwMjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTIxeCBm
YXN0ZXIKICAgZHJ5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDM5My44Mjk3Ky03LjUwMDkgICAgID8gICAgNDA1Ljg4MzErLTMwLjU0NTkgICAgICAgPyBtaWdo
dCBiZSAxLjAzMDZ4IHNsb3dlcgogICBGbG9hdE1NLmMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjY1LjcyNjMrLTYuNzcxNiAgICAgPyAgICA2NzIuMzg1MistMy4zNTUy
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMHggc2xvd2VyCiAgIGdjYy1sb29wcy5jcHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM0MzIuODM4MCstMTkuNTU1NiAgICA/ICAgMzQ1
OC4xODc2Ky0yOC4zNTEzICAgICAgID8KICAgbi1ib2R5LmMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDc1MS4xNzE4Ky0zLjk4MzUgICAgICAgICAgNzQ5LjEwMDYrLTIu
NjAyMiAgICAgICAgCiAgIFF1aWNrc29ydC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAzNzAuNzI2NCstMy41NjMzICAgICAgICAgIDM2OC40NTczKy0xLjQ0NTcgICAgICAg
IAogICBzdGVwYW5vdl9jb250YWluZXIuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAzMTU3
LjM2OTkrLTIxLjM0NDEgICAgPyAgIDMxNzQuMjYxNCstMjcuOTA4NyAgICAgICA/CiAgIFRvd2Vy
cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTcuMzA4MCstMy4z
MDg2ICAgICAgICAgIDI1NS43MzA4Ky0zLjA0NzcgICAgICAgIAoKICAgPGdlb21ldHJpYz4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY3NS45MDk5Ky0yLjcyMDggICAgID8g
ICAgNjc3LjExODkrLTYuNDExNyAgICAgICAgPyBtaWdodCBiZSAxLjAwMTh4IHNsb3dlcgoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b2cgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAKQ29tcHJlc3Npb25CZW5jaDoKICAgaHVmZm1hbiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNC40MTE4Ky0wLjY4OTggICAgID8gICAgIDM0LjU5
NTIrLTAuODI5OCAgICAgICAgPwogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjQ0Ljk2MjIrLTEuODA3NCAgICAgPyAgICAyNDYuNjU4NystNC4xNDcw
ICAgICAgICA/CiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMzAuNTIyNSstMy4xMDE0ICAgICA/ICAgIDIzMS4yODYxKy01Ljk5NTUgICAgICAgID8K
ICAgYXJpdGhtZXRpYy1jb21wbGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDIyNi44
ODU4Ky0yLjEzMTUgICAgID8gICAgMjMwLjA1MjgrLTMuMjU5NCAgICAgICAgPyBtaWdodCBiZSAx
LjAxNDB4IHNsb3dlcgogICBhcml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAg
ICAgICAgICAgMjUwLjU4NjQrLTMuNzc3MSAgICAgICAgICAyNDguOTI1OSstMS45NTM3ICAgICAg
ICAKICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9yZGVyLTEgICAgICAgICAgICAgICAgICAgICAgIDI4
MC43MzQwKy00LjI4NjQgICAgICAgICAgMjc5Ljk1OTErLTIuNzk0NyAgICAgICAgCiAgIGFyaXRo
bWV0aWMtcHJlY2lzZS1vcmRlci0yICAgICAgICAgICAgICAgICAgICAgICAzMjQuODk4NCstMC43
Nzg4ICAgICAgICAgIDMyMy41ODUxKy0zLjA4OTkgICAgICAgIAogICBhcml0aG1ldGljLXNpbXBs
ZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAgMjkxLjk1MzIrLTIuOTk1NyAgICAgICAg
ICAyOTEuNjc1NistMi4yMTQ3ICAgICAgICAKICAgYXJpdGhtZXRpYy1zaW1wbGUtb3JkZXItMiAg
ICAgICAgICAgICAgICAgICAgICAgIDM0NS4zMjMwKy04LjU0NDUgICAgICAgICAgMzQwLjEzMDQr
LTYuMDcxOCAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICBsei1zdHJpbmcgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzMzLjQ3NjcrLTkuNzEzNCAgICAg
ICAgICAzMzEuNzY4NistNi43NDMwICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyMjUuMzg2MistMS4yNTA0ICAgICAgICAgIDIyNS4y
NjY0Ky0xLjI1NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMDA1eCBmYXN0ZXIKCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAg
ICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3VsdD4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjEzMTUrLTAuMTUzNCAgICAgICAgICAgNDMu
MDA2MCstMC4wODI5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDAyOXggZmFzdGVyCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278414</attachid>
            <date>2016-05-09 11:36:08 -0700</date>
            <delta_ts>2016-05-09 13:16:37 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>129232</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAwNTgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwNiBA
QAorMjAxNi0wNS0wOSAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBHZXR0ZXIgYW5kIHNldHRlciBvbiBzdXBlciBhcmUgY2FsbGVkIHdpdGggd3JvbmcgInRoaXMi
IG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ3MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTg4NTkxNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgY2Fs
bHMgdG8gJ3N1cGVyJyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLgorICAgICAgICBUaGUgcHJvYmxlbSBi
ZWZvcmUgaXMgd2Ugd2VyZSBwYXNzaW5nIHRoZSAnc3VwZXInIChpLmUsIHRoZSBwcm90b3R5cGUK
KyAgICAgICAgb2JqZWN0KSBhcyB0aGUgdGhpcyB2YWx1ZSB0byB0aGVzZSBnZXR0ZXJzL3NldHRl
cnMsIHdoaWNoIGlzIHdyb25nLiAKKyAgICAgICAgV2Ugc2hvdWxkIGJlIHBhc3NpbmcgdGhlIGNh
bGxlcidzIHRoaXMgdmFsdWUuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHRoaXMgYmVoYXZpb3Is
IEkndmUgaW50cm9kdWNlZCBmb3VyIG5ldyBvcGNvZGVzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5n
IERGRyBub2RlczoKKyAgICAgICAgLSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzIHwgR2V0QnlJZFdp
dGhUaGlzCisgICAgICAgIC0gb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyB8IFB1dEJ5SWRXaXRoVGhp
cworICAgICAgICAtIG9wX2dldF9ieV92YWxfd2l0aF90aGlzIHwgR2V0QnlWYWxXaXRoVGhpcwor
ICAgICAgICAtIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzIHwgUHV0QnlWYWxXaXRoVGhpcworCisg
ICAgICAgIFRoZXNlIGFyZSBpbXBsZW1lbnRlZCB3aXRoIG5vIG9wdGltaXphdGlvbnMuIFRoZSBm
dXR1cmUgcGxhbiBpcyAKKyAgICAgICAgdG8gdW5pdGUgdGhlbSB3aXRoIHRoZSAqYnlfaWQgYW5k
ICpieV92YWwgb3Bjb2RlcyBhbmQgbm9kZXM6CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTcyMTUKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRC
eVZhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkRGVyaXZlZENvbnN0cnVjdG9y
RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjppc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24pOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6ZW1pdEhvbWVPYmplY3RGb3JDYWxsZWUpOgorICAgICAgICAoSlNDOjplbWl0U3Vw
ZXJCYXNlRm9yQ2FsbGVlKToKKyAgICAgICAgKEpTQzo6ZW1pdEdldFN1cGVyRnVuY3Rpb25Gb3JD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpTdXBlck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6Ok5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRh
Z2dlZFRlbXBsYXRlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJhY2tldEFj
Y2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQb3N0Zml4Tm9kZTo6ZW1pdEJyYWNrZXQpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChKU0M6OlByZWZpeE5vZGU6OmVtaXRC
cmFja2V0KToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgIChK
U0M6OkFzc2lnbkRvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2Rp
ZnlEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25CcmFja2V0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKToK
KyAgICAgICAgKEpTQzo6Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpB
c3NpZ25tZW50RWxlbWVudE5vZGU6OmJpbmRWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBk
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OnB1dFdpdGhUaGlzKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEJ5SWRXaXRoVGhpcyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZhbFdp
dGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZVB1
dEJ5SWRXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVQdXRCeVZhbFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVB1dEJ5SWQpOgorICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuY3BwOgor
ICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNldHVwU2hhZG93Q2hpY2tlblBhY2tldCk6Cisg
ICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBGb3VyU3R1YkFyZ3NHUFIpOgorICAgICAg
ICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpDQ2FsbEhlbHBlcnM6OnNl
dHVwVGhyZWVTdHViQXJnc0dQUik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBU
d29TdHViQXJnc0ZQUik6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6c2V0dXBTdHViQXJn
dW1lbnRzMTM0KToKKyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjphcmd1
bWVudFJlZ2lzdGVyRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9p
ZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdFNsb3dfb3BfcHV0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNz
LWV4Y2VwdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAodGVzdC5mb29Qcm9wKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0
IGZvbyk6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBlLmdldCB4KToKKyAgICAgICAgKHRlc3Qu
QSk6CisgICAgICAgICh0ZXN0LkIpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5iYXIpOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5iYXopOgorICAgICAgICAodGVzdC5mb28pOgorICAg
ICAgICAodGVzdC5mdW5jKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuc2V0IGZvbyk6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy10ZHouanM6IEFkZGVk
LgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoc2hvdWxkVGhy
b3dURFopOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5nZXQgZm9vKToKKyAgICAgICAgKHRl
c3QuQS5wcm90b3R5cGUuc2V0IGZvbyk6CisgICAgICAgICh0ZXN0LkEpOgorICAgICAgICAodGVz
dC5mb29Qcm9wKToKKyAgICAgICAgKHRlc3QuQik6CisgICAgICAgICh0ZXN0LkMpOgorICAgICAg
ICAodGVzdC5EKToKKyAgICAgICAgKHRlc3QuRSk6CisgICAgICAgICh0ZXN0LkYpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanM6IEFkZGVkLgorICAgICAg
ICAoYXNzZXJ0KToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAoZnVuYyk6CisgICAgICAgICh0
ZXN0LkEpOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAo
dGVzdC5BLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5z
ZXQgdmFsdWUpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAg
ICAodGVzdC5CKToKKyAgICAgICAgKHRlc3QudmFsdWUpOgorICAgICAgICAodGVzdC5BLnByb3Rv
dHlwZS5nZXQgZnVuYyk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLmluYyk6CisgICAgICAg
ICh0ZXN0LkIucHJvdG90eXBlLmRlYyk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLnByZUlu
Yyk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLnByZURlYyk6CisgICAgICAgICh0ZXN0LkIu
cHJvdG90eXBlLnBsdXNFcSk6CisgICAgICAgICh0ZXN0LkIucHJvdG90eXBlLm1pbnVzRXEpOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS50aW1lc0VxKToKKyAgICAgICAgKHRlc3QuQi5wcm90
b3R5cGUuZGl2RXEpOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5mdW5jRG90KToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuZnVuY0JyYWNrZXQpOgorICAgICAgICAodGVzdC5mb28pOgor
ICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5iYXopOgorICAgICAgICAodGVzdC5CLnByb3RvdHlw
ZS5qYXopOgorICAgICAgICAodGVzdC5CLnByb3RvdHlwZS5iYXIpOgorICAgICAgICAodGVzdC5C
LnByb3RvdHlwZS5pbmRleCk6CisgICAgICAgICh0ZXN0Lik6CisgICAgICAgICh0ZXN0LnByb3Rv
dHlwZS5iYXIpOgorICAgICAgICAodGVzdC5BLnByb3RvdHlwZS5zZXQgZm9vKToKKyAgICAgICAg
KHRlc3QuQS5wcm90b3R5cGUuZ2V0IGFycmF5KToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUu
Z2V0IGZvbyk6CisgICAgICAgICh0ZXN0Lm9iaik6CisgICAgICAgICh0ZXN0LkEucHJvdG90eXBl
LmdldCBjYWxsKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0IGFwcGx5KToKKyAgICAg
ICAgKHRlc3QuQi5wcm90b3R5cGUuZm9vKToKKyAgICAgICAgKHRlc3QuQS5wcm90b3R5cGUuZ2V0
IGkpOgorCiAyMDE2LTA1LTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NPQ09BXSBEaXNhYmxlIEhBVkVfRFRSQUNFIGF0IGJ1aWxkIHRpbWUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHJl
dmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDE1IEBACiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfdHJ5X2dldF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2J5X2lkIiwgImxlbmd0aCIgOiA5ICB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyIsICJsZW5ndGgiIDogNSB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMiLCAibGVuZ3RoIiA6IDUg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3Ro
IiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3B1dF9ieV9pZCIsICJsZW5ndGgi
IDogOSB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0X2J5X2lkX3dpdGhfdGhpcyIs
ICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZGVsX2J5X2lkIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfYnlfdmFsIiwg
Imxlbmd0aCIgOiA2IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFsIiwg
Imxlbmd0aCIgOiA1IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9wdXRfYnlfdmFsX3dp
dGhfdGhpcyIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcHV0
X2J5X3ZhbF9kaXJlY3QiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2RlbF9ieV92YWwiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3B1dF9ieV9pbmRleCIsICJsZW5ndGgiIDogNCB9LApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgJKHJldmlzaW9uIDIwMDU4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDIxIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCgKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgQVNTRVJUKG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdID4gNCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
Y2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICBBU1NFUlQob3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF0gPiA0KTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBv
cF9wdXRfc2V0dGVyX2J5X2lkOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXSA+IDQpOwpAQCAtMjAzLDEyICsyMTgsMjAgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmVxOgogICAgIGNhc2Ugb3BfZXE6CiAgICAgY2FzZSBv
cF9wdXNoX3dpdGhfc2NvcGU6CisgICAgY2FzZSBvcF9nZXRfYnlfaWRfd2l0aF90aGlzOgogICAg
IGNhc2Ugb3BfZGVsX2J5X3ZhbDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF0gPiAzKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOiB7
CisgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDQpOworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2Ugb3BfaW5zdGFuY2VvZl9jdXN0b206CiAgICAg
Y2FzZSBvcF9oYXNfc3RydWN0dXJlX3Byb3BlcnR5OgogICAgIGNhc2Ugb3BfY29uc3RydWN0X3Zh
cmFyZ3M6CkBAIC0zMTYsNiArMzM5LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbAogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3dp
dGhfdGhpczoKKyAgICBjYXNlIG9wX3B1dF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3Bf
cHV0X2dldHRlcl9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9zZXR0ZXJfYnlfaWQ6CiAgICAgY2Fz
ZSBvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZDoKQEAgLTM3MSw2ICszOTYsOCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6
CiAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0
aF90aGlzOgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIG9wX292ZXJy
aWRlc19oYXNfaW5zdGFuY2U6CiAgICAgY2FzZSBvcF9pbnN0YW5jZW9mOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIwMDU4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTE3LDExICsxMTE3LDQ3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICBkdW1wVmFsdWVQcm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRl
ZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImdldF9ieV9pZF93aXRoX3RoaXMiKTsKKyAgICAg
ICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIxID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgICAgIGludCBpZDAgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgaWROYW1lKGlk
MCwgaWRlbnRpZmllcihpZDApKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICAgICAg
aW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfdmFsX3dpdGhfdGhp
cyIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5h
bWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMiku
ZGF0YSgpLCByZWdpc3Rlck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWQiKTsKICAgICAgICAg
ICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF93
aXRoX3RoaXM6IHsKKyAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgaWQw
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF93aXRoX3RoaXMiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVz
LCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KHIyKS5kYXRhKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczogeworICAgICAgICAgICAgaW50IHIwID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IHIz
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfdmFsX3dpdGhfdGhpcyIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCByZWdpc3Rl
ck5hbWUocjMpLmRhdGEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDEwLDYgKzI0MTAsMTggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRCeQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lz
dGVySUQqIHRoaXNWYWwsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQoreworICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9wZXJ0aWVz
IHNob3VsZCBiZSBoYW5kbGVkIHdpdGggZ2V0X2J5X3ZhbC4iKTsKKworICAgIGVtaXRPcGNvZGUo
b3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwo
ZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIXBhcnNlSW5kZXgocHJvcGVydHkpLCAiSW5kZXhlZCBwcm9w
ZXJ0aWVzIHNob3VsZCBiZSBoYW5kbGVkIHdpdGggcHV0X2J5X3ZhbC4iKTsKQEAgLTI0MzMsNiAr
MjQ0NSwyMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAgICAg
cmV0dXJuIHZhbHVlOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCit7CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMgc2hvdWxk
IGJlIGhhbmRsZWQgd2l0aCBwdXRfYnlfdmFsLiIpOworCisgICAgdW5zaWduZWQgcHJvcGVydHlJ
bmRleCA9IGFkZENvbnN0YW50KHByb3BlcnR5KTsKKworICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5
X2lkX3dpdGhfdGhpcyk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFsdWUtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eUluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQodmFsdWUtPmluZGV4KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlLCBQcm9wZXJ0
eU5vZGU6OlB1dFR5cGUgcHV0VHlwZSkKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFwYXJz
ZUluZGV4KHByb3BlcnR5KSwgIkluZGV4ZWQgcHJvcGVydGllcyBzaG91bGQgYmUgaGFuZGxlZCB3
aXRoIHB1dF9ieV92YWwoZGlyZWN0KS4iKTsKQEAgLTI1NTcsNiArMjU4NCwxNiBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5CiAgICAgcmV0dXJuIGRzdDsKIH0KIAor
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeVZhbChSZWdpc3RlcklEKiBk
c3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVnaXN0ZXJJRCog
cHJvcGVydHkpCit7CisgICAgZW1pdE9wY29kZShvcF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGtpbGwoZHN0KSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0aGlzVmFs
dWUtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgo
KSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCiB7CiAgICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxl
ID0gbmV3QXJyYXlQcm9maWxlKCk7CkBAIC0yNTY5LDYgKzI2MDYsMTcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeVZhbChSZWdpc3RlcklEKiBiYXNl
LCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIFJlZ2lzdGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHRoaXNWYWx1ZS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb3BlcnR5LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQodmFsdWUtPmlu
ZGV4KCkpOworCisgICAgcmV0dXJuIHZhbHVlOworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKICAgICBVbmxpbmtlZEFycmF5UHJvZmls
ZSBhcnJheVByb2ZpbGUgPSBuZXdBcnJheVByb2ZpbGUoKTsKQEAgLTQyMTUsNiArNDI2MywxNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvYWRECiAgICAgVmFyaWFibGUg
cHJvdG9TY29wZVZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0
b3JQcml2YXRlTmFtZSk7CiAgICAgcmV0dXJuIGVtaXRHZXRGcm9tU2NvcGUobmV3VGVtcG9yYXJ5
KCksIGVtaXRMb2FkQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudChwcm9wZXJ0eU5hbWVz
KCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpLCBwcm90b1Njb3BlVmFyLCBUaHJvd0lm
Tm90Rm91bmQpOwogfQorCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW5zdXJlVGhp
cygpCit7CisgICAgaWYgKGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVy
aXZlZCAmJiBuZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBpc1N1cGVyQ2Fs
bFVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgICAgICBlbWl0TG9hZFRoaXNGcm9tQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOworCisgICAgaWYgKGNvbnN0cnVjdG9yS2lu
ZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBpc0Rlcml2ZWRDb25zdHJ1Y3RvckNv
bnRleHQoKSkKKyAgICAgICAgZW1pdFREWkNoZWNrKHRoaXNSZWdpc3RlcigpKTsKKworICAgIHJl
dHVybiB0aGlzUmVnaXN0ZXIoKTsKK30KICAgICAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlz
VGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZp
c2lvbiAyMDA1ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwMiw2ICs1MDIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHJvZmlsZUNvbnRyb2xGbG93KGludCk7CiAgICAg
ICAgIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52
aXJvbm1lbnQoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBSZWdpc3RlcklEKiBlbnN1cmVU
aGlzKCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWROZXdUYXJnZXRGcm9t
QXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogCkBAIC01NTAsMTIgKzU1MSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0VHJ5R2V0QnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwg
UmVnaXN0ZXJJRCogdGhpc1ZhbCwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiB0aGlzVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSwgUHJvcGVydHlOb2RlOjpQdXRUeXBlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGV0ZUJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRHZXRCeVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQq
IHByb3BlcnR5KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5VmFsKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogdGhpc1ZhbHVlLCBSZWdpc3RlcklE
KiBwcm9wZXJ0eSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRHZXRBcmd1bWVudEJ5VmFsKFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHkpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHV0QnlWYWwoUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0
ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHRoaXNWYWx1ZSwgUmVn
aXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdERpcmVjdFB1dEJ5VmFsKFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5LCBSZWdpc3RlcklEKiB2YWx1ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxldGVC
eVZhbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIHByb3Bl
cnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1dEJ5SW5kZXgoUmVnaXN0ZXJJRCogYmFz
ZSwgdW5zaWduZWQgaW5kZXgsIFJlZ2lzdGVySUQqIHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlz
aW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDEyICsxNDUsOCBAQCBSZWdpc3RlcklE
KiBSZWdFeHBOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0CiAKIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSAmJiBnZW5lcmF0b3IuaXNTdXBlckNhbGxVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkK
LSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVu
dmlyb25tZW50KCk7Ci0KLSAgICBpZiAobV9zaG91bGRBbHdheXNFbWl0VERaQ2hlY2sgfHwgZ2Vu
ZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBn
ZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCi0gICAgICAgIGdlbmVyYXRv
ci5lbWl0VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLQorICAgIGdlbmVyYXRv
ci5lbnN1cmVUaGlzKCk7CisgICAgVU5VU0VEX1BBUkFNKG1fc2hvdWxkQWx3YXlzRW1pdFREWkNo
ZWNrKTsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC0xNjIsMTkgKzE1OCw2IEBAIFJlZ2lzdGVySUQqIFRoaXNOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWMKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN1
cGVyTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIFN1cGVyTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRD
b25zdHJ1Y3RvckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJ
ZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpLCBnZW5lcmF0b3IuZW1pdExvYWREZXJp
dmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7Ci0KLSAgICBSZWdpc3RlcklE
IGNhbGxlZTsKLSAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsKLSAgICByZXR1
cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCks
ICZjYWxsZWUsIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkudW5kZXJzY29yZVByb3RvKTsKLX0K
LQogc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IpCiB7CiAgICAgaWYgKGdlbmVyYXRvci5pc0Rlcml2ZWRDbGFzc0Nv
bnRleHQoKSB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpIHsKQEAg
LTE5Myw2ICsxNzYsMjIgQEAgc3RhdGljIFJlZ2lzdGVySUQqIGVtaXRTdXBlckJhc2VGb3JDYWxs
ZQogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBob21lT2JqZWN0LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2Nv
cmVQcm90byk7CiB9CiAKK3N0YXRpYyBSZWdpc3RlcklEKiBlbWl0R2V0U3VwZXJGdW5jdGlvbkZv
ckNvbnN0cnVjdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQoreworICAgIGlmIChnZW5l
cmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZW5lcmF0b3IuZW1p
dExvYWREZXJpdmVkQ29uc3RydWN0b3JGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVu
dCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLnVuZGVyc2NvcmVQcm90byk7CisKKyAgICBS
ZWdpc3RlcklEIGNhbGxlZTsKKyAgICBjYWxsZWUuc2V0SW5kZXgoSlNTdGFjazo6Q2FsbGVlKTsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgJmNhbGxlZSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS51bmRlcnNjb3JlUHJvdG8pOwor
fQorCitSZWdpc3RlcklEKiBTdXBlck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit7CisgICAgUmVnaXN0ZXJJRCogcmVzdWx0
ID0gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpOworICAgIHJldHVybiBnZW5lcmF0
b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihk
c3QpLCByZXN1bHQpOworfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTmV3
VGFyZ2V0Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFJlZ2lzdGVy
SUQqIE5ld1RhcmdldE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCkBAIC0zMDksMTMgKzMwOCwyMSBAQCBSZWdpc3RlcklEKiBU
YWdnZWRUZW1wbGF0ZU5vZGU6OmVtaXRCeXRlCiAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CiAgICAgICAgIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYmFzZS5nZXQo
KSwgYnJhY2tldC0+YmFzZSgpKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BlcnR5
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGJyYWNrZXQtPnN1YnNjcmlwdCgpKTsKLSAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2Uu
Z2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICAgICAgaWYgKGJyYWNrZXQtPmJhc2UoKS0+aXNT
dXBlck5vZGUoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9
IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgICAgICB0YWcgPSBnZW5lcmF0b3IuZW1p
dEdldEJ5VmFsKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVl
LmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGFn
ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2Uu
Z2V0KCksIHByb3BlcnR5LmdldCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV90
YWctPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KG1fdGFnKTsKICAgICAgICAgYmFzZSA9IGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICAgICAgYmFzZSA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShiYXNlLmdldCgpLCBkb3QtPmJhc2UoKSk7Ci0gICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRvdC0+aWRlbnRp
ZmllcigpKTsKKyAgICAgICAgaWYgKGRvdC0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKSB7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRo
aXMoKTsKKyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgZG90LT5pZGVudGlm
aWVyKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRhZyA9IGdlbmVyYXRvci5lbWl0
R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGRvdC0+aWRlbnRp
ZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGVtcGxhdGVPYmplY3Qg
PSBnZW5lcmF0b3IuZW1pdEdldFRlbXBsYXRlT2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgdGhpcyk7CkBAIC02MjAsMjkgKzYyNywzNyBAQCBzdGF0aWMgYm9vbCBpc05vbkluZGV4U3Ry
aW5nRWxlbWVudChFeHByCiBSZWdpc3RlcklEKiBCcmFja2V0QWNjZXNzb3JOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewog
ICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFNob3Vs
ZCB3ZSBnZW5lcmF0ZSB0aGUgcHJvZmlsZXIgaW5mbz8KKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCk7CisgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwor
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3VwZXJCYXNlID0gZW1pdFN1cGVyQmFzZUZvckNh
bGxlZShnZW5lcmF0b3IpOwogICAgICAgICBpZiAoaXNOb25JbmRleFN0cmluZ0VsZW1lbnQoKm1f
c3Vic2NyaXB0KSkgewogICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWQgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpOwotICAgICAgICAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3Qp
LCBlbWl0U3VwZXJCYXNlRm9yQ2FsbGVlKGdlbmVyYXRvciksIGlkKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIHN1cGVyQmFzZS5nZXQoKSwgdGhp
c1ZhbHVlLmdldCgpLCBpZCk7CisgICAgICAgIH0gZWxzZSAgeworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlwdCk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdC5nZXQoKSwgc3Vw
ZXJCYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHN1YnNjcmlwdC5nZXQoKSk7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLmZpbmFs
RGVzdGluYXRpb24oZHN0KSwgZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpLCBnZW5l
cmF0b3IuZW1pdE5vZGUobV9zdWJzY3JpcHQpKTsKKworICAgICAgICBnZW5lcmF0b3IuZW1pdEV4
cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0KCks
IGRpdm90RW5kKCkpOworICAgICAgICByZXR1cm4gZmluYWxEZXN0LmdldCgpOwogICAgIH0KIAog
ICAgIFJlZ2lzdGVySUQqIHJldDsKLSAgICBSZWdpc3RlcklEKiBmaW5hbERlc3QgPSBnZW5lcmF0
b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmaW5hbERl
c3QgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwogCiAgICAgaWYgKGlzTm9uSW5k
ZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpIHsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9iYXNlKTsKLSAgICAgICAgcmV0ID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3Ry
aW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUoKSk7CisgICAgICAgIHJldCA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChmaW5hbERlc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0
cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRT
aWRlKG1fYmFzZSwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgbV9zdWJzY3JpcHQtPmlzUHVy
ZShnZW5lcmF0b3IpKTsKICAgICAgICAgUmVnaXN0ZXJJRCogcHJvcGVydHkgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUobV9zdWJzY3JpcHQpOwotICAgICAgICByZXQgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
VmFsKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgcHJvcGVydHkpOworICAgICAgICByZXQgPSBnZW5l
cmF0b3IuZW1pdEdldEJ5VmFsKGZpbmFsRGVzdC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJvcGVydHkp
OwogICAgIH0KIAogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2
b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUo
ZmluYWxEZXN0LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUoZmluYWxEZXN0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTY1MCwxMCArNjY1LDE2IEBAIFJlZ2lzdGVySUQqIEJy
YWNrZXRBY2Nlc3Nvck5vZGU6OmVtaXRCeXQKIAogUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gbV9iYXNlLT5pc1N1cGVyTm9k
ZSgpID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fYmFzZSk7CisgICAgYm9vbCBiYXNlSXNTdXBlciA9IG1fYmFzZS0+aXNTdXBlck5vZGUo
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVy
QmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogZ2VuZXJhdG9yLmVtaXROb2RlKG1fYmFzZSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIGZpbmFsRGVzdCA9IGdlbmVyYXRvci5maW5hbERl
c3RpbmF0aW9uKGRzdCk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CisgICAgUmVnaXN0ZXJJRCogcmV0
OworICAgIGlmIChiYXNlSXNTdXBlcikgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhp
c1ZhbHVlID0gZ2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeUlkKGZpbmFsRGVzdCwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBtX2lk
ZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0ID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZp
bmFsRGVzdCwgYmFzZS5nZXQoKSwgbV9pZGVudCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShmaW5hbERlc3QsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIHJl
dDsKIH0KQEAgLTc1NSwxMCArNzc2LDExIEBAIFJlZ2lzdGVySUQqIEV2YWxGdW5jdGlvbkNhbGxO
b2RlOjplbWl0QnkKIAogUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiBmdW5jID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7
Ci0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVz
dGluYXRpb24oZHN0LCBmdW5jLmdldCgpKTsKLSAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVu
dHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGlmIChtX2V4cHItPmlzU3VwZXJOb2RlKCkpIHsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBlbWl0R2V0U3VwZXJGdW5jdGlvbkZv
ckNvbnN0cnVjdChnZW5lcmF0b3IpOworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJu
VmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOworICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOworCiAg
ICAgICAgIEFTU0VSVChnZW5lcmF0b3IuaXNDb25zdHJ1Y3RvcigpIHx8IGdlbmVyYXRvci5kZXJp
dmVkQ29udGV4dFR5cGUoKSA9PSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3Rv
ckNvbnRleHQpOwogICAgICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09
IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuZGVyaXZlZENvbnRleHRUeXBl
KCkgPT0gRGVyaXZlZENvbnRleHRUeXBlOjpEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdl
bmVyYXRvci5uZXdUYXJnZXQoKSk7CkBAIC03ODIsNiArODA0LDkgQEAgUmVnaXN0ZXJJRCogRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0QgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJldDsK
ICAgICB9CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmMgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9leHByKTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3Iu
ZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmMuZ2V0KCkpOworICAgIENhbGxBcmd1bWVudHMgY2Fs
bEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGNh
bGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJlZ2lzdGVy
SUQqIHJldCA9IGdlbmVyYXRvci5lbWl0Q2FsbEluVGFpbFBvc2l0aW9uKHJldHVyblZhbHVlLmdl
dCgpLCBmdW5jLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxl
VHlwZShyZXR1cm5WYWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTky
MiwyMCArOTQ3LDMxIEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjplbWkK
ICAgICB9CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZnVuY3Rpb247CisgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHRoaXNSZWdpc3RlcjsKKyAgICBpZiAoYmFzZUlzU3VwZXIpIHsKKyAgICAgICAg
Ly8gTm90ZSB0aGF0IHdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIG9uY2UgYmVjYXVzZSB3ZSBlaXRo
ZXIgaGF2ZSBhIG5vbi1URFogdGhpcyBvciB3ZSB0aHJvdy4gT25jZSB3ZSBoYXZlIGEgbm9uLVRE
WiB0aGlzLCB3ZSBjYW4ndCBjaGFuZ2UgaXRzIHZhbHVlIGJhY2sgdG8gVERaLgorICAgICAgICB0
aGlzUmVnaXN0ZXIgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgIH0KICAgICBpZiAoc3Vi
c2NyaXB0SXNOb25JbmRleFN0cmluZykgewogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhw
cmVzc2lvbkVuZCgpKTsKLSAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxT
dHJpbmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpKTsKKyAgICAgICAgaWYgKGJhc2VJc1N1
cGVyKQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzUmVnaXN0ZXIuZ2V0KCks
IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihtX3N1YnNjcmlwdCktPnZhbHVlKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShtX3N1YnNjcmlw
dCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oc3ViZXhwcmVzc2lvbkRp
dm90KCksIHN1YmV4cHJlc3Npb25TdGFydCgpLCBzdWJleHByZXNzaW9uRW5kKCkpOwotICAgICAg
ICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CisgICAgICAgIGlmIChiYXNl
SXNTdXBlcikKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNSZWdpc3Rlci5n
ZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3Qp
LCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHJldHVyblZhbHVlID0gZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0LCBmdW5j
dGlvbi5nZXQoKSk7CiAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwg
bV9hcmdzKTsKICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
RFpDaGVjayhnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3Rl
cigpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lz
dGVyKCksIHRoaXNSZWdpc3Rlci5nZXQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0TW92ZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBiYXNlLmdldCgpKTsKICAg
ICBSZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1
cm5WYWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFy
Z3VtZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKQEAgLTk1MSwxMyAr
OTg3LDE2IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXQKICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIGZ1bmN0aW9uLmdldCgpKTsKICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMo
Z2VuZXJhdG9yLCBtX2FyZ3MpOwogICAgIGJvb2wgYmFzZUlzU3VwZXIgPSBtX2Jhc2UtPmlzU3Vw
ZXJOb2RlKCk7Ci0gICAgaWYgKGJhc2VJc1N1cGVyKSB7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
VERaQ2hlY2soZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVt
aXRNb3ZlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIGdlbmVyYXRvci50aGlzUmVnaXN0
ZXIoKSk7Ci0gICAgfSBlbHNlCisgICAgaWYgKGJhc2VJc1N1cGVyKQorICAgICAgICBnZW5lcmF0
b3IuZW1pdE1vdmUoY2FsbEFyZ3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgZ2VuZXJhdG9yLmVuc3Vy
ZVRoaXMoKSk7CisgICAgZWxzZQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3Vt
ZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9iYXNlKTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Np
b25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgpLCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhw
cmVzc2lvbkVuZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZnVuY3Rpb24uZ2V0KCks
IGJhc2VJc1N1cGVyID8gZW1pdFN1cGVyQmFzZUZvckNhbGxlZShnZW5lcmF0b3IpIDogY2FsbEFy
Z3VtZW50cy50aGlzUmVnaXN0ZXIoKSwgbV9pZGVudCk7CisgICAgaWYgKGJhc2VJc1N1cGVyKSB7
CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzdXBlckJhc2UgPSBlbWl0U3VwZXJCYXNlRm9y
Q2FsbGVlKGdlbmVyYXRvcik7CisgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlJZChmdW5jdGlv
bi5nZXQoKSwgc3VwZXJCYXNlLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBt
X2lkZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGZ1bmN0
aW9uLmdldCgpLCBjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBtX2lkZW50KTsKICAgICBS
ZWdpc3RlcklEKiByZXQgPSBnZW5lcmF0b3IuZW1pdENhbGxJblRhaWxQb3NpdGlvbihyZXR1cm5W
YWx1ZS5nZXQoKSwgZnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdFByb2ZpbGVUeXBlKHJldHVyblZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOwogICAgIHJldHVybiByZXQ7CkBAIC05NzIsNyArMTAxMSwxMSBAQCBSZWdpc3RlcklEKiBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW1pCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZ1bmN0
aW9uOwogICAgIGJvb2wgZW1pdENhbGxDaGVjayA9ICFnZW5lcmF0b3IuaXNCdWlsdGluRnVuY3Rp
b24oKTsKICAgICBpZiAoZW1pdENhbGxDaGVjaykgewotICAgICAgICBmdW5jdGlvbiA9IGdlbmVy
YXRvci5lbWl0R2V0QnlJZChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0
KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05h
bWUoKSk7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwor
ICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRl
bXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIGdlbmVyYXRv
ci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuY2FsbFB1YmxpY05hbWUoKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5lcmF0b3IucHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmNhbGxQdWJsaWNOYW1lKCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQ2FsbChmdW5jdGlvbi5nZXQoKSwgcmVhbENh
bGwuZ2V0KCkpOwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmV0dXJuVmFsdWUgPSBn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QpOwpAQCAtMTAzOSw3ICsxMDgyLDExIEBAIFJl
Z2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmV0dXJuVmFsdWUgPSBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGZ1bmN0
aW9uLmdldCgpKTsKICAgICBib29sIGVtaXRDYWxsQ2hlY2sgPSAhZ2VuZXJhdG9yLmlzQnVpbHRp
bkZ1bmN0aW9uKCk7CiAgICAgaWYgKGVtaXRDYWxsQ2hlY2spIHsKLSAgICAgICAgZnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBi
YXNlLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5
UHVibGljTmFtZSgpKTsKKyAgICAgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkgeworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVU
aGlzKCk7CisgICAgICAgICAgICBmdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0QnlJZChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwg
Z2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5hcHBseVB1YmxpY05hbWUo
KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBnZW5l
cmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmFwcGx5UHVibGljTmFtZSgpKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRKdW1wSWZOb3RGdW5jdGlvbkFwcGx5KGZ1bmN0aW9uLmdl
dCgpLCByZWFsQ2FsbC5nZXQoKSk7CiAgICAgfQogICAgIGlmIChtYXlCZUNhbGwpIHsKQEAgLTEx
OTYsMTAgKzEyNDMsMTkgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVtaXRCcmFja2V0KEJ5
dAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9IGdlbmVyYXRvci5lbWl0Tm9kZShz
dWJzY3JpcHQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhicmFja2V0QWNj
ZXNzb3ItPmRpdm90KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBicmFja2V0QWNj
ZXNzb3ItPmRpdm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBw
cm9wZXJ0eS5nZXQoKSk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOworICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgp
KSB7CisgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAg
IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIH0gZWxz
ZQorICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCog
b2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgZ2VuZXJhdG9yLmVt
aXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAg
IGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVl
LmdldCgpKTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVy
YXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBwcm9wZXJ0eS5n
ZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRC
eVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUuZ2V0KCkpOwogICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
b2xkVmFsdWUpOwogfQpAQCAtMTIxMiwxNSArMTI2OCwyNSBAQCBSZWdpc3RlcklEKiBQb3N0Zml4
Tm9kZTo6ZW1pdERvdChCeXRlY29kCiAgICAgQVNTRVJUKG1fZXhwci0+aXNEb3RBY2Nlc3Nvck5v
ZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3RBY2Nlc3NvciA9IHN0YXRpY19jYXN0PERv
dEFjY2Vzc29yTm9kZSo+KG1fZXhwcik7CiAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2VOb2RlID0g
ZG90QWNjZXNzb3ItPmJhc2UoKTsKKyAgICBib29sIGJhc2VJc1N1cGVyID0gYmFzZU5vZGUtPmlz
U3VwZXJOb2RlKCk7CiAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBkb3RBY2Nlc3Nvci0+
aWRlbnRpZmllcigpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYmFzZU5vZGUpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhk
b3RBY2Nlc3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNz
b3ItPmRpdm90RW5kKCkpOwotICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRv
ci5lbWl0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGlkZW50
KTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHRoaXNWYWx1ZTsKKyAgICBpZiAoYmFzZUlzU3VwZXIpIHsKKyAgICAgICAgdGhpc1ZhbHVlID0g
Z2VuZXJhdG9yLmVuc3VyZVRoaXMoKTsKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0
KCksIGlkZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBiYXNlLmdldCgpLCBpZGVudCk7CiAgICAg
UmVnaXN0ZXJJRCogb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAg
Z2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVudCwgdmFs
dWUuZ2V0KCkpOworICAgIGlmIChiYXNlSXNTdXBlcikKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHZhbHVlLmdldCgpKTsK
KyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVu
dCwgdmFsdWUuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3Zl
VG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgb2xkVmFsdWUpOwogfQpAQCAtMTM5MywxMCArMTQ1
OSwxOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0QnJhY2tldChCeXRlCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGJyYWNrZXRBY2Nlc3Nvci0+ZGl2
b3QoKSwgYnJhY2tldEFjY2Vzc29yLT5kaXZvdFN0YXJ0KCksIGJyYWNrZXRBY2Nlc3Nvci0+ZGl2
b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5VmFs
KHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsKKyAgICBSZWdpc3Rl
cklEKiB2YWx1ZTsKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1ZhbHVlOworICAgIGlmIChi
YXNlTm9kZS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICB0aGlzVmFsdWUgPSBnZW5lcmF0b3Iu
ZW5zdXJlVGhpcygpOworICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwocHJv
cERzdC5nZXQoKSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7
CisgICAgfSBlbHNlCisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChwcm9w
RHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgZW1pdEluY09yRGVj
KGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVz
c2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCB2YWx1ZSk7CisgICAg
aWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
VmFsKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCksIHZhbHVlKTsK
KyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJv
cGVydHkuZ2V0KCksIHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRv
RGVzdGluYXRpb25JZk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogfQpAQCAtMTQxMiwxMCAr
MTQ4NywxOSBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHByb3BEc3QgPSBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRz
dCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZv
dCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7
Ci0gICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvcERzdC5n
ZXQoKSwgYmFzZS5nZXQoKSwgaWRlbnQpOworICAgIFJlZ2lzdGVySUQqIHZhbHVlOworICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CisgICAgaWYgKGJhc2VOb2RlLT5pc1N1cGVyTm9k
ZSgpKSB7CisgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0
KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQpOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0R2V0QnlJZChwcm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBpZGVudCk7
CiAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOwogICAgIGdl
bmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVu
ZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQsIHZhbHVl
KTsKKyAgICBpZiAoYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpCisgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIGlkZW50LCB2YWx1ZSk7Cisg
ICAgZWxzZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgaWRlbnQs
IHZhbHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0
KCksIGRpdm90RW5kKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25J
Zk5lZWRlZChkc3QsIHByb3BEc3QuZ2V0KCkpOwogfQpAQCAtMjAxNSwxMCArMjA5OSwxNCBAQCBS
ZWdpc3RlcklEKiBBc3NpZ25Eb3ROb2RlOjplbWl0Qnl0ZWNvZGUoCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmRlc3RpbmF0aW9uRm9yQXNzaWduUmVzdWx0KGRzdCk7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZSh2YWx1
ZS5nZXQoKSwgbV9yaWdodCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZv
dCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgIFJlZ2lzdGVySUQqIGZvcndhcmRS
ZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgp
IDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0
aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0
UHV0QnlJZChiYXNlLmdldCgpLCBtX2lkZW50LCBmb3J3YXJkUmVzdWx0KTsKLSAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwg
Zm9yd2FyZFJlc3VsdCk7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGZvcndhcmRSZXN1bHQgPSAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJh
dG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZOZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihy
ZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0KCkpOworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2Rl
KCkpIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5l
bnN1cmVUaGlzKCk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0
aGlzVmFsdWUuZ2V0KCksIG1faWRlbnQsIGZvcndhcmRSZXN1bHQuZ2V0KCkpOworICAgIH0gZWxz
ZQorICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgZm9y
d2FyZFJlc3VsdC5nZXQoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShmb3J3YXJk
UmVzdWx0LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgIHJldHVybiBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGZvcndhcmRSZXN1bHQuZ2V0KCkp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVhZE1vZGlmeURvdE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIwMjgsMTEgKzIxMTYs
MjEgQEAgUmVnaXN0ZXJJRCogUmVhZE1vZGlmeURvdE5vZGU6OmVtaXRCeXRlYwogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKG1f
YmFzZSwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzLCBtX3JpZ2h0LT5pc1B1cmUoZ2VuZXJhdG9yKSk7
CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKHN1YmV4cHJlc3Npb25EaXZvdCgp
LCBzdWJleHByZXNzaW9uU3RhcnQoKSwgc3ViZXhwcmVzc2lvbkVuZCgpKTsKLSAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5SWQoZ2VuZXJhdG9yLnRlbXBE
ZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsKKyAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gdmFsdWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZTsKKyAgICBpZiAo
bV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5l
bnN1cmVUaGlzKCk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeUlkKGdlbmVy
YXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBt
X2lkZW50KTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldEJ5
SWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNlLmdldCgpLCBtX2lkZW50KTsK
ICAgICBSZWdpc3RlcklEKiB1cGRhdGVkVmFsdWUgPSBlbWl0UmVhZE1vZGlmeUFzc2lnbm1lbnQo
Z2VuZXJhdG9yLCBnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHZhbHVlLmdldCgpKSwg
dmFsdWUuZ2V0KCksIG1fcmlnaHQsIHN0YXRpY19jYXN0PEpTQzo6T3BlcmF0b3I+KG1fb3BlcmF0
b3IpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSwgbV9yaWdodC0+cmVz
dWx0RGVzY3JpcHRvcigpKSk7CiAKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmV0ID0g
Z2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7
CisgICAgUmVnaXN0ZXJJRCogcmV0OworICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpCisg
ICAgICAgIHJldCA9IGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCB0aGlzVmFsdWUu
Z2V0KCksIG1faWRlbnQsIHVwZGF0ZWRWYWx1ZSk7CisgICAgZWxzZQorICAgICAgICByZXQgPSBn
ZW5lcmF0b3IuZW1pdFB1dEJ5SWQoYmFzZS5nZXQoKSwgbV9pZGVudCwgdXBkYXRlZFZhbHVlKTsK
ICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RTdGFydCgp
LCBkaXZvdEVuZCgpKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtMjA1NiwxMCArMjE1NCwxOSBA
QCBSZWdpc3RlcklEKiBBc3NpZ25CcmFja2V0Tm9kZTo6ZW1pdEJ5dGVjCiAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIFJlZ2lzdGVySUQqIGZvcndhcmRSZXN1bHQgPSAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpID8gcmVzdWx0LmdldCgpIDogZ2VuZXJhdG9yLm1vdmVUb0Rlc3RpbmF0aW9uSWZO
ZWVkZWQoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihyZXN1bHQuZ2V0KCkpLCByZXN1bHQuZ2V0
KCkpOwogCi0gICAgaWYgKGlzTm9uSW5kZXhTdHJpbmdFbGVtZW50KCptX3N1YnNjcmlwdCkpCi0g
ICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBzdGF0aWNfY2FzdDxTdHJp
bmdOb2RlKj4obV9zdWJzY3JpcHQpLT52YWx1ZSgpLCBmb3J3YXJkUmVzdWx0KTsKLSAgICBlbHNl
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVydHkuZ2V0
KCksIGZvcndhcmRSZXN1bHQpOworICAgIGlmIChpc05vbkluZGV4U3RyaW5nRWxlbWVudCgqbV9z
dWJzY3JpcHQpKSB7CisgICAgICAgIGlmIChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhp
cygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNW
YWx1ZS5nZXQoKSwgc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG1fc3Vic2NyaXB0KS0+dmFsdWUo
KSwgZm9yd2FyZFJlc3VsdCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihtX3N1YnNj
cmlwdCktPnZhbHVlKCksIGZvcndhcmRSZXN1bHQpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
IChtX2Jhc2UtPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpLCBmb3J3YXJkUmVzdWx0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpLCBmb3J3YXJkUmVzdWx0
KTsKKyAgICB9CiAKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKGZvcndhcmRSZXN1bHQs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9E
ZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgZm9yd2FyZFJlc3VsdCk7CkBAIC0yMDczLDExICsyMTgw
LDIwIEBAIFJlZ2lzdGVySUQqIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6ZW1pdEIKICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gcHJvcGVydHkgPSBnZW5lcmF0b3IuZW1pdE5vZGVGb3JMZWZ0SGFuZFNp
ZGUobV9zdWJzY3JpcHQsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9yaWdodC0+aXNQdXJlKGdl
bmVyYXRvcikpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhzdWJleHByZXNz
aW9uRGl2b3QoKSwgc3ViZXhwcmVzc2lvblN0YXJ0KCksIHN1YmV4cHJlc3Npb25FbmQoKSk7Ci0g
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbChnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCksIHByb3BlcnR5LmdldCgpKTsK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWU7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRo
aXNWYWx1ZTsKKyAgICBpZiAobV9iYXNlLT5pc1N1cGVyTm9kZSgpKSB7CisgICAgICAgIHRoaXNW
YWx1ZSA9IGdlbmVyYXRvci5lbnN1cmVUaGlzKCk7CisgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9y
LmVtaXRHZXRCeVZhbChnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCks
IHRoaXNWYWx1ZS5nZXQoKSwgcHJvcGVydHkuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCBiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdXBkYXRl
ZFZhbHVlID0gZW1pdFJlYWRNb2RpZnlBc3NpZ25tZW50KGdlbmVyYXRvciwgZ2VuZXJhdG9yLmZp
bmFsRGVzdGluYXRpb24oZHN0LCB2YWx1ZS5nZXQoKSksIHZhbHVlLmdldCgpLCBtX3JpZ2h0LCBz
dGF0aWNfY2FzdDxKU0M6Ok9wZXJhdG9yPihtX29wZXJhdG9yKSwgT3BlcmFuZFR5cGVzKFJlc3Vs
dFR5cGU6OnVua25vd25UeXBlKCksIG1fcmlnaHQtPnJlc3VsdERlc2NyaXB0b3IoKSkpOwogCiAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgIGdlbmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgcHJvcGVy
dHkuZ2V0KCksIHVwZGF0ZWRWYWx1ZSk7CisgICAgaWYgKG1fYmFzZS0+aXNTdXBlck5vZGUoKSkK
KyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0
KCksIHByb3BlcnR5LmdldCgpLCB1cGRhdGVkVmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdXBkYXRlZFZh
bHVlKTsKICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHVwZGF0ZWRWYWx1ZSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKIAogICAgIHJldHVybiB1cGRhdGVkVmFsdWU7CkBAIC0yNDA5
LDE4ICsyNTI1LDI2IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcK
ICAgICBpZiAobV9sZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBEb3RBY2Nl
c3Nvck5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihtX2xl
eHByKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBhc3NpZ25Ob2RlLT5pZGVu
dGlmaWVyKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGJhc2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
YXNzaWduTm9kZS0+YmFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgpLCBhc3NpZ25Ob2RlLT5kaXZv
dFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChhc3NpZ25O
b2RlLT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBnZW5lcmF0
b3IuZW1pdFByb2ZpbGVUeXBlKHByb3BlcnR5TmFtZSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgp
LCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAobV9sZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFj
Y2Vzc29yTm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUq
PihtX2xleHByKTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogc3Vic2Ny
aXB0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGFzc2lnbk5vZGUtPnN1YnNjcmlwdCgpKTsKKyAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN1YnNjcmlwdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShhc3Np
Z25Ob2RlLT5zdWJzY3JpcHQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbklu
Zm8oYXNzaWduTm9kZS0+ZGl2b3QoKSwgYXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25O
b2RlLT5kaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeVZhbChiYXNlLmdl
dCgpLCBzdWJzY3JpcHQsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIGlmIChhc3NpZ25Ob2RlLT5i
YXNlKCktPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0
aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHN1YnNjcmlwdC5nZXQo
KSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFB1dEJ5VmFsKGJhc2UuZ2V0KCksIHN1YnNjcmlwdC5nZXQoKSwgcHJvcGVydHlOYW1lKTsK
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZShwcm9wZXJ0eU5hbWUsIGFzc2lnbk5v
ZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yNjMxLDcgKzI3NTUsMTEgQEAgdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbgogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGJhc2UgPSBn
ZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+YmFzZSgpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdCgp
LCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwotICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2UuZ2V0KCksIGlkZW50LCB2YWx1ZSk7
CisgICAgICAgICAgICBpZiAoYXNzaWduTm9kZS0+YmFzZSgpLT5pc1N1cGVyTm9kZSgpKSB7Cisg
ICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNWYWx1ZSA9IGdlbmVyYXRvci5l
bnN1cmVUaGlzKCk7CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlkKGJhc2Uu
Z2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgaWRlbnQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNlLmdldCgpLCBpZGVu
dCwgdmFsdWUpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwg
YXNzaWduTm9kZS0+ZGl2b3RTdGFydCgpLCBhc3NpZ25Ob2RlLT5kaXZvdEVuZCgpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChtX2xleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAg
ICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqPihtX2xleHByKTsKQEAgLTI2MzksNyArMjc2NywxMSBAQCB2b2lkIEZv
ck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuCiAgICAgICAgICAgICBSZWdpc3RlcklE
KiBzdWJzY3JpcHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUoYXNzaWduTm9kZS0+c3Vic2NyaXB0KCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZv
KGFzc2lnbk5vZGUtPmRpdm90KCksIGFzc2lnbk5vZGUtPmRpdm90U3RhcnQoKSwgYXNzaWduTm9k
ZS0+ZGl2b3RFbmQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5VmFsKGJhc2Uu
Z2V0KCksIHN1YnNjcmlwdCwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGFzc2lnbk5vZGUtPmJh
c2UoKS0+aXNTdXBlck5vZGUoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgdGhpc1ZhbHVlLmdldCgpLCBzdWJzY3Jp
cHQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHV0QnlWYWwoYmFzZS5nZXQoKSwgc3Vic2NyaXB0LCB2YWx1ZSk7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0
KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgQVNTRVJUKG1fbGV4cHItPmlzRGVzdHJ1Y3R1cmluZ05vZGUoKSk7CkBAIC0zNjk2LDE0ICsz
ODI4LDIyIEBAIHZvaWQgQXNzaWdubWVudEVsZW1lbnROb2RlOjpiaW5kVmFsdWUoQnkKICAgICAg
ICAgRG90QWNjZXNzb3JOb2RlKiBsaHMgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPiht
X2Fzc2lnbm1lbnRUYXJnZXQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gYmFzZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPmJhc2UoKSwgdHJ1ZSwgZmFsc2Up
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90RW5kKCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChiYXNl
LmdldCgpLCBsaHMtPmlkZW50aWZpZXIoKSwgdmFsdWUpOworICAgICAgICBpZiAobGhzLT5iYXNl
KCktPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0aGlz
VmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRQdXRCeUlkKGJhc2UuZ2V0KCksIHRoaXNWYWx1ZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCks
IHZhbHVlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5
SWQoYmFzZS5nZXQoKSwgbGhzLT5pZGVudGlmaWVyKCksIHZhbHVlKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKICAg
ICB9IGVsc2UgaWYgKG1fYXNzaWdubWVudFRhcmdldC0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkp
IHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbGhzID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KG1fYXNzaWdubWVudFRhcmdldCk7CiAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhhbmRTaWRlKGxocy0+YmFz
ZSgpLCB0cnVlLCBmYWxzZSk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eSA9
IGdlbmVyYXRvci5lbWl0Tm9kZUZvckxlZnRIYW5kU2lkZShsaHMtPnN1YnNjcmlwdCgpLCB0cnVl
LCBmYWxzZSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3RFbmQo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRC
eVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOworICAgICAgICBpZiAobGhz
LT5iYXNlKCktPmlzU3VwZXJOb2RlKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB0aGlzVmFsdWUgPSBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeVZhbChiYXNlLmdldCgpLCB0aGlzVmFsdWUuZ2V0KCksIHByb3BlcnR5Lmdl
dCgpLCB2YWx1ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
dXRCeVZhbChiYXNlLmdldCgpLCBwcm9wZXJ0eS5nZXQoKSwgdmFsdWUpOwogICAgICAgICBnZW5l
cmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwog
ICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjE3OSw2ICsyMTc5LDEyIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgp
OwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6Cisg
ICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmln
aW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhl
YXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEFycmF5
TGVuZ3RoOiB7CiAgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlH
ZXRGb2xkYWJsZVZpZXcoCkBAIC0yNjc4LDYgKzI2ODQsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAg
IGJyZWFrOworCiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJ
ZDoKICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjAwNTgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQwMjksNiArNDAyOSwxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfdmFsKTsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXM6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsV2l0aFRoaXMg
PSBhZGRUb0dyYXBoKEdldEJ5VmFsV2l0aFRoaXMsIGJhc2UsIHRoaXNWYWx1ZSwgcHJvcGVydHkp
OworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgZ2V0QnlWYWxXaXRoVGhpcyk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2dldF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewogICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCkpOwpAQCAtNDA3MCw2ICs0MDgwLDIxIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9i
eV92YWwpOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhp
czogeworICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVl
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBn
ZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKKwor
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CisgICAgICAgICAgICBhZGRWYXJBcmdD
aGlsZCh0aGlzVmFsdWUpOworICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQocHJvcGVydHkpOwor
ICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOworICAgICAgICAgICAgYWRkVG9HcmFw
aChOb2RlOjpWYXJBcmcsIFB1dEJ5VmFsV2l0aFRoaXMsIE9wSW5mbygwKSwgT3BJbmZvKDApKTsK
KworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMpOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CiAgICAgICAgICAgICBO
b2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZF07CkBAIC00MTAzLDYgKzQxMjgsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dpdGhfdGhpczogeworICAgICAg
ICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9kZSogdGhpc1ZhbHVlID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlm
aWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZF07CisKKyAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksCisg
ICAgICAgICAgICAgICAgYWRkVG9HcmFwaChHZXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhpZGVudGlm
aWVyTnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlKSk7CisKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2dldF9ieV9pZF93aXRoX3RoaXMpOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9kZSogYmFz
ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkp
OwpAQCAtNDExOCw2ICs0MTUzLDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3B1dF9ieV9pZCk7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6IHsKKyAgICAgICAgICAg
IE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIE5vZGUqIHRoaXNWYWx1ZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgTm9k
ZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kXTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeUlkV2l0aFRoaXMsIE9wSW5mbyhp
ZGVudGlmaWVyTnVtYmVyKSwgYmFzZSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9wdXRfYnlfaWRfd2l0aF90aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2Ugb3BfcHV0X2dldHRlcl9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5
X2lkOiB7CiAgICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMDA1ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw4ICsxNTYsMTIgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNv
ZGVJRAogICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbF9kaXJlY3Q6CiAgICAgY2FzZSBvcF90cnlfZ2V0
X2J5X2lkOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpczoKKyAgICBjYXNlIG9wX2dldF9ieV92YWxfd2l0aF90aGlzOgogICAgIGNhc2Ugb3Bf
Z2V0X2FycmF5X2xlbmd0aDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1
dF9ieV9pZF93aXRoX3RoaXM6CisgICAgY2FzZSBvcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKICAg
ICBjYXNlIG9wX3B1dF9nZXR0ZXJfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfc2V0dGVyX2J5X2lk
OgogICAgIGNhc2Ugb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQ6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjAwNTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzOSw3ICs0MzksMTEgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZQogICAgICAgICAKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6Cisg
ICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAg
IGNhc2UgUHV0QnlJZDoKKyAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkRGly
ZWN0OgogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksOCArOTksMTEgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVHJ5R2V0QnlJ
ZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CisgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZEZsdXNo
OgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoK
ICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRHZXR0ZXJCeUlkOgogICAgIGNh
c2UgUHV0U2V0dGVyQnlJZDoKQEAgLTIwMyw2ICsyMDYsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRHZXR0ZXI6CiAgICAgY2FzZSBHZXRTZXR0
ZXI6CiAgICAgY2FzZSBHZXRCeVZhbDoKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAg
Y2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6
CiAgICAgY2FzZSBBcnJheVB1c2g6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDcsNyArMTE0
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICAgICAgCisK
ICAgICAgICAgY2FzZSBQdXRCeUlkOgogICAgICAgICBjYXNlIFB1dEJ5SWRGbHVzaDoKICAgICAg
ICAgY2FzZSBQdXRCeUlkRGlyZWN0OiB7CkBAIC0xNTc1LDYgKzE1NzUsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAg
IGNhc2UgVHlwZU9mOgorICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICAgICAgY2Fz
ZSBQdXRCeUlkV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKKyAgICAg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDA1ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODYyLDkgKzg2
MiwxMSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKKyAgICAgICAgY2FzZSBH
ZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKICAgICAgICAgY2FzZSBQdXRC
eUlkRmx1c2g6CiAgICAgICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKKyAgICAgICAgY2FzZSBQdXRC
eUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICAgICAgY2FzZSBQ
dXRTZXR0ZXJCeUlkOgogICAgICAgICBjYXNlIFB1dEdldHRlclNldHRlckJ5SWQ6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMDA1ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE3Niw2ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
LyogdGhpcyBtdXN0IGJlIHRoZSBkaXJlY3RseSBzdWJzZXF1ZW50IHByb3BlcnR5IHB1dC4gTm90
ZSB0aGF0IFB1dEJ5VmFsICovXAogICAgIC8qIG9wY29kZXMgdXNlIFZhckFyZ3MgYmVhdXNlIHRo
ZXkgbWF5IGhhdmUgdXAgdG8gNCBjaGlsZHJlbi4gKi9cCiAgICAgbWFjcm8oR2V0QnlWYWwsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRCeVZhbFdpdGhU
aGlzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0TXlB
cmd1bWVudEJ5VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhMb2FkVmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXApA
QCAtMTg2LDkgKzE4NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEJ5SWRXaXRo
VGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFB1dEJ5
SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRmx1c2gsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRCeUlkRGlyZWN0LCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oUHV0QnlJZFdpdGhUaGlzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oUHV0QnlWYWxXaXRoVGhpcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBc
CiAgICAgbWFjcm8oUHV0R2V0dGVyQnlJZCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KFB1dFNldHRlckJ5SWQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQdXRHZXR0ZXJT
ZXR0ZXJCeUlkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw2ICsxNDQsMTYgQEAgY2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSogZQog
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0
cnVjdHVyZSwgc2l6ZSkpOwogfQogCit0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+CitzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkIHB1dFdpdGhUaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKKyAgICBKU1ZhbHVlIHRo
aXNWYWwgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFRoaXMpOworICAgIEpTVmFsdWUgcHV0VmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdCh0aGlzVmFsLCBzdHJpY3QpOworICAgIGJhc2VWYWx1ZS5wdXRJbmxpbmUoZXhlYywgaWRl
bnQsIHB1dFZhbHVlLCBzbG90KTsKK30KKwogZXh0ZXJuICJDIiB7CiAKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9UaGlzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZE9wKQpAQCAtNzczLDYgKzc4Myw5NCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
OjpkZWNvZGUodmFsdWUpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIFVu
aXF1ZWRTdHJpbmdJbXBsKiBpbXBsKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIEpTVmFsdWUgdGhp
c1ZhbCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVGhpcyk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QodGhpc1ZhbCwgUHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgSWRlbnRp
Zmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSwgc2xvdCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRoaXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQpCit7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRUaGlzKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKKworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlz
Q2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBTdHJ1Y3R1cmUmIHN0
cnVjdHVyZSA9ICpiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7CisgICAgICAgIGlm
IChKU0NlbGw6OmNhblVzZUZhc3RHZXRPd25Qcm9wZXJ0eShzdHJ1Y3R1cmUpKSB7CisgICAgICAg
ICAgICBpZiAoUmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+IGV4aXN0aW5nQXRvbWljU3RyaW5nID0g
YXNTdHJpbmcoc3Vic2NyaXB0KS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZyhleGVjKSkgeworICAg
ICAgICAgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFz
dEdldE93blByb3BlcnR5KHZtLCBzdHJ1Y3R1cmUsIGV4aXN0aW5nQXRvbWljU3RyaW5nLmdldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIFByb3BlcnR5U2xvdCBz
bG90KHRoaXNWYWwsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OkdldCk7CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQz
Ml90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFz
ZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
ZXhlYywgaSkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNl
VmFsdWUuZ2V0KGV4ZWMsIGksIHNsb3QpKTsKKyAgICB9CisKKyAgICBiYXNlVmFsdWUucmVxdWly
ZU9iamVjdENvZXJjaWJsZShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIGF1dG8gcHJvcGVydHkg
PSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHksIHNsb3QpKTsKK30K
Kwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpc1N0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBVbmlxdWVkU3RyaW5nSW1w
bCogaW1wbCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHB1dFdpdGhUaGlzPHRydWU+KGV4ZWMs
IGVuY29kZWRCYXNlLCBlbmNvZGVkVGhpcywgZW5jb2RlZFZhbHVlLCBJZGVudGlmaWVyOjpmcm9t
VWlkKGV4ZWMsIGltcGwpKTsKK30KKwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
SWRXaXRoVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVGhpcywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlLCBV
bmlxdWVkU3RyaW5nSW1wbCogaW1wbCkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAg
IE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIHB1dFdpdGhU
aGlzPGZhbHNlPihleGVjLCBlbmNvZGVkQmFzZSwgZW5jb2RlZFRoaXMsIGVuY29kZWRWYWx1ZSwg
SWRlbnRpZmllcjo6ZnJvbVVpZChleGVjLCBpbXBsKSk7Cit9CisKK3ZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbFdpdGhUaGlzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRUaGlzLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkU3Vic2NyaXB0LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7
CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZ2bSwgZXhlYyk7CisKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5ID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRTdWJzY3JpcHQpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKHZtLmV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgcHV0V2l0aFRoaXM8dHJ1ZT4oZXhlYywg
ZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHByb3BlcnR5KTsKK30KKwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMoRXhlY1N0YXRlKiBl
eGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFRo
aXMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKworICAgIElkZW50aWZpZXIgcHJvcGVydHkgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFN1YnNjcmlwdCkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICBwdXRXaXRoVGhpczxm
YWxzZT4oZXhlYywgZW5jb2RlZEJhc2UsIGVuY29kZWRUaGlzLCBlbmNvZGVkVmFsdWUsIHByb3Bl
cnR5KTsKK30KKwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBcnJheShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdHVyZSogYXJyYXlTdHJ1Y3R1cmUsIHZvaWQqIGJ1ZmZlciwgc2l6ZV90
IHNpemUpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KEV4ZWNT
dGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsU3RyaW5nSW50KEV4ZWNTdGF0ZSosIEpTU3Ry
aW5nKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25Ub1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkV2l0
aFRoaXMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVk
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIHZvaWQqLCBz
aXplX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlCdWZmZXIoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgc2l6ZV90LCBzaXplX3QpIFdURl9JTlRF
Uk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RW1wdHlBcnJheShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqKSBXVEZfSU5URVJOQUw7CkBAIC05OCw2ICsxMDAsMTAgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZQogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblB1dEJ5VmFsRGlyZWN0QmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3QoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBpbnQzMl90IGluZGV4LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXREb3VibGVCeVZh
bEJleW9uZEFycmF5Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgaW50MzJfdCBp
bmRleCwgZG91YmxlIHZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0RG91YmxlQnlWYWxCZXlvbmRBcnJheUJvdW5kc05vblN0cmljdChFeGVjU3RhdGUq
LCBKU09iamVjdCosIGludDMyX3QgaW5kZXgsIGRvdWJsZSB2YWx1ZSkgV1RGX0lOVEVSTkFMOwor
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5SWRXaXRoVGhpcyhFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK3ZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eUlkV2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7Cit2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyhFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwordm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
V2l0aFRoaXNTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQdXNoRG91YmxlKEV4ZWNTdGF0ZSos
IGRvdWJsZSB2YWx1ZSwgSlNBcnJheSopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQXJyYXlQb3AoRXhlY1N0YXRlKiwgSlNBcnJheSopIFdURl9J
TlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDA1ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYxLDYgKzY2MSwxMSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6
CisgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CisgICAgICAgICAgICBzZXRQcmVkaWN0
aW9uKFNwZWNCeXRlY29kZVRvcCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBjYXNlIFRyeUdldEJ5SWQ6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0J5
dGVjb2RlVG9wKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTg4LDYgKzk5Myw4IEBAIHByaXZh
dGU6CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICAvLyBUaGVzZSBnZXQgaWdub3JlZCBiZWNhdXNl
IHRoZXkgZG9uJ3QgcmV0dXJuIGFueXRoaW5nLgogICAgICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0
OgorICAgICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgICAgIGNhc2UgUHV0QnlJZFdp
dGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjAwNTgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5NSw5ICsxOTUsMTMgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5VmFsOgogICAgIGNh
c2UgR2V0QnlJZDoKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKKyAgICBjYXNlIEdldEJ5VmFs
V2l0aFRoaXM6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBQdXRCeUlkOgogICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgorICAgIGNhc2UgUHV0QnlJZFdpdGhUaGlzOgorICAgIGNhc2Ug
UHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgY2FzZSBQdXRH
ZXR0ZXJCeUlkOgogICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNp
b24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4MSw2ICsyNjgxLDMwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgYmFzZVRhZyA9IGJhc2Uu
dGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyBiYXNlUGF5bG9hZCA9IGJhc2UucGF5bG9hZEdQUigp
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVlLnRhZ0dQUigpOworICAg
ICAgICBHUFJSZWcgdGhpc1ZhbHVlUGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7Cisg
ICAgICAgIEdQUlJlZyBzdWJzY3JpcHRUYWcgPSBzdWJzY3JpcHQudGFnR1BSKCk7CisgICAgICAg
IEdQUlJlZyBzdWJzY3JpcHRQYXlsb2FkID0gc3Vic2NyaXB0LnBheWxvYWRHUFIoKTsKKworICAg
ICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHRQYXlsb2FkKHRoaXMpOworICAgICAgICBH
UFJGbHVzaGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOworICAgICAgICBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFdpdGhUaGlzLCByZXN1bHRU
YWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlzVmFsdWVU
YWcsIHRoaXNWYWx1ZVBheWxvYWQsIHN1YnNjcmlwdFRhZywgc3Vic2NyaXB0UGF5bG9hZCk7Cisg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC0yODU5LDYgKzI4ODMsNzYgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAg
ICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6IHsKKyNpZiBDUFUoWDg2KQorICAgICAgICAvLyBXZSBk
b24ndCBoYXZlIGVub3VnaCByZWdpc3RlcnMgb24gWDg2IHRvIGRvIHRoaXMKKyAgICAgICAgLy8g
d2l0aG91dCBzZXR0aW5nIHVwIHRoZSBjYWxsIGZyYW1lIGluY3JlbWVudGFsbHkuCisgICAgICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgbV9qaXQucG9rZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgaW5kZXgrKyk7CisKKyAgICAgICAgeworICAgICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgYmFzZSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlVGFnID0gYmFzZS50YWdHUFIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBiYXNlUGF5bG9hZCA9IGJhc2UucGF5bG9hZEdQUigpOworCisgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2Rl
LCAxKSk7CisgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlVGFnID0gdGhpc1ZhbHVlLnRhZ0dQ
UigpOworICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZVBheWxvYWQgPSB0aGlzVmFsdWUucGF5
bG9hZEdQUigpOworCisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBt
X2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eVRhZyA9IHByb3BlcnR5LnRhZ0dQUigpOworICAgICAgICAgICAgR1BSUmVnIHByb3Bl
cnR5UGF5bG9hZCA9IHByb3BlcnR5LnBheWxvYWRHUFIoKTsKKworICAgICAgICAgICAgbV9qaXQu
cG9rZShiYXNlUGF5bG9hZCwgaW5kZXgrKyk7CisgICAgICAgICAgICBtX2ppdC5wb2tlKGJhc2VU
YWcsIGluZGV4KyspOworCisgICAgICAgICAgICBtX2ppdC5wb2tlKHRoaXNWYWx1ZVBheWxvYWQs
IGluZGV4KyspOworICAgICAgICAgICAgbV9qaXQucG9rZSh0aGlzVmFsdWVUYWcsIGluZGV4Kysp
OworCisgICAgICAgICAgICBtX2ppdC5wb2tlKHByb3BlcnR5UGF5bG9hZCwgaW5kZXgrKyk7Cisg
ICAgICAgICAgICBtX2ppdC5wb2tlKHByb3BlcnR5VGFnLCBpbmRleCsrKTsKKworICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgfQorCisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAg
ICBHUFJSZWcgdmFsdWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVl
UGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgbV9qaXQucG9rZSh2YWx1ZVBh
eWxvYWQsIGluZGV4KyspOworICAgICAgICBtX2ppdC5wb2tlKHZhbHVlVGFnLCBpbmRleCsrKTsK
KworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBhcHBlbmRDYWxsKG1faml0Lmlz
U3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxX
aXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMpOworICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOworI2Vsc2UKKyAgICAgICAgc3RhdGljX2Fzc2VydChHUFJJbmZv
OjpudW1iZXJPZlJlZ2lzdGVycyA+PSA4LCAiV2UgYXJlIGFzc3VtaW5nIHdlIGhhdmUgZW5vdWdo
IHJlZ2lzdGVycyB0byBtYWtlIHRoaXMgY2FsbCB3aXRob3V0IGluY3JlbWVudGFsbHkgc2V0dGlu
ZyB1cCB0aGUgYXJndW1lbnRzLiIpOworCisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhp
cywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBi
YXNlVGFnID0gYmFzZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFz
ZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMSkpOworICAgICAgICBHUFJSZWcgdGhp
c1ZhbHVlVGFnID0gdGhpc1ZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVl
UGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgcHJvcGVydHkodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChub2RlLCAyKSk7Cisg
ICAgICAgIEdQUlJlZyBwcm9wZXJ0eVRhZyA9IHByb3BlcnR5LnRhZ0dQUigpOworICAgICAgICBH
UFJSZWcgcHJvcGVydHlQYXlsb2FkID0gcHJvcGVydHkucGF5bG9hZEdQUigpOworCisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9k
ZSwgMykpOworICAgICAgICBHUFJSZWcgdmFsdWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKworICAgICAgICBm
bHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9k
ZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpc1N0
cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsCisgICAgICAgICAgICBOb1Jlc3VsdCwg
YmFzZVRhZywgYmFzZVBheWxvYWQsIHRoaXNWYWx1ZVRhZywgdGhpc1ZhbHVlUGF5bG9hZCwgcHJv
cGVydHlUYWcsIHByb3BlcnR5UGF5bG9hZCwgdmFsdWVUYWcsIHZhbHVlUGF5bG9hZCk7CisgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisjZW5kaWYgLy8gQ1BVKFg4NikKKworICAgICAg
ICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBSZWdF
eHBFeGVjOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGdsb2JhbE9iamVjdCh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3RHUFIgPSBnbG9i
YWxPYmplY3QuZ3ByKCk7CkBAIC00MDM4LDYgKzQxMzIsMjcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNl
IEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VUYWcgPSBiYXNlLnRhZ0dQUigpOwor
ICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWQgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAg
R1BSUmVnIHRoaXNUYWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB0aGlz
UGF5bG9hZCA9IHRoaXNWYWx1ZS5wYXlsb2FkR1BSKCk7CisKKyAgICAgICAgR1BSRmx1c2hlZENh
bGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKyAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1
bHQyIHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSBy
ZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0
VGFnLmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uR2V0QnlJZFdpdGhUaGlzLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlzVGFnLCB0aGlzUGF5bG9hZCwgaWRlbnRp
ZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0
UGF5bG9hZEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0
QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlvbigpKSB7CiAgICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpT
VmFsdWVSZWdzKCksIDApOwpAQCAtNDMxNSw2ICs0NDMwLDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNlVGFnID0gYmFzZS50YWdHUFIoKTsK
KyAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
IEdQUlJlZyB0aGlzVmFsdWVUYWcgPSB0aGlzVmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJl
ZyB0aGlzVmFsdWVQYXlsb2FkID0gdGhpc1ZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICBHUFJSZWcg
dmFsdWVUYWcgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZCA9
IHZhbHVlLnBheWxvYWRHUFIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAg
ICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlJZFdp
dGhUaGlzLAorICAgICAgICAgICAgTm9SZXN1bHQsIGJhc2VUYWcsIGJhc2VQYXlsb2FkLCB0aGlz
VmFsdWVUYWcsIHRoaXNWYWx1ZVBheWxvYWQsIHZhbHVlVGFnLCB2YWx1ZVBheWxvYWQsIGlkZW50
aWZpZXJVSUQobm9kZS0+aWRlbnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgUHV0R2V0dGVyQnlJZDoKICAgICBjYXNlIFB1dFNldHRlckJ5SWQ6
IHsKICAgICAgICAgY29tcGlsZVB1dEFjY2Vzc29yQnlJZChub2RlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc2Myw2ICsyNzYzLDI1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOiB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHN1YnNjcmlwdCh0aGlzLCBub2RlLT5jaGlsZDMoKSk7CisgICAg
ICAgIEdQUlJlZyBzdWJzY3JpcHRHUFIgPSBzdWJzY3JpcHQuZ3ByKCk7CisKKyAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxXaXRoVGhpcywgcmVzdWx0R1BSLCBiYXNlR1BS
LCB0aGlzVmFsdWVHUFIsIHN1YnNjcmlwdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0
QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7CkBAIC00MTM1LDYgKzQxNTQsMjMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsK
ICAgICB9CiAKKyAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczogeworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdw
cigpOworCisgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5SWRXaXRoVGhpcywg
cmVzdWx0R1BSLCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIGlkZW50aWZpZXJVSUQobm9kZS0+aWRl
bnRpZmllck51bWJlcigpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgogICAgICAgICBjb21waWxlR2V0QXJyYXlM
ZW5ndGgobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDMxOSw2ICs0MzU1LDQwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCisgICAgY2FzZSBQdXRCeUlkV2l0aFRoaXM6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
YmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0aW9uUHV0QnlJZFdpdGhUaGlzU3RyaWN0IDogb3Bl
cmF0aW9uUHV0QnlJZFdpdGhUaGlzLCBOb1Jlc3VsdCwgYmFzZUdQUiwgdGhpc1ZhbHVlR1BSLCB2
YWx1ZUdQUiwgaWRlbnRpZmllclVJRChub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpKTsKKyAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOiB7CisgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbV9qaXQuZ3JhcGgoKS52YXJBcmdDaGlsZChu
b2RlLCAwKSk7CisgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQo
bm9kZSwgMSkpOworICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVlLmdwcigp
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBtX2ppdC5ncmFwaCgpLnZh
ckFyZ0NoaWxkKG5vZGUsIDIpKTsKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVy
dHkuZ3ByKCk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG1faml0LmdyYXBo
KCkudmFyQXJnQ2hpbGQobm9kZSwgMykpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1
ZS5ncHIoKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0
aW9uKG1faml0LmlzU3RyaWN0TW9kZUZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpID8gb3BlcmF0
aW9uUHV0QnlWYWxXaXRoVGhpc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsV2l0aFRoaXMsIE5v
UmVzdWx0LCBiYXNlR1BSLCB0aGlzVmFsdWVHUFIsIHByb3BlcnR5R1BSLCB2YWx1ZUdQUik7Cisg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgUHV0QnlJZERpcmVjdDogewogICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcwLDYgKzEyNzAsMjEgQEAgcHVibGljOgogCiAKICNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpKSSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKHVp
ZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CisgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVy
YXRpb25fRUpKSkkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMsIFRydXN0ZWRJbW1QdHIodWlk
KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkogb3BlcmF0
aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkK
KyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsK
KyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlv
bl9FT0pJVWkgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFVuaXF1ZWRTdHJp
bmdJbXBsKiBpbXBsLCB1bnNpZ25lZCB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGltcGwpLCBU
cnVzdGVkSW1tMzIodmFsdWUpKTsKQEAgLTE2ODksNiArMTcwNCwyMiBAQCBwdWJsaWM6CiAjZGVm
aW5lIFNINF8zMkJJVF9EVU1NWV9BUkcKICNlbmRpZgogCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSkpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBh
eWxvYWQsIEdQUlJlZyBhcmcyVGFnLCBHUFJSZWcgYXJnMlBheWxvYWQsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMVBheWxvYWQsIGFyZzFUYWcsIGFyZzJQYXlsb2Fk
LCBhcmcyVGFnLCBUcnVzdGVkSW1tUHRyKHVpZCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQor
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUpKSkkg
b3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJSZWcgYXJn
MlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFyZzNQYXls
b2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzFQYXlsb2FkLCBh
cmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxvYWQsIGFyZzNUYWcsIFRydXN0
ZWRJbW1QdHIodWlkKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7Cisg
ICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUpKSkogb3BlcmF0aW9uLCBHUFJSZWcgYXJnMVRhZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBHUFJS
ZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBHUFJSZWcgYXJnM1RhZywgR1BSUmVnIGFy
ZzNQYXlsb2FkLCBHUFJSZWcgYXJnNFRhZywgR1BSUmVnIGFyZzRQYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEVBQklfMzJCSVRfRFVNTVlf
QVJHIGFyZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyUGF5bG9hZCwgYXJnMlRhZywgYXJnM1BheWxv
YWQsIGFyZzNUYWcsIGFyZzRQYXlsb2FkLCBhcmc0VGFnKTsKKyAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGwob3BlcmF0aW9uKTsKKyAgICB9CisKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFZfSklUT3BlcmF0aW9uX0VPSklVaSBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMlRhZywgR1BSUmVnIGFyZzJQYXlsb2FkLCBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCwg
dW5zaWduZWQgdmFsdWUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMlBheWxvYWQsIGFyZzJUYWcsIFRydXN0ZWRJbW1QdHIoaW1wbCks
IFRydXN0ZWRJbW0zMih2YWx1ZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjks
NiArMTY5LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
IGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6CisgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgY2FzZSBUb1RoaXM6CiAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgogICAgIGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKQEAgLTI2Miw2
ICsyNjMsOCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICByZXR1cm4gQ2Fubm90Q29tcGlsZTsKKyAgICBjYXNlIFB1dEJ5SWRX
aXRoVGhpczoKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICBpZiAobm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpTdHJp
bmcpCiAgICAgICAgICAgICBicmVhazsKQEAgLTMyNiw2ICszMjksOCBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgICAgICByZXR1cm4gQ2Fubm90Q29t
cGlsZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICBjYXNlIEdldEJ5VmFsV2l0aFRo
aXM6CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOgogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CkBAIC0zNDIsNiArMzQ3LDggQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICAgICAgcmV0dXJu
IENhbm5vdENvbXBpbGU7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQdXRC
eVZhbFdpdGhUaGlzOgorICAgICAgICBicmVhazsKICAgICBjYXNlIEFycmF5UHVzaDoKICAgICBj
YXNlIEFycmF5UG9wOgogICAgICAgICBzd2l0Y2ggKG5vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSkg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDUsNiArNjA1LDkgQEAgcHJpdmF0ZToK
ICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgICAgICBjb21waWxlR2V0QnlJZChB
Y2Nlc3NUeXBlOjpHZXQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0QnlJ
ZFdpdGhUaGlzOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5SWRXaXRoVGhpcygpOworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgSW46CiAgICAgICAgICAgICBjb21waWxlSW4oKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjEzLDYgKzYxNiw5IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgUHV0QnlJZEZsdXNoOgogICAgICAgICAgICAgY29tcGlsZVB1dEJ5SWQoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEJ5SWRXaXRoVGhpczoKKyAgICAgICAgICAg
IGNvbXBpbGVQdXRCeUlkV2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFB1dEdldHRlckJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0U2V0dGVyQnlJZDoKICAgICAgICAg
ICAgIGNvbXBpbGVQdXRBY2Nlc3NvckJ5SWQoKTsKQEAgLTY0OSwxMSArNjU1LDE3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3VuZHM6CiAgICAgICAg
ICAgICBjb21waWxlR2V0TXlBcmd1bWVudEJ5VmFsKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFs
V2l0aFRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFB1dEJ5VmFsOgog
ICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgICAgICAgICBjb21waWxlUHV0QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxX
aXRoVGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXJyYXlQdXNoOgog
ICAgICAgICAgICAgY29tcGlsZUFycmF5UHVzaCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0y
NDgzLDYgKzI0OTUsNDUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEJ5SWRXaXRoVGhpcygpCisgICAgeworICAg
ICAgICBMVmFsdWUgYmFzZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
IExWYWx1ZSB0aGlzVmFsdWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAg
ICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uR2V0QnlJZFdpdGhUaGlzKSwgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgbV9v
dXQuY29uc3RJbnRQdHIobV9ncmFwaC5pZGVudGlmaWVycygpW21fbm9kZS0+aWRlbnRpZmllck51
bWJlcigpXSkpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQorCisgICAgdm9p
ZCBjb21waWxlR2V0QnlWYWxXaXRoVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgYmFzZSA9
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSB0aGlzVmFsdWUg
PSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBMVmFsdWUgc3Vic2NyaXB0
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMygpKTsKKworICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gdm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uR2V0QnlWYWxX
aXRoVGhpcyksIG1fY2FsbEZyYW1lLCBiYXNlLCB0aGlzVmFsdWUsIHN1YnNjcmlwdCk7CisgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRCeUlk
V2l0aFRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93SlNWYWx1ZShtX25vZGUt
PmNoaWxkMygpKTsKKworICAgICAgICB2bUNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJh
dGlvbihtX2dyYXBoLmlzU3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBv
cGVyYXRpb25QdXRCeUlkV2l0aFRoaXNTdHJpY3QgOiBvcGVyYXRpb25QdXRCeUlkV2l0aFRoaXMp
LAorICAgICAgICAgICAgbV9jYWxsRnJhbWUsIGJhc2UsIHRoaXNWYWx1ZSwgdmFsdWUsIG1fb3V0
LmNvbnN0SW50UHRyKG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV0pKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbFdpdGhUaGlzKCkKKyAg
ICB7CisgICAgICAgIExWYWx1ZSBiYXNlID0gbG93SlNWYWx1ZShtX2dyYXBoLnZhckFyZ0NoaWxk
KG1fbm9kZSwgMCkpOworICAgICAgICBMVmFsdWUgdGhpc1ZhbHVlID0gbG93SlNWYWx1ZShtX2dy
YXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOworICAgICAgICBMVmFsdWUgcHJvcGVydHkgPSBs
b3dKU1ZhbHVlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAyKSk7CisgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDMpKTsKKwor
ICAgICAgICB2bUNhbGwobV9vdXQudm9pZFR5cGUsIG1fb3V0Lm9wZXJhdGlvbihtX2dyYXBoLmlz
U3RyaWN0TW9kZUZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykgPyBvcGVyYXRpb25QdXRCeVZh
bFdpdGhUaGlzU3RyaWN0IDogb3BlcmF0aW9uUHV0QnlWYWxXaXRoVGhpcyksCisgICAgICAgICAg
ICBtX2NhbGxGcmFtZSwgYmFzZSwgdGhpc1ZhbHVlLCBwcm9wZXJ0eSwgdmFsdWUpOworICAgIH0K
ICAgICAKICAgICB2b2lkIGNvbXBpbGVQdXRCeUlkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMDA1ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDYgKzY0LDEwNyBAQCB2b2lkIENDYWxsSGVscGVyczo6c2V0dXBTaGFkb3dDaGlja2Vu
UGFjCiAgICAgc3RvcmVQdHIoR1BSSW5mbzo6cmVnVDIsIEFkZHJlc3MoR1BSSW5mbzo6cmVnVDAp
KTsKIH0KIAorI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAordm9pZCBDQ2Fs
bEhlbHBlcnM6OnNldHVwRm91clN0dWJBcmdzR1BSKEdQUlJlZyBkZXN0QSwgR1BSUmVnIGRlc3RC
LCBHUFJSZWcgZGVzdEMsIEdQUlJlZyBkZXN0RCwgR1BSUmVnIHNyY0EsIEdQUlJlZyBzcmNCLCBH
UFJSZWcgc3JjQywgR1BSUmVnIHNyY0QpCit7CisgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsK
KyAgICAgICAgUmVnaXN0ZXJTZXQgZGVzdGluYXRpb25zKGRlc3RBLCBkZXN0QiwgZGVzdEMsIGRl
c3REKTsKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZXN0aW5hdGlvbnMubnVtYmVyT2ZT
ZXRHUFJzKCkgPT0gNCwgIkRlc3RpbmF0aW9ucyBzaG91bGQgbm90IGJlIGFsaWFzZWQuIik7Cisg
ICAgfQorCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8R1BSUmVnLCBHUFJSZWc+IFJlZ1BhaXI7Cisg
ICAgVmVjdG9yPFJlZ1BhaXIsIDQ+IHBhaXJzOworCisgICAgaWYgKHNyY0EgIT0gZGVzdEEpCisg
ICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNBLCBkZXN0QSkpOworICAgIGlm
IChzcmNCICE9IGRlc3RCKQorICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3Jj
QiwgZGVzdEIpKTsKKyAgICBpZiAoc3JjQyAhPSBkZXN0QykKKyAgICAgICAgcGFpcnMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKHNyY0MsIGRlc3RDKSk7CisgICAgaWYgKHNyY0QgIT0gZGVzdEQpCisg
ICAgICAgIHBhaXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzcmNELCBkZXN0RCkpOworCisKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgYXV0byBudW1VbmlxdWVTb3VyY2VzID0gWyZdICgpIC0+
IHVuc2lnbmVkIHsKKyAgICAgICAgUmVnaXN0ZXJTZXQgc2V0OworICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7
CisgICAgICAgICAgICBzZXQuc2V0KHNvdXJjZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IHNldC5udW1iZXJPZlNldEdQUnMoKTsKKyAgICB9OworCisgICAgYXV0byBudW1VbmlxdWVEZXN0
cyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIFJlZ2lzdGVyU2V0IHNldDsKKyAgICAg
ICAgZm9yIChhdXRvJiBwYWlyIDogcGFpcnMpIHsKKyAgICAgICAgICAgIEdQUlJlZyBkZXN0ID0g
cGFpci5zZWNvbmQ7CisgICAgICAgICAgICBzZXQuc2V0KGRlc3QpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBzZXQubnVtYmVyT2ZTZXRHUFJzKCk7CisgICAgfTsKKyNlbmRpZgorCisgICAg
d2hpbGUgKHBhaXJzLnNpemUoKSkgeworICAgICAgICBSZWdpc3RlclNldCBmcmVlRGVzdGluYXRp
b25zOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAgR1BS
UmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgIGZyZWVEZXN0aW5hdGlvbnMuc2V0
KGRlc3QpOworICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHBhaXJzKSB7Cisg
ICAgICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpci5maXJzdDsKKyAgICAgICAgICAgIGZyZWVE
ZXN0aW5hdGlvbnMuY2xlYXIoc291cmNlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmcmVl
RGVzdGluYXRpb25zLm51bWJlck9mU2V0R1BScygpKSB7CisgICAgICAgICAgICBib29sIG1hZGVN
b3ZlID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFpcnMu
c2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFpcnNbaV07Cisg
ICAgICAgICAgICAgICAgR1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICAg
ICAgR1BSUmVnIGRlc3QgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBpZiAoZnJlZURl
c3RpbmF0aW9ucy5nZXQoZGVzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShzb3VyY2Us
IGRlc3QpOworICAgICAgICAgICAgICAgICAgICBwYWlycy5yZW1vdmUoaSk7CisgICAgICAgICAg
ICAgICAgICAgIG1hZGVNb3ZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUX1VOVVNF
RChtYWRlTW92ZSwgbWFkZU1vdmUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KworICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBudW1VbmlxdWVTb3VyY2VzKCkp
OworICAgICAgICBBU1NFUlQobnVtVW5pcXVlRGVzdHMoKSA9PSBwYWlycy5zaXplKCkpOworICAg
ICAgICAvLyBUaGUgc2V0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gcmVnaXN0ZXJzIGFyZSBl
cXVpdmFsZW50IHNldHMuIFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZQorICAgICAgICAvLyBhbnkg
ZnJlZSBkZXN0aW5hdGlvbiByZWdpc3RlcnMgdGhhdCB3b24ndCBhbHNvIGNsb2JiZXIgYSBzb3Vy
Y2UuIFdlIGdldCBhcm91bmQgdGhpcyBieQorICAgICAgICAvLyBleGNoYW5naW5nIHJlZ2lzdGVy
cy4KKworICAgICAgICBHUFJSZWcgc291cmNlID0gcGFpcnNbMF0uZmlyc3Q7CisgICAgICAgIEdQ
UlJlZyBkZXN0ID0gcGFpcnNbMF0uc2Vjb25kOworICAgICAgICBzd2FwKHNvdXJjZSwgZGVzdCk7
CisgICAgICAgIHBhaXJzLnJlbW92ZSgwKTsKKworICAgICAgICBHUFJSZWcgbmV3U291cmNlID0g
c291cmNlOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBwYWlycykgeworICAgICAgICAgICAg
R1BSUmVnIHNvdXJjZSA9IHBhaXIuZmlyc3Q7CisgICAgICAgICAgICBpZiAoc291cmNlID09IGRl
c3QpIHsKKyAgICAgICAgICAgICAgICBwYWlyLmZpcnN0ID0gbmV3U291cmNlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gV2Ug
bWF5IGhhdmUgaW50cm9kdWNlZCBwYWlycyB0aGF0IGhhdmUgdGhlIHNhbWUgc291cmNlIGFuZCBk
ZXN0aW5hdGlvbi4gUmVtb3ZlIHRob3NlIG5vdy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHBhaXJzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBhdXRvJiBwYWlyID0gcGFp
cnNbaV07CisgICAgICAgICAgICBpZiAocGFpci5maXJzdCA9PSBwYWlyLnNlY29uZCkgeworICAg
ICAgICAgICAgICAgIHBhaXJzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICBpLS07CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA+PSA0CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAko
cmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQXNzZW1i
bHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyTWFw
LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC04
MjcsNiArODI4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzIpOwog
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMyk7CiAgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUsIEdQUlJlZyBhcmc2LCBH
UFJSZWcgYXJnNywgR1BSUmVnIGFyZzgpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVu
dHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1l
bnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzQpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnNSk7CisgICAgICAg
IGFkZENhbGxBcmd1bWVudChhcmc2KTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzcpOwor
ICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnOCk7CisgICAgfQorCiAjZW5kaWYgLy8gIU5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJs
ZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGF0
IGxlYXN0IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIFg4Nl82NCwgQVJNdjcuCkBAIC05MTMs
NiArOTI5LDggQEAgcHVibGljOgogICAgICAgICAgICAgc3dhcChkZXN0QiwgZGVzdEMpOwogICAg
IH0KIAorICAgIHZvaWQgc2V0dXBGb3VyU3R1YkFyZ3NHUFIoR1BSUmVnIGRlc3RBLCBHUFJSZWcg
ZGVzdEIsIEdQUlJlZyBkZXN0QywgR1BSUmVnIGRlc3RELCBHUFJSZWcgc3JjQSwgR1BSUmVnIHNy
Y0IsIEdQUlJlZyBzcmNDLCBHUFJSZWcgc3JjRCk7CisKICNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNNjQpCiAgICAgdGVtcGxhdGU8RlBSUmVnIGRlc3RBLCBGUFJSZWcgZGVzdEI+CiAgICAgdm9p
ZCBzZXR1cFR3b1N0dWJBcmdzRlBSKEZQUlJlZyBzcmNBLCBGUFJSZWcgc3JjQikKQEAgLTE5NTEs
NiArMTk2OSwyNyBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIEdQUlJlZyBhcmc3
LCBHUFJSZWcgYXJnOCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnOCwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQgKyA0KTsKKyAgICAgICAgcG9rZShhcmc3LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDMp
OworICAgICAgICBwb2tlKGFyZzYsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMik7CisgICAgICAg
IHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSwgR1BSUmVnIGFyZzYsIEdQ
UlJlZyBhcmc3LCBHUFJSZWcgYXJnOCwgR1BSUmVnIGFyZzkpCisgICAgeworICAgICAgICBwb2tl
KGFyZzksIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgNSk7CisgICAgICAgIHBva2UoYXJnOCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQgKyA0KTsKKyAgICAgICAgcG9rZShhcmc3LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCArIDMpOworICAgICAgICBwb2tlKGFyZzYsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
Mik7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVzdGVkSW1t
MzIgYXJnNSwgR1BSUmVnIGFyZzYsIEdQUlJlZyBhcmc3KQogICAgIHsKICAgICAgICAgcG9rZShh
cmc3LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDMpOwpAQCAtMTk4Niw2ICsyMDI1LDEyIEBAIHB1
YmxpYzoKICNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKIAogI2lm
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBzZXR1cEZvdXJTdHViQXJn
c0dQUihHUFJJbmZvOjphcmd1bWVudEdQUjEsIEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzLCBHUFJJbmZvOjphcmd1bWVudEdQUjQsIGFyZzEsIGFyZzIsIGFyZzMs
IGFyZzQpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIHZvaWQgc2V0dXBTdHViQXJndW1lbnRzMTM0
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBz
ZXR1cFRocmVlU3R1YkFyZ3NHUFI8R1BSSW5mbzo6YXJndW1lbnRHUFIxLCBHUFJJbmZvOjphcmd1
bWVudEdQUjMsIEdQUkluZm86OmFyZ3VtZW50R1BSND4oYXJnMSwgYXJnMywgYXJnNCk7CkBAIC0y
MDM2LDcgKzIwODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoYXJnNCwgR1BSSW5mbzo6YXJn
dW1lbnRHUFI0KTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICB9Ci0gICAgCisKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7CiAgICAg
ICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gSW4gY2FzZSBhcmcyIGlz
IGFyZ3VtZW50R1BSMS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAyMDA1ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtODgwLDIwICs4ODAsNiBAQCBwdWJsaWM6CiAKICNlbmRpZiAvLyBDUFUo
U0g0KQogCi1pbmxpbmUgR1BSUmVnIGFyZ3VtZW50UmVnaXN0ZXJGb3IodW5zaWduZWQgYXJndW1l
bnRJbmRleCkKLXsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlmIChhcmd1bWVudEluZGV4ID49
IE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMpCi0gICAgICAgIHJldHVybiBJbnZhbGlkR1BS
UmVnOwotCi0gICAgcmV0dXJuIEdQUkluZm86OnRvQXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudElu
ZGV4KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGFyZ3VtZW50SW5kZXgpOwotCi0gICAgcmV0
dXJuIEludmFsaWRHUFJSZWc7Ci0jZW5kaWYKLX0KLQogLy8gVGhlIGJhc2VsaW5lIEpJVCB1c2Vz
ICJhY2N1bXVsYXRvciIgc3R5bGUgZXhlY3V0aW9uIHdpdGggcmVnVDAgKGZvciA2NC1iaXQpCiAv
LyBhbmQgcmVnVDAgKyByZWdUMSAoZm9yIDMyLWJpdCkgc2VydmluZyBhcyB0aGUgYWNjdW11bGF0
b3IgcmVnaXN0ZXIocykgZm9yCiAvLyBwYXNzaW5nIHJlc3VsdHMgb2Ygb25lIG9wY29kZSB0byB0
aGUgbmV4dC4gSGVuY2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAyMDA1ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzNyw3ICsyMzcsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF90cnlfZ2V0X2J5X2lkKQogICAgICAgICBjYXNlIG9w
X2dldF9hcnJheV9sZW5ndGg6CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlfaWQpCisgICAg
ICAgIERFRklORV9PUChvcF9nZXRfYnlfaWRfd2l0aF90aGlzKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZ2V0X2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX2dldF9ieV92YWxfd2l0aF90aGlz
KQogICAgICAgICBERUZJTkVfT1Aob3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZSkKICAgICAgICAg
REVGSU5FX09QKG9wX2luc3RhbmNlb2YpCiAgICAgICAgIERFRklORV9PUChvcF9pbnN0YW5jZW9m
X2N1c3RvbSkKQEAgLTI5Miw5ICsyOTQsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcGFyZW50X3Njb3BlKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X2lkKQorICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkX3dpdGhfdGhp
cykKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfdmFsX2RpcmVjdDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCisgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9nZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNyw2ICs1MDcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2VxX251bGwoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X2lkX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfYXJndW1lbnRfYnlfdmFsKEluc3RydWN0aW9uKik7CkBAIC01NjUsOCArNTY3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfY3JlYXRlX2xleGljYWxfZW52
aXJvbm1lbnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9wYXJlbnRf
c2NvcGUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3B1dF9ieV9pZChJbnN0
cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X2lkX3dpdGhfdGhpcyhJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcHV0X2J5X2luZGV4KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpcyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfcHV0X3NldHRlcl9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDA1
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBAIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAoKkpfSklU
T3BlcmF0aW9uX0VaWikoRXhlY1N0YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FWlN5bXRhYkopKEV4
ZWNTdGF0ZSosIGludDMyX3QsIFN5bWJvbFRhYmxlKiwgRW5jb2RlZEpTVmFsdWUpOwogdHlwZWRl
ZiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OICgqSl9KSVRPcGVyYXRpb25fRU9JVWkpKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgVW5pcXVlZFN0cmluZ0ltcGwqLCB1aW50MzJfdCk7Cit0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gKCpKX0pJVE9wZXJhdGlvbl9FSkpJKShF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKik7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0Up
KEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gKCpDX0pJVE9wZXJh
dGlvbl9FWikoRXhlY1N0YXRlKiwgaW50MzJfdCk7CiB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJB
VElPTiAoKkNfSklUT3BlcmF0aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKQEAgLTI0OSw2
ICsyNTAsOCBAQCB0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0CiB0eXBl
ZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklUT3BlcmF0aW9uX0VQYykoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRp
b25fRVBaSikoRXhlY1N0YXRlKiwgdm9pZCosIGludDMyX3QsIEVuY29kZWRKU1ZhbHVlKTsKIHR5
cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRPcGVyYXRpb25fRVNzaUpKSSkoRXhlY1N0
YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKik7Cit0eXBlZGVmIHZvaWQgSklUX09QRVJBVElPTiAoKlZfSklU
T3BlcmF0aW9uX0VKSkpJKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopOwordHlwZWRlZiB2b2lkIEpJ
VF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FSkpKSikoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUpOwog
dHlwZWRlZiB2b2lkIEpJVF9PUEVSQVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FV3MpKEV4ZWNTdGF0
ZSosIFdhdGNocG9pbnRTZXQqKTsKIHR5cGVkZWYgdm9pZCBKSVRfT1BFUkFUSU9OICgqVl9KSVRP
cGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMyX3QpOwogdHlwZWRlZiB2b2lkIEpJVF9PUEVS
QVRJT04gKCpWX0pJVE9wZXJhdGlvbl9FWkopKEV4ZWNTdGF0ZSosIGludDMyX3QsIEVuY29kZWRK
U1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2Myw2ICsxMTYzLDMwIEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90b19hcmd1bWVudHMo
SW5zdHIKICAgICBzdG9yZTMyKHJlZ1QyLCBBZGRyZXNzKHJlZ1QwLCBEaXJlY3RBcmd1bWVudHM6
OnN0b3JhZ2VPZmZzZXQoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikg
KyBQYXlsb2FkT2Zmc2V0KSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRo
X3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dl
dF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX2dldF9ieV92YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkX3dpdGhf
dGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcHV0
X2J5X2lkX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93
UGF0aENhbGwuY2FsbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw2
ICszMTMsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlvbgogICAg
IG1fYnlWYWxDb21waWxhdGlvbkluZm8uYXBwZW5kKEJ5VmFsQ29tcGlsYXRpb25JbmZvKGJ5VmFs
SW5mbywgbV9ieXRlY29kZU9mZnNldCwgbm90SW5kZXgsIGJhZFR5cGUsIG1vZGUsIHByb2ZpbGUs
IGRvbmUsIGRvbmUpKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3B1dF9i
eV92YWxfd2l0aF90aGlzKTsKKyAgICBzbG93UGF0aENhbGwuY2FsbCgpOworfQorCiBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbiwgUGF0Y2hhYmxlSnVtcCYgYmFkVHlwZSwgSW5kZXhpbmdUeXBlIGlu
ZGV4aW5nU2hhcGUpCiB7CiAgICAgaW50IHZhbHVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKQEAgLTYwMyw2ICs2MDksMTggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X2lk
KEluc3RydWN0aW9uKgogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0VlJlZyk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwor
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2dldF9ieV92
YWxfd2l0aF90aGlzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30K
Kwogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2dldF9ieV9pZChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewogICAg
IGludCByZXN1bHRWUmVnID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKQEAgLTY0
OCw2ICs2NjYsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X2lkKEluc3RydWN0aW9uKgog
ICAgIG1fcHV0QnlJZHMuYXBwZW5kKGdlbik7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3B1dF9i
eV9pZF93aXRoX3RoaXMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9
CisKIHZvaWQgSklUOjplbWl0U2xvd19vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKIHsKICAg
ICBpbnQgYmFzZVZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkocmV2aXNpb24gMjAwNTgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUyLDYgKzE3NTIsMjUg
QEAgX2xsaW50X29wX2luc3RhbmNlb2Y6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfaW5zdGFuY2VvZikKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3dp
dGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfZ2V0X2J5X2lkX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCitfbGxpbnRfb3BfZ2V0
X2J5X3ZhbF93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2dldF9ieV92YWxfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKK19s
bGludF9vcF9wdXRfYnlfaWRfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQorICAgIGRpc3BhdGNo
KDUpCisKK19sbGludF9vcF9wdXRfYnlfdmFsX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMpCisg
ICAgZGlzcGF0Y2goNSkKIAogIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2
ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMg
c2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNz
ZXJ0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAJKHJldmlzaW9uIDIwMDU4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxNSw0ICs4MTUs
NzggQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBFTkQoKTsKIH0K
IAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpCit7CisgICAg
QkVHSU4oKTsKKyAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzRdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBP
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWwgPSBPUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsLCBQcm9wZXJ0eVNsb3Q6OlByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgUkVUVVJOKHJlc3VsdCk7Cit9CisK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKK3sKKyAgICBC
RUdJTigpOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBPUF9DKDIpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IE9QX0MoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICAgICAgU3RydWN0dXJlJiBzdHJ1Y3R1cmUgPSAqYmFzZVZhbHVlLmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUodm0pOworICAgICAgICBpZiAoSlNDZWxsOjpjYW5Vc2VGYXN0R2V0T3du
UHJvcGVydHkoc3RydWN0dXJlKSkgeworICAgICAgICAgICAgaWYgKFJlZlB0cjxBdG9taWNTdHJp
bmdJbXBsPiBleGlzdGluZ0F0b21pY1N0cmluZyA9IGFzU3RyaW5nKHN1YnNjcmlwdCktPnRvRXhp
c3RpbmdBdG9taWNTdHJpbmcoZXhlYykpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eSh2bSwgc3RydWN0
dXJlLCBleGlzdGluZ0F0b21pY1N0cmluZy5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIFJF
VFVSTihyZXN1bHQpOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdCh0aGlzVmFsdWUsIFByb3BlcnR5U2xvdDo6UHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigp
KSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJ
bmRleChpKSkKKyAgICAgICAgICAgIFJFVFVSTihhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChleGVjLCBpKSk7CisgICAgICAgIAorICAgICAgICBSRVRVUk4oYmFzZVZhbHVlLmdldChleGVj
LCBpLCBzbG90KSk7CisgICAgfQorCisgICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2li
bGUoZXhlYyk7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgYXV0byBwcm9wZXJ0eSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAg
IFJFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5LCBzbG90KSk7Cit9CisKK1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlzKQoreworICAgIEJFR0lOKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB0aGlzVmFsID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBwdXRWYWx1ZSA9
IE9QX0MoNCkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHRoaXNWYWwsIGNv
ZGVCbG9jay0+aXNTdHJpY3RNb2RlKCksIGNvZGVCbG9jay0+cHV0QnlJZENvbnRleHQoKSk7Cisg
ICAgYmFzZVZhbHVlLnB1dElubGluZShleGVjLCBpZGVudCwgcHV0VmFsdWUsIHNsb3QpOworICAg
IEVORCgpOworfQorCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3Ro
aXMpCit7CisgICAgQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IE9QX0MoMSkuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBPUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gT1BfQyg0KS5qc1ZhbHVlKCk7CisgICAgCisgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgIENIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNWYWx1ZSwgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7Cisg
ICAgRU5EKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDIwMDU4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDgsNiArMjQ4LDEwIEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfY3JlYXRlX2wKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRo
X3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXBy
b3BlcnR5LWFjY2Vzcy1leGNlcHRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLWV4Y2VwdGlvbnMuanMJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVy
LXByb3BlcnR5LWFjY2Vzcy1leGNlcHRpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTUzIEBACitmdW5jdGlvbiBhc3NlcnQoYiwgbSA9ICJCYWQhIikgeworICAgIGlmICghYikgewor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KGYs
IGl0ZXJzID0gMTAwMCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcnM7IGkrKykKKyAg
ICAgICAgZigpOworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvb1Byb3Ao
KSB7IHJldHVybiAnZm9vJzsgfQorICAgIG5vSW5saW5lKGZvb1Byb3ApOworCisgICAgbGV0IHNo
b3VsZFRocm93ID0gZmFsc2U7CisgICAgY2xhc3MgQSB7CisgICAgICAgIGdldCBmb28oKSB7Cisg
ICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yOworICAgICAgICAgICAgcmV0dXJuIDIwOworICAgICAgICB9CisgICAgICAgIGdldCB4KCkg
eyByZXR1cm4gdGhpcy5feDsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAg
ICAgICAgY29uc3RydWN0b3IoeCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAg
IHRoaXMuX3ggPSB4OworICAgICAgICB9CisKKyAgICAgICAgYmFyKCkgeworICAgICAgICAgICAg
dGhpcy5feCA9IHN1cGVyLmZvbzsKKyAgICAgICAgfQorCisgICAgICAgIGJheigpIHsKKyAgICAg
ICAgICAgIHRoaXMuX3ggPSBzdXBlcltmb29Qcm9wKCldOworICAgICAgICB9CisgICAgfQorCisg
ICAgZnVuY3Rpb24gZm9vKGkpIHsgCisgICAgICAgIGxldCBiID0gbmV3IEIoaSk7CisgICAgICAg
IG5vSW5saW5lKGIuX19sb29rdXBHZXR0ZXJfXygnZm9vJykpOworICAgICAgICBsZXQgdGhyZXcg
PSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGIuYmFyKCk7ICAgIAorICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodGhyZXcpCisgICAgICAgICAgICBhc3NlcnQoYi54ID09PSBpKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgYXNzZXJ0KGIueCA9PT0gMjApOworICAgIH0KKyAgICBmdW5jdGlv
biBiYXIoaSkgeyAKKyAgICAgICAgbGV0IGIgPSBuZXcgQihpKTsKKyAgICAgICAgbm9JbmxpbmUo
Yi5fX2xvb2t1cEdldHRlcl9fKCdmb28nKSk7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOwor
ICAgICAgICB0cnkgeworICAgICAgICAgICAgYi5iYXooKTsgICAgCisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICh0
aHJldykKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09IGkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBhc3NlcnQoYi54ID09PSAyMCwgImIueCAiICsgYi54ICsgIiAgIiArIGkpOworICAg
IH0KKyAgICBub0lubGluZShiYXIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgICAgIGZvbyhpKTsKKyAgICAgICAgYmFyKGkpOworICAgIH0KKyAgICBzaG91
bGRUaHJvdyA9IHRydWU7CisgICAgZm9vKDIzKTsKKyAgICBiYXIoMjQpOworCit9LCAxKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBmdW5jdGlvbiBmb29Qcm9wKCkgeyByZXR1cm4gJ2Zvbyc7
IH0KKyAgICBub0lubGluZShmb29Qcm9wKTsKKworICAgIGZ1bmN0aW9uIGZ1bmMoaSkgeworICAg
ICAgICBpZiAoc2hvdWxkVGhyb3cpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAg
ICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIG5vSW5saW5lKGZ1bmMpOworCisgICAgbGV0IHNo
b3VsZFRocm93ID0gZmFsc2U7CisgICAgY2xhc3MgQSB7CisgICAgICAgIHNldCBmb28oeCkgewor
ICAgICAgICAgICAgdGhpcy5feCA9IHg7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IHgoKSB7IHJl
dHVybiB0aGlzLl94OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAg
ICBjb25zdHJ1Y3Rvcih4KSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdGhp
cy5feCA9IHg7CisgICAgICAgIH0KKworICAgICAgICBiYXIoeCkgeworICAgICAgICAgICAgc3Vw
ZXIuZm9vID0gZnVuYyh4KTsKKyAgICAgICAgfQorCisgICAgICAgIGJheih4KSB7CisgICAgICAg
ICAgICBzdXBlcltmb29Qcm9wKCldID0gZnVuYyh4KTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uIGZvbyhpKSB7IAorICAgICAgICBsZXQgYiA9IG5ldyBCKGkpOworICAgICAgICBu
b0lubGluZShiLl9fbG9va3VwR2V0dGVyX18oJ2ZvbycpKTsKKyAgICAgICAgbGV0IHRocmV3ID0g
ZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBiLmJhcihpICsgMSk7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh0aHJldykKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09IGkpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBhc3NlcnQoYi54ID09PSBpICsgMSk7CisgICAgfQorICAgIGZ1bmN0
aW9uIGJhcihpKSB7IAorICAgICAgICBsZXQgYiA9IG5ldyBCKGkpOworICAgICAgICBub0lubGlu
ZShiLl9fbG9va3VwR2V0dGVyX18oJ2ZvbycpKTsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7
CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBiLmJheihpICsgMSk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlm
ICh0aHJldykKKyAgICAgICAgICAgIGFzc2VydChiLnggPT09IGkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBhc3NlcnQoYi54ID09PSBpICsgMSk7CisgICAgfQorICAgIG5vSW5saW5lKGJh
cik7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgZm9v
KGkpOworICAgICAgICBiYXIoaSk7CisgICAgfQorICAgIHNob3VsZFRocm93ID0gdHJ1ZTsKKyAg
ICBmb28oMjMpOworICAgIGJhcigyNCk7CisKK30sIDEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MtdGR6LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mvc3VwZXItcHJvcGVydHkt
YWNjZXNzLXRkei5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3Mvc3VwZXItcHJvcGVydHktYWNjZXNzLXRkei5qcwkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDkyIEBACitmdW5jdGlvbiBhc3NlcnQoYiwgbSA9ICJCYWQhIikgeworICAgIGlmICgh
YikgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IobSk7CisgICAgfQorfQorCitmdW5jdGlvbiB0
ZXN0KGYsIGl0ZXJzID0gMTAwMCkgeworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlcnM7IGkr
KykKKyAgICAgICAgZigpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvd1REWihmKSB7CisgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOworICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICBhc3NlcnQoZSBpbnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yKTsKKyAgICAg
ICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CisgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICB9
CisgICAgYXNzZXJ0KHRocmV3KTsKK30KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBB
IHsKKyAgICAgICAgZ2V0IGZvbygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl94OworICAg
ICAgICB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5feCA9IHg7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBmb29Qcm9wKCkgeyByZXR1cm4gJ2Zvbyc7
IH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICBzdXBlci5mb28gPSAyMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNz
IEMgZXh0ZW5kcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBl
cltmb29Qcm9wKCldID0gMjA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjbGFzcyBEIGV4dGVu
ZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXJbZm9vUHJv
cCgpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNsYXNzIEUgZXh0ZW5kcyBBIHsKKyAgICAg
ICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlci5mb287CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBjbGFzcyBGIGV4dGVuZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgewor
ICAgICAgICAgICAgKCgpID0+IHN1cGVyLmZvbyA9IDIwKSgpOworICAgICAgICB9CisgICAgfQor
CisgICAgY2xhc3MgRyBleHRlbmRzIEEgeworICAgICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAg
ICAgICAgICgoKSA9PiBzdXBlcltmb29Qcm9wKCldID0gMjApKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBjbGFzcyBIIGV4dGVuZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAg
ICAgICAgICAgKCgpID0+IHN1cGVyW2Zvb1Byb3AoKV0pKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBjbGFzcyBJIGV4dGVuZHMgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeworICAgICAg
ICAgICAgKCgpID0+IHN1cGVyLmZvbykoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNob3Vs
ZFRocm93VERaKGZ1bmN0aW9uKCkgeyBuZXcgQjsgfSk7CisgICAgc2hvdWxkVGhyb3dURFooZnVu
Y3Rpb24oKSB7IG5ldyBDOyB9KTsKKyAgICBzaG91bGRUaHJvd1REWihmdW5jdGlvbigpIHsgbmV3
IEQ7IH0pOworICAgIHNob3VsZFRocm93VERaKGZ1bmN0aW9uKCkgeyBuZXcgRTsgfSk7CisgICAg
c2hvdWxkVGhyb3dURFooZnVuY3Rpb24oKSB7IG5ldyBGOyB9KTsKKyAgICBzaG91bGRUaHJvd1RE
WihmdW5jdGlvbigpIHsgbmV3IEc7IH0pOworICAgIHNob3VsZFRocm93VERaKGZ1bmN0aW9uKCkg
eyBuZXcgSDsgfSk7CisgICAgc2hvdWxkVGhyb3dURFooZnVuY3Rpb24oKSB7IG5ldyBJOyB9KTsK
K30pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdXBlci1wcm9w
ZXJ0eS1hY2Nlc3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9zdXBlci1wcm9wZXJ0eS1hY2Nlc3MuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N1cGVyLXByb3BlcnR5LWFjY2Vzcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU4NiBAQAorZnVuY3Rpb24gYXNzZXJ0KGIsIG0gPSAiQmFk
ISIpIHsKKyAgICBpZiAoIWIpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKG0pOworICAgIH0K
K30KKworZnVuY3Rpb24gdGVzdChmLCBpdGVycyA9IDEwMDApIHsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGl0ZXJzOyBpKyspCisgICAgICAgIGYoKTsKK30KKworZnVuY3Rpb24gZnVuYyh4KSB7
CisgICAgcmV0dXJuIHg7Cit9Citub0lubGluZShmdW5jKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3RydWN0b3IoeCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fdmFsdWUgPSB4OworICAgICAgICB9CisKKyAgICAgICAgc2V0IHZhbHVlKHgp
IHsgdGhpcy5fdmFsdWUgPSB4OyB9CisgICAgICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMu
X3ZhbHVlOyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBzZXQg
dmFsdWUoeCkgeyBzdXBlci52YWx1ZSA9IHg7IH0KKyAgICAgICAgZ2V0IHZhbHVlKCkgeyByZXR1
cm4gc3VwZXIudmFsdWU7IH0KKyAgICB9CisKKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsK
KyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNz
ZXJ0KGFycltpXS52YWx1ZSA9PT0gMjApOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0udmFsdWUgPSBpOworICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVl
ID09PSBpKTsKKyAgICB9Cit9LCAxMCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rp
b24gdmFsdWUoKSB7IHJldHVybiAndmFsdWUnOyB9CisgICAgbm9JbmxpbmUodmFsdWUpOworCisg
ICAgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKHgsIGYgPSBmdW5jKQorICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHg7CisgICAgICAgICAgICB0aGlzLl9mdW5jID0g
ZjsKKyAgICAgICAgfQorCisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHRoaXMuX3ZhbHVlID0geDsg
fQorICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgICAgICBn
ZXQgZnVuYygpIHsgcmV0dXJuIHRoaXMuX2Z1bmM7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4
dGVuZHMgQSB7CisgICAgICAgIHNldCB2YWx1ZSh4KSB7IHN1cGVyW3ZhbHVlKCldID0geDsgfQor
ICAgICAgICBnZXQgdmFsdWUoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXTsgfQorICAgICAgICBp
bmMoKSB7IHJldHVybiBzdXBlclt2YWx1ZSgpXSsrOyB9CisgICAgICAgIGRlYygpIHsgcmV0dXJu
IHN1cGVyW3ZhbHVlKCldLS07IH0KKyAgICAgICAgcHJlSW5jKCkgeyByZXR1cm4gKytzdXBlclt2
YWx1ZSgpXTsgfQorICAgICAgICBwcmVEZWMoKSB7IHJldHVybiAtLXN1cGVyW3ZhbHVlKCldOyB9
CisgICAgICAgIHBsdXNFcSh4KSB7IHN1cGVyW3ZhbHVlKCldICs9IHg7IH0KKyAgICAgICAgbWlu
dXNFcSh4KSB7IHN1cGVyW3ZhbHVlKCldIC09IHg7IH0KKyAgICAgICAgdGltZXNFcSh4KSB7IHN1
cGVyW3ZhbHVlKCldICo9IHg7IH0KKyAgICAgICAgZGl2RXEoeCkgeyBzdXBlclt2YWx1ZSgpXSAv
PSB4OyB9CisKKyAgICAgICAgZnVuY0RvdCh4KSB7IHJldHVybiBzdXBlci5mdW5jKHgpOyB9Cisg
ICAgICAgIGZ1bmNCcmFja2V0KHgpIHsgcmV0dXJuIHN1cGVyLmZ1bmMoeCk7IH0KKyAgICB9CisK
KyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsK
KyAgICAgICAgYXJyLnB1c2gobmV3IEIoMjApKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHQgPSBhcnJbaV0udmFsdWU7CisgICAgICAg
IGFzc2VydCh0ID09PSAyMCk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS52YWx1ZSA9IGk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkp
OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGxldCB2ID0gYXJyW2ldLmluYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0uZGVjKCk7CisgICAgICAgIGFzc2VydCh2
ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5wcmVJbmMo
KTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkrMSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
bGV0IHYgPSBhcnJbaV0ucHJlRGVjKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFy
cltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnBsdXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0g
aStpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBhcnJbaV0ubWludXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnRp
bWVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkqaSk7CisgICAgfQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgPT09IDApCisgICAgICAg
ICAgICBhcnJbaV0udmFsdWUgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcnJbaV0u
ZGl2RXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXSA9IG5ldyBCKDAsIGZ1bmN0
aW9uKGEpIHsgcmV0dXJuIGkgKyBhOyB9KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS5mdW5jRG90KGkpID09PSBpICsg
aSk7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVuY0JyYWNrZXQoaSoyKSA9PT0gaSArIGkqMik7
CisgICAgfQorCit9LCAxMCk7CisKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsK
KyAgICAgICAgY29uc3RydWN0b3IoeCwgZiA9IGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRoaXMuX3ZhbHVlID0geDsKKyAgICAgICAgICAgIHRoaXMuX2Z1bmMgPSBmOworICAgICAgICB9
CisKKyAgICAgICAgc2V0IHZhbHVlKHgpIHsgdGhpcy5fdmFsdWUgPSB4OyB9CisgICAgICAgIGdl
dCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVlOyB9CisgICAgICAgIGdldCBmdW5jKCkgeyBy
ZXR1cm4gdGhpcy5fZnVuYzsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAg
ICAgICAgc2V0IHZhbHVlKHgpIHsgKCgpID0+IHN1cGVyLnZhbHVlID0geCkoKTsgfQorICAgICAg
ICBnZXQgdmFsdWUoKSB7IHJldHVybiAoKCkgPT4gc3VwZXIudmFsdWUpKCk7IH0KKyAgICAgICAg
aW5jKCkgeyByZXR1cm4gKCgpID0+IHN1cGVyLnZhbHVlKyspKCk7IH0KKyAgICAgICAgZGVjKCkg
eyByZXR1cm4gKCgpID0+IHN1cGVyLnZhbHVlLS0pKCk7IH0KKyAgICAgICAgcHJlSW5jKCkgeyBy
ZXR1cm4gKCgpID0+ICsrc3VwZXIudmFsdWUpKCk7IH0KKyAgICAgICAgcHJlRGVjKCkgeyByZXR1
cm4gKCgpID0+IC0tc3VwZXIudmFsdWUpKCk7IH0KKyAgICAgICAgcGx1c0VxKHgpIHsgKCgpID0+
IHN1cGVyLnZhbHVlICs9IHgpKCk7IH0KKyAgICAgICAgbWludXNFcSh4KSB7ICgoKSA9PiBzdXBl
ci52YWx1ZSAtPSB4KSgpOyB9CisgICAgICAgIHRpbWVzRXEoeCkgeyAoKCkgPT4gc3VwZXIudmFs
dWUgKj0geCkoKTsgfQorICAgICAgICBkaXZFcSh4KSB7ICgoKSA9PiBzdXBlci52YWx1ZSAvPSB4
KSgpOyB9CisKKyAgICAgICAgZnVuY0RvdCh4KSB7IHJldHVybiAoKCkgPT4gc3VwZXIuZnVuYyh4
KSkoKTsgfQorICAgICAgICBmdW5jQnJhY2tldCh4KSB7IHJldHVybiAoKCkgPT4gc3VwZXIuZnVu
Yyh4KSkoKTsgfQorICAgIH0KKworICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhcnIucHVzaChuZXcgQigyMCkpOworICAgIH0K
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJy
W2ldLnZhbHVlID09PSAyMCk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsg
aSsrKSB7CisgICAgICAgIGFycltpXS52YWx1ZSA9IGk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkp
OworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAg
IGxldCB2ID0gYXJyW2ldLmluYygpOworICAgICAgICBhc3NlcnQodiA9PT0gaSk7CisgICAgfQor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJb
aV0udmFsdWUgPT09IGkrMSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgbGV0IHYgPSBhcnJbaV0uZGVjKCk7CisgICAgICAgIGFzc2VydCh2
ID09PSBpKzEpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgICAgICBhc3NlcnQoYXJyW2ldLnZhbHVlID09PSBpKTsKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBsZXQgdiA9IGFycltpXS5wcmVJbmMo
KTsKKyAgICAgICAgYXNzZXJ0KHYgPT09IGkrMSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkrMSk7
CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAg
bGV0IHYgPSBhcnJbaV0ucHJlRGVjKCk7CisgICAgICAgIGFzc2VydCh2ID09PSBpKTsKKyAgICB9
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFy
cltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
OyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnBsdXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0g
aStpKTsKKyAgICB9CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAg
ICAgICBhcnJbaV0ubWludXNFcShpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS52YWx1ZSA9PT0gaSk7CisgICAgfQor
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXJyW2ldLnRp
bWVzRXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkqaSk7CisgICAgfQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgaWYgKGkgPT09IDApCisgICAgICAg
ICAgICBhcnJbaV0udmFsdWUgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhcnJbaV0u
ZGl2RXEoaSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICAgIGFzc2VydChhcnJbaV0udmFsdWUgPT09IGkpOworICAgIH0KKworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFycltpXSA9IG5ldyBCKDAsIGZ1bmN0
aW9uKGEpIHsgcmV0dXJuIGkgKyBhOyB9KTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICAgICAgYXNzZXJ0KGFycltpXS5mdW5jRG90KGkpID09PSBpICsg
aSk7CisgICAgICAgIGFzc2VydChhcnJbaV0uZnVuY0JyYWNrZXQoaSoyKSA9PT0gaSArIGkqMik7
CisgICAgfQorCit9LCAxMCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9v
KCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAgICBub0lubGluZShmb28pOworICAgIGNsYXNzIEEgeyB9
CisgICAgbGV0IG9iaiA9IHt9OworICAgIEEucHJvdG90eXBlLmZvbyA9IG9iajsKKyAgICBBLnBy
b3RvdHlwZVswXSA9IG9iajsKKworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBi
YXooKSB7IHJldHVybiBzdXBlcltmb28oKV07IH0KKyAgICAgICAgamF6KCkgeyByZXR1cm4gc3Vw
ZXIuZm9vOyB9CisgICAgICAgIGJhcigpIHsgcmV0dXJuIHN1cGVyWzBdOyB9CisgICAgICAgIAor
ICAgIH0KKworICAgIGFzc2VydCgobmV3IEIpLmJheigpID09PSBvYmopOworICAgIGFzc2VydCgo
bmV3IEIpLmpheigpID09PSBvYmopOworICAgIGFzc2VydCgobmV3IEIpLmJhcigpID09PSBvYmop
OworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQSB7IH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICAgICAgQS5wcm90b3R5cGVbaV0gPSBpOworCisK
KyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGluZGV4KGkpIHsgcmV0dXJuIHN1cGVy
W2ldOyB9CisgICAgfQorCisgICAgbGV0IGIgPSBuZXcgQjsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYi5pbmRleChpKSA9PT0gaSk7CisgICAg
fQorfSwgNTApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGxldCBvYmogPSB7fTsKKyAgICBj
bGFzcyBBIHsgY29uc3RydWN0b3IocikgeyB0aGlzLl9mb28gPSByOyB9IH0KKyAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoQS5wcm90b3R5cGUsICcwJywgeyBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1
cm4gdGhpcy5fZm9vOyB9IH0pOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBi
YXIoKSB7IHJldHVybiBzdXBlclswXTsgfQorICAgIH0KKworICAgIGxldCByYW5kID0gTWF0aC5y
YW5kb20oKTsKKyAgICBhc3NlcnQoKG5ldyBCKHJhbmQpKS5iYXIoKSA9PT0gcmFuZCk7Cit9KTsK
KwordGVzdChmdW5jdGlvbigpIHsgY2xhc3MgQSB7CisgICAgICAgIGNvbnN0cnVjdG9yKCkgeyB0
aGlzLl9hcnJheSA9IFtdOyB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhp
cy5fYXJyYXkucHVzaCh4KTsKKyAgICAgICAgfQorICAgICAgICBnZXQgYXJyYXkoKSB7IHJldHVy
biB0aGlzLl9hcnJheTsgfQorICAgIH0KKworICAgIGNsYXNzIEIgZXh0ZW5kcyBBIHsKKyAgICAg
ICAgYmF6KGkpIHsKKyAgICAgICAgICAgIGxldCBvID0ge3g6MjAsIHk6MzAsIFtpXTppfTsKKyAg
ICAgICAgICAgIGZvciAoc3VwZXIuZm9vIGluIG8pIHsgfQorICAgICAgICB9CisgICAgfQorICAg
IGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspCisgICAgICAg
IGFyci5wdXNoKG5ldyBCKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkr
KykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ldOworICAgICAgICBvYmouYmF6KGkpOworICAg
IH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBs
ZXQgb2JqID0gYXJyW2ldLmFycmF5OworICAgICAgICBhc3NlcnQob2JqLmxlbmd0aCA9PT0gMykK
KyAgICAgICAgYXNzZXJ0KG9ialswXSA9PT0gJycgKyBpKTsKKyAgICAgICAgYXNzZXJ0KG9ialsx
XSA9PT0gJ3gnKQorICAgICAgICBhc3NlcnQob2JqWzJdID09PSAneScpCisgICAgfQorfSwgMTAw
MCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gJ2Zv
byc7IH0KKyAgICBub0lubGluZShmb28pOworICAgIGNsYXNzIEEgeworICAgICAgICBjb25zdHJ1
Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9vKHgpIHsKKyAgICAg
ICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGFycmF5
KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFzcyBCIGV4dGVuZHMg
QSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9IHt4OjIwLCB5OjMwLCBb
aV06aX07CisgICAgICAgICAgICBmb3IgKHN1cGVyW2ZvbygpXSBpbiBvKSB7IH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsg
aSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBh
cnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2Jq
LmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5s
ZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAg
IGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQor
ICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAg
ICAgICBjb25zdHJ1Y3RvcigpIHsgdGhpcy5fYXJyYXkgPSBbXTsgfQorICAgICAgICBzZXQgZm9v
KHgpIHsKKyAgICAgICAgICAgIHRoaXMuX2FycmF5LnB1c2goeCk7CisgICAgICAgIH0KKyAgICAg
ICAgZ2V0IGFycmF5KCkgeyByZXR1cm4gdGhpcy5fYXJyYXk7IH0KKyAgICB9CisKKyAgICBjbGFz
cyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAgICAgICBsZXQgbyA9IFsn
JyArIGksICJ4IiwgInkiXTsKKyAgICAgICAgICAgIGZvciAoc3VwZXIuZm9vIG9mIG8pIHsgfQor
ICAgICAgICB9CisgICAgfQorICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDIwOyBpKyspCisgICAgICAgIGFyci5wdXNoKG5ldyBCKTsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGFyci5sZW5ndGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ldOworICAg
ICAgICBvYmouYmF6KGkpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5n
dGg7IGkrKykgeworICAgICAgICBsZXQgb2JqID0gYXJyW2ldLmFycmF5OworICAgICAgICBhc3Nl
cnQob2JqLmxlbmd0aCA9PT0gMykKKyAgICAgICAgYXNzZXJ0KG9ialswXSA9PT0gJycgKyBpKTsK
KyAgICAgICAgYXNzZXJ0KG9ialsxXSA9PT0gJ3gnKQorICAgICAgICBhc3NlcnQob2JqWzJdID09
PSAneScpCisgICAgfQorfSwgMTAwMCk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rp
b24gZm9vKCkgeyByZXR1cm4gJ2Zvbyc7IH0KKyAgICBjbGFzcyBBIHsKKyAgICAgICAgY29uc3Ry
dWN0b3IoKSB7IHRoaXMuX2FycmF5ID0gW107IH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAg
ICAgICAgICB0aGlzLl9hcnJheS5wdXNoKHgpOworICAgICAgICB9CisgICAgICAgIGdldCBhcnJh
eSgpIHsgcmV0dXJuIHRoaXMuX2FycmF5OyB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRlbmRz
IEEgeworICAgICAgICBiYXooaSkgeworICAgICAgICAgICAgbGV0IG8gPSBbJycgKyBpLCAieCIs
ICJ5Il07CisgICAgICAgICAgICBmb3IgKHN1cGVyW2ZvbygpXSBvZiBvKSB7IH0KKyAgICAgICAg
fQorICAgIH0KKyAgICBsZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsg
aSsrKQorICAgICAgICBhcnIucHVzaChuZXcgQik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBh
cnIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXTsKKyAgICAgICAgb2Jq
LmJheihpKTsKKyAgICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgbGV0IG9iaiA9IGFycltpXS5hcnJheTsKKyAgICAgICAgYXNzZXJ0KG9iai5s
ZW5ndGggPT09IDMpCisgICAgICAgIGFzc2VydChvYmpbMF0gPT09ICcnICsgaSk7CisgICAgICAg
IGFzc2VydChvYmpbMV0gPT09ICd4JykKKyAgICAgICAgYXNzZXJ0KG9ialsyXSA9PT0gJ3knKQor
ICAgIH0KK30sIDEwMDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEEgeworICAg
ICAgICBjb25zdHJ1Y3RvcigpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZvbyA9IG51bGw7CisgICAg
ICAgIH0KKyAgICAgICAgc2V0IGZvbyh4KSB7CisgICAgICAgICAgICB0aGlzLl9mb28gPSB4Owor
ICAgICAgICB9CisgICAgICAgIGdldCBmb28oKSB7IHJldHVybiB0aGlzLl9mb287IH0KKyAgICB9
CisgICAgZnVuY3Rpb24gb2JqKGkpIHsgcmV0dXJuIHtvOiBpfTsgfQorICAgIG5vSW5saW5lKG9i
aik7CisKKyAgICBjbGFzcyBCIGV4dGVuZHMgQSB7CisgICAgICAgIGJheihpKSB7CisgICAgICAg
ICAgICA7KHtvOiBzdXBlci5mb299ID0gb2JqKGkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBs
ZXQgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAg
ICAgYXJyLnB1c2goKG5ldyBCKSk7CisgICAgfQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAw
MDsgaSsrKSB7CisgICAgICAgIGFycltpXS5iYXooaSk7CisgICAgfQorICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgICAgIGFzc2VydChhcnJbaV0uZm9vID09PSBpKTsK
KyAgICB9Cit9LCAxMDApOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIGZvbygp
IHsgcmV0dXJuICdmb28nOyB9CisgICAgbm9JbmxpbmUoZm9vKTsKKyAgICBjbGFzcyBBIHsKKyAg
ICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICB0aGlzLl9mb28gPSBudWxsOworICAg
ICAgICB9CisgICAgICAgIHNldCBmb28oeCkgeworICAgICAgICAgICAgdGhpcy5fZm9vID0geDsK
KyAgICAgICAgfQorICAgICAgICBnZXQgZm9vKCkgeyByZXR1cm4gdGhpcy5fZm9vOyB9CisgICAg
fQorICAgIGZ1bmN0aW9uIG9iaihpKSB7IHJldHVybiB7bzogaX07IH0KKyAgICBub0lubGluZShv
YmopOworCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooaSkgeworICAgICAg
ICAgICAgOyh7bzogc3VwZXJbZm9vKCldfSA9IG9iaihpKSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbGV0IGFyciA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Cisg
ICAgICAgIGFyci5wdXNoKChuZXcgQikpOworICAgIH0KKyAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDA7IGkrKykgeworICAgICAgICBhcnJbaV0uYmF6KGkpOworICAgIH0KKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDA7IGkrKykgeworICAgICAgICBhc3NlcnQoYXJyW2ldLmZvbyA9PT0g
aSk7CisgICAgfQorfSwgMTAwKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBBIHsK
KyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICB0aGlzLl9mb28gPSBudWxsOwor
ICAgICAgICB9CisgICAgICAgIGdldCBjYWxsKCkgeworICAgICAgICAgICAgbGV0IHJldCA9ICgp
ID0+ICdjYWxsJzsKKyAgICAgICAgICAgIG5vSW5saW5lKHJldCk7CisgICAgICAgICAgICByZXR1
cm4gcmV0OworICAgICAgICB9CisgICAgICAgIGdldCBhcHBseSgpIHsgCisgICAgICAgICAgICBs
ZXQgcmV0ID0gKCkgPT4gJ2FwcGx5JzsKKyAgICAgICAgICAgIG5vSW5saW5lKHJldCk7CisgICAg
ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQiBleHRl
bmRzIEEgeworICAgICAgICBmb28oKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY2FsbCh7
fSwgMjAsIDMwKTsKKyAgICAgICAgfQorICAgICAgICBiYXIoKSB7CisgICAgICAgICAgICByZXR1
cm4gc3VwZXIuYXBwbHkoe30sIFsxMCwgMjBdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgaSsrKSB7CisgICAgICAgIGxldCBiID0gbmV3IEI7CisgICAg
ICAgIGFzc2VydChiLmZvbygpID09PSAnY2FsbCcpOworICAgICAgICBhc3NlcnQoYi5iYXIoKSA9
PT0gJ2FwcGx5Jyk7CisgICAgfQorfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2xhc3Mg
QSB7CisgICAgICAgIGNvbnN0cnVjdG9yKGkpIHsgdGhpcy5faSA9IGk7IH0KKyAgICAgICAgZ2V0
IGZvbygpIHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihzdHJpbmdzLCAuLi52YWx1ZXMp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gW3N0cmluZ3MsIHZhbHVlc107CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZ2V0IGkoKSB7IHJldHVybiB0aGlzLl9pOyB9CisgICAg
fQorCisgICAgY2xhc3MgQiBleHRlbmRzIEEgeworICAgICAgICBiYXooKSB7CisgICAgICAgICAg
ICByZXR1cm4gc3VwZXIuZm9vYGhlbGxvJHtzdXBlci5pfXdvcmxkYDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkr
KykgeworICAgICAgICBsZXQgYiA9IG5ldyBCKGkpOworICAgICAgICBhcnIucHVzaChiKTsKKyAg
ICB9CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgbGV0IHIg
PSBhcnJbaV0uYmF6KCk7CisgICAgICAgIGFzc2VydChyLmxlbmd0aCA9PT0gMik7CisgICAgICAg
IGFzc2VydChyWzBdLmxlbmd0aCA9PT0gMik7CisgICAgICAgIGFzc2VydChyWzBdWzBdID09PSAn
aGVsbG8nKTsKKyAgICAgICAgYXNzZXJ0KHJbMF1bMV0gPT09ICd3b3JsZCcpOworICAgICAgICBh
c3NlcnQoclsxXS5sZW5ndGggPT09IDEpOworICAgICAgICBhc3NlcnQoclsxXVswXSA9PT0gaSk7
CisgICAgfQorfSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>