<?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>151208</bug_id>
          
          <creation_ts>2015-11-12 11:15:15 -0800</creation_ts>
          <short_desc>Calculate the graphics benchmark test gain adaptively</short_desc>
          <delta_ts>2015-11-19 17:20:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1141553</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-12 11:15:15 -0800</bug_when>
    <thetext>Tuning the PID controller of the graphics benchmark manually is time consuming and it does not necessarily give the perfect/fair results. We need to calculate the gain adaptively and get rid of the gain and limits parameters we have to choose manually for every test. Many ways were suggested by automatic control books and papers but we chose to use the classic Ziegler–Nichols method.

The basic idea is start with Ku = 0, eliminate the I and D terms of the PID and return the P term only; P = Ku * e. Then increment the Kp gradually till the set point is reached. We stop incrementing Ku and measure the oscillation period Tu. After measuring the Ku and Tu, we calculate the controller parameters according to Ziegler–Nichols method for control type = some overshot; see https://en.wikipedia.org/wiki/Ziegler–Nichols_method.

I could not find clear description on how Ku is initialized and by how much it can be incremented. This is very cortical to the graphics benchmark since some tests saturate with small number of items, e.g. 50 items, while others saturate with large number of items, e.g. more than 5000 items. So incrementing by small values will require long time to reach the set-point for tests with large number of items. And incrementing by large values will cause the test to be unstable.

The ideal solution is
1. Start with only one item in the test.
2. Increment Ku very slowly at the beginning.
3. Increment Ku significantly but moderately if the test is not responsive to the small tuning values.

-- For the first point we can choose Ku = -1 / e which will return P = Ku * e = -1. This will add one item to the test.
-- For the second point we calculate an ultimate distance from y0 after time t such that it moves very slowly at the beginning but very fast later on. We can use a cubic formula for the ultimate distance such that it reaches the set point after 1000ms. Then we can use the ratio between the ultimate distance and the current distance to tell us how much the system is responsive. The ratio will be very small at the beginning with all tests but will be very high with tests which require many items to saturate.
-- For the third point we can use the natural logarithm for the ratio of the ultimate distance to the current distance. The natural logarithm should be good but moderate value for large ratios.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141618</commentid>
    <comment_count>1</comment_count>
      <attachid>265429</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-12 13:44:39 -0800</bug_when>
    <thetext>Created attachment 265429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141620</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-12 13:45:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/22882967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141695</commentid>
    <comment_count>3</comment_count>
      <attachid>265449</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-12 16:41:26 -0800</bug_when>
    <thetext>Created attachment 265449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141728</commentid>
    <comment_count>4</comment_count>
      <attachid>265462</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-12 18:32:51 -0800</bug_when>
    <thetext>Created attachment 265462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141731</commentid>
    <comment_count>5</comment_count>
      <attachid>265462</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-12 18:45:40 -0800</bug_when>
    <thetext>Comment on attachment 265462
Patch

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

This patch is trying to do too many things which makes it hard to review.

&gt; PerformanceTests/Animometer/resources/extensions.js:164
&gt; +        for (var i = 0; i &lt; styleSheets.length; ++i) {
&gt; +            if (!styleSheets[i].cssRules)
&gt; +                continue;
&gt; +
&gt;              for (var j = 0; j &lt; styleSheets[i].cssRules.length; ++j) {
&gt;                  if (styleSheets[i].cssRules[j].selectorText == referenceRule) {

This is working around a bug in the JS, and should just go away by using media queries.

&gt; PerformanceTests/Animometer/resources/extensions.js:336
&gt; -    _showEmpty: function(row)
&gt; +    _showEmptyCell: function(row)
&gt;      {
&gt; -        var td = document.createElement(&quot;td&quot;);
&gt; -        row.appendChild(td);
&gt; +        return DocumentExtension.createElement(&quot;td&quot;, {}, row);
&gt;      },
&gt;  
&gt; -    _showText: function(row, text)
&gt; +    _showText: function(row, text, color)
&gt;      {
&gt; -        var td = document.createElement(&quot;td&quot;);
&gt; +        var td = DocumentExtension.createElement(&quot;td&quot;, {}, row);
&gt;          td.textContent = text;
&gt; -        row.appendChild(td);
&gt; +        td.style.color = color || &quot;black&quot;;
&gt;      },
&gt;  
&gt; -    _showFixedNumber: function(row, value, digits)
&gt; +    _showFixedNumber: function(row, value, digits, color)
&gt;      {
&gt; -        var td = document.createElement(&quot;td&quot;);
&gt; +        var td = DocumentExtension.createElement(&quot;td&quot;, {}, row);
&gt;          td.textContent = value.toFixed(digits || 2);
&gt; -        row.appendChild(td);
&gt; +        td.style.color = color || &quot;black&quot;;
&gt;      },

This doesn&apos;t seem relevant to the adaptive gain.

&gt; PerformanceTests/Animometer/resources/extensions.js:404
&gt; +    _isAccurateMeasurement: function(index, data, measurement, options)
&gt;      {
&gt; -        var row = document.createElement(&quot;tr&quot;);
&gt; +        if (measurement == Strings[&quot;JSON_MEASUREMENTS&quot;][3])
&gt; +            return data[Strings[&quot;JSON_MEASUREMENTS&quot;][3]] &lt; 10;
&gt; +            
&gt; +        if (index == 1 &amp;&amp; measurement == Strings[&quot;JSON_MEASUREMENTS&quot;][0])
&gt; +            return Math.abs(data[Strings[&quot;JSON_MEASUREMENTS&quot;][0]] - options[&quot;frame-rate&quot;]) &lt; 2;
&gt; +       
&gt; +        return true;
&gt; +    },
&gt; +
&gt; +    _isAccurateTest: function(testResults, options)
&gt; +    {
&gt; +        for (var index = 0; index &lt; 2; ++index) {
&gt; +            var data = testResults[Strings[&quot;JSON_EXPERIMENTS&quot;][index]];
&gt; +            for (var measurement in data) {
&gt; +                if (!this._isAccurateMeasurement(index, data, measurement, options))
&gt; +                    return false;
&gt; +            }
&gt; +        }    
&gt; +        return true;
&gt; +    },

It&apos;s not clear what the &quot;accurate&quot; is trying to imply. I&apos;d read this as something that makes a judgement call about a result, but it seems to just fetch data from the json?

&gt; PerformanceTests/Animometer/runner/resources/animometer.css:240
&gt; +@media screen and (min-width: 1800px) {
&gt; +    section {
&gt; +        width: 1600px;
&gt; +        height: 800px;
&gt; +    }
&gt; +}

So can you remove the insertCssRuleAfter() code now?

&gt; PerformanceTests/Animometer/runner/resources/animometer.js:457
&gt; +document.addEventListener(&quot;loaded&quot;, benchmarkController.initialize());

The event is called &quot;load&quot;.

&gt; PerformanceTests/Animometer/tests/resources/main.js:145
&gt; -        if (this._method == &quot;setInterval&quot;)
&gt; -            this._animator.start();
&gt; -        else
&gt; -            this._animator.animateLoop();
&gt; +        this._animator.animateLoop();

This could be done separately.

&gt; PerformanceTests/Animometer/tests/resources/stage.js:44
&gt; +        if (typeof this._size == &quot;undefined&quot;) {

Seems like an odd way to do it. Can&apos;t you just set things in in an initialize function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141944</commentid>
    <comment_count>6</comment_count>
      <attachid>265462</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2015-11-13 14:41:07 -0800</bug_when>
    <thetext>Comment on attachment 265462
Patch

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

&gt;&gt; PerformanceTests/Animometer/runner/resources/animometer.js:457
&gt;&gt; +document.addEventListener(&quot;loaded&quot;, benchmarkController.initialize());
&gt; 
&gt; The event is called &quot;load&quot;.

And presumably you&apos;d be passing the function, not invoking it:

document.addEventListener(&quot;load&quot;, benchmarkController.initialize);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1142015</commentid>
    <comment_count>7</comment_count>
      <attachid>265528</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-13 19:29:26 -0800</bug_when>
    <thetext>Created attachment 265528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143475</commentid>
    <comment_count>8</comment_count>
      <attachid>265910</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-19 15:23:58 -0800</bug_when>
    <thetext>Created attachment 265910
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143481</commentid>
    <comment_count>9</comment_count>
      <attachid>265910</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-19 15:38:00 -0800</bug_when>
    <thetext>Comment on attachment 265910
Patch

I changed the patch a little to calculate the min-max value which prevents the system from fluctuating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143483</commentid>
    <comment_count>10</comment_count>
      <attachid>265462</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-19 15:45:47 -0800</bug_when>
    <thetext>Comment on attachment 265462
Patch

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

&gt;&gt; PerformanceTests/Animometer/resources/extensions.js:164
&gt;&gt;                  if (styleSheets[i].cssRules[j].selectorText == referenceRule) {
&gt; 
&gt; This is working around a bug in the JS, and should just go away by using media queries.

This was done in https://bugs.webkit.org/show_bug.cgi?id=151327.

&gt;&gt; PerformanceTests/Animometer/resources/extensions.js:336
&gt;&gt;      },
&gt; 
&gt; This doesn&apos;t seem relevant to the adaptive gain.

This was moved to https://bugs.webkit.org/show_bug.cgi?id=151286.

&gt;&gt; PerformanceTests/Animometer/resources/extensions.js:404
&gt;&gt; +    },
&gt; 
&gt; It&apos;s not clear what the &quot;accurate&quot; is trying to imply. I&apos;d read this as something that makes a judgement call about a result, but it seems to just fetch data from the json?

This has been moved to https://bugs.webkit.org/show_bug.cgi?id=151286.

&gt;&gt; PerformanceTests/Animometer/runner/resources/animometer.css:240
&gt;&gt; +}
&gt; 
&gt; So can you remove the insertCssRuleAfter() code now?

insertCssRuleAfter() was removed in https://bugs.webkit.org/show_bug.cgi?id=151327.

&gt;&gt;&gt; PerformanceTests/Animometer/runner/resources/animometer.js:457
&gt;&gt;&gt; +document.addEventListener(&quot;loaded&quot;, benchmarkController.initialize());
&gt;&gt; 
&gt;&gt; The event is called &quot;load&quot;.
&gt; 
&gt; And presumably you&apos;d be passing the function, not invoking it:
&gt; 
&gt; document.addEventListener(&quot;load&quot;, benchmarkController.initialize);

This was fixed in https://bugs.webkit.org/show_bug.cgi?id=151327.

&gt;&gt; PerformanceTests/Animometer/tests/resources/main.js:145
&gt;&gt; +        this._animator.animateLoop();
&gt; 
&gt; This could be done separately.

This was done in https://bugs.webkit.org/show_bug.cgi?id=151283.

&gt;&gt; PerformanceTests/Animometer/tests/resources/stage.js:44
&gt;&gt; +        if (typeof this._size == &quot;undefined&quot;) {
&gt; 
&gt; Seems like an odd way to do it. Can&apos;t you just set things in in an initialize function.

This was fixed in https://bugs.webkit.org/show_bug.cgi?id=151289.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143490</commentid>
    <comment_count>11</comment_count>
      <attachid>265910</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-11-19 16:19:32 -0800</bug_when>
    <thetext>Comment on attachment 265910
Patch

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

&gt; PerformanceTests/Animometer/tests/resources/math.js:205
&gt; +    BEFORE_YSP: 0,
&gt; +    AFTER_YSP: 1

Can you expand YSP into words?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143492</commentid>
    <comment_count>12</comment_count>
      <attachid>265916</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-11-19 16:26:39 -0800</bug_when>
    <thetext>Created attachment 265916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143511</commentid>
    <comment_count>13</comment_count>
      <attachid>265916</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 17:20:53 -0800</bug_when>
    <thetext>Comment on attachment 265916
Patch

Clearing flags on attachment: 265916

Committed r192669: &lt;http://trac.webkit.org/changeset/192669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1143512</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-19 17:20:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265429</attachid>
            <date>2015-11-12 13:44:39 -0800</date>
            <delta_ts>2015-11-12 16:41:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151112134436.patch</filename>
            <type>text/plain</type>
            <size>50503</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTY1CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKaW5kZXggMzU2NzNiZjQxMDg0M2ViNDY2
MDc5YzUwYzIxYzc0OTNkMTBmOThhNi4uNDJlMDZiMmVlNmI0ZjVjMDFiZjk4NzViNDFiNGNkYjE1
ZWE0MzAyMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcwpAQCAtMTU2LDcgKzE1NiwxMCBAQCB3aW5kb3cuRG9jdW1lbnRFeHRl
bnNpb24gPQogICAgIHsKICAgICAgICAgdmFyIHN0eWxlU2hlZXRzID0gZG9jdW1lbnQuc3R5bGVT
aGVldHM7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7
ICsraSkgeyAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcy5sZW5ndGg7ICsraikgewogICAgICAgICAgICAg
ICAgIGlmIChzdHlsZVNoZWV0c1tpXS5jc3NSdWxlc1tqXS5zZWxlY3RvclRleHQgPT0gcmVmZXJl
bmNlUnVsZSkgewogICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0c1tpXS5pbnNlcnRSdWxl
KG5ld1J1bGUsIGogKyAxKTsKQEAgLTMxMywzMSArMzE2LDMwIEBAIFJlc3VsdHNUYWJsZS5wcm90
b3R5cGUgPQogICAgICAgICB9CiAgICAgfSwKICAgICAKLSAgICBfc2hvd0VtcHR5OiBmdW5jdGlv
bihyb3cpCisgICAgX3Nob3dFbXB0eUNlbGw6IGZ1bmN0aW9uKHJvdykKICAgICB7Ci0gICAgICAg
IHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHJvdy5hcHBl
bmRDaGlsZCh0ZCk7CisgICAgICAgIHJldHVybiBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVt
ZW50KCJ0ZCIsIHt9LCByb3cpOwogICAgIH0sCiAKLSAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJv
dywgdGV4dCkKKyAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJvdywgdGV4dCwgY29sb3IpCiAgICAg
ewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAg
ICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9LCByb3cp
OwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0ZCk7CisgICAgICAgIHRkLnN0eWxlLmNvbG9yID0gY29sb3IgfHwgImJsYWNrIjsKICAgICB9
LAogCi0gICAgX3Nob3dGaXhlZE51bWJlcjogZnVuY3Rpb24ocm93LCB2YWx1ZSwgZGlnaXRzKQor
ICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0aW9uKHJvdywgdmFsdWUsIGRpZ2l0cywgY29sb3Ip
CiAgICAgewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9
LCByb3cpOwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoZGlnaXRzIHx8
IDIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICB0ZC5zdHlsZS5jb2xv
ciA9IGNvbG9yIHx8ICJibGFjayI7CiAgICAgfSwKICAgICAKICAgICBfc2hvd0dyYXBoOiBmdW5j
dGlvbihyb3csIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cykKICAgICB7CiAgICAgICAgIHZhciBkYXRh
ID0gdGVzdFJlc3VsdHNbU3RyaW5nc1siSlNPTl9TQU1QTEVTIl1bMF1dOwogICAgICAgICBpZiAo
IWRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eShyb3cpOworICAgICAgICAgICAg
dGhpcy5fc2hvd0VtcHR5Q2VsbChyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMzYxLDcgKzM2Myw3IEBAIFJlc3VsdHNUYWJsZS5wcm90b3R5cGUgPQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzWyJKU09OX1NBTVBM
RVMiXVswXV07CiAgICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd0Vt
cHR5KHJvdyk7CisgICAgICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxsKHJvdyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzgsMTUgKzM4MCw1OCBAQCBS
ZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKICAg
ICB9LAogCi0gICAgX3Nob3dUZXN0OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpCisg
ICAgX2lzQWNjdXJhdGVNZWFzdXJlbWVudDogZnVuY3Rpb24oaW5kZXgsIGRhdGEsIG1lYXN1cmVt
ZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09IFN0cmluZ3Nb
IkpTT05fTUVBU1VSRU1FTlRTIl1bM10pCisgICAgICAgICAgICByZXR1cm4gZGF0YVtTdHJpbmdz
WyJKU09OX01FQVNVUkVNRU5UUyJdWzNdXSA8IDEwOworICAgICAgICAgICAgCisgICAgICAgIGlm
IChpbmRleCA9PSAxICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3NbIkpTT05fTUVBU1VSRU1FTlRT
Il1bMF0pCisgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoZGF0YVtTdHJpbmdzWyJKU09OX01F
QVNVUkVNRU5UUyJdWzBdXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUiXSkgPCAyOworICAgICAgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2lzQWNjdXJhdGVUZXN0OiBmdW5j
dGlvbih0ZXN0UmVzdWx0cywgb3B0aW9ucykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGluZGV4
ID0gMDsgaW5kZXggPCAyOyArK2luZGV4KSB7CisgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RS
ZXN1bHRzW1N0cmluZ3NbIkpTT05fRVhQRVJJTUVOVFMiXVtpbmRleF1dOworICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgIGlmICghdGhp
cy5faXNBY2N1cmF0ZU1lYXN1cmVtZW50KGluZGV4LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9u
cykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9zaG93RW1w
dHlDZWxsczogZnVuY3Rpb24ocm93LCBoZWFkZXJzKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aW5kZXggPSAwOyBpbmRleCA8IGhlYWRlcnMubGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAg
ICBpZiAoIWhlYWRlcnNbaW5kZXhdLmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
IHZhciB0ZCA9IHRoaXMuX3Nob3dFbXB0eUNlbGwocm93KTsKKyAgICAgICAgICAgICAgICB0ZC5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAieWVsbG93IjsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGxzKHJvdywg
aGVhZGVyc1tpbmRleF0uY2hpbGRyZW4pOworICAgICAgICB9CisgICAgfSwKKworICAgIF9zaG93
RW1wdHlSb3c6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2hv
d0VtcHR5Q2VsbHMocm93LCB0aGlzLl9oZWFkZXJzKTsKKyAgICB9LAorCisgICAgX3Nob3dUZXN0
OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpCisgICAgeworICAgIAor
ICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7
fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5faXNBY2N1cmF0ZVRl
c3QodGVzdFJlc3VsdHMsIG9wdGlvbnMpID8gbnVsbCA6ICJyZWQiOwogICAgICAgICAKICAgICAg
ICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2hlYWRlcnMubGVuZ3RoOyArK2lu
ZGV4KSB7CiAKICAgICAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgICAgIGNhc2Ug
MDoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lLCBjb2xvcik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgMToKQEAgLTM5Nyw4ICs0NDIsOSBA
QCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW1N0cmlu
Z3NbIkpTT05fRVhQRVJJTUVOVFMiXVtpbmRleCAtIDJdXTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93
Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMik7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMiwgdGhpcy5faXNBY2N1
cmF0ZU1lYXN1cmVtZW50KGluZGV4IC0gMiwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpID8g
ImJsYWNrIiA6ICJyZWQiKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIDQ6CkBAIC00MDcsMzggKzQ1
MywzOCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHJvdyk7CiAgICAgfSwKIAotICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1
aXRlTmFtZSwgc3VpdGVSZXN1bHRzKQorICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1aXRlTmFt
ZSwgc3VpdGVSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgdGVzdE5h
bWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzJdXSkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRlUmVzdWx0c1tTdHJpbmdzWyJKU09O
X1JFU1VMVFMiXVsyXV1bdGVzdE5hbWVdKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dUZXN0KHRl
c3ROYW1lLCBzdWl0ZVJlc3VsdHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMl1dW3Rlc3ROYW1l
XSwgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9LAogICAgIAotICAgIF9zaG93SXRlcmF0aW9u
IDogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKKyAgICBfc2hvd0l0ZXJhdGlvbiA6IGZ1bmN0
aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBz
dWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzWyJKU09OX1JFU1VMVFMiXVsxXV0p
IHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dTdWl0ZShzdWl0ZU5hbWUsIGl0ZXJhdGlvblJlc3Vs
dHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMV1dW3N1aXRlTmFtZV0pOworICAgICAgICAgICAg
aWYgKHN1aXRlTmFtZSAhPSBPYmplY3Qua2V5cyhpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3NbIkpT
T05fUkVTVUxUUyJdWzFdXSlbMF0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5Um93
KCk7CisgICAgICAgICAgICB0aGlzLl9zaG93U3VpdGUoc3VpdGVOYW1lLCBpdGVyYXRpb25SZXN1
bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzFdXVtzdWl0ZU5hbWVdLCBvcHRpb25zKTsKICAg
ICAgICAgfQogICAgIH0sCiAgICAgCi0gICAgc2hvd1JlY29yZDogZnVuY3Rpb24odGVzdE5hbWUs
IG1lc3NhZ2UsIHRlc3RSZXN1bHRzKQorICAgIHNob3dSZWNvcmQ6IGZ1bmN0aW9uKHRlc3ROYW1l
LCBtZXNzYWdlLCB0ZXN0UmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuY2xl
YXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihtZXNzYWdlKTsKLSAgICAgICAgdGhpcy5f
c2hvd1Rlc3QodGVzdE5hbWUsIHRlc3RSZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBvcHRpb25zKTsKICAgICB9LAogCi0gICAgc2hvd0l0ZXJh
dGlvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNSZXN1bHRzKQorICAgIHNob3dJdGVyYXRpb25zOiBm
dW5jdGlvbihpdGVyYXRpb25zUmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMu
Y2xlYXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIik7CiAgICAgICAgIAogICAgICAg
ICBpdGVyYXRpb25zUmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMpIHsK
LSAgICAgICAgICAgIHRoaXMuX3Nob3dJdGVyYXRpb24oaXRlcmF0aW9uUmVzdWx0cyk7CisgICAg
ICAgICAgICB0aGlzLl9zaG93SXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpOwog
ICAgICAgICB9LCB0aGlzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCmluZGV4IDAw
NWNjYzFjYWM0Nzc5MTVhYTExN2MwNjVjNWIyNDhkNjkzNDg3NDEuLjE3OGQzM2MxMTI5NmVlNTg1
NjJjZjI4MzgwZTRmOWEwYzAxODA4N2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCkBAIC0zMTYs
NiArMzE2LDcgQEAgc2VjdGlvbiNydW5uaW5nID4gI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7CiAg
ICAgd2lkdGg6IDEwMCU7CiAgICAgaGVpZ2h0OiAxMDAlOwogICAgIGJvcmRlcjogMHB4IG5vbmU7
CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAogc2VjdGlvbiNydW5uaW5nID4gI3Byb2dyZXNz
IHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9hbmltb21ldGVyLmpzCmluZGV4IGU1Njc2ODFhMmUxY2Y0MTA3NmJhMWI2MjNmMjNl
NGZlYWI4MTk1YjAuLjhiOTAyMmVjYTAwMDIzM2ExYzAxZTQ2NTlmNTE5MmFhZGJiMTY1NDEgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2Fu
aW1vbWV0ZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYW5pbW9tZXRlci5qcwpAQCAtNDUsNyArNDUsNyBAQCB3aW5kb3cuYmVuY2htYXJrUnVu
bmVyQ2xpZW50ID0gewogICAgIHsKICAgICAgICAgdmFyIGpzb24gPSB0aGlzLl9yZXN1bHRzRGFz
aGJvYXJkLnRvSlNPTih0cnVlLCB0cnVlKTsKICAgICAgICAgdGhpcy5zY29yZSA9IGpzb25bU3Ry
aW5nc1siSlNPTl9TQ09SRSJdXTsKLSAgICAgICAgdGhpcy5fcmVzdWx0c1RhYmxlLnNob3dJdGVy
YXRpb25zKGpzb25bU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMF1dKTsKKyAgICAgICAgdGhpcy5f
cmVzdWx0c1RhYmxlLnNob3dJdGVyYXRpb25zKGpzb25bU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1b
MF1dLCB0aGlzLm9wdGlvbnMpOwogICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04oImpz
b24iLCBqc29uW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzBdXVswXSk7CiAgICAgICAgIHN1aXRl
c01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpTT04oanNvbltTdHJpbmdzWyJKU09OX1JF
U1VMVFMiXVswXV1bMF0pOwogICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRz
KCk7CkBAIC00NjMsNCArNDYzLDQgQEAgd2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIgPQogICAg
IH0KIH0KIAotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGJl
bmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWRlZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMK
aW5kZXggYzkwNDY3ZTc2ZjhlMThiMzdmNjc1ZDMyNjk5NTZiNDFiZThkM2NlNC4uYTQ2MjUzYTRi
Y2RhZjIwM2Q1OTUzMmRiOTgyNWRhOTdlMDgzMzI2MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTYyLDI3ICs2
MiwyNyBAQCB2YXIgU3VpdGVzID0gW107CiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkhUTUwgc3Vp
dGUiLAogICAgIFsKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
KyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAog
ICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjaXJjbGVzIgogICAgICAgICB9LAogICAg
ICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNz
cy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVX
aWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAog
ICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgogICAgICAgICB9
LAogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNo
YXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xl
JmZpbGw9Z3JhZGllbnQiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVu
dCBjaXJjbGVzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0
PTUmcmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdl
U3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBh
cnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAogICAg
ICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBTVkcgaW1hZ2VzIgogICAgICAgICB9LAogICAg
ICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdp
ZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5w
bmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1p
bWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4u
L3Jlc291cmNlcy95aW4teWFuZy5wbmciLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2lu
ZyBQTkcgaW1hZ2VzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0
ZXh0L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEw
MCIsCisgICAgICAgICAgICB1cmw6ICJ0ZXh0L2xheWVyaW5nLXRleHQuaHRtbCIsCiAgICAgICAg
ICAgICBuYW1lOiAiQ1NTIGxheWVyaW5nIHRleHQiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtOTEs
MjMgKzkxLDIzIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBzdWl0ZSIsCiBTdWl0ZXMu
cHVzaChuZXcgU3VpdGUoIkNhbnZhcyBzdWl0ZSIsCiAgICAgWwogICAgICAgICB7IAotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZw
YXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dh
aW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRp
Y2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0
aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCiAgICAgICAgICAg
ICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCiAgICAgICAgIH0sCiAgICAg
ICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0
aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50
IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdy
YWRpZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6
ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49MC40
JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0
PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJs
OiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNs
ZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFu
Zy5zdmciLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBTVkcgaW1hZ2VzIgog
ICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0u
Li9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKICAgICAg
ICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgUE5HIGltYWdlcyIKICAgICAgICAgfSwKICAg
ICBdCkBAIC0xMTYsMjMgKzExNiwyMyBAQCBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNhbnZhcyBz
dWl0ZSIsCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIlNWRyBzdWl0ZSIsCiAgICAgWwogICAgICAg
ICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNo
YXBlcy5odG1sP2dhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdp
ZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICB1cmw6
ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lk
dGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAgICAgICAgIG5hbWU6
ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fp
bj0wLjYmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xl
SGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZw
YXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCiAgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAogICAgICAgICB9LAogICAgICAgICB7Ci0g
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRp
Y2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQi
LAogICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgogICAg
ICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9
MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAogICAgICAgICAgICAgbmFtZTog
IlNWRyBib3VuY2luZyBTVkcgaW1hZ2VzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dh
aW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xl
SGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAogICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgog
ICAgICAgICB9LAogICAgIF0KQEAgLTE4NSw3ICsxODUsNyBAQCBTdWl0ZXMucHVzaChuZXcgU3Vp
dGUoIkJhc2ljIGNhbnZhcyBwYXRoIHN1aXRlIiwKICAgICAgICAgICAgIG5hbWU6ICJDYW52YXMg
YmV6aWVyIHBhdGgiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNp
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1RvIiwKKyAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJjVG8i
LAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNUbyBzZWdtZW50cyIKICAgICAgICAgfSwK
ICAgICAgICAgewpAQCAtMjA5LDcgKzIwOSw3IEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQmFz
aWMgY2FudmFzIHBhdGggc3VpdGUiLAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIg
cGF0aCwgZmlsbCIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2lt
cGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJjVG9GaWxsIiwKKyAgICAg
ICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJj
VG9GaWxsIiwKICAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMsIGZpbGwi
CiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTIyNiwxMSArMjI2LDExIEBAIFN1aXRlcy5wdXNo
KG5ldyBTdWl0ZSgiQmFzaWMgY2FudmFzIHBhdGggc3VpdGUiLAogU3VpdGVzLnB1c2gobmV3IFN1
aXRlKCJDb21wbGV4IGV4YW1wbGVzIiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVy
bDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJl
bW92ZUxpbWl0PTEwIiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJv
bnMuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAg
fSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0
bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01IiwKKyAgICAgICAgICAgIHVybDog
ImV4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMg
c3RhcnMiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtMjM5LDE1ICsyMzksMTUgQEAgU3VpdGVzLnB1
c2gobmV3IFN1aXRlKCJDb21wbGV4IGV4YW1wbGVzIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgi
VGVzdCBUZW1wbGF0ZXMiLAogICAgIFsKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAidGVt
cGxhdGUvdGVtcGxhdGUtY3NzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01
IiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sIiwKICAgICAg
ICAgICAgIG5hbWU6ICJDU1MgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sP2dhaW49MSZhZGRMaW1p
dD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCIsCisgICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1w
bGF0ZS1jYW52YXMuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIHRlbXBsYXRlIgog
ICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0
ZS1zdmcuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmPG90aGVyX3BhcmFt
dGVyPj08dmFsdWU+IiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLXN2Zy5o
dG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJTVkcgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAgICAg
XQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKaW5kZXggNjNhZDU5YjQ3OTg1MTNlOWJiMTA1
ZDExZGYwY2Y0OTY0MDhkY2ZkYi4uNGNmN2NkNTI2YjBkODk3NmQ2OWVmNWU4OGNjNzZlYmNhMDY1
YzU0YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCkBAIC03Niw5ICs3Niw5IEBAIGZ1
bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKIEJv
dW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2U7
CiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKQor
ZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlv
bnMpCiB7Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
ayk7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywg
b3B0aW9ucyk7CiAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsK
IH0KIApAQCAtMTAxLDUgKzEwMSw1IEBAIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzCiAKIEJvdW5j
aW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1
bmN0aW9uKCkKIHsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0
b3IodGhpcyk7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9y
KHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qcwppbmRleCAyNWM1NzAwYmYwZDBkNTcyMmZjMmVlNzBjMWU1NmQzM2VkMjVkYzM2
Li5lODUwMGYzYTFjMGVlZmJmYWI3OTM4NGViMjM2NTRkOTliYjkwNTFkIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzCkBAIC01Nyw5ICs1Nyw5IEBAIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlID0KICAgICB9
CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKQorZnVu
Y3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7Ci0g
ICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgU3RhZ2VBbmltYXRv
ci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiB9OwogCiBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5
cGUpOwpAQCAtMTI2LDUgKzEyNiw1IEBAIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrOwogCiBCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigp
CiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworICAg
IHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25z
KTsKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJv
bnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3Vy
Y2VzL2NhbnZhcy1lbGVjdHJvbnMuanMKaW5kZXggMTFmODkyMGM1YjQ1YzBjZjRkZjQwMWQxNDY1
ODE2MzI2Y2E0YWQ5NC4uNGU5MzIwNDhkN2M0MDlkN2JiOTUzYzMzMTQzNGM2OWRhNDRhZjg5NiAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jl
c291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwpAQCAtODIs
OSArODIsOSBAQCBDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkKICAgICB9KTsKIH0KIAotZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zQW5p
bWF0b3IoYmVuY2htYXJrKQorZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IoYmVuY2ht
YXJrLCBvcHRpb25zKQogewotICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAg
ICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiAgICAgdGhpcy5fY29u
dGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBA
IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQogQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmlt
YXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBi
ZW5jaG1hcmsuCi0gICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNBbmltYXRvcih0aGlzKTsK
KyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlv
bnMpOwogfQogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZh
cy1zdGFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9y
ZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCmluZGV4IGM5MDI4ZDc5MTA5MjMyNGQzNjY3YTE2N2Qx
ZjM5M2I4ODc1OGNiNjguLmZiZGJiNGY5NWQ1NDEwZjEwNDcwZjI0OTMzNjAzNjYxZGI2N2RhYWMg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9y
ZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCkBAIC04Myw5ICs4Myw5
IEBAIENhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVs
dGEpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIENhbnZhc1N0YXJzQW5pbWF0b3IoYmVuY2htYXJr
KQorZnVuY3Rpb24gQ2FudmFzU3RhcnNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7Ci0g
ICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICBBbmltYXRvci5jYWxsKHRoaXMs
IGJlbmNobWFyaywgb3B0aW9ucyk7CiAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFn
ZS5jb250ZXh0OwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgQ2FudmFzU3RhcnNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKIENhbnZhc1N0YXJzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgIC8vIEF0
dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgIHJldHVybiBuZXcgQ2FudmFz
U3RhcnNBbmltYXRvcih0aGlzKTsKKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNBbmltYXRvcih0
aGlzLCB0aGlzLl9vcHRpb25zKTsKIH0KIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy9tYWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YWluLmpzCmluZGV4IDc2ODczMzQ5Njc4NTA4ZmMzNzZmMGQ4ODQwMWQ0NzQyMGI4MWVjNTQuLjBl
NWNkOGRjOTc0ZDA5Y2U4MDZiNzI3NmY2ODk1NDNkZjhlNTg0ZjggMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKQEAgLTU5LDkg
KzU5LDExIEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgfQogfQogCi1mdW5jdGlv
biBBbmltYXRvcihiZW5jaG1hcmspCitmdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmssIG9wdGlv
bnMpCiB7CiAgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgIHRoaXMuX29wdGlv
bnMgPSBvcHRpb25zOworICAgIAogICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwogICAgIHRoaXMu
X2Ryb3BGcmFtZUNvdW50ID0gMTsKICAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7IApA
QCAtNzIsMTEgKzc0LDYgQEAgZnVuY3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKQogCiBBbmltYXRv
ci5wcm90b3R5cGUgPQogewotICAgIHN0YXJ0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLl9pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEp
OwotICAgIH0sCi0gICAgCiAgICAgdGltZURlbHRhOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7
CkBAIC0xMDksMjAgKzEwNiwxNiBAQCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgICAgICB2YXIg
Y3VycmVudEZyYW1lUmF0ZSA9IE1hdGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8g
dGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpKTsKICAgICAgICAgIAogICAgICAgICAvLyBVc2UgS2Fs
bWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgotICAg
ICAgICBpZiAodGhpcy5fYmVuY2htYXJrLm9wdGlvbnNbImVzdGltYXRlZC1mcmFtZS1yYXRlIl0p
CisgICAgICAgIGlmICh0aGlzLl9vcHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdKQogICAg
ICAgICAgICAgY3VycmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShjdXJy
ZW50RnJhbWVSYXRlKTsKICAgICAgICAgCiAgICAgICAgIC8vIEFkanVzdCB0aGUgdGVzdCB0byBy
ZWFjaCB0aGUgZGVzaXJlZCBGUFMuCiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9iZW5jaG1h
cmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnRpbWVEZWx0YSgpLCBjdXJy
ZW50RnJhbWVSYXRlKTsKICAgICAgICAgCi0gICAgICAgIC8vIFN0b3AgdGhlIGFuaW1hdG9yIGlm
IHRoZSBiZW5jaG1hcmsgaGFzIGZpbmlzaGVkLgotICAgICAgICBpZiAoIXJlc3VsdCAmJiB0eXBl
b2YgdGhpcy5faW50ZXJ2YWxJZCAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7Ci0KICAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgZHJv
cC9tZWFzdXJlIGN5Y2xlLgogICAgICAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKICAgICAgICAg
Ci0gICAgICAgIC8vIHJlc3VsdCBtYXkgc3RvcCB0aGUgYW5pbWF0b3IgaWYgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCkgaGFzIGJlZW4gdXNlZC4KKyAgICAgICAgLy8gSWYgcmVzdWx0ID09IDAsIG5v
IG1vcmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgd2lsbCBiZSBpbnZva2NlZC4KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9LAogICAgIApAQCAtMTM2LDE5ICsxMjksMTIgQEAgQW5pbWF0
b3IucHJvdG90eXBlID0KIGZ1bmN0aW9uIEJlbmNobWFyayhvcHRpb25zKQogewogICAgIHRoaXMu
X29wdGlvbnMgPSBvcHRpb25zOwotICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1l
dGhvZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOwotCi0gICAgdGhpcy5vcHRpb25zID0g
b3B0aW9uczsKICAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAgICAgdGhpcy5f
aXNTYW1wbGluZyA9IGZhbHNlOwogCi0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRp
b25zWyJnYWluIl0pIHx8IDE7Ci0gICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29w
dGlvbnNbImFkZExpbWl0Il0pIHx8IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRo
aXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhpcy5fY29udHJv
bGxlciA9IG5ldyBQSURDb250cm9sbGVyKGdhaW4sIG9wdGlvbnNbImZyYW1lLXJhdGUiXSwgbG93
VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9s
bGVyKHRoaXMuX29wdGlvbnNbImZyYW1lLXJhdGUiXSk7CiAgICAgdGhpcy5fc2FtcGxlciA9IG5l
dyBTYW1wbGVyKDIpOwotICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMu
b3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CisgICAgdGhpcy5fc3RhdGUgPSBuZXcg
QmVuY2htYXJrU3RhdGUodGhpcy5fb3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CiB9
CiAKIEJlbmNobWFyay5wcm90b3R5cGUgPQpAQCAtMTU2LDEwICsxNDIsNyBAQCBCZW5jaG1hcmsu
cHJvdG90eXBlID0KICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbG9hZCBldmVudCBsaXN0ZW5lciBv
ciBmcm9tIHRoaXMucnVuKCkuCiAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKLSAgICAgICAgICAgIHRoaXMuX2Fu
aW1hdG9yLnN0YXJ0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9y
LmFuaW1hdGVMb29wKCk7CisgICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CiAg
ICAgfSwKICAgICAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRo
ZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgpAQCAtMTc5LDE0ICsxNjIsMTQgQEAgQmVuY2htYXJr
LnByb3RvdHlwZSA9CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgdHVuZVZhbHVlID0gMDsKLSAg
ICAgICAgaWYgKHRoaXMub3B0aW9uc1siY29tcGxleGl0eSJdICYmICF0aGlzLm9wdGlvbnNbImFk
YXB0aXZlLXRlc3QiXSkgeworICAgICAgICBpZiAodGhpcy5fb3B0aW9uc1siY29tcGxleGl0eSJd
ICYmICF0aGlzLl9vcHRpb25zWyJhZGFwdGl2ZS10ZXN0Il0pIHsKICAgICAgICAgICAgIC8vIHRo
aXMudHVuZSgwKSByZXR1cm5zIHRoZSBjdXJyZW50IGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0g
ICAgICAgICAgICB0dW5lVmFsdWUgPSB0aGlzLm9wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMu
dHVuZSgwKTsKKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IHRoaXMuX29wdGlvbnNbImNvbXBsZXhp
dHkiXSAtIHRoaXMudHVuZSgwKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghKHRoaXMu
X2lzU2FtcGxpbmcgJiYgdGhpcy5vcHRpb25zWyJmaXgtdGVzdC1jb21wbGV4aXR5Il0pKSB7Cisg
ICAgICAgIGVsc2UgaWYgKCEodGhpcy5faXNTYW1wbGluZyAmJiB0aGlzLl9vcHRpb25zWyJmaXgt
dGVzdC1jb21wbGV4aXR5Il0pKSB7CiAgICAgICAgICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJl
dHdlZW4gZnJhbWVSYXRlIGFuZCB0ZXN0IGNvbXBsZXhpdHkgaXMgaW52ZXJzZS1wcm9wb3J0aW9u
YWwgc28gd2UKICAgICAgICAgICAgIC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBvZiBQSURD
b250cm9sbGVyLnR1bmUoKSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0g
ICAgICAgICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1cnJlbnRGcmFt
ZVJhdGUsIHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMu
X2NvbnRyb2xsZXIudHVuZShjdXJyZW50VGltZU9mZnNldCwgdGltZURlbHRhLCBjdXJyZW50RnJh
bWVSYXRlKTsKICAgICAgICAgICAgIHR1bmVWYWx1ZSA9IHR1bmVWYWx1ZSA+IDAgPyBNYXRoLmZs
b29yKHR1bmVWYWx1ZSkgOiBNYXRoLmNlaWwodHVuZVZhbHVlKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGgu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMK
aW5kZXggZjI2ZjE4NjgyMzFhZWM4OGVjMzgyN2NkOTM3Y2RlYmQwN2MwNjM5ZC4uOTJiZmNmNmI0
MWIzOTA4NzY1YzFlZmE2OGUwZWU4N2MwZWZmNGJiNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwpAQCAtNCwxNyArNCwxNyBA
QCB2YXIgTWF0cml4ID0KICAgICB7CiAgICAgICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2
KTsKICAgICB9LAotICAgIAorCiAgICAgemVyb3M6IGZ1bmN0aW9uKG0sIG4pCiAgICAgewogICAg
ICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7CiAgICAgfSwKLSAgICAKKwogICAgIG9u
ZXM6IGZ1bmN0aW9uKG0sIG4pCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwg
biwgMSk7CiAgICAgfSwKLSAgICAKKwogICAgIGlkZW50aXR5OiBmdW5jdGlvbihuKQogICAgIHsK
ICAgICAgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CkBAIC0yMiw3ICsyMiw3
IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2kgKiBuICsgaV0gPSAxOwogICAgICAg
ICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBzdHI6IGZ1bmN0aW9uKEEsIG4sIG0p
CiAgICAgewogICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8gIk1hdHJpeFsiICsg
biArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsKQEAgLTMwLDE1ICsz
MCwxNSBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dCArPSBBW2ldOwogICAgICAgICAg
ICAgaWYgKGkgPCBuICogbSAtIDEpCiAgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7Ci0gICAg
ICAgIH0gICAgICAgCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dCArICJdIjsKICAgICB9
LAotICAgIAorCiAgICAgcG9zOiBmdW5jdGlvbihtLCBpLCBqKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG0gKiBpICsgajsKICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBu
LCBtKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKQEAgLTQ2
LDcgKzQ2LDcgQEAgdmFyIE1hdHJpeCA9CiAgICAgICAgICAgICBvdXRbaV0gPSBBW2ldICsgQltp
XTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAotICAgIAorCiAgICAgc3VidHJhY3Q6IGZ1
bmN0aW9uKEEsIEIsIG4sIG0pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9z
KG4sIG0pOwpAQCAtNTQsNyArNTQsNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dFtp
XSA9IEFbaV0gLSBCW2ldOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAg
ICBzY2FsZTogZnVuY3Rpb24ocywgQSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBN
YXRyaXguemVyb3MobiwgbSk7CkBAIC02MiwxNyArNjIsMTcgQEAgdmFyIE1hdHJpeCA9CiAgICAg
ICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAot
ICAgIAorCiAgICAgdHJhbnNwb3NlOiBmdW5jdGlvbihBLCBuLCBtKQogICAgIHsKICAgICAgICAg
dmFyIG91dCA9IE1hdHJpeC56ZXJvcyhtLCBuKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpIHsKICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqKQogICAg
ICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKG4sIGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBq
LCBpKV07Ci0gICAgICAgIH0gICAgICAgCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dDsK
ICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCiAg
ICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOwpAQCAtOTMsMzcgKzkz
LDM3IEBAIHZhciBWZWN0b3IzID0KICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguemVyb3Mo
MSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIG9uZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBNYXRyaXgub25lcygxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc3RyOiBm
dW5jdGlvbih2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7CiAg
ICAgfSwKLSAgICAKKwogICAgIGFkZDogZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHJl
dHVybiBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFj
dDogZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguc3VidHJhY3Qo
diwgdywgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHNjYWxlOiBmdW5jdGlvbihzLCB2KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShzLCB2LCAxLCAzKTsKICAgICB9LAot
ICAgIAorCiAgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKICAgICB9LAotICAgIAor
CiAgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgdmFy
IG91dCA9IDA7CkBAIC0xMzksOTUgKzEzOSwyMDYgQEAgdmFyIE1hdHJpeDMgPQogICAgIHsKICAg
ICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgaWRl
bnRpdHk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaWRlbnRpdHko
MywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBwb3M6
IGZ1bmN0aW9uKGksIGopCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBq
KTsKICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC5hZGQoQSwgQiwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1
YnRyYWN0OiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0
cmFjdChBLCBCLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMs
IEEpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOwogICAg
IH0sCi0gICAgCisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4LnRyYW5zcG9zZShBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVs
dGlwbHlNYXRyaXgzOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJp
eC5tdWx0aXBseShBLCBCLCAzLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlW
ZWN0b3IzOiBmdW5jdGlvbihBLCB2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0
aXBseShBLCB2LCAzLCAzLCAxKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIFBJRENvbnRyb2xsZXIo
SywgeXNwLCB1bG93LCB1aGlnaCkKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoeXNwKQogewogICAg
IHRoaXMuX3lzcCA9IHlzcDsKIAotICAgIHRoaXMuX1RkID0gNTsKLSAgICB0aGlzLl9UaSA9IDE1
OwotCi0gICAgdGhpcy5fS3AgPSBLOwotICAgIHRoaXMuX0tkID0gSyAvIHRoaXMuX1RkOwotICAg
IHRoaXMuX0tpID0gSyAvIHRoaXMuX1RpOworICAgIHRoaXMuX0twID0gMDsKKyAgICB0aGlzLl9z
dGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk1BTlVBTF9HQUlOOwogCiAgICAgdGhpcy5fZW9s
ZCA9IDA7CiAgICAgdGhpcy5fSSA9IDA7CiB9CiAKKy8vIFRoaXMgZW51bSB3aWxsIGJlIHVzZWQg
dG8gdGVsbCB3aGV0aGVyIHRoZSB0ZXN0IGN1cnJlbnQgb3V0cHV0IGlzIG1vdmluZyB0b3dhcmRz
CisvLyB0aGUgc2V0LXBvaW50IG9yIGF3YXkgZnJvbSBpdC4gCitQSURDb250cm9sbGVyLnlQb3Np
dGlvbnMgPSB7CisgICAgQkVGT1JFX1lTUDogMCwKKyAgICBBRlRFUl9ZU1A6IDEKK30KKworLy8g
V2UgdXNlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZCBmb3IgdHVuaW5nIHRoZSBQSUQgY29udHJv
bGxlci4gVGhlIHdvcmtmbG93IG9mCisvLyB0aGUgUElEIGlzIHNwbGl0IGludG8gdGhyZWUgc3Rh
Z2VzLiBUaGUgZmlyc3QgdHdvIHN0YWdlcyBkZXRlcm1pbmUgdGhlIHZhbHVlcworLy8gb2YgdGhl
IFBJRCBjb250cm9sbGVyIGdhaW5zLiBEdXJpbmcgdGhlc2Ugc3RhZ2VzIHdlIHJldHVybiB0aGUg
cHJvcG90aW9uYWwgdGVybQorLy8gb25seS4gVGhlIGxhc3Qgc3RhZ2UgaXMgYSBub3JtYWwgUElE
IGNvbnRyb2xsZXIuCitQSURDb250cm9sbGVyLnN0YWdlcyA9IHsKKyAgICBNQU5VQUxfR0FJTjog
MCwgICAgIC8vIEluY3JlYXNlIHRoZSB2YWx1ZSBvZiB0aGUgS3AgdW50aWwgaXQgcmVhY2hlcyB5
c3AuIAorICAgIE1BTlVBTF9USU1FOiAxLCAgICAgLy8gTWVhc3VyZSB0aGUgb3NjaWxsYXRpb24g
cGVyaW9kLCBpLmUudGhlIHRpbWUgb2YgdGhlIG92ZXJzaG90IHBlcmlvZC4KKyAgICBOT1JNQUw6
IDIgICAgICAgICAgIC8vIFJldHVybiB0aGUgdGhyZWUgY29tcG9uZW50cyBQLCBJIGFuZCBEIGZv
ciB0aGUgdHVuaW5nIHZhbHVlLgorfQorCiBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiB7Ci0g
ICAgX3NhdDogZnVuY3Rpb24odiwgbG93LCBoaWdoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHYg
PCBsb3cgPyBsb3cgOiAodiA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgLy8gRGV0ZXJtaW5lcyB3
aGV0aGVyIHRoZSBjdXJyZW50IHkgaXMKKyAgICAvLyAgYmVmb3JlIHlzcCA9PiAoYmVsb3cgeXNw
IGlmIHlzcCA+IHkwKSB8fCAoYWJvdmUgeXNwIGlmIHlzcCA8IHkwKQorICAgIC8vICBhZnRlciB5
c3AgPT4gKGFib3ZlIHlzcCBpZiB5c3AgPiB5MCkgfHwgKGJlbG93IHlzcCBpZiB5c3AgPCB5MCkK
KyAgICBfeVBvc2l0aW9uOiBmdW5jdGlvbih5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh5IDwg
dGhpcy5feXNwKSA9PSAodGhpcy5feTAgPCB0aGlzLl95c3ApCisgICAgICAgICAgICA/IFBJRENv
bnRyb2xsZXIueVBvc2l0aW9ucy5CRUZPUkVfWVNQCisgICAgICAgICAgICA6IFBJRENvbnRyb2xs
ZXIueVBvc2l0aW9ucy5BRlRFUl9ZU1A7CisgICAgfSwKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
dWx0aW1hdGUgZGlzdGFuY2UgZnJvbSB5MCBhZnRlciB0aW1lIHQuIFdlIHdhbnQgdG8gbW92ZSB2
ZXJ5CisgICAgLy8gc2xvd2x5IGF0IHRoZSBiZWdpbm5pbmcgdG8gc2VlIGhvdyBhZGRpbmcgZmV3
IGl0ZW1zIHRvIHRoZSB0ZXN0IGNhbiBhZmZlY3QKKyAgICAvLyBpdHMgb3V0cHV0LiBUaGUgY29t
cGxleGl0eSBvZiBhIHNpbmdsZSBpdGVtIG1pZ2h0IGJlIGJpZyBlbm91Z2ggdG8ga2VlcCB0aGUK
KyAgICAvLyBwcm9wb3J0aW9uYWwgZ2FpbiB2ZXJ5IHNtYWxsIGJ1dCBhY2hpZXZlcyB0aGUgZGVz
aXJlZCBwcm9ncmVzcy4gQnV0IGlmIHkgZG9lcworICAgIC8vIG5vdCBjaGFuZ2Ugc2lnbmlmaWNh
bnRseSBhZnRlciBhZGRpbmcgZmV3IGl0ZW1zLCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBtdWNoCisg
ICAgLy8gYmlnZ2VyIGdhaW4uIFNvIHdlIG5lZWQgdG8gbW92ZSBvdmVyIGEgY3ViaWMgY3VydmUg
d2hpY2ggaW5jcmVhc2VzIHZlcnkKKyAgICAvLyBzbG93bHkgd2l0aCBzbWFsbCB0IHZhbHVlcyBi
dXQgbW92ZXMgdmVyeSBmYXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVzLiAKKyAgICAvLyBUaGUgYmFz
aWMgZm9ybXVsYSBpczogeSA9IHReMworICAgIC8vIENoYW5nZSB0aGUgZm9ybXVsYSB0byByZWFj
aCB5PTEgYWZ0ZXIgMTAwMCBtczogeSA9ICh0LzEwMDApXjMKKyAgICAvLyBDaGFuZ2UgdGhlIGZv
cm11bGEgdG8gcmVhY2ggeT0oeXNwIC0geTApIGFmdGVyIDEwMDAgbXM6IHkgPSAoeXNwIC0geTAp
ICogKHQvMTAwMCleMworICAgIF9kaXN0YW5jZVVsdGltYXRlOiBmdW5jdGlvbih0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh0aGlzLl95c3AgLSB0aGlzLl95MCkgKiBNYXRoLnBvdyh0IC8gMTAw
MCwgMyk7CiAgICAgfSwKLSAgICAKLSAgICB0dW5lOiBmdW5jdGlvbih5LCBoKQorCisgICAgLy8g
Q2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgeSByZWxhdGl2ZSB0byB5MC4gSXQgYWxzbyBlbnN1
cmVzIHdlIGRvIG5vdCByZXR1cm4KKyAgICAvLyB6ZXJvIGJ5IHJldHVybmluZyBhIGVwc2lsb24g
dmFsdWUgaW4gdGhlIHNhbWUgZGlyZWN0aW9uIGFzIHVsdGltYXRlIGRpc3RhbmNlLgorICAgIF9k
aXN0YW5jZTogZnVuY3Rpb24oeSwgZHUpCiAgICAgewotICAgICAgICAvLyBDdXJyZW50IGVycm9y
LgotICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisgICAgICAgIGNvbnN0IGVwc2lsb24g
PSAwLjAwMDE7CisgICAgICAgIHZhciBkICA9IHkgLSB0aGlzLl95MDsKKyAgICAgICAgcmV0dXJu
IGR1IDwgMCA/IE1hdGgubWluKGQsIC1lcHNpbG9uKSA6IE1hdGgubWF4KGQsIGVwc2lsb24pOwor
ICAgIH0sCisKKyAgICAvLyBEZWNpZGVzIGhvdyBtdWNoIHRoZSBwcm9wb3J0aW9uYWwgZ2FpbiBz
aG91bGQgYmUgaW5jcmVhc2VkIGR1cmluZyB0aGUgbWFudWFsCisgICAgLy8gZ2FpbiBzdGFnZS4g
V2UgY2hvb3NlIHRvIHVzZSB0aGUgcmF0aW8gb2YgdGhlIHVsdGltYXRlIGRpc3RhbmNlIHRvIHRo
ZSBjdXJyZW50CisgICAgLy8gZGlzdGFuY2UgYXMgYW4gaW5kaWNhdGlvbiBvZiBob3cgbXVjaCB0
aGUgc3lzdGVtIGlzIHJlc3BvbnNpdmUuIFdlIHdhbnQgCisgICAgLy8gdG8ga2VlcCB0aGUgaW5j
cmVtZW50IHVuZGVyIGNvbnRyb2wgc28gaXQgZG9lcyBub3QgY2F1c2UgdGhlIHN5c3RlbSBpbnN0
YWJpbGl0eQorICAgIC8vIFNvIHdlIGNob29zZSB0byB0YWtlIHRoZSBuYXR1cmFsIGxvZ2FyaXRo
bSBvZiB0aGlzIHJhdGlvLgorICAgIF9nYWluSW5jcmVtZW50OiBmdW5jdGlvbih0LCB5LCBlKQor
ICAgIHsKKyAgICAgICAgdmFyIGR1ID0gdGhpcy5fZGlzdGFuY2VVbHRpbWF0ZSh0KTsKKyAgICAg
ICAgdmFyIGQgPSB0aGlzLl9kaXN0YW5jZSh5LCBkdSk7CisgICAgICAgIHJldHVybiBNYXRoLmxv
ZyhkdSAvIGQpICogMC4xOworICAgIH0sCisKKyAgICAvLyBUaGlzIGlzIHRoZSBtYW51YWwgc3Rh
Z2Ugb2YgdGhlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZC4gSXQgY29uc2lzdHMgb2YgdHdvCisg
ICAgLy8gc3ViLXN0YWdlcy4gVGhlIGZpcnN0IHN1Yi1zdGFnZSBpbmNyZW1lbnRzIHRoZSBwcm9w
b3J0aW9uYWwgZ2FpbiB0aWxsIHRoZQorICAgIC8vIHN5c3RlbSBvdXRwdXQgcGFzc2VzIHRoZSBz
ZXQtcG9pbnQgdmFsdWUuIFRoZSBzZWNvbmQgc3RhZ2UgbWVhc3VyZXMgdGhlCisgICAgLy8gb3Nj
aWxsYXRpb24gcGVyaW9kLiBXaGVuIHRoZSBzZWNvbmQgc3RhZ2UgaXMgZG9uZSwgaXQgY2FsY3Vs
YXRlcyB0aGUgaW50ZWdyYWwKKyAgICAvLyBhbmQgZGVyaXZhdGl2ZSBwZXJpb2RzIGFuZCBzd2l0
Y2hlcyB0aGUgY29udHJvbGxlciBtb2RlIHRvIG5vcm1hbC4KKyAgICBfdHVuZU1hbnVhbDogZnVu
Y3Rpb24odCwgaCwgeSwgZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5feTAgPT0g
InVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgYSB0
dW5pbmcgdmFsdWUgaXMgcmVxdWlyZWQuIFdlIHdhbnQgdGhlIHRlc3QKKyAgICAgICAgICAgIC8v
IHRvIGFkZCBvbmx5IG9uZSBpdGVtLiBTbyB3ZSBuZWVkIHRvIHJldHVybiAtMSB3aGljaCBmb3Jj
ZXMgdXMgdG8KKyAgICAgICAgICAgIC8vIGNob29zZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBLcCB0
byBiZSA9IC0xIC8gZQorICAgICAgICAgICAgdGhpcy5feTAgPSB5OworICAgICAgICAgICAgdGhp
cy5fS3AgPSAtMSAvIGU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhZ2UgPT0gUElEQ29u
dHJvbGxlci5zdGFnZXMuTUFOVUFMX0dBSU4pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl95UG9z
aXRpb24oeSkgPT0gUElEQ29udHJvbGxlci55UG9zaXRpb25zLkJFRk9SRV9ZU1ApIHsKKyAgICAg
ICAgICAgICAgICAvLyBLZWVwIGluY3JlbWVudGluZyB0aGUgS3AgYXMgbG9uZyBhcyB3ZSBoYXZl
IG5vdCByZWFjaGVkIHRoZQorICAgICAgICAgICAgICAgIC8vIHNldC1wb2ludCB5ZXQKKyAgICAg
ICAgICAgICAgICB0aGlzLl9LcCArPSB0aGlzLl9nYWluSW5jcmVtZW50KHQsIHksIGUpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBzd2l0
Y2ggc3RhZ2VzIHNvIHdlIGNhbiBtZWFzdXJlIHRoZSBvdmVyc2hvdCB0aW1lLgorICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuTUFOVUFMX1RJTUU7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fS3AgLz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmICh0aGlzLl9zdGFnZSA9PSBQSURDb250cm9sbGVyLnN0YWdlcy5NQU5VQUxfVElNRSkg
eworICAgICAgICAgICAgaWYgKGUgPCAwICE9IHRoaXMuX2VvbGQgPCAwKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLl9UMCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAg
ICAgICAgICAvLyB0IGlzIHRoZSB0aW1lIG9mIHRoZSBiZWdpbmluZyBvZiB0aGUgZmlyc3Qgb3Zl
cnNob3QKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVDAgPSB0OworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRpbWUgb2YgdGhlIGVu
ZCBvZiB0aGUgZmlyc3Qgb3ZlcnNob3QKKyAgICAgICAgICAgICAgICAgICAgdmFyIFR1ID0gdCAt
IHRoaXMuX1QwOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8g
Q2FsY3VsYXRlIHRoZSBzeXN0ZW0gcGFyYW1ldGVycyBmcm9tIEtwIGFuZCBUdSBhc3N1bWluZwor
ICAgICAgICAgICAgICAgICAgICAvLyBhICJzb21lIG92ZXJzaG9vdCIgY29udHJvbCB0eXBlLiBT
ZWU6CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1ppZWdsZXIlRTIlODAlOTNOaWNob2xzX21ldGhvZAorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9UaSA9IFR1IC8gMjsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVGQgPSBUdSAvIDM7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX0twID0gMC4zMyAqIHRoaXMuX0twOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk5PUk1BTDsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1bmVOb3JtYWwoaCwgeSwgZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0
dXJuIHRoZSBwcm9wb3J0aW9uYWwgdGVybSBvbmx5LgorICAgICAgICByZXR1cm4gdGhpcy5fS3Ag
KiBlOworICAgIH0sCiAKKyAgICAvLyBOb3JtYWwgUElEIHR1bmluZyBmdW5jdGlvbi4gS3AsIFRp
IGFuZCBUZCB3ZXJlIGFscmVhZHkgY2FsY3VsYXRlZCBpbiB0aGUgCisgICAgLy8gbWFudWFsIHN0
YWdlcy4KKyAgICBfdHVuZU5vcm1hbDogZnVuY3Rpb24oaCwgeSwgZSkKKyAgICB7CiAgICAgICAg
IC8vIFByb3BvcnRpb25hbCB0ZXJtLgogICAgICAgICB2YXIgUCA9IHRoaXMuX0twICogZTsKLSAg
ICAgICAgCisKKyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUg
Y3VydmUgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nCisgICAgICAgIC8vIHRpbGwgdGhlIGN1
cnJlbnQgdGltZS4KKyAgICAgICAgdGhpcy5fSSArPSAodGhpcy5fS3AgLyB0aGlzLl9UaSkgKiAo
KGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKwogICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0g
aXMgdGhlIHNsb3BlIG9mIHRoZSBjdXJ2ZSBhdCB0aGUgY3VycmVudCB0aW1lLgotICAgICAgICB2
YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisgICAgICAgIHZhciBEID0g
KHRoaXMuX0twICogdGhpcy5fVGQpICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CiAKLSAgICAgICAg
Ly8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lLgotICAgICAgICB0aGlzLl9JICs9
IHRoaXMuX0tpICogKChlICsgdGhpcy5fZW9sZCkgLyAyKSAqIGg7CisgICAgICAgIC8vIFJldHVy
biBhIFBJRCB0ZXJtLgorICAgICAgICByZXR1cm4gUCArIHRoaXMuX0kgKyBEOworICAgIH0sCisK
KyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHR1bmUgaXRzIHRlc3QuIEl0IHVz
ZXMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kCisgICAgLy8gdG8gY2FsY3VsYXRlIHRoZSBjb250
cm9sbGVyIHBhcmFtZXRlcnMuIEl0IHRoZW4gcmV0dXJucyBhIFBJRCB0dW5pbmcgdmFsdWUuCisg
ICAgdHVuZTogZnVuY3Rpb24odCwgaCwgeSkKKyAgICB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJy
b3IuCisgICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0geTsKIAotICAgICAgICAvLyBwaWQgY29u
dHJvbGxlciB2YWx1ZS4KLSAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7Ci0gICAgICAg
IAotICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dXJhdGlv
bi4KLSAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gp
OyAgICAgICAgCisgICAgICAgIC8vIFRoZSB0dW5pbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgc3Rh
Z2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgICAgICAgIHZhciB1ID0gdGhpcy5fc3RhZ2UgPT0gUElE
Q29udHJvbGxlci5zdGFnZXMuTk9STUFMID8gdGhpcy5fdHVuZU5vcm1hbChoLCB5LCBlKSA6IHRo
aXMuX3R1bmVNYW51YWwodCwgaCwgeSwgZSk7CiAKKyAgICAgICAgLy8gU2F2ZSBlIGZvciB0aGUg
bmV4dCBjYWxsLgogICAgICAgICB0aGlzLl9lb2xkID0gZTsKICAgICAgICAgcmV0dXJuIHU7CiAg
ICAgfQpAQCAtMjM1LDE4ICszNDYsMTggQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogCiBm
dW5jdGlvbiBLYWxtYW5Fc3RpbWF0b3IoaW5pdFgpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSBzdGF0
ZSB0cmFuc2l0aW9uIG1hdHJpeAorICAgIC8vIEluaXRpYWxpemUgc3RhdGUgdHJhbnNpdGlvbiBt
YXRyaXguCiAgICAgdGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKICAgICB0aGlzLl9t
YXRBW01hdHJpeDMucG9zKDAsIDIpXSA9IDE7Ci0gICAgCi0gICAgLy8gSW5pdGlhbGl6ZSBtZWFz
dXJlbWVudCBtYXRyaXgKKworICAgIC8vIEluaXRpYWxpemUgbWVhc3VyZW1lbnQgbWF0cml4Lgog
ICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3IzLnplcm9zKCk7CiAgICAgdGhpcy5fdmVjSFswXSA9IDE7
Ci0gICAgCisKICAgICB0aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOwogICAgIHRoaXMu
X1IgPSAxMDAwOwotICAgIAotICAgIC8vIEluaXRpYWwgc3RhdGUgY29uZGl0aW9ucworCisgICAg
Ly8gSW5pdGlhbCBzdGF0ZSBjb25kaXRpb25zLgogICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9y
My56ZXJvcygpOwogICAgIHRoaXMuX3ZlY1hfZXN0WzBdID0gaW5pdFg7CiAgICAgdGhpcy5fbWF0
UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7CkBAIC0yNTksNyArMzcwLDcgQEAgS2FsbWFuRXN0aW1h
dG9yLnByb3RvdHlwZSA9CiAgICAgICAgIC8vIFByb2plY3QgdGhlIHN0YXRlIGFoZWFkCiAgICAg
ICAgIC8vICBYX3ByZChrKSA9IEEgKiBYX2VzdChrLTEpCiAgICAgICAgIHZhciB2ZWNYX3ByZCA9
IE1hdHJpeDMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX21hdEEsIHRoaXMuX3ZlY1hfZXN0KTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gUHJvamVjdCB0aGUgZXJyb3IgY292YXJpYW5jZSBhaGVhZAog
ICAgICAgICAvLyAgUF9wcmQoaykgPSBBICogUF9lc3Qoay0xKSAqIEEnICsgUQogICAgICAgICB2
YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgz
Lm11bHRpcGx5TWF0cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJh
bnNwb3NlKHRoaXMuX21hdEEpKSwgdGhpcy5fbWF0USk7CkBAIC0yNzEsMTEgKzM4MiwxMSBAQCBL
YWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KICAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11
bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOwog
ICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gp
ICsgdGhpcy5fUjsKICAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVj
Qik7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXN0aW1hdGUgdmlhIHooaykK
ICAgICAgICAgLy8gIFhfZXN0KGspID0geF9wcmQgKyBLKGspICogKHooaykgLSBIICogWF9wcmQo
aykpOwogICAgICAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0
b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2
ZWNYX3ByZCksIHZlY0dhaW4pKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVXBkYXRlIHRoZSBl
cnJvciBjb3ZhcmlhbmNlCiAgICAgICAgIC8vICBQX2VzdChrKSA9IFBfcHJkKGspIC0gSyhrKSAq
IEggKiBQX3ByZChrKTsKICAgICAgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0
KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4s
IHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkpOwpAQCAtMjgzLDUgKzM5NCw1IEBAIEthbG1hbkVzdGlt
YXRvci5wcm90b3R5cGUgPQogICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3Vy
ZW1lbnQuCiAgICAgICAgIC8vICB5ID0gSCAqIFhfZXN0KGspOwogICAgICAgICByZXR1cm4gVmVj
dG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKLSAgICB9
CisgICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9zdGFnZS5qcwppbmRleCAyYmI0OWQ1ZmRkYjIwM2RkODk1OTEyZWZiNmU5MWIxZWM4
ZTlmNDJlLi45M2Y4NWY2ODJlYThlOTVmZThkOGNiNThlODNmMjA4NmExOTQ2YWY2IDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2Uu
anMKQEAgLTExNyw5ICsxMTcsOSBAQCBTdGFnZS5wcm90b3R5cGUgPQogICAgIH0KIH0KIAotZnVu
Y3Rpb24gU3RhZ2VBbmltYXRvcihiZW5jaG1hcmspCitmdW5jdGlvbiBTdGFnZUFuaW1hdG9yKGJl
bmNobWFyaywgb3B0aW9ucykKIHsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7
CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwogfTsKIAogU3Rh
Z2VBbmltYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7
CkBAIC0xNTksNyArMTU5LDcgQEAgU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdl
ID0gZnVuY3Rpb24oZWxlbWVudCkKIAogU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFu
aW1hdG9yID0gZnVuY3Rpb24oKQogewotICAgIHJldHVybiBuZXcgU3RhZ2VBbmltYXRvcih0aGlz
KTsKKyAgICByZXR1cm4gbmV3IFN0YWdlQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9
CiAKIFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCkBAIC0x
NzcsOCArMTc3LDggQEAgU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVu
Y3Rpb24obWVzc2FnZSwgcHJvZ3Jlc3MpCiAgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8fCAh
dGhpcy5fcHJvZ3Jlc3NCYXIgfHwgIXRoaXMuX3Rlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICh0aGlzLm9wdGlvbnNbInNob3ctcnVubmluZy1yZXN1bHRzIl0pCi0gICAgICAgIHRoaXMu
X3JlY29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fdGVzdC5uYW1lLCBtZXNzYWdlLCB0aGlzLl9z
YW1wbGVyLnRvSlNPTih0cnVlLCBmYWxzZSkpOworICAgIGlmICh0aGlzLl9vcHRpb25zWyJzaG93
LXJ1bm5pbmctcmVzdWx0cyJdKQorICAgICAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93UmVjb3Jk
KHRoaXMuX3Rlc3QubmFtZSwgbWVzc2FnZSwgdGhpcy5fc2FtcGxlci50b0pTT04odHJ1ZSwgZmFs
c2UpLCB0aGlzLl9vcHRpb25zKTsKIAogICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9n
cmVzcyk7CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
c2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcwppbmRleCBkMzMy
ODE1M2M2NjdkNWE5NjlhMTAwMDExYmQ4MzQ1NThiZjZiNDllLi43ZTVjY2FiYmU3NTZkZmFlZTNk
Y2ExZDM5ZGRhOTZkY2ZiZDdkY2Y4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52
YXMuanMKQEAgLTM2LDkgKzM2LDkgQEAgU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmFuaW1h
dGUgPSBmdW5jdGlvbigpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1h
dG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaywg
b3B0aW9ucykKIHsKLSAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAg
ICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKICAgICB0aGlz
Ll9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OwogfQogCkBAIC01MiwxNCArNTIs
MTEgQEAgU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigp
CiAKIAogZnVuY3Rpb24gU2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25z
LCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpIHsKLSAgICBvcHRpb25zWyJnYWluIl0gPSA2Owot
ICAgIG9wdGlvbnNbImFkZExpbWl0Il0gPSAxMDA7Ci0gICAgb3B0aW9uc1sicmVtb3ZlTGltaXQi
XSA9IDEwMDA7CiAgICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKTsKIH0KIFNpbXBsZUNhbnZhc0JlbmNobWFy
ay5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CiBT
aW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFz
QmVuY2htYXJrOwogU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRv
ciA9IGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhp
cyk7CisgICAgcmV0dXJuIG5ldyBTaW1wbGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRp
b25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3RlbXBsYXRlL3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwpp
bmRleCA3ZWUwMDZkYjIwZGYxNmZmOTMwZTY2YjdlZDkyNGMzMTllNDMwODRhLi5jNmE2MDBkNTZj
YTE4ODBlYTE0MmI1MTNmMTBjNTRkNWE3YmFkZDFkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRl
c3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5q
cworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3Vy
Y2VzL3RlbXBsYXRlLWNhbnZhcy5qcwpAQCAtNTcsOSArNTcsOSBAQCBUZW1wbGF0ZUNhbnZhc1N0
YWdlLnByb3RvdHlwZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQogICAgIC8vIExvb3Ag
dGhyb3VnaCBhbGwgeW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0byBhbmltYXRlLgogfQogCi1m
dW5jdGlvbiBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIFRlbXBs
YXRlQ2FudmFzQW5pbWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQogewotICAgIEFuaW1hdG9yLmNh
bGwodGhpcywgYmVuY2htYXJrKTsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywg
b3B0aW9ucyk7CiAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsK
IH0KIApAQCAtOTMsNyArOTMsNyBAQCBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlU3RhZ2UgPSBmdW5jdGlvbihlbGVtZW50KQogVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQogewogICAgIC8vIEF0dGFjaCB0
aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2Fu
dmFzQW5pbWF0b3IodGhpcyk7CisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9y
KHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0
ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NC
YXIpCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJlYTRhZDJjZmQzNWM4ODQ2YjM2ZDA2M2E2OGVkNTAzMzg5
ZDdlMTAuLjg4ZTJiYjRlNDBlN2QwNGY0ZWMyZDgwYTA2YzY0NTVmZDZjMTIyZjMgMTAwNjQ0Ci0t
LSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMTUtMTEtMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLGNvbT4KKworICAgICAgICBDYWxjdWxhdGUgdGhlIGdyYXBoaWNz
IGJlbmNobWFyayB0ZXN0IGdhaW4gYWRhcHRpdmVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGdhaW4gb2Yg
dGhlIGdyYXBoaWNzIGJlbmNobWFyayB0ZXN0cyBhZGFwdGl2ZWx5CisgICAgICAgIGFuZCBnZXQg
cmlkIG9mIHRoZSBnYWluIGFuZCBsaW1pdHMgcGFyYW1ldGVycyB3ZSBoYXZlIHRvIGNob29zZSBt
YW51YWxseQorICAgICAgICBmb3IgZXZlcnkgdGVzdC4gV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUg
Y2xhc3NpYyBaaWVnbGVy4oCTTmljaG9scyBtZXRob2QgZm9yCisgICAgICAgIGNhbGN1bGF0aW5n
IHRoZSBnYWluIGFuZCBpbnRlZ3JhbCBhbmQgZGVyaXZhdGl2ZSB0aW1lcy4gV2UgYXJlIGdvaW5n
IHRvCisgICAgICAgIHRyeSBtb3Zpbmcgb24gYSBjdWJpYyBjdXJ2ZSBkdXJpbmcgdGhlIG1hbnVh
bCBzdGFnZSBmcm9tIHkwIHRvIHJlYWNoIHlzcC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVz
b3VyY2VzL2V4dGVuc2lvbnMuanM6CisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRlbnNpb24u
aW5zZXJ0Q3NzUnVsZUFmdGVyKTogRG8gbm90IHJlZmVyZW5jZSBudWxsIGRvY3VtZW50LnN0eWxl
U2hlZXRzLmNjc1J1bGVzLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd0Vt
cHR5Q2VsbCk6IENob29zZSBhIG1vcmUgcHJlY2lzZSBuYW1lIGZvciB0aGlzIGZ1bmN0aW9uLgor
ICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd1RleHQpOiBDb250cm9sIHRoZSB0
ZXh0IGNvbG9yIGluIHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZS5fc2hvd0ZpeGVkTnVtYmVyKTogQ29udHJvbCB0aGUgdGV4dCBjb2xvciBpbiB0aGUg
cmVzdWx0cyB0YWJsZS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dHcmFw
aCk6IENhbGwgX3Nob3dFbXB0eUNlbGwoKSB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgKFJl
c3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dKU09OKTogQ2FsbCBfc2hvd0VtcHR5Q2VsbCgpIHdp
dGggaXRzIG5ldyBuYW1lLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5faXNBY2N1
cmF0ZU1lYXN1cmVtZW50KTogUmV0dXJucyB0cnVlIGlmIHRoZSBtZWFzdXJlbWVudCBpcyBhY2N1
cmF0ZS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX2lzQWNjdXJhdGVUZXN0KTog
UmV0dXJucyB0cnVlIGlmIGFsbCB0aGUgbWVhc3VyZW1lbnRzIGFyZSBhY2N1cmF0ZS4KKyAgICAg
ICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eUNlbGxzKTogSW5zZXJ0cyBhIHNl
dCBvZiBlbXB0eSBjZWxscyBpbiBhIHJlc3VsdHMgdGFibGUgcm93LgorICAgICAgICAoUmVzdWx0
c1RhYmxlLnByb3RvdHlwZS5fc2hvd0VtcHR5Um93KTogSW5zZXJ0cyBhbiBlbXB0eSByb3cgaW4g
dGhlIHJlc3VsdHMgdGFibGUgdG8gc3BsaXQgc3VpdGVzJyByZXN1bHRzLgorICAgICAgICAoUmVz
dWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd1Rlc3QpOiBDb2xvciB0aGUgaW5hY2N1cmF0ZSB0ZXN0
IG5hbWUgYW5kIHRoZSBpbmFjY3VyYXRlIG1lYXN1cmVtZW50cyB3aXRoIGNvbG9yPXJlZC4KKyAg
ICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFBhc3NlcyB0aGUgb3B0
aW9ucyB0byBfc2hvd1Rlc3QoKQorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hv
d0l0ZXJhdGlvbik6IFBhc3NlcyB0aGUgb3B0aW9ucyB0byBfc2hvd1N1aXRlKCkgYW5kIGluc2Vy
dHMgYW4gZW1wdHkgcm93IGJldHdlZW4gc3VpdGVzLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZS5zaG93UmVjb3JkKTogUGFzc2VzIHRoZSBvcHRpb25zIHRvIF9zaG93VGVzdCgpLgor
ICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFBhc3NlcyB0
aGUgb3B0aW9ucyB0byBfc2hvd0l0ZXJhdGlvbigpLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZS5fc2hvd0VtcHR5KTogRGVsZXRlZC4gUmVuYW1lZCB0byBfc2hvd0VtcHR5Q2VsbCgp
LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9t
ZXRlci5jc3M6CisgICAgICAgIChzZWN0aW9uI3J1bm5pbmcgPiAjcnVubmluZy10ZXN0ID4gaWZy
YW1lKTogUHJldmVudCB0aGUgaWZyYW1lIGZyb20gZmxhdHRlbmluZyBvbiBpT1MgaWYgaXRzIGNv
bnRlbnQgZ29lcyBvdXRzaWRlIGl0cyBib3VuZHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgorICAgICAgICAod2luZG93LmJl
bmNobWFya1J1bm5lckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKTogUGFzc2VzIG9wdGlv
bnMgdG8gUmVzdWx0c1RhYmxlLnNob3dJdGVyYXRpb25zKCkuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qczogUmVtb3ZlIGFsbCB0aGUgbWFu
dWFsIGdhaW5zIGFuZCBsaW1pdHMgcGFyYW1ldGVycyB3aGljaCBoYWQgdG8gYmUgcGFzc2VkIHRv
IGV2ZXJ5IHRlc3QuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNp
bmctcGFydGljbGVzL3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzOgorICAg
ICAgICAoQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0
YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFz
cy4KKyAgICAgICAgKEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5j
cmVhdGVBbmltYXRvcik6IFBhc3MgdGhlIG9wdGlvbnMgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHRo
ZSBhbmltYXRvci4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2lu
Zy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKyAgICAgICAgKEJv
dW5jaW5nUGFydGljbGVzQW5pbWF0b3IpOiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBuZXcgcGFy
YW1ldGVyIG9wdGlvbnMgYW5kIHBhc3MgaXQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNz
IHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAg
IAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1l
bGVjdHJvbnMuanM6CisgICAgICAgIChDYW52YXNFbGVjdHJvbnNBbmltYXRvcik6IFRoZSBjb25z
dHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUg
YmFzZSBjbGFzcy4KKyAgICAgICAgKENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUu
Y3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0
aGUgYW5pbWF0b3IuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBs
ZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qczoKKyAgICAgICAgKENhbnZhc1N0YXJzQW5pbWF0
b3IpOiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlvbnMgYW5kIHBh
c3MgaXQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChDYW52YXNTdGFyc0JlbmNobWFyay5w
cm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNo
bWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVz
dHMvcmVzb3VyY2VzL21haW4uanM6CisgICAgICAgIChBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3Rv
ciB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBpdCB0
aHJvdWdoIHRoZSBiZW5jaG1hcmsuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0
ZSk6IEdldCByaWQgb2Ygc2V0SW50ZXJ2YWwoKSBhbmltYXRpb24uCisgICAgICAgIChCZW5jaG1h
cmspOiBHZXQgcmlkIG9mIHNldEludGVydmFsKCkgYW5pbWF0aW9uLiBHZXQgcmlkIG9mIG1hbnVh
bCBnYWluIGFuZCBsaW1pdHMuIEdldCByaWQgb2YgZHVwbGljYXRlIG9wdGlvbnMgbWVtYmVyLgor
ICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS5zdGFydCk6IEdldCByaWQgb2Ygc2V0SW50ZXJ2
YWwoKSBhbmltYXRpb24uCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IFVz
ZSBfb3B0aW9ucyBpbnN0ZWFkIG9mIHRoZSBkZWxldGVkIGR1cGxpY2F0ZSBvcHRpb25zLgorICAg
ICAgICAoQW5pbWF0b3IucHJvdG90eXBlLnN0YXJ0KTogRGVsZXRlZC4gR2V0IHJpZCBvZiBzZXRJ
bnRlcnZhbCgpIGFuaW1hdGlvbi4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvbWF0aC5qczoKKyAgICAgICAgKE1hdHJpeC5zdHIpOiBEZWxldGUgdHJhaWxp
bmcgc3BhY2VzLgorICAgICAgICAoTWF0cml4LnRyYW5zcG9zZSk6IERlbGV0ZSB0cmFpbGluZyBz
cGFjZXMuCisgICAgICAgIChQSURDb250cm9sbGVyKTogR2V0IHJpZCBvZiB0aGUgbWFudWFsIGdh
aW4gYW5kIGxpbWl0cyBhbmQgdGhlIG1hZ2ljIG51bWJlcnMgZm9yIFRpIGFuZCBUZC4KKyAgICAg
ICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl95UG9zaXRpb24pOiB0ZWxsIHdoZXRoZXIgdGhl
IHRlc3QgY3VycmVudCBvdXRwdXQgaXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1wb2ludCBvciBh
d2F5IGZyb20gaXQuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fZGlzdGFuY2VV
bHRpbWF0ZSk6IENhbGN1bGF0ZSB0aGUgdWx0aW1hdGUgZGlzdGFuY2UgZnJvbSB5MCBhZnRlciB0
aW1lIHQgdXNpbmcgYSBjdWJpYyBmb3JtdWxhLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90
b3R5cGUuX2Rpc3RhbmNlKTogQ2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgeSByZWxhdGl2ZSB0
byB5MC4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9nYWluSW5jcmVtZW50KTog
RGVjaWRlcyBob3cgbXVjaCB0aGUgcHJvcG9ydGlvbmFsIGdhaW4gc2hvdWxkIGJlIGluY3JlYXNl
ZCBkdXJpbmcgdGhlIG1hbnVhbCBnYWluIHN0YWdlLgorICAgICAgICAoUElEQ29udHJvbGxlci5w
cm90b3R5cGUuX3R1bmVNYW51YWwpOiBUaGUgbWFudWFsIHN0YWdlIG9mIHRoZSBaaWVnbGVy4oCT
TmljaG9scyBtZXRob2QuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fdHVuZU5v
cm1hbCk6IE5vcm1hbCBQSUQgdHVuaW5nIGZ1bmN0aW9uLgorICAgICAgICAoUElEQ29udHJvbGxl
ci5wcm90b3R5cGUudHVuZSk6IE1hbmFnZXMgY2FsY3VsYXRpbmcgdGhlIGNvbnRyb2xsZXIgcGFy
YW1ldGVycy4gSXQgdGhlbiByZXR1cm5zIGEgUElEIHR1bmluZyB2YWx1ZS4KKyAgICAgICAgKEth
bG1hbkVzdGltYXRvcik6IEZpeGluZyBwdW5jdHVhdGlvbiBhbmQgcmVtb3ZpbmcgdHJhaWxpbmcg
c3BhY2VzLgorICAgICAgICAoS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJl
bW92aW5nIHRyYWlsaW5nIHNwYWNlcy4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBl
Ll9zYXQpOiBEZWxldGVkLiBOb3QgbmVlZGVkIGFueW1vcmUuIFRoZSBhZGFwdGl2ZSBnYWluIHNo
b3VsZCBzYXR1cmF0ZSB0aGUgdGVzdCB3aXRob3V0IGJvdW5kaW5nIHRoZSB0dW5lIHZhbHVlLgor
ICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoK
KyAgICAgICAgKFN0YWdlQW5pbWF0b3IpOiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBuZXcgcGFy
YW1ldGVyIG9wdGlvbnMgYW5kIHBhc3MgaXQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChT
dGFnZUJlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25z
IGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIChTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUuc2hvd1Jlc3VsdHMpOiBVc2UgdGhpcy5fb3B0aW9ucyBpbnN0ZWFkIG9m
IHRoaXMub3B0aW9ucy4gUGFzcyBvcHRpb25zIHRvIFJlc3VsdHNUYWJsZS5zaG93UmVjb3JkKCku
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291cmNlcy9z
aW1wbGUtY2FudmFzLmpzOgorICAgICAgICAoU2ltcGxlQ2FudmFzQW5pbWF0b3IpOiBUaGUgY29u
c3RydWN0b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlvbnMgYW5kIHBhc3MgaXQgdG8gdGhl
IGJhc2UgY2xhc3MuCisgICAgICAgIChTaW1wbGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yKTogUGFzcyB0aGUgb3B0aW9ucyBmcm9tIHRoZSBiZW5jaG1hcmsgdG8gdGhl
IGFuaW1hdG9yLgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRl
L3Jlc291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanM6CisgICAgICAgIChUZW1wbGF0ZUNhbnZhc0Jl
bmNobWFyayk6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBh
bmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IFBhc3MgdGhlIG9wdGlvbnMgZnJvbSB0
aGUgYmVuY2htYXJrIHRvIHRoZSBhbmltYXRvci4KKwogMjAxNS0xMS0wNiAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEluaXRpYWxpemUgdGhl
IGdyYXBoaWNzIGJlbmNobWFyaydzIEthbG1hbiBmaWx0ZXIgd2l0aCBlc3RpbWF0ZWQgNjAgRlBT
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265449</attachid>
            <date>2015-11-12 16:41:26 -0800</date>
            <delta_ts>2015-11-12 18:32:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151112164122.patch</filename>
            <type>text/plain</type>
            <size>51621</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTY1CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKaW5kZXggMzU2NzNiZjQxMDg0M2ViNDY2
MDc5YzUwYzIxYzc0OTNkMTBmOThhNi4uNDJlMDZiMmVlNmI0ZjVjMDFiZjk4NzViNDFiNGNkYjE1
ZWE0MzAyMCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Jlc291cmNl
cy9leHRlbnNpb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJj
ZXMvZXh0ZW5zaW9ucy5qcwpAQCAtMTU2LDcgKzE1NiwxMCBAQCB3aW5kb3cuRG9jdW1lbnRFeHRl
bnNpb24gPQogICAgIHsKICAgICAgICAgdmFyIHN0eWxlU2hlZXRzID0gZG9jdW1lbnQuc3R5bGVT
aGVldHM7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7
ICsraSkgeyAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcy5sZW5ndGg7ICsraikgewogICAgICAgICAgICAg
ICAgIGlmIChzdHlsZVNoZWV0c1tpXS5jc3NSdWxlc1tqXS5zZWxlY3RvclRleHQgPT0gcmVmZXJl
bmNlUnVsZSkgewogICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0c1tpXS5pbnNlcnRSdWxl
KG5ld1J1bGUsIGogKyAxKTsKQEAgLTMxMywzMSArMzE2LDMwIEBAIFJlc3VsdHNUYWJsZS5wcm90
b3R5cGUgPQogICAgICAgICB9CiAgICAgfSwKICAgICAKLSAgICBfc2hvd0VtcHR5OiBmdW5jdGlv
bihyb3cpCisgICAgX3Nob3dFbXB0eUNlbGw6IGZ1bmN0aW9uKHJvdykKICAgICB7Ci0gICAgICAg
IHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHJvdy5hcHBl
bmRDaGlsZCh0ZCk7CisgICAgICAgIHJldHVybiBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVt
ZW50KCJ0ZCIsIHt9LCByb3cpOwogICAgIH0sCiAKLSAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJv
dywgdGV4dCkKKyAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJvdywgdGV4dCwgY29sb3IpCiAgICAg
ewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAg
ICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9LCByb3cp
OwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0ZCk7CisgICAgICAgIHRkLnN0eWxlLmNvbG9yID0gY29sb3IgfHwgImJsYWNrIjsKICAgICB9
LAogCi0gICAgX3Nob3dGaXhlZE51bWJlcjogZnVuY3Rpb24ocm93LCB2YWx1ZSwgZGlnaXRzKQor
ICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0aW9uKHJvdywgdmFsdWUsIGRpZ2l0cywgY29sb3Ip
CiAgICAgewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9
LCByb3cpOwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoZGlnaXRzIHx8
IDIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICB0ZC5zdHlsZS5jb2xv
ciA9IGNvbG9yIHx8ICJibGFjayI7CiAgICAgfSwKICAgICAKICAgICBfc2hvd0dyYXBoOiBmdW5j
dGlvbihyb3csIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cykKICAgICB7CiAgICAgICAgIHZhciBkYXRh
ID0gdGVzdFJlc3VsdHNbU3RyaW5nc1siSlNPTl9TQU1QTEVTIl1bMF1dOwogICAgICAgICBpZiAo
IWRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eShyb3cpOworICAgICAgICAgICAg
dGhpcy5fc2hvd0VtcHR5Q2VsbChyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMzYxLDcgKzM2Myw3IEBAIFJlc3VsdHNUYWJsZS5wcm90b3R5cGUgPQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzWyJKU09OX1NBTVBM
RVMiXVswXV07CiAgICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd0Vt
cHR5KHJvdyk7CisgICAgICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxsKHJvdyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzgsMTUgKzM4MCw1OCBAQCBS
ZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKICAg
ICB9LAogCi0gICAgX3Nob3dUZXN0OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpCisg
ICAgX2lzQWNjdXJhdGVNZWFzdXJlbWVudDogZnVuY3Rpb24oaW5kZXgsIGRhdGEsIG1lYXN1cmVt
ZW50LCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09IFN0cmluZ3Nb
IkpTT05fTUVBU1VSRU1FTlRTIl1bM10pCisgICAgICAgICAgICByZXR1cm4gZGF0YVtTdHJpbmdz
WyJKU09OX01FQVNVUkVNRU5UUyJdWzNdXSA8IDEwOworICAgICAgICAgICAgCisgICAgICAgIGlm
IChpbmRleCA9PSAxICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3NbIkpTT05fTUVBU1VSRU1FTlRT
Il1bMF0pCisgICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoZGF0YVtTdHJpbmdzWyJKU09OX01F
QVNVUkVNRU5UUyJdWzBdXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUiXSkgPCAyOworICAgICAgIAor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgX2lzQWNjdXJhdGVUZXN0OiBmdW5j
dGlvbih0ZXN0UmVzdWx0cywgb3B0aW9ucykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGluZGV4
ID0gMDsgaW5kZXggPCAyOyArK2luZGV4KSB7CisgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RS
ZXN1bHRzW1N0cmluZ3NbIkpTT05fRVhQRVJJTUVOVFMiXVtpbmRleF1dOworICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgIGlmICghdGhp
cy5faXNBY2N1cmF0ZU1lYXN1cmVtZW50KGluZGV4LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9u
cykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9zaG93RW1w
dHlDZWxsczogZnVuY3Rpb24ocm93LCBoZWFkZXJzKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIg
aW5kZXggPSAwOyBpbmRleCA8IGhlYWRlcnMubGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgICAg
ICBpZiAoIWhlYWRlcnNbaW5kZXhdLmNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAg
IHZhciB0ZCA9IHRoaXMuX3Nob3dFbXB0eUNlbGwocm93KTsKKyAgICAgICAgICAgICAgICB0ZC5z
dHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAieWVsbG93IjsKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eUNlbGxzKHJvdywg
aGVhZGVyc1tpbmRleF0uY2hpbGRyZW4pOworICAgICAgICB9CisgICAgfSwKKworICAgIF9zaG93
RW1wdHlSb3c6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJ0ciIpOworICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2hv
d0VtcHR5Q2VsbHMocm93LCB0aGlzLl9oZWFkZXJzKTsKKyAgICB9LAorCisgICAgX3Nob3dUZXN0
OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpCisgICAgeworICAgIAor
ICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7
fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5faXNBY2N1cmF0ZVRl
c3QodGVzdFJlc3VsdHMsIG9wdGlvbnMpID8gbnVsbCA6ICJyZWQiOwogICAgICAgICAKICAgICAg
ICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2hlYWRlcnMubGVuZ3RoOyArK2lu
ZGV4KSB7CiAKICAgICAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgICAgIGNhc2Ug
MDoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lLCBjb2xvcik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgMToKQEAgLTM5Nyw4ICs0NDIsOSBA
QCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW1N0cmlu
Z3NbIkpTT05fRVhQRVJJTUVOVFMiXVtpbmRleCAtIDJdXTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93
Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMik7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMiwgdGhpcy5faXNBY2N1
cmF0ZU1lYXN1cmVtZW50KGluZGV4IC0gMiwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpID8g
ImJsYWNrIiA6ICJyZWQiKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIDQ6CkBAIC00MDcsMzggKzQ1
MywzOCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHJvdyk7CiAgICAgfSwKIAotICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1
aXRlTmFtZSwgc3VpdGVSZXN1bHRzKQorICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1aXRlTmFt
ZSwgc3VpdGVSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgdGVzdE5h
bWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzJdXSkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRlUmVzdWx0c1tTdHJpbmdzWyJKU09O
X1JFU1VMVFMiXVsyXV1bdGVzdE5hbWVdKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dUZXN0KHRl
c3ROYW1lLCBzdWl0ZVJlc3VsdHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMl1dW3Rlc3ROYW1l
XSwgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9LAogICAgIAotICAgIF9zaG93SXRlcmF0aW9u
IDogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKKyAgICBfc2hvd0l0ZXJhdGlvbiA6IGZ1bmN0
aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBz
dWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzWyJKU09OX1JFU1VMVFMiXVsxXV0p
IHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dTdWl0ZShzdWl0ZU5hbWUsIGl0ZXJhdGlvblJlc3Vs
dHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMV1dW3N1aXRlTmFtZV0pOworICAgICAgICAgICAg
aWYgKHN1aXRlTmFtZSAhPSBPYmplY3Qua2V5cyhpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3NbIkpT
T05fUkVTVUxUUyJdWzFdXSlbMF0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5Um93
KCk7CisgICAgICAgICAgICB0aGlzLl9zaG93U3VpdGUoc3VpdGVOYW1lLCBpdGVyYXRpb25SZXN1
bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzFdXVtzdWl0ZU5hbWVdLCBvcHRpb25zKTsKICAg
ICAgICAgfQogICAgIH0sCiAgICAgCi0gICAgc2hvd1JlY29yZDogZnVuY3Rpb24odGVzdE5hbWUs
IG1lc3NhZ2UsIHRlc3RSZXN1bHRzKQorICAgIHNob3dSZWNvcmQ6IGZ1bmN0aW9uKHRlc3ROYW1l
LCBtZXNzYWdlLCB0ZXN0UmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuY2xl
YXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihtZXNzYWdlKTsKLSAgICAgICAgdGhpcy5f
c2hvd1Rlc3QodGVzdE5hbWUsIHRlc3RSZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBvcHRpb25zKTsKICAgICB9LAogCi0gICAgc2hvd0l0ZXJh
dGlvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNSZXN1bHRzKQorICAgIHNob3dJdGVyYXRpb25zOiBm
dW5jdGlvbihpdGVyYXRpb25zUmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMu
Y2xlYXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIik7CiAgICAgICAgIAogICAgICAg
ICBpdGVyYXRpb25zUmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMpIHsK
LSAgICAgICAgICAgIHRoaXMuX3Nob3dJdGVyYXRpb24oaXRlcmF0aW9uUmVzdWx0cyk7CisgICAg
ICAgICAgICB0aGlzLl9zaG93SXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpOwog
ICAgICAgICB9LCB0aGlzKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCmluZGV4IDAw
NWNjYzFjYWM0Nzc5MTVhYTExN2MwNjVjNWIyNDhkNjkzNDg3NDEuLjE3OGQzM2MxMTI5NmVlNTg1
NjJjZjI4MzgwZTRmOWEwYzAxODA4N2MgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzCkBAIC0zMTYs
NiArMzE2LDcgQEAgc2VjdGlvbiNydW5uaW5nID4gI3J1bm5pbmctdGVzdCA+IGlmcmFtZSB7CiAg
ICAgd2lkdGg6IDEwMCU7CiAgICAgaGVpZ2h0OiAxMDAlOwogICAgIGJvcmRlcjogMHB4IG5vbmU7
CisgICAgb3ZlcmZsb3c6IGhpZGRlbjsKIH0KIAogc2VjdGlvbiNydW5uaW5nID4gI3Byb2dyZXNz
IHsKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL2FuaW1vbWV0ZXIuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9hbmltb21ldGVyLmpzCmluZGV4IGU1Njc2ODFhMmUxY2Y0MTA3NmJhMWI2MjNmMjNl
NGZlYWI4MTk1YjAuLjhiOTAyMmVjYTAwMDIzM2ExYzAxZTQ2NTlmNTE5MmFhZGJiMTY1NDEgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL2Fu
aW1vbWV0ZXIuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNv
dXJjZXMvYW5pbW9tZXRlci5qcwpAQCAtNDUsNyArNDUsNyBAQCB3aW5kb3cuYmVuY2htYXJrUnVu
bmVyQ2xpZW50ID0gewogICAgIHsKICAgICAgICAgdmFyIGpzb24gPSB0aGlzLl9yZXN1bHRzRGFz
aGJvYXJkLnRvSlNPTih0cnVlLCB0cnVlKTsKICAgICAgICAgdGhpcy5zY29yZSA9IGpzb25bU3Ry
aW5nc1siSlNPTl9TQ09SRSJdXTsKLSAgICAgICAgdGhpcy5fcmVzdWx0c1RhYmxlLnNob3dJdGVy
YXRpb25zKGpzb25bU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMF1dKTsKKyAgICAgICAgdGhpcy5f
cmVzdWx0c1RhYmxlLnNob3dJdGVyYXRpb25zKGpzb25bU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1b
MF1dLCB0aGlzLm9wdGlvbnMpOwogICAgICAgICBzZWN0aW9uc01hbmFnZXIuc2hvd0pTT04oImpz
b24iLCBqc29uW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzBdXVswXSk7CiAgICAgICAgIHN1aXRl
c01hbmFnZXIudXBkYXRlTG9jYWxTdG9yYWdlRnJvbUpTT04oanNvbltTdHJpbmdzWyJKU09OX1JF
U1VMVFMiXVswXV1bMF0pOwogICAgICAgICBiZW5jaG1hcmtDb250cm9sbGVyLnNob3dSZXN1bHRz
KCk7CkBAIC00NjMsNCArNDYzLDQgQEAgd2luZG93LmJlbmNobWFya0NvbnRyb2xsZXIgPQogICAg
IH0KIH0KIAotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGJl
bmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpKTsKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImxvYWRlZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpKTsKZGlmZiAtLWdp
dCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpz
IGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMK
aW5kZXggYzkwNDY3ZTc2ZjhlMThiMzdmNjc1ZDMyNjk5NTZiNDFiZThkM2NlNC4uYTQ2MjUzYTRi
Y2RhZjIwM2Q1OTUzMmRiOTgyNWRhOTdlMDgzMzI2MCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKQEAgLTYyLDI3ICs2
MiwyNyBAQCB2YXIgU3VpdGVzID0gW107CiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkhUTUwgc3Vp
dGUiLAogICAgIFsKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD01JnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
KyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAog
ICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjaXJjbGVzIgogICAgICAgICB9LAogICAg
ICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNz
cy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVX
aWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAog
ICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgogICAgICAgICB9
LAogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5j
aW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNo
YXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xl
JmZpbGw9Z3JhZGllbnQiLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBncmFkaWVu
dCBjaXJjbGVzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0
PTUmcmVtb3ZlTGltaXQ9MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdl
U3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBh
cnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAogICAg
ICAgICAgICAgbmFtZTogIkNTUyBib3VuY2luZyBTVkcgaW1hZ2VzIgogICAgICAgICB9LAogICAg
ICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdp
ZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5w
bmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1p
bWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4u
L3Jlc291cmNlcy95aW4teWFuZy5wbmciLAogICAgICAgICAgICAgbmFtZTogIkNTUyBib3VuY2lu
ZyBQTkcgaW1hZ2VzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0
ZXh0L2xheWVyaW5nLXRleHQuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEw
MCIsCisgICAgICAgICAgICB1cmw6ICJ0ZXh0L2xheWVyaW5nLXRleHQuaHRtbCIsCiAgICAgICAg
ICAgICBuYW1lOiAiQ1NTIGxheWVyaW5nIHRleHQiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtOTEs
MjMgKzkxLDIzIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBzdWl0ZSIsCiBTdWl0ZXMu
cHVzaChuZXcgU3VpdGUoIkNhbnZhcyBzdWl0ZSIsCiAgICAgWwogICAgICAgICB7IAotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZw
YXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiY2Fu
dmFzIGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP2dh
aW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRp
Y2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0
aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCiAgICAgICAgICAg
ICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCiAgICAgICAgIH0sCiAgICAg
ICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2Fu
dmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0
aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50
IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMt
c2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIGdy
YWRpZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6
ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49MC40
JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0
PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJs
OiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNs
ZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFu
Zy5zdmciLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBTVkcgaW1hZ2VzIgog
ICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAwJnJlbW92
ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0u
Li9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKICAgICAg
ICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgUE5HIGltYWdlcyIKICAgICAgICAgfSwKICAg
ICBdCkBAIC0xMTYsMjMgKzExNiwyMyBAQCBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNhbnZhcyBz
dWl0ZSIsCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIlNWRyBzdWl0ZSIsCiAgICAgWwogICAgICAg
ICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNo
YXBlcy5odG1sP2dhaW49NiZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdp
ZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICB1cmw6
ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lk
dGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAgICAgICAgIG5hbWU6
ICJTVkcgYm91bmNpbmcgY2lyY2xlcyIsCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fp
bj0wLjYmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9MSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xl
SGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZw
YXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIsCiAgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiLAogICAgICAgICB9LAogICAgICAgICB7Ci0g
ICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5o
dG1sP2dhaW49MC44JmFkZExpbWl0PTEwJnJlbW92ZUxpbWl0PTQmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRp
Y2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQi
LAogICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVzIgogICAg
ICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dhaW49MC40JmFkZExpbWl0PTUmcmVtb3ZlTGltaXQ9
MiZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNl
cy95aW4teWFuZy5zdmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgw
JmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5zdmciLAogICAgICAgICAgICAgbmFtZTog
IlNWRyBib3VuY2luZyBTVkcgaW1hZ2VzIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP2dh
aW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xl
SGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAogICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBQTkcgaW1hZ2VzIgog
ICAgICAgICB9LAogICAgIF0KQEAgLTE4NSw3ICsxODUsNyBAQCBTdWl0ZXMucHVzaChuZXcgU3Vp
dGUoIkJhc2ljIGNhbnZhcyBwYXRoIHN1aXRlIiwKICAgICAgICAgICAgIG5hbWU6ICJDYW52YXMg
YmV6aWVyIHBhdGgiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNp
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1RvIiwKKyAgICAgICAg
ICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJjVG8i
LAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNUbyBzZWdtZW50cyIKICAgICAgICAgfSwK
ICAgICAgICAgewpAQCAtMjA5LDcgKzIwOSw3IEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQmFz
aWMgY2FudmFzIHBhdGggc3VpdGUiLAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBiZXppZXIg
cGF0aCwgZmlsbCIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAic2lt
cGxlL3NpbXBsZS1jYW52YXMtcGF0aHMuaHRtbD8mcGF0aFR5cGU9YXJjVG9GaWxsIiwKKyAgICAg
ICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5cGU9YXJj
VG9GaWxsIiwKICAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYXJjVG8gc2VnbWVudHMsIGZpbGwi
CiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTIyNiwxMSArMjI2LDExIEBAIFN1aXRlcy5wdXNo
KG5ldyBTdWl0ZSgiQmFzaWMgY2FudmFzIHBhdGggc3VpdGUiLAogU3VpdGVzLnB1c2gobmV3IFN1
aXRlKCJDb21wbGV4IGV4YW1wbGVzIiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVy
bDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJl
bW92ZUxpbWl0PTEwIiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJv
bnMuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAg
fSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0
bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01IiwKKyAgICAgICAgICAgIHVybDog
ImV4YW1wbGVzL2NhbnZhcy1zdGFycy5odG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMg
c3RhcnMiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtMjM5LDE1ICsyMzksMTUgQEAgU3VpdGVzLnB1
c2gobmV3IFN1aXRlKCJDb21wbGV4IGV4YW1wbGVzIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgi
VGVzdCBUZW1wbGF0ZXMiLAogICAgIFsKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAidGVt
cGxhdGUvdGVtcGxhdGUtY3NzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01
IiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sIiwKICAgICAg
ICAgICAgIG5hbWU6ICJDU1MgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5odG1sP2dhaW49MSZhZGRMaW1p
dD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCIsCisgICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1w
bGF0ZS1jYW52YXMuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIHRlbXBsYXRlIgog
ICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0
ZS1zdmcuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmPG90aGVyX3BhcmFt
dGVyPj08dmFsdWU+IiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLXN2Zy5o
dG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJTVkcgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAgICAg
XQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5n
LXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcyBiL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2Vz
L2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKaW5kZXggNjNhZDU5YjQ3OTg1MTNlOWJiMTA1
ZDExZGYwY2Y0OTY0MDhkY2ZkYi4uNGNmN2NkNTI2YjBkODk3NmQ2OWVmNWU4OGNjNzZlYmNhMDY1
YzU0YSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5j
aW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcworKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jl
c291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzCkBAIC03Niw5ICs3Niw5IEBAIGZ1
bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UoZWxlbWVudCwgb3B0aW9ucykKIEJv
dW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb3Vu
Y2luZ1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSk7CiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0
YWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzU3RhZ2U7
CiAKLWZ1bmN0aW9uIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKQor
ZnVuY3Rpb24gQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlv
bnMpCiB7Ci0gICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
ayk7CisgICAgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywg
b3B0aW9ucyk7CiAgICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsK
IH0KIApAQCAtMTAxLDUgKzEwMSw1IEBAIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJr
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzCiAKIEJvdW5j
aW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1
bmN0aW9uKCkKIHsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0
b3IodGhpcyk7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9y
KHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0
aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBh
cnRpY2xlcy5qcwppbmRleCAyNWM1NzAwYmYwZDBkNTcyMmZjMmVlNzBjMWU1NmQzM2VkMjVkYzM2
Li5lODUwMGYzYTFjMGVlZmJmYWI3OTM4NGViMjM2NTRkOTliYjkwNTFkIDEwMDY0NAotLS0gYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21l
dGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMvYm91bmNpbmctcGFydGljbGVz
LmpzCkBAIC01Nyw5ICs1Nyw5IEBAIEJvdW5jaW5nUGFydGljbGUucHJvdG90eXBlID0KICAgICB9
CiB9CiAKLWZ1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrKQorZnVu
Y3Rpb24gQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7Ci0g
ICAgU3RhZ2VBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgU3RhZ2VBbmltYXRv
ci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiB9OwogCiBCb3VuY2luZ1BhcnRpY2xl
c0FuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3RhZ2VBbmltYXRvci5wcm90b3R5
cGUpOwpAQCAtMTI2LDUgKzEyNiw1IEBAIEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrLnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciA9IEJvdW5jaW5nUGFydGljbGVzQmVuY2htYXJrOwogCiBCb3VuY2lu
Z1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IgPSBmdW5jdGlvbigp
CiB7Ci0gICAgcmV0dXJuIG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMpOworICAg
IHJldHVybiBuZXcgQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25z
KTsKIH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJv
bnMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3Vy
Y2VzL2NhbnZhcy1lbGVjdHJvbnMuanMKaW5kZXggMTFmODkyMGM1YjQ1YzBjZjRkZjQwMWQxNDY1
ODE2MzI2Y2E0YWQ5NC4uNGU5MzIwNDhkN2M0MDlkN2JiOTUzYzMzMTQzNGM2OWRhNDRhZjg5NiAx
MDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2V4YW1wbGVzL3Jl
c291cmNlcy9jYW52YXMtZWxlY3Ryb25zLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwpAQCAtODIs
OSArODIsOSBAQCBDYW52YXNFbGVjdHJvbnNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1bmN0
aW9uKHRpbWVEZWx0YSkKICAgICB9KTsKIH0KIAotZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zQW5p
bWF0b3IoYmVuY2htYXJrKQorZnVuY3Rpb24gQ2FudmFzRWxlY3Ryb25zQW5pbWF0b3IoYmVuY2ht
YXJrLCBvcHRpb25zKQogewotICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAg
ICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiAgICAgdGhpcy5fY29u
dGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKIH0KIApAQCAtMTIxLDcgKzEyMSw3IEBA
IENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmdW5jdGlv
bihlbGVtZW50KQogQ2FudmFzRWxlY3Ryb25zQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmlt
YXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBBdHRhY2ggdGhlIGFuaW1hdG9yIHRvIHRoZSBi
ZW5jaG1hcmsuCi0gICAgcmV0dXJuIG5ldyBDYW52YXNFbGVjdHJvbnNBbmltYXRvcih0aGlzKTsK
KyAgICByZXR1cm4gbmV3IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlv
bnMpOwogfQogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRl
LCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCmRpZmYgLS1naXQgYS9Q
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZh
cy1zdGFycy5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9y
ZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCmluZGV4IGM5MDI4ZDc5MTA5MjMyNGQzNjY3YTE2N2Qx
ZjM5M2I4ODc1OGNiNjguLmZiZGJiNGY5NWQ1NDEwZjEwNDcwZjI0OTMzNjAzNjYxZGI2N2RhYWMg
MTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9y
ZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCkBAIC04Myw5ICs4Myw5
IEBAIENhbnZhc1N0YXJzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbih0aW1lRGVs
dGEpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIENhbnZhc1N0YXJzQW5pbWF0b3IoYmVuY2htYXJr
KQorZnVuY3Rpb24gQ2FudmFzU3RhcnNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7Ci0g
ICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICBBbmltYXRvci5jYWxsKHRoaXMs
IGJlbmNobWFyaywgb3B0aW9ucyk7CiAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFn
ZS5jb250ZXh0OwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgQ2FudmFzU3RhcnNCZW5jaG1hcmsu
cHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24oZWxlbWVudCkKIENhbnZhc1N0YXJzQmVu
Y2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgIC8vIEF0
dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgIHJldHVybiBuZXcgQ2FudmFz
U3RhcnNBbmltYXRvcih0aGlzKTsKKyAgIHJldHVybiBuZXcgQ2FudmFzU3RhcnNBbmltYXRvcih0
aGlzLCB0aGlzLl9vcHRpb25zKTsKIH0KIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUg
PSBmdW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFy
KQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNl
cy9tYWluLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YWluLmpzCmluZGV4IDc2ODczMzQ5Njc4NTA4ZmMzNzZmMGQ4ODQwMWQ0NzQyMGI4MWVjNTQuLjBl
NWNkOGRjOTc0ZDA5Y2U4MDZiNzI3NmY2ODk1NDNkZjhlNTg0ZjggMTAwNjQ0Ci0tLSBhL1BlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKQEAgLTU5LDkg
KzU5LDExIEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgfQogfQogCi1mdW5jdGlv
biBBbmltYXRvcihiZW5jaG1hcmspCitmdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmssIG9wdGlv
bnMpCiB7CiAgICAgdGhpcy5fYmVuY2htYXJrID0gYmVuY2htYXJrOworICAgIHRoaXMuX29wdGlv
bnMgPSBvcHRpb25zOworICAgIAogICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwogICAgIHRoaXMu
X2Ryb3BGcmFtZUNvdW50ID0gMTsKICAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7IApA
QCAtNzIsMTEgKzc0LDYgQEAgZnVuY3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKQogCiBBbmltYXRv
ci5wcm90b3R5cGUgPQogewotICAgIHN0YXJ0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0
aGlzLl9pbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEp
OwotICAgIH0sCi0gICAgCiAgICAgdGltZURlbHRhOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7
CkBAIC0xMDksMjAgKzEwNiwxNiBAQCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgICAgICB2YXIg
Y3VycmVudEZyYW1lUmF0ZSA9IE1hdGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8g
dGhpcy5fbWVhc3VyZUZyYW1lQ291bnQpKTsKICAgICAgICAgIAogICAgICAgICAvLyBVc2UgS2Fs
bWFuIGZpbHRlciB0byBnZXQgYSBtb3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgotICAg
ICAgICBpZiAodGhpcy5fYmVuY2htYXJrLm9wdGlvbnNbImVzdGltYXRlZC1mcmFtZS1yYXRlIl0p
CisgICAgICAgIGlmICh0aGlzLl9vcHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdKQogICAg
ICAgICAgICAgY3VycmVudEZyYW1lUmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShjdXJy
ZW50RnJhbWVSYXRlKTsKICAgICAgICAgCiAgICAgICAgIC8vIEFkanVzdCB0aGUgdGVzdCB0byBy
ZWFjaCB0aGUgZGVzaXJlZCBGUFMuCiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9iZW5jaG1h
cmsudXBkYXRlKHRoaXMuX2N1cnJlbnRUaW1lT2Zmc2V0LCB0aGlzLnRpbWVEZWx0YSgpLCBjdXJy
ZW50RnJhbWVSYXRlKTsKICAgICAgICAgCi0gICAgICAgIC8vIFN0b3AgdGhlIGFuaW1hdG9yIGlm
IHRoZSBiZW5jaG1hcmsgaGFzIGZpbmlzaGVkLgotICAgICAgICBpZiAoIXJlc3VsdCAmJiB0eXBl
b2YgdGhpcy5faW50ZXJ2YWxJZCAhPSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGNsZWFySW50
ZXJ2YWwodGhpcy5faW50ZXJ2YWxJZCk7Ci0KICAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgZHJv
cC9tZWFzdXJlIGN5Y2xlLgogICAgICAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKICAgICAgICAg
Ci0gICAgICAgIC8vIHJlc3VsdCBtYXkgc3RvcCB0aGUgYW5pbWF0b3IgaWYgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKCkgaGFzIGJlZW4gdXNlZC4KKyAgICAgICAgLy8gSWYgcmVzdWx0ID09IDAsIG5v
IG1vcmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgd2lsbCBiZSBpbnZva2NlZC4KICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9LAogICAgIApAQCAtMTM2LDE5ICsxMjksMTIgQEAgQW5pbWF0
b3IucHJvdG90eXBlID0KIGZ1bmN0aW9uIEJlbmNobWFyayhvcHRpb25zKQogewogICAgIHRoaXMu
X29wdGlvbnMgPSBvcHRpb25zOwotICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1l
dGhvZCJdIHx8ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiOwotCi0gICAgdGhpcy5vcHRpb25zID0g
b3B0aW9uczsKICAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAgICAgdGhpcy5f
aXNTYW1wbGluZyA9IGZhbHNlOwogCi0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRp
b25zWyJnYWluIl0pIHx8IDE7Ci0gICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29w
dGlvbnNbImFkZExpbWl0Il0pIHx8IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRo
aXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhpcy5fY29udHJv
bGxlciA9IG5ldyBQSURDb250cm9sbGVyKGdhaW4sIG9wdGlvbnNbImZyYW1lLXJhdGUiXSwgbG93
VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9s
bGVyKHRoaXMuX29wdGlvbnNbImZyYW1lLXJhdGUiXSk7CiAgICAgdGhpcy5fc2FtcGxlciA9IG5l
dyBTYW1wbGVyKDIpOwotICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMu
b3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CisgICAgdGhpcy5fc3RhdGUgPSBuZXcg
QmVuY2htYXJrU3RhdGUodGhpcy5fb3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CiB9
CiAKIEJlbmNobWFyay5wcm90b3R5cGUgPQpAQCAtMTU2LDEwICsxNDIsNyBAQCBCZW5jaG1hcmsu
cHJvdG90eXBlID0KICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgbG9hZCBldmVudCBsaXN0ZW5lciBv
ciBmcm9tIHRoaXMucnVuKCkuCiAgICAgc3RhcnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl9tZXRob2QgPT0gInNldEludGVydmFsIikKLSAgICAgICAgICAgIHRoaXMuX2Fu
aW1hdG9yLnN0YXJ0KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9y
LmFuaW1hdGVMb29wKCk7CisgICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CiAg
ICAgfSwKICAgICAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRo
ZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgpAQCAtMTc5LDE0ICsxNjIsMTQgQEAgQmVuY2htYXJr
LnByb3RvdHlwZSA9CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgdHVuZVZhbHVlID0gMDsKLSAg
ICAgICAgaWYgKHRoaXMub3B0aW9uc1siY29tcGxleGl0eSJdICYmICF0aGlzLm9wdGlvbnNbImFk
YXB0aXZlLXRlc3QiXSkgeworICAgICAgICBpZiAodGhpcy5fb3B0aW9uc1siY29tcGxleGl0eSJd
ICYmICF0aGlzLl9vcHRpb25zWyJhZGFwdGl2ZS10ZXN0Il0pIHsKICAgICAgICAgICAgIC8vIHRo
aXMudHVuZSgwKSByZXR1cm5zIHRoZSBjdXJyZW50IGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0g
ICAgICAgICAgICB0dW5lVmFsdWUgPSB0aGlzLm9wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMu
dHVuZSgwKTsKKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IHRoaXMuX29wdGlvbnNbImNvbXBsZXhp
dHkiXSAtIHRoaXMudHVuZSgwKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghKHRoaXMu
X2lzU2FtcGxpbmcgJiYgdGhpcy5vcHRpb25zWyJmaXgtdGVzdC1jb21wbGV4aXR5Il0pKSB7Cisg
ICAgICAgIGVsc2UgaWYgKCEodGhpcy5faXNTYW1wbGluZyAmJiB0aGlzLl9vcHRpb25zWyJmaXgt
dGVzdC1jb21wbGV4aXR5Il0pKSB7CiAgICAgICAgICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJl
dHdlZW4gZnJhbWVSYXRlIGFuZCB0ZXN0IGNvbXBsZXhpdHkgaXMgaW52ZXJzZS1wcm9wb3J0aW9u
YWwgc28gd2UKICAgICAgICAgICAgIC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBvZiBQSURD
b250cm9sbGVyLnR1bmUoKSB0byBjaGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0g
ICAgICAgICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1cnJlbnRGcmFt
ZVJhdGUsIHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMu
X2NvbnRyb2xsZXIudHVuZShjdXJyZW50VGltZU9mZnNldCwgdGltZURlbHRhLCBjdXJyZW50RnJh
bWVSYXRlKTsKICAgICAgICAgICAgIHR1bmVWYWx1ZSA9IHR1bmVWYWx1ZSA+IDAgPyBNYXRoLmZs
b29yKHR1bmVWYWx1ZSkgOiBNYXRoLmNlaWwodHVuZVZhbHVlKTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGgu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMK
aW5kZXggZjI2ZjE4NjgyMzFhZWM4OGVjMzgyN2NkOTM3Y2RlYmQwN2MwNjM5ZC4uOTJiZmNmNmI0
MWIzOTA4NzY1YzFlZmE2OGUwZWU4N2MwZWZmNGJiNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwpAQCAtNCwxNyArNCwxNyBA
QCB2YXIgTWF0cml4ID0KICAgICB7CiAgICAgICAgIHJldHVybiBBcnJheShtICogbikuZmlsbCh2
KTsKICAgICB9LAotICAgIAorCiAgICAgemVyb3M6IGZ1bmN0aW9uKG0sIG4pCiAgICAgewogICAg
ICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7CiAgICAgfSwKLSAgICAKKwogICAgIG9u
ZXM6IGZ1bmN0aW9uKG0sIG4pCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwg
biwgMSk7CiAgICAgfSwKLSAgICAKKwogICAgIGlkZW50aXR5OiBmdW5jdGlvbihuKQogICAgIHsK
ICAgICAgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mobiwgbik7CkBAIC0yMiw3ICsyMiw3
IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2kgKiBuICsgaV0gPSAxOwogICAgICAg
ICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBzdHI6IGZ1bmN0aW9uKEEsIG4sIG0p
CiAgICAgewogICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYmIG4gPiAxID8gIk1hdHJpeFsiICsg
biArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsgIl0gPSBbIjsKQEAgLTMwLDE1ICsz
MCwxNSBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dCArPSBBW2ldOwogICAgICAgICAg
ICAgaWYgKGkgPCBuICogbSAtIDEpCiAgICAgICAgICAgICAgICAgb3V0ICs9ICIsICI7Ci0gICAg
ICAgIH0gICAgICAgCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dCArICJdIjsKICAgICB9
LAotICAgIAorCiAgICAgcG9zOiBmdW5jdGlvbihtLCBpLCBqKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG0gKiBpICsgajsKICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBu
LCBtKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKQEAgLTQ2
LDcgKzQ2LDcgQEAgdmFyIE1hdHJpeCA9CiAgICAgICAgICAgICBvdXRbaV0gPSBBW2ldICsgQltp
XTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAotICAgIAorCiAgICAgc3VidHJhY3Q6IGZ1
bmN0aW9uKEEsIEIsIG4sIG0pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9z
KG4sIG0pOwpAQCAtNTQsNyArNTQsNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dFtp
XSA9IEFbaV0gLSBCW2ldOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAg
ICBzY2FsZTogZnVuY3Rpb24ocywgQSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBN
YXRyaXguemVyb3MobiwgbSk7CkBAIC02MiwxNyArNjIsMTcgQEAgdmFyIE1hdHJpeCA9CiAgICAg
ICAgICAgICBvdXRbaV0gPSBzICogQVtpXTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAot
ICAgIAorCiAgICAgdHJhbnNwb3NlOiBmdW5jdGlvbihBLCBuLCBtKQogICAgIHsKICAgICAgICAg
dmFyIG91dCA9IE1hdHJpeC56ZXJvcyhtLCBuKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuOyArK2kpIHsKICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqKQogICAg
ICAgICAgICAgICAgIG91dFtNYXRyaXgucG9zKG4sIGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBq
LCBpKV07Ci0gICAgICAgIH0gICAgICAgCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dDsK
ICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCiAg
ICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIHApOwpAQCAtOTMsMzcgKzkz
LDM3IEBAIHZhciBWZWN0b3IzID0KICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguemVyb3Mo
MSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIG9uZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBNYXRyaXgub25lcygxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc3RyOiBm
dW5jdGlvbih2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7CiAg
ICAgfSwKLSAgICAKKwogICAgIGFkZDogZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHJl
dHVybiBNYXRyaXguYWRkKHYsIHcsIDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFj
dDogZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguc3VidHJhY3Qo
diwgdywgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHNjYWxlOiBmdW5jdGlvbihzLCB2KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zY2FsZShzLCB2LCAxLCAzKTsKICAgICB9LAot
ICAgIAorCiAgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlvbih2LCBBKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseSh2LCBBLCAxLCAzLCAzKTsKICAgICB9LAotICAgIAor
CiAgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgdmFy
IG91dCA9IDA7CkBAIC0xMzksOTUgKzEzOSwyMDYgQEAgdmFyIE1hdHJpeDMgPQogICAgIHsKICAg
ICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgaWRl
bnRpdHk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaWRlbnRpdHko
MywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBwb3M6
IGZ1bmN0aW9uKGksIGopCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBq
KTsKICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC5hZGQoQSwgQiwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1
YnRyYWN0OiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0
cmFjdChBLCBCLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMs
IEEpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOwogICAg
IH0sCi0gICAgCisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4LnRyYW5zcG9zZShBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVs
dGlwbHlNYXRyaXgzOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJp
eC5tdWx0aXBseShBLCBCLCAzLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlW
ZWN0b3IzOiBmdW5jdGlvbihBLCB2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0
aXBseShBLCB2LCAzLCAzLCAxKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIFBJRENvbnRyb2xsZXIo
SywgeXNwLCB1bG93LCB1aGlnaCkKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoeXNwKQogewogICAg
IHRoaXMuX3lzcCA9IHlzcDsKIAotICAgIHRoaXMuX1RkID0gNTsKLSAgICB0aGlzLl9UaSA9IDE1
OwotCi0gICAgdGhpcy5fS3AgPSBLOwotICAgIHRoaXMuX0tkID0gSyAvIHRoaXMuX1RkOwotICAg
IHRoaXMuX0tpID0gSyAvIHRoaXMuX1RpOworICAgIHRoaXMuX0twID0gMDsKKyAgICB0aGlzLl9z
dGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk1BTlVBTF9HQUlOOwogCiAgICAgdGhpcy5fZW9s
ZCA9IDA7CiAgICAgdGhpcy5fSSA9IDA7CiB9CiAKKy8vIFRoaXMgZW51bSB3aWxsIGJlIHVzZWQg
dG8gdGVsbCB3aGV0aGVyIHRoZSB0ZXN0IGN1cnJlbnQgb3V0cHV0IGlzIG1vdmluZyB0b3dhcmRz
CisvLyB0aGUgc2V0LXBvaW50IG9yIGF3YXkgZnJvbSBpdC4gCitQSURDb250cm9sbGVyLnlQb3Np
dGlvbnMgPSB7CisgICAgQkVGT1JFX1lTUDogMCwKKyAgICBBRlRFUl9ZU1A6IDEKK30KKworLy8g
V2UgdXNlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZCBmb3IgdHVuaW5nIHRoZSBQSUQgY29udHJv
bGxlci4gVGhlIHdvcmtmbG93IG9mCisvLyB0aGUgUElEIGlzIHNwbGl0IGludG8gdGhyZWUgc3Rh
Z2VzLiBUaGUgZmlyc3QgdHdvIHN0YWdlcyBkZXRlcm1pbmUgdGhlIHZhbHVlcworLy8gb2YgdGhl
IFBJRCBjb250cm9sbGVyIGdhaW5zLiBEdXJpbmcgdGhlc2Ugc3RhZ2VzIHdlIHJldHVybiB0aGUg
cHJvcG90aW9uYWwgdGVybQorLy8gb25seS4gVGhlIGxhc3Qgc3RhZ2UgaXMgYSBub3JtYWwgUElE
IGNvbnRyb2xsZXIuCitQSURDb250cm9sbGVyLnN0YWdlcyA9IHsKKyAgICBNQU5VQUxfR0FJTjog
MCwgICAgIC8vIEluY3JlYXNlIHRoZSB2YWx1ZSBvZiB0aGUgS3AgdW50aWwgaXQgcmVhY2hlcyB5
c3AuIAorICAgIE1BTlVBTF9USU1FOiAxLCAgICAgLy8gTWVhc3VyZSB0aGUgb3NjaWxsYXRpb24g
cGVyaW9kLCBpLmUudGhlIHRpbWUgb2YgdGhlIG92ZXJzaG90IHBlcmlvZC4KKyAgICBOT1JNQUw6
IDIgICAgICAgICAgIC8vIFJldHVybiB0aGUgdGhyZWUgY29tcG9uZW50cyBQLCBJIGFuZCBEIGZv
ciB0aGUgdHVuaW5nIHZhbHVlLgorfQorCiBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiB7Ci0g
ICAgX3NhdDogZnVuY3Rpb24odiwgbG93LCBoaWdoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHYg
PCBsb3cgPyBsb3cgOiAodiA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgLy8gRGV0ZXJtaW5lcyB3
aGV0aGVyIHRoZSBjdXJyZW50IHkgaXMKKyAgICAvLyAgYmVmb3JlIHlzcCA9PiAoYmVsb3cgeXNw
IGlmIHlzcCA+IHkwKSB8fCAoYWJvdmUgeXNwIGlmIHlzcCA8IHkwKQorICAgIC8vICBhZnRlciB5
c3AgPT4gKGFib3ZlIHlzcCBpZiB5c3AgPiB5MCkgfHwgKGJlbG93IHlzcCBpZiB5c3AgPCB5MCkK
KyAgICBfeVBvc2l0aW9uOiBmdW5jdGlvbih5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh5IDwg
dGhpcy5feXNwKSA9PSAodGhpcy5feTAgPCB0aGlzLl95c3ApCisgICAgICAgICAgICA/IFBJRENv
bnRyb2xsZXIueVBvc2l0aW9ucy5CRUZPUkVfWVNQCisgICAgICAgICAgICA6IFBJRENvbnRyb2xs
ZXIueVBvc2l0aW9ucy5BRlRFUl9ZU1A7CisgICAgfSwKKworICAgIC8vIENhbGN1bGF0ZSB0aGUg
dWx0aW1hdGUgZGlzdGFuY2UgZnJvbSB5MCBhZnRlciB0aW1lIHQuIFdlIHdhbnQgdG8gbW92ZSB2
ZXJ5CisgICAgLy8gc2xvd2x5IGF0IHRoZSBiZWdpbm5pbmcgdG8gc2VlIGhvdyBhZGRpbmcgZmV3
IGl0ZW1zIHRvIHRoZSB0ZXN0IGNhbiBhZmZlY3QKKyAgICAvLyBpdHMgb3V0cHV0LiBUaGUgY29t
cGxleGl0eSBvZiBhIHNpbmdsZSBpdGVtIG1pZ2h0IGJlIGJpZyBlbm91Z2ggdG8ga2VlcCB0aGUK
KyAgICAvLyBwcm9wb3J0aW9uYWwgZ2FpbiB2ZXJ5IHNtYWxsIGJ1dCBhY2hpZXZlcyB0aGUgZGVz
aXJlZCBwcm9ncmVzcy4gQnV0IGlmIHkgZG9lcworICAgIC8vIG5vdCBjaGFuZ2Ugc2lnbmlmaWNh
bnRseSBhZnRlciBhZGRpbmcgZmV3IGl0ZW1zLCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBtdWNoCisg
ICAgLy8gYmlnZ2VyIGdhaW4uIFNvIHdlIG5lZWQgdG8gbW92ZSBvdmVyIGEgY3ViaWMgY3VydmUg
d2hpY2ggaW5jcmVhc2VzIHZlcnkKKyAgICAvLyBzbG93bHkgd2l0aCBzbWFsbCB0IHZhbHVlcyBi
dXQgbW92ZXMgdmVyeSBmYXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVzLiAKKyAgICAvLyBUaGUgYmFz
aWMgZm9ybXVsYSBpczogeSA9IHReMworICAgIC8vIENoYW5nZSB0aGUgZm9ybXVsYSB0byByZWFj
aCB5PTEgYWZ0ZXIgMTAwMCBtczogeSA9ICh0LzEwMDApXjMKKyAgICAvLyBDaGFuZ2UgdGhlIGZv
cm11bGEgdG8gcmVhY2ggeT0oeXNwIC0geTApIGFmdGVyIDEwMDAgbXM6IHkgPSAoeXNwIC0geTAp
ICogKHQvMTAwMCleMworICAgIF9kaXN0YW5jZVVsdGltYXRlOiBmdW5jdGlvbih0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuICh0aGlzLl95c3AgLSB0aGlzLl95MCkgKiBNYXRoLnBvdyh0IC8gMTAw
MCwgMyk7CiAgICAgfSwKLSAgICAKLSAgICB0dW5lOiBmdW5jdGlvbih5LCBoKQorCisgICAgLy8g
Q2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgeSByZWxhdGl2ZSB0byB5MC4gSXQgYWxzbyBlbnN1
cmVzIHdlIGRvIG5vdCByZXR1cm4KKyAgICAvLyB6ZXJvIGJ5IHJldHVybmluZyBhIGVwc2lsb24g
dmFsdWUgaW4gdGhlIHNhbWUgZGlyZWN0aW9uIGFzIHVsdGltYXRlIGRpc3RhbmNlLgorICAgIF9k
aXN0YW5jZTogZnVuY3Rpb24oeSwgZHUpCiAgICAgewotICAgICAgICAvLyBDdXJyZW50IGVycm9y
LgotICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisgICAgICAgIGNvbnN0IGVwc2lsb24g
PSAwLjAwMDE7CisgICAgICAgIHZhciBkICA9IHkgLSB0aGlzLl95MDsKKyAgICAgICAgcmV0dXJu
IGR1IDwgMCA/IE1hdGgubWluKGQsIC1lcHNpbG9uKSA6IE1hdGgubWF4KGQsIGVwc2lsb24pOwor
ICAgIH0sCisKKyAgICAvLyBEZWNpZGVzIGhvdyBtdWNoIHRoZSBwcm9wb3J0aW9uYWwgZ2FpbiBz
aG91bGQgYmUgaW5jcmVhc2VkIGR1cmluZyB0aGUgbWFudWFsCisgICAgLy8gZ2FpbiBzdGFnZS4g
V2UgY2hvb3NlIHRvIHVzZSB0aGUgcmF0aW8gb2YgdGhlIHVsdGltYXRlIGRpc3RhbmNlIHRvIHRo
ZSBjdXJyZW50CisgICAgLy8gZGlzdGFuY2UgYXMgYW4gaW5kaWNhdGlvbiBvZiBob3cgbXVjaCB0
aGUgc3lzdGVtIGlzIHJlc3BvbnNpdmUuIFdlIHdhbnQgCisgICAgLy8gdG8ga2VlcCB0aGUgaW5j
cmVtZW50IHVuZGVyIGNvbnRyb2wgc28gaXQgZG9lcyBub3QgY2F1c2UgdGhlIHN5c3RlbSBpbnN0
YWJpbGl0eQorICAgIC8vIFNvIHdlIGNob29zZSB0byB0YWtlIHRoZSBuYXR1cmFsIGxvZ2FyaXRo
bSBvZiB0aGlzIHJhdGlvLgorICAgIF9nYWluSW5jcmVtZW50OiBmdW5jdGlvbih0LCB5LCBlKQor
ICAgIHsKKyAgICAgICAgdmFyIGR1ID0gdGhpcy5fZGlzdGFuY2VVbHRpbWF0ZSh0KTsKKyAgICAg
ICAgdmFyIGQgPSB0aGlzLl9kaXN0YW5jZSh5LCBkdSk7CisgICAgICAgIHJldHVybiBNYXRoLmxv
ZyhkdSAvIGQpICogMC4xOworICAgIH0sCisKKyAgICAvLyBUaGlzIGlzIHRoZSBtYW51YWwgc3Rh
Z2Ugb2YgdGhlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZC4gSXQgY29uc2lzdHMgb2YgdHdvCisg
ICAgLy8gc3ViLXN0YWdlcy4gVGhlIGZpcnN0IHN1Yi1zdGFnZSBpbmNyZW1lbnRzIHRoZSBwcm9w
b3J0aW9uYWwgZ2FpbiB0aWxsIHRoZQorICAgIC8vIHN5c3RlbSBvdXRwdXQgcGFzc2VzIHRoZSBz
ZXQtcG9pbnQgdmFsdWUuIFRoZSBzZWNvbmQgc3RhZ2UgbWVhc3VyZXMgdGhlCisgICAgLy8gb3Nj
aWxsYXRpb24gcGVyaW9kLiBXaGVuIHRoZSBzZWNvbmQgc3RhZ2UgaXMgZG9uZSwgaXQgY2FsY3Vs
YXRlcyB0aGUgaW50ZWdyYWwKKyAgICAvLyBhbmQgZGVyaXZhdGl2ZSBwZXJpb2RzIGFuZCBzd2l0
Y2hlcyB0aGUgY29udHJvbGxlciBtb2RlIHRvIG5vcm1hbC4KKyAgICBfdHVuZU1hbnVhbDogZnVu
Y3Rpb24odCwgaCwgeSwgZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5feTAgPT0g
InVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgYSB0
dW5pbmcgdmFsdWUgaXMgcmVxdWlyZWQuIFdlIHdhbnQgdGhlIHRlc3QKKyAgICAgICAgICAgIC8v
IHRvIGFkZCBvbmx5IG9uZSBpdGVtLiBTbyB3ZSBuZWVkIHRvIHJldHVybiAtMSB3aGljaCBmb3Jj
ZXMgdXMgdG8KKyAgICAgICAgICAgIC8vIGNob29zZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBLcCB0
byBiZSA9IC0xIC8gZQorICAgICAgICAgICAgdGhpcy5feTAgPSB5OworICAgICAgICAgICAgdGhp
cy5fS3AgPSAtMSAvIGU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhZ2UgPT0gUElEQ29u
dHJvbGxlci5zdGFnZXMuTUFOVUFMX0dBSU4pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl95UG9z
aXRpb24oeSkgPT0gUElEQ29udHJvbGxlci55UG9zaXRpb25zLkJFRk9SRV9ZU1ApIHsKKyAgICAg
ICAgICAgICAgICAvLyBLZWVwIGluY3JlbWVudGluZyB0aGUgS3AgYXMgbG9uZyBhcyB3ZSBoYXZl
IG5vdCByZWFjaGVkIHRoZQorICAgICAgICAgICAgICAgIC8vIHNldC1wb2ludCB5ZXQKKyAgICAg
ICAgICAgICAgICB0aGlzLl9LcCArPSB0aGlzLl9nYWluSW5jcmVtZW50KHQsIHksIGUpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBzd2l0
Y2ggc3RhZ2VzIHNvIHdlIGNhbiBtZWFzdXJlIHRoZSBvdmVyc2hvdCB0aW1lLgorICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuTUFOVUFMX1RJTUU7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fS3AgLz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmICh0aGlzLl9zdGFnZSA9PSBQSURDb250cm9sbGVyLnN0YWdlcy5NQU5VQUxfVElNRSkg
eworICAgICAgICAgICAgaWYgKGUgPCAwICE9IHRoaXMuX2VvbGQgPCAwKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLl9UMCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAg
ICAgICAgICAvLyB0IGlzIHRoZSB0aW1lIG9mIHRoZSBiZWdpbmluZyBvZiB0aGUgZmlyc3Qgb3Zl
cnNob3QKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVDAgPSB0OworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRpbWUgb2YgdGhlIGVu
ZCBvZiB0aGUgZmlyc3Qgb3ZlcnNob3QKKyAgICAgICAgICAgICAgICAgICAgdmFyIFR1ID0gdCAt
IHRoaXMuX1QwOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8g
Q2FsY3VsYXRlIHRoZSBzeXN0ZW0gcGFyYW1ldGVycyBmcm9tIEtwIGFuZCBUdSBhc3N1bWluZwor
ICAgICAgICAgICAgICAgICAgICAvLyBhICJzb21lIG92ZXJzaG9vdCIgY29udHJvbCB0eXBlLiBT
ZWU6CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1ppZWdsZXIlRTIlODAlOTNOaWNob2xzX21ldGhvZAorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9UaSA9IFR1IC8gMjsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVGQgPSBUdSAvIDM7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX0twID0gMC4zMyAqIHRoaXMuX0twOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk5PUk1BTDsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1bmVOb3JtYWwoaCwgeSwgZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0
dXJuIHRoZSBwcm9wb3J0aW9uYWwgdGVybSBvbmx5LgorICAgICAgICByZXR1cm4gdGhpcy5fS3Ag
KiBlOworICAgIH0sCiAKKyAgICAvLyBOb3JtYWwgUElEIHR1bmluZyBmdW5jdGlvbi4gS3AsIFRp
IGFuZCBUZCB3ZXJlIGFscmVhZHkgY2FsY3VsYXRlZCBpbiB0aGUgCisgICAgLy8gbWFudWFsIHN0
YWdlcy4KKyAgICBfdHVuZU5vcm1hbDogZnVuY3Rpb24oaCwgeSwgZSkKKyAgICB7CiAgICAgICAg
IC8vIFByb3BvcnRpb25hbCB0ZXJtLgogICAgICAgICB2YXIgUCA9IHRoaXMuX0twICogZTsKLSAg
ICAgICAgCisKKyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUg
Y3VydmUgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nCisgICAgICAgIC8vIHRpbGwgdGhlIGN1
cnJlbnQgdGltZS4KKyAgICAgICAgdGhpcy5fSSArPSAodGhpcy5fS3AgLyB0aGlzLl9UaSkgKiAo
KGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKwogICAgICAgICAvLyBEZXJpdmF0aXZlIHRlcm0g
aXMgdGhlIHNsb3BlIG9mIHRoZSBjdXJ2ZSBhdCB0aGUgY3VycmVudCB0aW1lLgotICAgICAgICB2
YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CisgICAgICAgIHZhciBEID0g
KHRoaXMuX0twICogdGhpcy5fVGQpICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7CiAKLSAgICAgICAg
Ly8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJv
bSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lLgotICAgICAgICB0aGlzLl9JICs9
IHRoaXMuX0tpICogKChlICsgdGhpcy5fZW9sZCkgLyAyKSAqIGg7CisgICAgICAgIC8vIFJldHVy
biBhIFBJRCB0ZXJtLgorICAgICAgICByZXR1cm4gUCArIHRoaXMuX0kgKyBEOworICAgIH0sCisK
KyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHR1bmUgaXRzIHRlc3QuIEl0IHVz
ZXMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kCisgICAgLy8gdG8gY2FsY3VsYXRlIHRoZSBjb250
cm9sbGVyIHBhcmFtZXRlcnMuIEl0IHRoZW4gcmV0dXJucyBhIFBJRCB0dW5pbmcgdmFsdWUuCisg
ICAgdHVuZTogZnVuY3Rpb24odCwgaCwgeSkKKyAgICB7CisgICAgICAgIC8vIEN1cnJlbnQgZXJy
b3IuCisgICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0geTsKIAotICAgICAgICAvLyBwaWQgY29u
dHJvbGxlciB2YWx1ZS4KLSAgICAgICAgdmFyIHYgPSBQICsgRCArIHRoaXMuX0k7Ci0gICAgICAg
IAotICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dXJhdGlv
bi4KLSAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhpZ2gp
OyAgICAgICAgCisgICAgICAgIC8vIFRoZSB0dW5pbmcgdmFsdWUgZGVwZW5kcyBvbiB0aGUgc3Rh
Z2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgICAgICAgIHZhciB1ID0gdGhpcy5fc3RhZ2UgPT0gUElE
Q29udHJvbGxlci5zdGFnZXMuTk9STUFMID8gdGhpcy5fdHVuZU5vcm1hbChoLCB5LCBlKSA6IHRo
aXMuX3R1bmVNYW51YWwodCwgaCwgeSwgZSk7CiAKKyAgICAgICAgLy8gU2F2ZSBlIGZvciB0aGUg
bmV4dCBjYWxsLgogICAgICAgICB0aGlzLl9lb2xkID0gZTsKICAgICAgICAgcmV0dXJuIHU7CiAg
ICAgfQpAQCAtMjM1LDE4ICszNDYsMTggQEAgUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogCiBm
dW5jdGlvbiBLYWxtYW5Fc3RpbWF0b3IoaW5pdFgpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSBzdGF0
ZSB0cmFuc2l0aW9uIG1hdHJpeAorICAgIC8vIEluaXRpYWxpemUgc3RhdGUgdHJhbnNpdGlvbiBt
YXRyaXguCiAgICAgdGhpcy5fbWF0QSA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKICAgICB0aGlzLl9t
YXRBW01hdHJpeDMucG9zKDAsIDIpXSA9IDE7Ci0gICAgCi0gICAgLy8gSW5pdGlhbGl6ZSBtZWFz
dXJlbWVudCBtYXRyaXgKKworICAgIC8vIEluaXRpYWxpemUgbWVhc3VyZW1lbnQgbWF0cml4Lgog
ICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3IzLnplcm9zKCk7CiAgICAgdGhpcy5fdmVjSFswXSA9IDE7
Ci0gICAgCisKICAgICB0aGlzLl9tYXRRID0gTWF0cml4My5pZGVudGl0eSgpOwogICAgIHRoaXMu
X1IgPSAxMDAwOwotICAgIAotICAgIC8vIEluaXRpYWwgc3RhdGUgY29uZGl0aW9ucworCisgICAg
Ly8gSW5pdGlhbCBzdGF0ZSBjb25kaXRpb25zLgogICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9y
My56ZXJvcygpOwogICAgIHRoaXMuX3ZlY1hfZXN0WzBdID0gaW5pdFg7CiAgICAgdGhpcy5fbWF0
UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7CkBAIC0yNTksNyArMzcwLDcgQEAgS2FsbWFuRXN0aW1h
dG9yLnByb3RvdHlwZSA9CiAgICAgICAgIC8vIFByb2plY3QgdGhlIHN0YXRlIGFoZWFkCiAgICAg
ICAgIC8vICBYX3ByZChrKSA9IEEgKiBYX2VzdChrLTEpCiAgICAgICAgIHZhciB2ZWNYX3ByZCA9
IE1hdHJpeDMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX21hdEEsIHRoaXMuX3ZlY1hfZXN0KTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gUHJvamVjdCB0aGUgZXJyb3IgY292YXJpYW5jZSBhaGVhZAog
ICAgICAgICAvLyAgUF9wcmQoaykgPSBBICogUF9lc3Qoay0xKSAqIEEnICsgUQogICAgICAgICB2
YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFkZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgz
Lm11bHRpcGx5TWF0cml4Myh0aGlzLl9tYXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJh
bnNwb3NlKHRoaXMuX21hdEEpKSwgdGhpcy5fbWF0USk7CkBAIC0yNzEsMTEgKzM4MiwxMSBAQCBL
YWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KICAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11
bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNILCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOwog
ICAgICAgICB2YXIgUyA9IFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gp
ICsgdGhpcy5fUjsKICAgICAgICAgdmFyIHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVj
Qik7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXN0aW1hdGUgdmlhIHooaykK
ICAgICAgICAgLy8gIFhfZXN0KGspID0geF9wcmQgKyBLKGspICogKHooaykgLSBIICogWF9wcmQo
aykpOwogICAgICAgICB0aGlzLl92ZWNYX2VzdCA9IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0
b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2
ZWNYX3ByZCksIHZlY0dhaW4pKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVXBkYXRlIHRoZSBl
cnJvciBjb3ZhcmlhbmNlCiAgICAgICAgIC8vICBQX2VzdChrKSA9IFBfcHJkKGspIC0gSyhrKSAq
IEggKiBQX3ByZChrKTsKICAgICAgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0
KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxlKFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4s
IHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkpOwpAQCAtMjgzLDUgKzM5NCw1IEBAIEthbG1hbkVzdGlt
YXRvci5wcm90b3R5cGUgPQogICAgICAgICAvLyBDb21wdXRlIHRoZSBlc3RpbWF0ZWQgbWVhc3Vy
ZW1lbnQuCiAgICAgICAgIC8vICB5ID0gSCAqIFhfZXN0KGspOwogICAgICAgICByZXR1cm4gVmVj
dG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVjSCwgIHRoaXMuX3ZlY1hfZXN0KTsKLSAgICB9
CisgICB9CiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL3N0YWdlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9zdGFnZS5qcwppbmRleCAyYmI0OWQ1ZmRkYjIwM2RkODk1OTEyZWZiNmU5MWIxZWM4
ZTlmNDJlLi4xMmY5NWUyZDAwZGYzNmRmNzZlMGY3NDEyY2FmMzk1NzZkNzY5ZjRiIDEwMDY0NAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL3N0YWdlLmpz
CisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2Uu
anMKQEAgLTQxLDEzICs0MSwxNiBAQCBTdGFnZS5wcm90b3R5cGUgPQogewogICAgIGdldCBzaXpl
KCkKICAgICB7Ci0gICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0
aGlzLmVsZW1lbnQpOwotICAgICAgICB2YXIgcGFkZGluZyA9IG5ldyBJbnNldHMoCi0gICAgICAg
ICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSwKLSAgICAgICAgICAgIHBhcnNlRmxv
YXQoc3R5bGVzLnBhZGRpbmdSaWdodCksCi0gICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5w
YWRkaW5nQm90dG9tKSwKLSAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3Ap
KTsKLSAgICAgICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGggLSBw
YWRkaW5nLndpZHRoLCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gcGFkZGluZy5oZWlnaHQp
OworICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3NpemUgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAg
ICAgICAgIHZhciBzdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnQp
OworICAgICAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgSW5zZXRzKAorICAgICAgICAgICAgICAg
IHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdUb3ApLAorICAgICAgICAgICAgICAgIHBhcnNlRmxv
YXQoc3R5bGVzLnBhZGRpbmdSaWdodCksCisgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChzdHls
ZXMucGFkZGluZ0JvdHRvbSksCisgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFk
ZGluZ1RvcCkpOworICAgICAgICAgICAgdGhpcy5fc2l6ZSA9IG5ldyBQb2ludCh0aGlzLmVsZW1l
bnQuY2xpZW50V2lkdGggLSBwYWRkaW5nLndpZHRoLCB0aGlzLmVsZW1lbnQuY2xpZW50SGVpZ2h0
IC0gcGFkZGluZy5oZWlnaHQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLl9zaXpl
OwogICAgIH0sCiAgICAgCiAgICAgcmFuZG9tOiBmdW5jdGlvbihtaW4sIG1heCkKQEAgLTExNyw5
ICsxMjAsOSBAQCBTdGFnZS5wcm90b3R5cGUgPQogICAgIH0KIH0KIAotZnVuY3Rpb24gU3RhZ2VB
bmltYXRvcihiZW5jaG1hcmspCitmdW5jdGlvbiBTdGFnZUFuaW1hdG9yKGJlbmNobWFyaywgb3B0
aW9ucykKIHsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICAgQW5pbWF0
b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwogfTsKIAogU3RhZ2VBbmltYXRvci5w
cm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEFuaW1hdG9yLnByb3RvdHlwZSk7CkBAIC0xNTksNyAr
MTYyLDcgQEAgU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZVN0YWdlID0gZnVuY3Rpb24o
ZWxlbWVudCkKIAogU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVu
Y3Rpb24oKQogewotICAgIHJldHVybiBuZXcgU3RhZ2VBbmltYXRvcih0aGlzKTsKKyAgICByZXR1
cm4gbmV3IFN0YWdlQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9CiAKIFN0YWdlQmVu
Y2htYXJrLnByb3RvdHlwZS50dW5lID0gZnVuY3Rpb24oY291bnQpCkBAIC0xNzcsOCArMTgwLDgg
QEAgU3RhZ2VCZW5jaG1hcmsucHJvdG90eXBlLnNob3dSZXN1bHRzID0gZnVuY3Rpb24obWVzc2Fn
ZSwgcHJvZ3Jlc3MpCiAgICAgaWYgKCF0aGlzLl9yZWNvcmRUYWJsZSB8fCAhdGhpcy5fcHJvZ3Jl
c3NCYXIgfHwgIXRoaXMuX3Rlc3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0aGlzLm9w
dGlvbnNbInNob3ctcnVubmluZy1yZXN1bHRzIl0pCi0gICAgICAgIHRoaXMuX3JlY29yZFRhYmxl
LnNob3dSZWNvcmQodGhpcy5fdGVzdC5uYW1lLCBtZXNzYWdlLCB0aGlzLl9zYW1wbGVyLnRvSlNP
Tih0cnVlLCBmYWxzZSkpOworICAgIGlmICh0aGlzLl9vcHRpb25zWyJzaG93LXJ1bm5pbmctcmVz
dWx0cyJdKQorICAgICAgICB0aGlzLl9yZWNvcmRUYWJsZS5zaG93UmVjb3JkKHRoaXMuX3Rlc3Qu
bmFtZSwgbWVzc2FnZSwgdGhpcy5fc2FtcGxlci50b0pTT04odHJ1ZSwgZmFsc2UpLCB0aGlzLl9v
cHRpb25zKTsKIAogICAgIHRoaXMuX3Byb2dyZXNzQmFyLnNldFBvcyhwcm9ncmVzcyk7CiB9CmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvc2ltcGxlL3Jlc291
cmNlcy9zaW1wbGUtY2FudmFzLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3Rz
L3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcwppbmRleCBkMzMyODE1M2M2NjdkNWE5
NjlhMTAwMDExYmQ4MzQ1NThiZjZiNDllLi43ZTVjY2FiYmU3NTZkZmFlZTNkY2ExZDM5ZGRhOTZk
Y2ZiZDdkY2Y4IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
c2ltcGxlL3Jlc291cmNlcy9zaW1wbGUtY2FudmFzLmpzCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanMKQEAgLTM2
LDkgKzM2LDkgQEAgU2ltcGxlQ2FudmFzU3RhZ2UucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlv
bigpCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFy
aykKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaywgb3B0aW9ucykKIHsK
LSAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICBTdGFnZUFuaW1h
dG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKICAgICB0aGlzLl9jb250ZXh0ID0g
YmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OwogfQogCkBAIC01MiwxNCArNTIsMTEgQEAgU2ltcGxl
Q2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1hdGUgPSBmdW5jdGlvbigpCiAKIAogZnVuY3Rp
b24gU2ltcGxlQ2FudmFzQmVuY2htYXJrKHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJs
ZSwgcHJvZ3Jlc3NCYXIpIHsKLSAgICBvcHRpb25zWyJnYWluIl0gPSA2OwotICAgIG9wdGlvbnNb
ImFkZExpbWl0Il0gPSAxMDA7Ci0gICAgb3B0aW9uc1sicmVtb3ZlTGltaXQiXSA9IDEwMDA7CiAg
ICAgU3RhZ2VCZW5jaG1hcmsuY2FsbCh0aGlzLCBzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3Jk
VGFibGUsIHByb2dyZXNzQmFyKTsKIH0KIFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUg
PSBPYmplY3QuY3JlYXRlKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZSk7CiBTaW1wbGVDYW52YXNC
ZW5jaG1hcmsucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2ltcGxlQ2FudmFzQmVuY2htYXJrOwog
U2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9u
KCkgewotICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhpcyk7CisgICAgcmV0
dXJuIG5ldyBTaW1wbGVDYW52YXNBbmltYXRvcih0aGlzLCB0aGlzLl9vcHRpb25zKTsKIH0KIApk
aWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3RlbXBsYXRlL3Jl
c291cmNlcy90ZW1wbGF0ZS1jYW52YXMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
dGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwppbmRleCA3ZWUwMDZk
YjIwZGYxNmZmOTMwZTY2YjdlZDkyNGMzMTllNDMwODRhLi5jNmE2MDBkNTZjYTE4ODBlYTE0MmI1
MTNmMTBjNTRkNWE3YmFkZDFkIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcworKysgYi9QZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRl
LWNhbnZhcy5qcwpAQCAtNTcsOSArNTcsOSBAQCBUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlw
ZS5hbmltYXRlID0gZnVuY3Rpb24odGltZURlbHRhKQogICAgIC8vIExvb3AgdGhyb3VnaCBhbGwg
eW91ciBvYmplY3RzIGFuZCBhc2sgdGhlbSB0byBhbmltYXRlLgogfQogCi1mdW5jdGlvbiBUZW1w
bGF0ZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIFRlbXBsYXRlQ2FudmFzQW5p
bWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQogewotICAgIEFuaW1hdG9yLmNhbGwodGhpcywgYmVu
Y2htYXJrKTsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiAg
ICAgdGhpcy5fY29udGV4dCA9IGJlbmNobWFyay5fc3RhZ2UuY29udGV4dDsKIH0KIApAQCAtOTMs
NyArOTMsNyBAQCBUZW1wbGF0ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2Ug
PSBmdW5jdGlvbihlbGVtZW50KQogVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQogewogICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3Ig
dG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1cm4gbmV3IFRlbXBsYXRlQ2FudmFzQW5pbWF0b3Io
dGhpcyk7CisgICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNhbnZhc0FuaW1hdG9yKHRoaXMsIHRoaXMu
X29wdGlvbnMpOwogfQogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9u
KHN1aXRlLCB0ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCmRpZmYgLS1n
aXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDJlYTRhZDJjZmQzNWM4ODQ2YjM2ZDA2M2E2OGVkNTAzMzg5ZDdlMTAuLjlkOGRh
NWJlODZhNTEyYzc5M2M0MTYxZTU2ZWJhMjAyMGU0YTA4NzAgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsOTUgQEAKKzIwMTUtMTEtMTIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLGNvbT4KKworICAgICAgICBDYWxjdWxhdGUgdGhlIGdyYXBoaWNzIGJlbmNobWFyayB0
ZXN0IGdhaW4gYWRhcHRpdmVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxMjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2UgbmVlZCB0byBjYWxjdWxhdGUgdGhlIGdhaW4gb2YgdGhlIGdyYXBoaWNz
IGJlbmNobWFyayB0ZXN0cyBhZGFwdGl2ZWx5CisgICAgICAgIGFuZCBnZXQgcmlkIG9mIHRoZSBn
YWluIGFuZCBsaW1pdHMgcGFyYW1ldGVycyB3ZSBoYXZlIHRvIGNob29zZSBtYW51YWxseQorICAg
ICAgICBmb3IgZXZlcnkgdGVzdC4gV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgY2xhc3NpYyBaaWVn
bGVy4oCTTmljaG9scyBtZXRob2QgZm9yCisgICAgICAgIGNhbGN1bGF0aW5nIHRoZSBnYWluIGFu
ZCBpbnRlZ3JhbCBhbmQgZGVyaXZhdGl2ZSB0aW1lcy4gV2UgYXJlIGdvaW5nIHRvCisgICAgICAg
IHRyeSBtb3Zpbmcgb24gYSBjdWJpYyBjdXJ2ZSBkdXJpbmcgdGhlIG1hbnVhbCBzdGFnZSBmcm9t
IHkwIHRvIHJlYWNoIHlzcC4KKworICAgICAgICAqIEFuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVu
c2lvbnMuanM6CisgICAgICAgICh3aW5kb3cuRG9jdW1lbnRFeHRlbnNpb24uaW5zZXJ0Q3NzUnVs
ZUFmdGVyKTogRG8gbm90IHJlZmVyZW5jZSBudWxsIGRvY3VtZW50LnN0eWxlU2hlZXRzLmNjc1J1
bGVzLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd0VtcHR5Q2VsbCk6IENo
b29zZSBhIG1vcmUgcHJlY2lzZSBuYW1lIGZvciB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAoUmVz
dWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd1RleHQpOiBDb250cm9sIHRoZSB0ZXh0IGNvbG9yIGlu
IHRoZSByZXN1bHRzIHRhYmxlLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hv
d0ZpeGVkTnVtYmVyKTogQ29udHJvbCB0aGUgdGV4dCBjb2xvciBpbiB0aGUgcmVzdWx0cyB0YWJs
ZS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dHcmFwaCk6IENhbGwgX3No
b3dFbXB0eUNlbGwoKSB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5w
cm90b3R5cGUuX3Nob3dKU09OKTogQ2FsbCBfc2hvd0VtcHR5Q2VsbCgpIHdpdGggaXRzIG5ldyBu
YW1lLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5faXNBY2N1cmF0ZU1lYXN1cmVt
ZW50KTogUmV0dXJucyB0cnVlIGlmIHRoZSBtZWFzdXJlbWVudCBpcyBhY2N1cmF0ZS4KKyAgICAg
ICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX2lzQWNjdXJhdGVUZXN0KTogUmV0dXJucyB0cnVl
IGlmIGFsbCB0aGUgbWVhc3VyZW1lbnRzIGFyZSBhY2N1cmF0ZS4KKyAgICAgICAgKFJlc3VsdHNU
YWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eUNlbGxzKTogSW5zZXJ0cyBhIHNldCBvZiBlbXB0eSBj
ZWxscyBpbiBhIHJlc3VsdHMgdGFibGUgcm93LgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3Rv
dHlwZS5fc2hvd0VtcHR5Um93KTogSW5zZXJ0cyBhbiBlbXB0eSByb3cgaW4gdGhlIHJlc3VsdHMg
dGFibGUgdG8gc3BsaXQgc3VpdGVzJyByZXN1bHRzLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnBy
b3RvdHlwZS5fc2hvd1Rlc3QpOiBDb2xvciB0aGUgaW5hY2N1cmF0ZSB0ZXN0IG5hbWUgYW5kIHRo
ZSBpbmFjY3VyYXRlIG1lYXN1cmVtZW50cyB3aXRoIGNvbG9yPXJlZC4KKyAgICAgICAgKFJlc3Vs
dHNUYWJsZS5wcm90b3R5cGUuX3Nob3dTdWl0ZSk6IFBhc3NlcyB0aGUgb3B0aW9ucyB0byBfc2hv
d1Rlc3QoKQorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hvd0l0ZXJhdGlvbik6
IFBhc3NlcyB0aGUgb3B0aW9ucyB0byBfc2hvd1N1aXRlKCkgYW5kIGluc2VydHMgYW4gZW1wdHkg
cm93IGJldHdlZW4gc3VpdGVzLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5zaG93
UmVjb3JkKTogUGFzc2VzIHRoZSBvcHRpb25zIHRvIF9zaG93VGVzdCgpLgorICAgICAgICAoUmVz
dWx0c1RhYmxlLnByb3RvdHlwZS5zaG93SXRlcmF0aW9ucyk6IFBhc3NlcyB0aGUgb3B0aW9ucyB0
byBfc2hvd0l0ZXJhdGlvbigpLgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlwZS5fc2hv
d0VtcHR5KTogRGVsZXRlZC4gUmVuYW1lZCB0byBfc2hvd0VtcHR5Q2VsbCgpLgorICAgICAgICAK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5jc3M6Cisg
ICAgICAgIChzZWN0aW9uI3J1bm5pbmcgPiAjcnVubmluZy10ZXN0ID4gaWZyYW1lKTogUHJldmVu
dCB0aGUgaWZyYW1lIGZyb20gZmxhdHRlbmluZyBvbiBpT1MgaWYgaXRzIGNvbnRlbnQgZ29lcyBv
dXRzaWRlIGl0cyBib3VuZHMuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy9hbmltb21ldGVyLmpzOgorICAgICAgICAod2luZG93LmJlbmNobWFya1J1bm5l
ckNsaWVudC5kaWRGaW5pc2hMYXN0SXRlcmF0aW9uKTogUGFzc2VzIG9wdGlvbnMgdG8gUmVzdWx0
c1RhYmxlLnNob3dJdGVyYXRpb25zKCkuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIv
cnVubmVyL3Jlc291cmNlcy90ZXN0cy5qczogUmVtb3ZlIGFsbCB0aGUgbWFudWFsIGdhaW5zIGFu
ZCBsaW1pdHMgcGFyYW1ldGVycyB3aGljaCBoYWQgdG8gYmUgcGFzc2VkIHRvIGV2ZXJ5IHRlc3Qu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVz
L3Jlc291cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzOgorICAgICAgICAoQm91bmNp
bmdDYW52YXNQYXJ0aWNsZXNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBw
YXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAg
KEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRv
cik6IFBhc3MgdGhlIG9wdGlvbnMgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHRoZSBhbmltYXRvci4K
KyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMv
cmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKyAgICAgICAgKEJvdW5jaW5nUGFydGlj
bGVzQW5pbWF0b3IpOiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlv
bnMgYW5kIHBhc3MgaXQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChCb3VuY2luZ1BhcnRp
Y2xlc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25z
IGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIAorICAgICAgICAq
IEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6
CisgICAgICAgIChDYW52YXNFbGVjdHJvbnNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtl
cyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4K
KyAgICAgICAgKENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0
b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3Iu
CisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2Vz
L2NhbnZhcy1zdGFycy5qczoKKyAgICAgICAgKENhbnZhc1N0YXJzQW5pbWF0b3IpOiBUaGUgY29u
c3RydWN0b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlvbnMgYW5kIHBhc3MgaXQgdG8gdGhl
IGJhc2UgY2xhc3MuCisgICAgICAgIChDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3Jl
YXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUg
YW5pbWF0b3IuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2Vz
L21haW4uanM6CisgICAgICAgIChBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5l
dyBwYXJhbWV0ZXIgb3B0aW9ucyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBpdCB0aHJvdWdoIHRoZSBi
ZW5jaG1hcmsuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IEdldCByaWQg
b2Ygc2V0SW50ZXJ2YWwoKSBhbmltYXRpb24uCisgICAgICAgIChCZW5jaG1hcmspOiBHZXQgcmlk
IG9mIHNldEludGVydmFsKCkgYW5pbWF0aW9uLiBHZXQgcmlkIG9mIG1hbnVhbCBnYWluIGFuZCBs
aW1pdHMuIEdldCByaWQgb2YgZHVwbGljYXRlIG9wdGlvbnMgbWVtYmVyLgorICAgICAgICAoQmVu
Y2htYXJrLnByb3RvdHlwZS5zdGFydCk6IEdldCByaWQgb2Ygc2V0SW50ZXJ2YWwoKSBhbmltYXRp
b24uCisgICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IFVzZSBfb3B0aW9ucyBp
bnN0ZWFkIG9mIHRoZSBkZWxldGVkIGR1cGxpY2F0ZSBvcHRpb25zLgorICAgICAgICAoQW5pbWF0
b3IucHJvdG90eXBlLnN0YXJ0KTogRGVsZXRlZC4gR2V0IHJpZCBvZiBzZXRJbnRlcnZhbCgpIGFu
aW1hdGlvbi4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMv
bWF0aC5qczoKKyAgICAgICAgKE1hdHJpeC5zdHIpOiBEZWxldGUgdHJhaWxpbmcgc3BhY2VzLgor
ICAgICAgICAoTWF0cml4LnRyYW5zcG9zZSk6IERlbGV0ZSB0cmFpbGluZyBzcGFjZXMuCisgICAg
ICAgIChQSURDb250cm9sbGVyKTogR2V0IHJpZCBvZiB0aGUgbWFudWFsIGdhaW4gYW5kIGxpbWl0
cyBhbmQgdGhlIG1hZ2ljIG51bWJlcnMgZm9yIFRpIGFuZCBUZC4KKyAgICAgICAgKFBJRENvbnRy
b2xsZXIucHJvdG90eXBlLl95UG9zaXRpb24pOiB0ZWxsIHdoZXRoZXIgdGhlIHRlc3QgY3VycmVu
dCBvdXRwdXQgaXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1wb2ludCBvciBhd2F5IGZyb20gaXQu
CisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fZGlzdGFuY2VVbHRpbWF0ZSk6IENh
bGN1bGF0ZSB0aGUgdWx0aW1hdGUgZGlzdGFuY2UgZnJvbSB5MCBhZnRlciB0aW1lIHQgdXNpbmcg
YSBjdWJpYyBmb3JtdWxhLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX2Rpc3Rh
bmNlKTogQ2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgeSByZWxhdGl2ZSB0byB5MC4KKyAgICAg
ICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9nYWluSW5jcmVtZW50KTogRGVjaWRlcyBob3cg
bXVjaCB0aGUgcHJvcG9ydGlvbmFsIGdhaW4gc2hvdWxkIGJlIGluY3JlYXNlZCBkdXJpbmcgdGhl
IG1hbnVhbCBnYWluIHN0YWdlLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3R1
bmVNYW51YWwpOiBUaGUgbWFudWFsIHN0YWdlIG9mIHRoZSBaaWVnbGVy4oCTTmljaG9scyBtZXRo
b2QuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fdHVuZU5vcm1hbCk6IE5vcm1h
bCBQSUQgdHVuaW5nIGZ1bmN0aW9uLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUu
dHVuZSk6IE1hbmFnZXMgY2FsY3VsYXRpbmcgdGhlIGNvbnRyb2xsZXIgcGFyYW1ldGVycy4gSXQg
dGhlbiByZXR1cm5zIGEgUElEIHR1bmluZyB2YWx1ZS4KKyAgICAgICAgKEthbG1hbkVzdGltYXRv
cik6IEZpeGluZyBwdW5jdHVhdGlvbiBhbmQgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzLgorICAg
ICAgICAoS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJlbW92aW5nIHRyYWls
aW5nIHNwYWNlcy4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBEZWxl
dGVkLiBOb3QgbmVlZGVkIGFueW1vcmUuIFRoZSBhZGFwdGl2ZSBnYWluIHNob3VsZCBzYXR1cmF0
ZSB0aGUgdGVzdCB3aXRob3V0IGJvdW5kaW5nIHRoZSB0dW5lIHZhbHVlLgorICAgICAgICAKKyAg
ICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKKyAgICAgICAgKFN0
YWdlLnByb3RvdHlwZS5nZXQgc2l6ZSk6IEF2b2lkIGZvcmNpbmcgbGF5b3V0IGJ5IGNhY2hpbmcg
dGhlIHN0YWdlIGNsaWVudCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgICAgICAoU3RhZ2VBbmltYXRv
cik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFz
cyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVBbmltYXRvcik6IFBhc3MgdGhlIG9wdGlvbnMgZnJvbSB0aGUgYmVuY2htYXJrIHRv
IHRoZSBhbmltYXRvci4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVz
dWx0cyk6IFVzZSB0aGlzLl9vcHRpb25zIGluc3RlYWQgb2YgdGhpcy5vcHRpb25zLiBQYXNzIG9w
dGlvbnMgdG8gUmVzdWx0c1RhYmxlLnNob3dSZWNvcmQoKS4KKyAgICAgICAgCisgICAgICAgICog
QW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CisgICAg
ICAgIChTaW1wbGVDYW52YXNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBw
YXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAg
KFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRo
ZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIAor
ICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNh
bnZhcy5qczoKKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKTogVGhlIGNvbnN0cnVj
dG9yIHRha2VzIGEgbmV3IHBhcmFtZXRlciBvcHRpb25zIGFuZCBwYXNzIGl0IHRvIHRoZSBiYXNl
IGNsYXNzLgorICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0
ZUFuaW1hdG9yKTogUGFzcyB0aGUgb3B0aW9ucyBmcm9tIHRoZSBiZW5jaG1hcmsgdG8gdGhlIGFu
aW1hdG9yLgorCiAyMDE1LTExLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBh
cHBsZS5jb20+CiAKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZ3JhcGhpY3MgYmVuY2htYXJrJ3Mg
S2FsbWFuIGZpbHRlciB3aXRoIGVzdGltYXRlZCA2MCBGUFMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265462</attachid>
            <date>2015-11-12 18:32:51 -0800</date>
            <delta_ts>2015-11-13 19:29:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151112183245.patch</filename>
            <type>text/plain</type>
            <size>52040</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI0MDApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBACisyMDE1LTExLTEyICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZSxjb20+CisKKyAgICAgICAgQ2Fs
Y3VsYXRlIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdCBnYWluIGFkYXB0aXZlbHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8gY2Fs
Y3VsYXRlIHRoZSBnYWluIG9mIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdHMgYWRhcHRpdmVs
eQorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2FpbiBhbmQgbGltaXRzIHBhcmFtZXRlcnMg
d2UgaGF2ZSB0byBjaG9vc2UgbWFudWFsbHkKKyAgICAgICAgZm9yIGV2ZXJ5IHRlc3QuIFdlIGFy
ZSBnb2luZyB0byB1c2UgdGhlIGNsYXNzaWMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kIGZvcgor
ICAgICAgICBjYWxjdWxhdGluZyB0aGUgZ2FpbiBhbmQgaW50ZWdyYWwgYW5kIGRlcml2YXRpdmUg
dGltZXMuIFdlIGFyZSBnb2luZyB0bworICAgICAgICB0cnkgbW92aW5nIG9uIGEgY3ViaWMgY3Vy
dmUgZHVyaW5nIHRoZSBtYW51YWwgc3RhZ2UgZnJvbSB5MCB0byByZWFjaCB5c3AuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAod2luZG93
LkRvY3VtZW50RXh0ZW5zaW9uLmluc2VydENzc1J1bGVBZnRlcik6IERvIG5vdCByZWZlcmVuY2Ug
bnVsbCBkb2N1bWVudC5zdHlsZVNoZWV0cy5jY3NSdWxlcy4KKyAgICAgICAgKFJlc3VsdHNUYWJs
ZS5wcm90b3R5cGUuX3Nob3dFbXB0eUNlbGwpOiBDaG9vc2UgYSBtb3JlIHByZWNpc2UgbmFtZSBm
b3IgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dU
ZXh0KTogQ29udHJvbCB0aGUgdGV4dCBjb2xvciBpbiB0aGUgcmVzdWx0cyB0YWJsZS4KKyAgICAg
ICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dGaXhlZE51bWJlcik6IENvbnRyb2wgdGhl
IHRleHQgY29sb3IgaW4gdGhlIHJlc3VsdHMgdGFibGUuCisgICAgICAgIChSZXN1bHRzVGFibGUu
cHJvdG90eXBlLl9zaG93R3JhcGgpOiBDYWxsIF9zaG93RW1wdHlDZWxsKCkgd2l0aCBpdHMgbmV3
IG5hbWUuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93SlNPTik6IENhbGwg
X3Nob3dFbXB0eUNlbGwoKSB3aXRoIGl0cyBuZXcgbmFtZS4KKyAgICAgICAgKFJlc3VsdHNUYWJs
ZS5wcm90b3R5cGUuX2lzQWNjdXJhdGVNZWFzdXJlbWVudCk6IFJldHVybnMgdHJ1ZSBpZiB0aGUg
bWVhc3VyZW1lbnQgaXMgYWNjdXJhdGUuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBl
Ll9pc0FjY3VyYXRlVGVzdCk6IFJldHVybnMgdHJ1ZSBpZiBhbGwgdGhlIG1lYXN1cmVtZW50cyBh
cmUgYWNjdXJhdGUuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93RW1wdHlD
ZWxscyk6IEluc2VydHMgYSBzZXQgb2YgZW1wdHkgY2VsbHMgaW4gYSByZXN1bHRzIHRhYmxlIHJv
dy4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eVJvdyk6IEluc2Vy
dHMgYW4gZW1wdHkgcm93IGluIHRoZSByZXN1bHRzIHRhYmxlIHRvIHNwbGl0IHN1aXRlcycgcmVz
dWx0cy4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dUZXN0KTogQ29sb3Ig
dGhlIGluYWNjdXJhdGUgdGVzdCBuYW1lIGFuZCB0aGUgaW5hY2N1cmF0ZSBtZWFzdXJlbWVudHMg
d2l0aCBjb2xvcj1yZWQuCisgICAgICAgIChSZXN1bHRzVGFibGUucHJvdG90eXBlLl9zaG93U3Vp
dGUpOiBQYXNzZXMgdGhlIG9wdGlvbnMgdG8gX3Nob3dUZXN0KCkKKyAgICAgICAgKFJlc3VsdHNU
YWJsZS5wcm90b3R5cGUuX3Nob3dJdGVyYXRpb24pOiBQYXNzZXMgdGhlIG9wdGlvbnMgdG8gX3No
b3dTdWl0ZSgpIGFuZCBpbnNlcnRzIGFuIGVtcHR5IHJvdyBiZXR3ZWVuIHN1aXRlcy4KKyAgICAg
ICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuc2hvd1JlY29yZCk6IFBhc3NlcyB0aGUgb3B0aW9u
cyB0byBfc2hvd1Rlc3QoKS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuc2hvd0l0
ZXJhdGlvbnMpOiBQYXNzZXMgdGhlIG9wdGlvbnMgdG8gX3Nob3dJdGVyYXRpb24oKS4KKyAgICAg
ICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3Nob3dFbXB0eSk6IERlbGV0ZWQuIFJlbmFtZWQg
dG8gX3Nob3dFbXB0eUNlbGwoKS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9ydW5u
ZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuY3NzOgorICAgICAgICAoc2VjdGlvbiNydW5uaW5nID4g
I3J1bm5pbmctdGVzdCA+IGlmcmFtZSk6IFByZXZlbnQgdGhlIGlmcmFtZSBmcm9tIGZsYXR0ZW5p
bmcgb24gaU9TIGlmIGl0cyBjb250ZW50IGdvZXMgb3V0c2lkZSBpdHMgYm91bmRzLgorICAgICAg
ICAoQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTgwMHB4KSk6IENoYW5nZSB0aGUgc2l6
ZSBvZiB0aGUgPHNlY3Rpb24+IHRocm91Z2ggYSBtZWRpYSBxdWVyeSByYXRoZXIgdGhhbiBpbnNl
cnRpbmcgYSBjc3MgcnVsZSBkeW5hbWljYWxseS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci9ydW5uZXIvcmVzb3VyY2VzL2FuaW1vbWV0ZXIuanM6CisgICAgICAgICh3aW5kb3cuYmVu
Y2htYXJrUnVubmVyQ2xpZW50LmRpZEZpbmlzaExhc3RJdGVyYXRpb24pOiBQYXNzZXMgb3B0aW9u
cyB0byBSZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMoKS4KKyAgICAgICAgKHdpbmRvdy5iZW5j
aG1hcmtDb250cm9sbGVyLmluaXRpYWxpemUpOiBUaGUgc2l6ZSBvZiB0aGUgPHNlY3Rpb24+IGNh
biBiZSBjaGFuZ2VkIHRocm91Z2ggYSBtZWRpYSBxdWVyeS4gTm8gbmVlZCBmb3IgaW5zZXJ0aW5n
IGEgY3NzIHJ1bGUgZHluYW1pY2FsbHkuCisgICAgICAgICh3aW5kb3cuc2VjdGlvbnNNYW5hZ2Vy
LnNldHVwU2VjdGlvblN0eWxlKTogRGVsZXRlZC4gTm8gbmVlZCBmb3IgaW5zZXJ0aW5nIGEgY3Nz
IHJ1bGUgZHluYW1pY2FsbHkuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvcnVubmVy
L3Jlc291cmNlcy90ZXN0cy5qczogUmVtb3ZlIGFsbCB0aGUgbWFudWFsIGdhaW5zIGFuZCBsaW1p
dHMgcGFyYW1ldGVycyB3aGljaCBoYWQgdG8gYmUgcGFzc2VkIHRvIGV2ZXJ5IHRlc3QuCisgICAg
ICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1jYW52YXMtcGFydGljbGVzLmpzOgorICAgICAgICAoQm91bmNpbmdDYW52
YXNQYXJ0aWNsZXNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0
ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKEJvdW5j
aW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvcik6IFBh
c3MgdGhlIG9wdGlvbnMgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHRoZSBhbmltYXRvci4KKyAgICAg
ICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3Vy
Y2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qczoKKyAgICAgICAgKEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IpOiBUaGUgY29uc3RydWN0b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlvbnMgYW5k
IHBhc3MgaXQgdG8gdGhlIGJhc2UgY2xhc3MuCisgICAgICAgIChCb3VuY2luZ1BhcnRpY2xlc0Jl
bmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20g
dGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIAorICAgICAgICAqIEFuaW1v
bWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1lbGVjdHJvbnMuanM6CisgICAg
ICAgIChDYW52YXNFbGVjdHJvbnNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5l
dyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAg
ICAgKENhbnZhc0VsZWN0cm9uc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQ
YXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAg
ICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZh
cy1zdGFycy5qczoKKyAgICAgICAgKENhbnZhc1N0YXJzQW5pbWF0b3IpOiBUaGUgY29uc3RydWN0
b3IgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIG9wdGlvbnMgYW5kIHBhc3MgaXQgdG8gdGhlIGJhc2Ug
Y2xhc3MuCisgICAgICAgIChDYW52YXNTdGFyc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IpOiBQYXNzIHRoZSBvcHRpb25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0
b3IuCisgICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4u
anM6CisgICAgICAgIChBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJh
bWV0ZXIgb3B0aW9ucyBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBpdCB0aHJvdWdoIHRoZSBiZW5jaG1h
cmsuCisgICAgICAgIChBbmltYXRvci5wcm90b3R5cGUuYW5pbWF0ZSk6IEdldCByaWQgb2Ygc2V0
SW50ZXJ2YWwoKSBhbmltYXRpb24uCisgICAgICAgIChCZW5jaG1hcmspOiBHZXQgcmlkIG9mIHNl
dEludGVydmFsKCkgYW5pbWF0aW9uLiBHZXQgcmlkIG9mIG1hbnVhbCBnYWluIGFuZCBsaW1pdHMu
IEdldCByaWQgb2YgZHVwbGljYXRlIG9wdGlvbnMgbWVtYmVyLgorICAgICAgICAoQmVuY2htYXJr
LnByb3RvdHlwZS5zdGFydCk6IEdldCByaWQgb2Ygc2V0SW50ZXJ2YWwoKSBhbmltYXRpb24uCisg
ICAgICAgIChCZW5jaG1hcmsucHJvdG90eXBlLnVwZGF0ZSk6IFVzZSBfb3B0aW9ucyBpbnN0ZWFk
IG9mIHRoZSBkZWxldGVkIGR1cGxpY2F0ZSBvcHRpb25zLgorICAgICAgICAoQW5pbWF0b3IucHJv
dG90eXBlLnN0YXJ0KTogRGVsZXRlZC4gR2V0IHJpZCBvZiBzZXRJbnRlcnZhbCgpIGFuaW1hdGlv
bi4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5q
czoKKyAgICAgICAgKE1hdHJpeC5zdHIpOiBEZWxldGUgdHJhaWxpbmcgc3BhY2VzLgorICAgICAg
ICAoTWF0cml4LnRyYW5zcG9zZSk6IERlbGV0ZSB0cmFpbGluZyBzcGFjZXMuCisgICAgICAgIChQ
SURDb250cm9sbGVyKTogR2V0IHJpZCBvZiB0aGUgbWFudWFsIGdhaW4gYW5kIGxpbWl0cyBhbmQg
dGhlIG1hZ2ljIG51bWJlcnMgZm9yIFRpIGFuZCBUZC4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIu
cHJvdG90eXBlLl95UG9zaXRpb24pOiB0ZWxsIHdoZXRoZXIgdGhlIHRlc3QgY3VycmVudCBvdXRw
dXQgaXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1wb2ludCBvciBhd2F5IGZyb20gaXQuCisgICAg
ICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fZGlzdGFuY2VVbHRpbWF0ZSk6IENhbGN1bGF0
ZSB0aGUgdWx0aW1hdGUgZGlzdGFuY2UgZnJvbSB5MCBhZnRlciB0aW1lIHQgdXNpbmcgYSBjdWJp
YyBmb3JtdWxhLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX2Rpc3RhbmNlKTog
Q2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2YgeSByZWxhdGl2ZSB0byB5MC4KKyAgICAgICAgKFBJ
RENvbnRyb2xsZXIucHJvdG90eXBlLl9nYWluSW5jcmVtZW50KTogRGVjaWRlcyBob3cgbXVjaCB0
aGUgcHJvcG9ydGlvbmFsIGdhaW4gc2hvdWxkIGJlIGluY3JlYXNlZCBkdXJpbmcgdGhlIG1hbnVh
bCBnYWluIHN0YWdlLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3R1bmVNYW51
YWwpOiBUaGUgbWFudWFsIHN0YWdlIG9mIHRoZSBaaWVnbGVy4oCTTmljaG9scyBtZXRob2QuCisg
ICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fdHVuZU5vcm1hbCk6IE5vcm1hbCBQSUQg
dHVuaW5nIGZ1bmN0aW9uLgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUudHVuZSk6
IE1hbmFnZXMgY2FsY3VsYXRpbmcgdGhlIGNvbnRyb2xsZXIgcGFyYW1ldGVycy4gSXQgdGhlbiBy
ZXR1cm5zIGEgUElEIHR1bmluZyB2YWx1ZS4KKyAgICAgICAgKEthbG1hbkVzdGltYXRvcik6IEZp
eGluZyBwdW5jdHVhdGlvbiBhbmQgcmVtb3ZpbmcgdHJhaWxpbmcgc3BhY2VzLgorICAgICAgICAo
S2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZS5lc3RpbWF0ZSk6IFJlbW92aW5nIHRyYWlsaW5nIHNw
YWNlcy4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXQpOiBEZWxldGVkLiBO
b3QgbmVlZGVkIGFueW1vcmUuIFRoZSBhZGFwdGl2ZSBnYWluIHNob3VsZCBzYXR1cmF0ZSB0aGUg
dGVzdCB3aXRob3V0IGJvdW5kaW5nIHRoZSB0dW5lIHZhbHVlLgorICAgICAgICAKKyAgICAgICAg
KiBBbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qczoKKyAgICAgICAgKFN0YWdlLnBy
b3RvdHlwZS5nZXQgc2l6ZSk6IEF2b2lkIGZvcmNpbmcgbGF5b3V0IGJ5IGNhY2hpbmcgdGhlIHN0
YWdlIGNsaWVudCB3aWR0aCBhbmQgaGVpZ2h0LgorICAgICAgICAoU3RhZ2VBbmltYXRvcik6IFRo
ZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0
byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5jcmVh
dGVBbmltYXRvcik6IFBhc3MgdGhlIG9wdGlvbnMgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHRoZSBh
bmltYXRvci4KKyAgICAgICAgKFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVzdWx0cyk6
IFVzZSB0aGlzLl9vcHRpb25zIGluc3RlYWQgb2YgdGhpcy5vcHRpb25zLiBQYXNzIG9wdGlvbnMg
dG8gUmVzdWx0c1RhYmxlLnNob3dSZWNvcmQoKS4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9t
ZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBsZS1jYW52YXMuanM6CisgICAgICAgIChT
aW1wbGVDYW52YXNBbmltYXRvcik6IFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIG5ldyBwYXJhbWV0
ZXIgb3B0aW9ucyBhbmQgcGFzcyBpdCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAgICAgKFNpbXBs
ZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5pbWF0b3IpOiBQYXNzIHRoZSBvcHRp
b25zIGZyb20gdGhlIGJlbmNobWFyayB0byB0aGUgYW5pbWF0b3IuCisgICAgICAgIAorICAgICAg
ICAqIEFuaW1vbWV0ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5q
czoKKyAgICAgICAgKFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrKTogVGhlIGNvbnN0cnVjdG9yIHRh
a2VzIGEgbmV3IHBhcmFtZXRlciBvcHRpb25zIGFuZCBwYXNzIGl0IHRvIHRoZSBiYXNlIGNsYXNz
LgorICAgICAgICAoVGVtcGxhdGVDYW52YXNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1h
dG9yKTogUGFzcyB0aGUgb3B0aW9ucyBmcm9tIHRoZSBiZW5jaG1hcmsgdG8gdGhlIGFuaW1hdG9y
LgorCiAyMDE1LTExLTA2ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5j
b20+CiAKICAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZ3JhcGhpY3MgYmVuY2htYXJrJ3MgS2FsbWFu
IGZpbHRlciB3aXRoIGVzdGltYXRlZCA2MCBGUFMKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMJKHJldmlzaW9uIDE5MjQw
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9yZXNvdXJjZXMvZXh0ZW5zaW9ucy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1NiwxMCBAQCB3aW5kb3cuRG9jdW1lbnRFeHRl
bnNpb24gPQogICAgIHsKICAgICAgICAgdmFyIHN0eWxlU2hlZXRzID0gZG9jdW1lbnQuc3R5bGVT
aGVldHM7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5sZW5ndGg7
ICsraSkgeyAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZVNoZWV0cy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBzdHlsZVNoZWV0c1tpXS5jc3NSdWxlcy5sZW5ndGg7ICsraikgewogICAgICAgICAgICAg
ICAgIGlmIChzdHlsZVNoZWV0c1tpXS5jc3NSdWxlc1tqXS5zZWxlY3RvclRleHQgPT0gcmVmZXJl
bmNlUnVsZSkgewogICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0c1tpXS5pbnNlcnRSdWxl
KG5ld1J1bGUsIGogKyAxKTsKQEAgLTMxMywzMSArMzE2LDMwIEBAIFJlc3VsdHNUYWJsZS5wcm90
b3R5cGUgPQogICAgICAgICB9CiAgICAgfSwKICAgICAKLSAgICBfc2hvd0VtcHR5OiBmdW5jdGlv
bihyb3cpCisgICAgX3Nob3dFbXB0eUNlbGw6IGZ1bmN0aW9uKHJvdykKICAgICB7Ci0gICAgICAg
IHZhciB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHJvdy5hcHBl
bmRDaGlsZCh0ZCk7CisgICAgICAgIHJldHVybiBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVt
ZW50KCJ0ZCIsIHt9LCByb3cpOwogICAgIH0sCiAKLSAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJv
dywgdGV4dCkKKyAgICBfc2hvd1RleHQ6IGZ1bmN0aW9uKHJvdywgdGV4dCwgY29sb3IpCiAgICAg
ewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOworICAgICAg
ICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9LCByb3cp
OwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIHJvdy5hcHBlbmRDaGls
ZCh0ZCk7CisgICAgICAgIHRkLnN0eWxlLmNvbG9yID0gY29sb3IgfHwgImJsYWNrIjsKICAgICB9
LAogCi0gICAgX3Nob3dGaXhlZE51bWJlcjogZnVuY3Rpb24ocm93LCB2YWx1ZSwgZGlnaXRzKQor
ICAgIF9zaG93Rml4ZWROdW1iZXI6IGZ1bmN0aW9uKHJvdywgdmFsdWUsIGRpZ2l0cywgY29sb3Ip
CiAgICAgewotICAgICAgICB2YXIgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwor
ICAgICAgICB2YXIgdGQgPSBEb2N1bWVudEV4dGVuc2lvbi5jcmVhdGVFbGVtZW50KCJ0ZCIsIHt9
LCByb3cpOwogICAgICAgICB0ZC50ZXh0Q29udGVudCA9IHZhbHVlLnRvRml4ZWQoZGlnaXRzIHx8
IDIpOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQodGQpOworICAgICAgICB0ZC5zdHlsZS5jb2xv
ciA9IGNvbG9yIHx8ICJibGFjayI7CiAgICAgfSwKICAgICAKICAgICBfc2hvd0dyYXBoOiBmdW5j
dGlvbihyb3csIHRlc3ROYW1lLCB0ZXN0UmVzdWx0cykKICAgICB7CiAgICAgICAgIHZhciBkYXRh
ID0gdGVzdFJlc3VsdHNbU3RyaW5nc1siSlNPTl9TQU1QTEVTIl1bMF1dOwogICAgICAgICBpZiAo
IWRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dFbXB0eShyb3cpOworICAgICAgICAgICAg
dGhpcy5fc2hvd0VtcHR5Q2VsbChyb3cpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMzYxLDcgKzM2Myw3IEBAIFJlc3VsdHNUYWJsZS5wcm90b3R5cGUgPQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tTdHJpbmdzWyJKU09OX1NBTVBM
RVMiXVswXV07CiAgICAgICAgIGlmICghZGF0YSkgewotICAgICAgICAgICAgdGhpcy5fc2hvd0Vt
cHR5KHJvdyk7CisgICAgICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxsKHJvdyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0zNzgsMTUgKzM4MCw1OCBAQCBS
ZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgcm93LmFwcGVuZENoaWxkKHRkKTsKICAg
ICB9LAogCi0gICAgX3Nob3dUZXN0OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMpCisg
ICAgX2lzQWNjdXJhdGVNZWFzdXJlbWVudDogZnVuY3Rpb24oaW5kZXgsIGRhdGEsIG1lYXN1cmVt
ZW50LCBvcHRpb25zKQogICAgIHsKLSAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRyIik7CisgICAgICAgIGlmIChtZWFzdXJlbWVudCA9PSBTdHJpbmdzWyJKU09OX01F
QVNVUkVNRU5UUyJdWzNdKQorICAgICAgICAgICAgcmV0dXJuIGRhdGFbU3RyaW5nc1siSlNPTl9N
RUFTVVJFTUVOVFMiXVszXV0gPCAxMDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoaW5kZXgg
PT0gMSAmJiBtZWFzdXJlbWVudCA9PSBTdHJpbmdzWyJKU09OX01FQVNVUkVNRU5UUyJdWzBdKQor
ICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGFbU3RyaW5nc1siSlNPTl9NRUFTVVJFTUVO
VFMiXVswXV0gLSBvcHRpb25zWyJmcmFtZS1yYXRlIl0pIDwgMjsKKyAgICAgICAKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIF9pc0FjY3VyYXRlVGVzdDogZnVuY3Rpb24odGVz
dFJlc3VsdHMsIG9wdGlvbnMpCisgICAgeworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGlu
ZGV4IDwgMjsgKytpbmRleCkgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tT
dHJpbmdzWyJKU09OX0VYUEVSSU1FTlRTIl1baW5kZXhdXTsKKyAgICAgICAgICAgIGZvciAodmFy
IG1lYXN1cmVtZW50IGluIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzQWNj
dXJhdGVNZWFzdXJlbWVudChpbmRleCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
ICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBfc2hvd0VtcHR5Q2VsbHM6
IGZ1bmN0aW9uKHJvdywgaGVhZGVycykKKyAgICB7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0g
MDsgaW5kZXggPCBoZWFkZXJzLmxlbmd0aDsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFo
ZWFkZXJzW2luZGV4XS5jaGlsZHJlbi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB2YXIgdGQg
PSB0aGlzLl9zaG93RW1wdHlDZWxsKHJvdyk7CisgICAgICAgICAgICAgICAgdGQuc3R5bGUuYmFj
a2dyb3VuZENvbG9yID0gInllbGxvdyI7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB0aGlzLl9zaG93RW1wdHlDZWxscyhyb3csIGhlYWRlcnNb
aW5kZXhdLmNoaWxkcmVuKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfc2hvd0VtcHR5Um93
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24u
Y3JlYXRlRWxlbWVudCgidHIiLCB7fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fc2hv
d0VtcHR5Q2VsbHMocm93LCB0aGlzLl9oZWFkZXJzKTsKKyAgICB9LAorCisgICAgX3Nob3dUZXN0
OiBmdW5jdGlvbih0ZXN0TmFtZSwgdGVzdFJlc3VsdHMsIG9wdGlvbnMpCisgICAgeworICAgIAor
ICAgICAgICB2YXIgcm93ID0gRG9jdW1lbnRFeHRlbnNpb24uY3JlYXRlRWxlbWVudCgidHIiLCB7
fSwgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgdmFyIGNvbG9yID0gdGhpcy5faXNBY2N1cmF0ZVRl
c3QodGVzdFJlc3VsdHMsIG9wdGlvbnMpID8gbnVsbCA6ICJyZWQiOwogICAgICAgICAKICAgICAg
ICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuX2hlYWRlcnMubGVuZ3RoOyArK2lu
ZGV4KSB7CiAKICAgICAgICAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICAgICAgIGNhc2Ug
MDoKLSAgICAgICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93VGV4dChyb3csIHRlc3ROYW1lLCBjb2xvcik7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgMToKQEAgLTM5Nyw4ICs0NDIsOSBA
QCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAg
ICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW1N0cmlu
Z3NbIkpTT05fRVhQRVJJTUVOVFMiXVtpbmRleCAtIDJdXTsKLSAgICAgICAgICAgICAgICBmb3Ig
KHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9zaG93
Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMik7CisgICAgICAgICAgICAgICAg
Zm9yICh2YXIgbWVhc3VyZW1lbnQgaW4gZGF0YSkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMiwgdGhpcy5faXNBY2N1
cmF0ZU1lYXN1cmVtZW50KGluZGV4IC0gMiwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpID8g
ImJsYWNrIiA6ICJyZWQiKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIDQ6CkBAIC00MDcsMzggKzQ1
MywzOCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHJvdyk7CiAgICAgfSwKIAotICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1
aXRlTmFtZSwgc3VpdGVSZXN1bHRzKQorICAgIF9zaG93U3VpdGU6IGZ1bmN0aW9uKHN1aXRlTmFt
ZSwgc3VpdGVSZXN1bHRzLCBvcHRpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgdGVzdE5h
bWUgaW4gc3VpdGVSZXN1bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzJdXSkgewotICAgICAg
ICAgICAgdGhpcy5fc2hvd1Rlc3QodGVzdE5hbWUsIHN1aXRlUmVzdWx0c1tTdHJpbmdzWyJKU09O
X1JFU1VMVFMiXVsyXV1bdGVzdE5hbWVdKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dUZXN0KHRl
c3ROYW1lLCBzdWl0ZVJlc3VsdHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMl1dW3Rlc3ROYW1l
XSwgb3B0aW9ucyk7CiAgICAgICAgIH0KICAgICB9LAogICAgIAotICAgIF9zaG93SXRlcmF0aW9u
IDogZnVuY3Rpb24oaXRlcmF0aW9uUmVzdWx0cykKKyAgICBfc2hvd0l0ZXJhdGlvbiA6IGZ1bmN0
aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBz
dWl0ZU5hbWUgaW4gaXRlcmF0aW9uUmVzdWx0c1tTdHJpbmdzWyJKU09OX1JFU1VMVFMiXVsxXV0p
IHsKLSAgICAgICAgICAgIHRoaXMuX3Nob3dTdWl0ZShzdWl0ZU5hbWUsIGl0ZXJhdGlvblJlc3Vs
dHNbU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMV1dW3N1aXRlTmFtZV0pOworICAgICAgICAgICAg
aWYgKHN1aXRlTmFtZSAhPSBPYmplY3Qua2V5cyhpdGVyYXRpb25SZXN1bHRzW1N0cmluZ3NbIkpT
T05fUkVTVUxUUyJdWzFdXSlbMF0pCisgICAgICAgICAgICAgICAgdGhpcy5fc2hvd0VtcHR5Um93
KCk7CisgICAgICAgICAgICB0aGlzLl9zaG93U3VpdGUoc3VpdGVOYW1lLCBpdGVyYXRpb25SZXN1
bHRzW1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzFdXVtzdWl0ZU5hbWVdLCBvcHRpb25zKTsKICAg
ICAgICAgfQogICAgIH0sCiAgICAgCi0gICAgc2hvd1JlY29yZDogZnVuY3Rpb24odGVzdE5hbWUs
IG1lc3NhZ2UsIHRlc3RSZXN1bHRzKQorICAgIHNob3dSZWNvcmQ6IGZ1bmN0aW9uKHRlc3ROYW1l
LCBtZXNzYWdlLCB0ZXN0UmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMuY2xl
YXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcihtZXNzYWdlKTsKLSAgICAgICAgdGhpcy5f
c2hvd1Rlc3QodGVzdE5hbWUsIHRlc3RSZXN1bHRzKTsKKyAgICAgICAgdGhpcy5fc2hvd1Rlc3Qo
dGVzdE5hbWUsIHRlc3RSZXN1bHRzLCBvcHRpb25zKTsKICAgICB9LAogCi0gICAgc2hvd0l0ZXJh
dGlvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbnNSZXN1bHRzKQorICAgIHNob3dJdGVyYXRpb25zOiBm
dW5jdGlvbihpdGVyYXRpb25zUmVzdWx0cywgb3B0aW9ucykKICAgICB7CiAgICAgICAgIHRoaXMu
Y2xlYXIoKTsKICAgICAgICAgdGhpcy5fc2hvd0hlYWRlcigiIik7CiAgICAgICAgIAogICAgICAg
ICBpdGVyYXRpb25zUmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJhdGlvblJlc3VsdHMpIHsK
LSAgICAgICAgICAgIHRoaXMuX3Nob3dJdGVyYXRpb24oaXRlcmF0aW9uUmVzdWx0cyk7CisgICAg
ICAgICAgICB0aGlzLl9zaG93SXRlcmF0aW9uKGl0ZXJhdGlvblJlc3VsdHMsIG9wdGlvbnMpOwog
ICAgICAgICB9LCB0aGlzKTsKICAgICB9CiB9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmNzcwko
cmV2aXNpb24gMTkyNDAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9y
ZXNvdXJjZXMvYW5pbW9tZXRlci5jc3MJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw2ICsyMzIsMTMg
QEAgc2VjdGlvbiA+IGZvb3RlciB7CiAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiB9CiAK
K0BtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE4MDBweCkgeworICAgIHNlY3Rpb24gewor
ICAgICAgICB3aWR0aDogMTYwMHB4OworICAgICAgICBoZWlnaHQ6IDgwMHB4OworICAgIH0KK30K
KwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSG9tZSBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMzE2LDYgKzMyMyw3IEBAIHNlY3Rpb24jcnVubmluZyA+
ICNydW5uaW5nLXRlc3QgPiBpZnJhbWUKICAgICB3aWR0aDogMTAwJTsKICAgICBoZWlnaHQ6IDEw
MCU7CiAgICAgYm9yZGVyOiAwcHggbm9uZTsKKyAgICBvdmVyZmxvdzogaGlkZGVuOwogfQogCiBz
ZWN0aW9uI3J1bm5pbmcgPiAjcHJvZ3Jlc3MgewpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3J1bm5lci9yZXNvdXJjZXMvYW5pbW9tZXRlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy9hbmltb21ldGVyLmpzCShy
ZXZpc2lvbiAxOTI0MDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jl
c291cmNlcy9hbmltb21ldGVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHdp
bmRvdy5iZW5jaG1hcmtSdW5uZXJDbGllbnQgPSB7CiAgICAgewogICAgICAgICB2YXIganNvbiA9
IHRoaXMuX3Jlc3VsdHNEYXNoYm9hcmQudG9KU09OKHRydWUsIHRydWUpOwogICAgICAgICB0aGlz
LnNjb3JlID0ganNvbltTdHJpbmdzWyJKU09OX1NDT1JFIl1dOwotICAgICAgICB0aGlzLl9yZXN1
bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMoanNvbltTdHJpbmdzWyJKU09OX1JFU1VMVFMiXVswXV0p
OworICAgICAgICB0aGlzLl9yZXN1bHRzVGFibGUuc2hvd0l0ZXJhdGlvbnMoanNvbltTdHJpbmdz
WyJKU09OX1JFU1VMVFMiXVswXV0sIHRoaXMub3B0aW9ucyk7CiAgICAgICAgIHNlY3Rpb25zTWFu
YWdlci5zaG93SlNPTigianNvbiIsIGpzb25bU3RyaW5nc1siSlNPTl9SRVNVTFRTIl1bMF1dWzBd
KTsKICAgICAgICAgc3VpdGVzTWFuYWdlci51cGRhdGVMb2NhbFN0b3JhZ2VGcm9tSlNPTihqc29u
W1N0cmluZ3NbIkpTT05fUkVTVUxUUyJdWzBdXVswXSk7CiAgICAgICAgIGJlbmNobWFya0NvbnRy
b2xsZXIuc2hvd1Jlc3VsdHMoKTsKQEAgLTEwOSwxNCArMTA5LDYgQEAgd2luZG93LnNlY3Rpb25z
TWFuYWdlciA9CiAgICAgICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZSh7c2VjdGlvbjogc2VjdGlv
bklkZW50aWZpZXJ9LCBkb2N1bWVudC50aXRsZSk7CiAgICAgfSwKIAotICAgIHNldHVwU2VjdGlv
blN0eWxlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoc2NyZWVuLndpZHRoID49IDE4
MDAgJiYgc2NyZWVuLmhlaWdodCA+PSAxMDAwKQotICAgICAgICAgICAgRG9jdW1lbnRFeHRlbnNp
b24uaW5zZXJ0Q3NzUnVsZUFmdGVyKCIgc2VjdGlvbiB7IHdpZHRoOiAxNjAwcHg7IGhlaWdodDog
ODAwcHg7IH0iLCAic2VjdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBEb2N1bWVu
dEV4dGVuc2lvbi5pbnNlcnRDc3NSdWxlQWZ0ZXIoIiBzZWN0aW9uIHsgd2lkdGg6IDgwMHB4OyBo
ZWlnaHQ6IDYwMHB4OyB9IiwgInNlY3Rpb24iKTsKLSAgICB9LAotICAgIAogICAgIHNldHVwUnVu
bmluZ1NlY3Rpb25TdHlsZTogZnVuY3Rpb24ob3B0aW9ucykKICAgICB7CiAgICAgICAgIGlmICgh
b3B0aW9uc1sic2hvdy1ydW5uaW5nLXJlc3VsdHMiXSkKQEAgLTQwNyw3ICszOTksNiBAQCB3aW5k
b3cuYmVuY2htYXJrQ29udHJvbGxlciA9CiB7CiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgc2VjdGlvbnNNYW5hZ2VyLnNldHVwU2VjdGlvblN0eWxlKCk7CiAgICAg
ICAgIG9wdGlvbnNNYW5hZ2VyLnVwZGF0ZVVJRnJvbUxvY2FsU3RvcmFnZSgpOwogICAgICAgICBz
dWl0ZXNNYW5hZ2VyLmNyZWF0ZUVsZW1lbnRzKCk7CiAgICAgICAgIHN1aXRlc01hbmFnZXIudXBk
YXRlVUlGcm9tTG9jYWxTdG9yYWdlKCk7CkBAIC00NjMsNCArNDU0LDQgQEAgd2luZG93LmJlbmNo
bWFya0NvbnRyb2xsZXIgPQogICAgIH0KIH0KIAotZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
RE9NQ29udGVudExvYWRlZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5pdGlhbGl6ZSgpKTsKK2Rv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIGJlbmNobWFya0NvbnRyb2xsZXIuaW5p
dGlhbGl6ZSgpKTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL3Rlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAxOTI0MDApCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBj
b3B5KQpAQCAtNjIsMjcgKzYyLDI3IEBAIHZhciBTdWl0ZXMgPSBbXTsKIFN1aXRlcy5wdXNoKG5l
dyBTdWl0ZSgiSFRNTCBzdWl0ZSIsCiAgICAgWwogICAgICAgICB7IAotICAgICAgICAgICAgdXJs
OiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRk
TGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0x
MiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2Jv
dW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEy
JnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNpcmNsZXMi
CiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0
aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3Zl
TGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xp
cD1zdGFyIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1y
ZWN0JmNsaXA9c3RhciIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQg
cmVjdHMiCiAgICAgICAgIH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2lu
Zy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAm
cmVtb3ZlTGltaXQ9NSZwYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNp
cmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdo
dD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NT
IGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/
Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lp
bi15YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMi
CiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVz
b3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCiAgICAgICAgICAgICBu
YW1lOiAiQ1NTIGJvdW5jaW5nIFBORyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHVybDogInRleHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0x
MDAmcmVtb3ZlTGltaXQ9MTAwIiwKKyAgICAgICAgICAgIHVybDogInRleHQvbGF5ZXJpbmctdGV4
dC5odG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKICAgICAgICAg
fSwKICAgICBdCkBAIC05MSwyMyArOTEsMjMgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1M
IHN1aXRlIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFzIHN1aXRlIiwKICAgICBbCiAg
ICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y2FudmFzLXNoYXBlcy5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZw
YXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1s
P3BhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAg
ICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAg
ICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52
YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRp
Y2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAg
ICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMu
aHRtbD9wYXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1z
dGFyIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIK
ICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1v
dmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2ly
Y2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVp
Z2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKICAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAK
LSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1h
Z2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9
ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIs
CisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWlt
YWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4v
cmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5j
aW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDog
ImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFk
ZExpbWl0PTEwMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVp
Z2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAg
dXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4t
eWFuZy5wbmciLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2Vz
IgogICAgICAgICB9LAogICAgIF0KQEAgLTExNiwyMyArMTE2LDIzIEBAIFN1aXRlcy5wdXNoKG5l
dyBTdWl0ZSgiQ2FudmFzIHN1aXRlIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiU1ZHIHN1aXRl
IiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1p
dD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwK
KyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAog
ICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKICAgICAgICAgfSwKICAg
ICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2
Zy1zaGFwZXMuaHRtbD9nYWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xl
V2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9w
YXJ0aWNsZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwK
ICAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCiAgICAgICAg
IH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3Vu
Y2luZy1zdmctc2hhcGVzLmh0bWw/Z2Fpbj0wLjgmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9NCZw
YXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRp
ZW50IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
c2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRp
ZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGlt
aXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAm
cGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAg
ICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1z
dmctaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xl
V2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5n
LnBuZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3Zn
LWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5j
aW5nIFBORyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtMTg1LDcgKzE4NSw3IEBAIFN1
aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQmFzaWMgY2FudmFzIHBhdGgKICAgICAgICAgICAgIG5hbWU6
ICJDYW52YXMgYmV6aWVyIHBhdGgiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1RvIiwK
KyAgICAgICAgICAgIHVybDogInNpbXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/cGF0aFR5
cGU9YXJjVG8iLAogICAgICAgICAgICAgbmFtZTogIkNhbnZhcyBhcmNUbyBzZWdtZW50cyIKICAg
ICAgICAgfSwKICAgICAgICAgewpAQCAtMjA5LDcgKzIwOSw3IEBAIFN1aXRlcy5wdXNoKG5ldyBT
dWl0ZSgiQmFzaWMgY2FudmFzIHBhdGgKICAgICAgICAgICAgIG5hbWU6ICJDYW52YXMgYmV6aWVy
IHBhdGgsIGZpbGwiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInNp
bXBsZS9zaW1wbGUtY2FudmFzLXBhdGhzLmh0bWw/JnBhdGhUeXBlPWFyY1RvRmlsbCIsCisgICAg
ICAgICAgICB1cmw6ICJzaW1wbGUvc2ltcGxlLWNhbnZhcy1wYXRocy5odG1sP3BhdGhUeXBlPWFy
Y1RvRmlsbCIsCiAgICAgICAgICAgICBuYW1lOiAiQ2FudmFzIGFyY1RvIHNlZ21lbnRzLCBmaWxs
IgogICAgICAgICB9LAogICAgICAgICB7CkBAIC0yMjYsMTEgKzIyNiwxMSBAQCBTdWl0ZXMucHVz
aChuZXcgU3VpdGUoIkJhc2ljIGNhbnZhcyBwYXRoCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNv
bXBsZXggZXhhbXBsZXMiLAogICAgIFsKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiZXhh
bXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGlt
aXQ9MTAiLAorICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1s
IiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgZWxlY3Ryb25zIgogICAgICAgICB9LAogICAg
ICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJleGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbD9nYWlu
PTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUiLAorICAgICAgICAgICAgdXJsOiAiZXhhbXBs
ZXMvY2FudmFzLXN0YXJzLmh0bWwiLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBzdGFycyIK
ICAgICAgICAgfSwKICAgICBdCkBAIC0yMzksMTUgKzIzOSwxNSBAQCBTdWl0ZXMucHVzaChuZXcg
U3VpdGUoIkNvbXBsZXggZXhhbXBsZXMiCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIlRlc3QgVGVt
cGxhdGVzIiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3Rl
bXBsYXRlLWNzcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAg
ICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0ZS1jc3MuaHRtbCIsCiAgICAgICAgICAgICBu
YW1lOiAiQ1NTIHRlbXBsYXRlIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0ZS1jYW52YXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJl
bW92ZUxpbWl0PTEwMDAiLAorICAgICAgICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtY2Fu
dmFzLmh0bWwiLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyB0ZW1wbGF0ZSIKICAgICAgICAg
fSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0
bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JjxvdGhlcl9wYXJhbXRlcj49PHZh
bHVlPiIsCisgICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCIsCiAg
ICAgICAgICAgICBuYW1lOiAiU1ZHIHRlbXBsYXRlIgogICAgICAgICB9LAogICAgIF0KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVz
b3VyY2VzL2JvdW5jaW5nLWNhbnZhcy1wYXJ0aWNsZXMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcwkocmV2aXNpb24gMTkyNDAwKQorKysgUGVyZm9y
bWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL2JvdW5jaW5nLXBhcnRpY2xlcy9yZXNvdXJjZXMv
Ym91bmNpbmctY2FudmFzLXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYs
OSBAQCBmdW5jdGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlKGVsCiBCb3VuY2luZ0Nh
bnZhc1BhcnRpY2xlc1N0YWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQm91bmNpbmdQYXJ0
aWNsZXNTdGFnZS5wcm90b3R5cGUpOwogQm91bmNpbmdDYW52YXNQYXJ0aWNsZXNTdGFnZS5wcm90
b3R5cGUuY29uc3RydWN0b3IgPSBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc1N0YWdlOwogCi1mdW5j
dGlvbiBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9u
IEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQW5pbWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQogewot
ICAgIEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAg
IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMp
OwogICAgIHRoaXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7CiB9CiAKQEAg
LTEwMSw1ICsxMDEsNSBAQCBCb3VuY2luZ0NhbnZhc1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5
CiAKIEJvdW5jaW5nQ2FudmFzUGFydGljbGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmlt
YXRvciA9IGZ1bmN0aW9uKCkKIHsKLSAgICByZXR1cm4gbmV3IEJvdW5jaW5nQ2FudmFzUGFydGlj
bGVzQW5pbWF0b3IodGhpcyk7CisgICAgcmV0dXJuIG5ldyBCb3VuY2luZ0NhbnZhc1BhcnRpY2xl
c0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1w
YXJ0aWNsZXMvcmVzb3VyY2VzL2JvdW5jaW5nLXBhcnRpY2xlcy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvYm91bmNpbmctcGFydGljbGVzL3Jlc291
cmNlcy9ib3VuY2luZy1wYXJ0aWNsZXMuanMJKHJldmlzaW9uIDE5MjQwMCkKKysrIFBlcmZvcm1h
bmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9ib3VuY2luZy1wYXJ0aWNsZXMvcmVzb3VyY2VzL2Jv
dW5jaW5nLXBhcnRpY2xlcy5qcwkod29ya2luZyBjb3B5KQpAQCAtNTcsOSArNTcsOSBAQCBCb3Vu
Y2luZ1BhcnRpY2xlLnByb3RvdHlwZSA9CiAgICAgfQogfQogCi1mdW5jdGlvbiBCb3VuY2luZ1Bh
cnRpY2xlc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIEJvdW5jaW5nUGFydGljbGVzQW5p
bWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQogewotICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlz
LCBiZW5jaG1hcmspOworICAgIFN0YWdlQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9w
dGlvbnMpOwogfTsKIAogQm91bmNpbmdQYXJ0aWNsZXNBbmltYXRvci5wcm90b3R5cGUgPSBPYmpl
Y3QuY3JlYXRlKFN0YWdlQW5pbWF0b3IucHJvdG90eXBlKTsKQEAgLTEyNiw1ICsxMjYsNSBAQCBC
b3VuY2luZ1BhcnRpY2xlc0JlbmNobWFyay5wcm90b3R5cGUuY29uCiAKIEJvdW5jaW5nUGFydGlj
bGVzQmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKIHsKLSAg
ICByZXR1cm4gbmV3IEJvdW5jaW5nUGFydGljbGVzQW5pbWF0b3IodGhpcyk7CisgICAgcmV0dXJu
IG5ldyBCb3VuY2luZ1BhcnRpY2xlc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMpOwogfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9t
ZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3Vy
Y2VzL2NhbnZhcy1lbGVjdHJvbnMuanMJKHJldmlzaW9uIDE5MjQwMCkKKysrIFBlcmZvcm1hbmNl
VGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLWVsZWN0cm9u
cy5qcwkod29ya2luZyBjb3B5KQpAQCAtODIsOSArODIsOSBAQCBDYW52YXNFbGVjdHJvbnNTdGFn
ZS5wcm90b3R5cGUuYW5pbWF0ZSA9CiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIENhbnZhc0VsZWN0
cm9uc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIENhbnZhc0VsZWN0cm9uc0FuaW1hdG9y
KGJlbmNobWFyaywgb3B0aW9ucykKIHsKLSAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFy
ayk7CisgICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmssIG9wdGlvbnMpOwogICAgIHRo
aXMuX2NvbnRleHQgPSBiZW5jaG1hcmsuX3N0YWdlLmNvbnRleHQ7CiB9CiAKQEAgLTEyMSw3ICsx
MjEsNyBAQCBDYW52YXNFbGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0CiBDYW52YXNF
bGVjdHJvbnNCZW5jaG1hcmsucHJvdG90eXBlLmNyZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQog
ewogICAgIC8vIEF0dGFjaCB0aGUgYW5pbWF0b3IgdG8gdGhlIGJlbmNobWFyay4KLSAgICByZXR1
cm4gbmV3IENhbnZhc0VsZWN0cm9uc0FuaW1hdG9yKHRoaXMpOworICAgIHJldHVybiBuZXcgQ2Fu
dmFzRWxlY3Ryb25zQW5pbWF0b3IodGhpcywgdGhpcy5fb3B0aW9ucyk7CiB9CiAKIHdpbmRvdy5i
ZW5jaG1hcmtDbGllbnQuY3JlYXRlID0gZnVuY3Rpb24oc3VpdGUsIHRlc3QsIG9wdGlvbnMsIHJl
Y29yZFRhYmxlLCBwcm9ncmVzc0JhcikKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRl
ci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2FudmFzLXN0YXJzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9leGFtcGxlcy9yZXNvdXJjZXMvY2Fu
dmFzLXN0YXJzLmpzCShyZXZpc2lvbiAxOTI0MDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvZXhhbXBsZXMvcmVzb3VyY2VzL2NhbnZhcy1zdGFycy5qcwkod29ya2luZyBj
b3B5KQpAQCAtODMsOSArODMsOSBAQCBDYW52YXNTdGFyc1N0YWdlLnByb3RvdHlwZS5hbmltYXRl
ID0gZnVuCiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIENhbnZhc1N0YXJzQW5pbWF0b3IoYmVuY2ht
YXJrKQorZnVuY3Rpb24gQ2FudmFzU3RhcnNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7
Ci0gICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNobWFyayk7CisgICBBbmltYXRvci5jYWxsKHRo
aXMsIGJlbmNobWFyaywgb3B0aW9ucyk7CiAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9z
dGFnZS5jb250ZXh0OwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgQ2FudmFzU3RhcnNCZW5jaG1h
cmsucHJvdG90eXBlLmNyZWF0ZVN0YQogQ2FudmFzU3RhcnNCZW5jaG1hcmsucHJvdG90eXBlLmNy
ZWF0ZUFuaW1hdG9yID0gZnVuY3Rpb24oKQogewogICAgLy8gQXR0YWNoIHRoZSBhbmltYXRvciB0
byB0aGUgYmVuY2htYXJrLgotICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0FuaW1hdG9yKHRoaXMp
OworICAgcmV0dXJuIG5ldyBDYW52YXNTdGFyc0FuaW1hdG9yKHRoaXMsIHRoaXMuX29wdGlvbnMp
OwogfQogCiB3aW5kb3cuYmVuY2htYXJrQ2xpZW50LmNyZWF0ZSA9IGZ1bmN0aW9uKHN1aXRlLCB0
ZXN0LCBvcHRpb25zLCByZWNvcmRUYWJsZSwgcHJvZ3Jlc3NCYXIpCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpzCShyZXZp
c2lvbiAxOTI0MDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3Vy
Y2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5LDExIEBAIEJlbmNobWFya1N0
YXRlLnByb3RvdHlwZSA9CiAgICAgfQogfQogCi1mdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmsp
CitmdW5jdGlvbiBBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMpCiB7CiAgICAgdGhpcy5fYmVu
Y2htYXJrID0gYmVuY2htYXJrOworICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOworICAgIAog
ICAgIHRoaXMuX2ZyYW1lQ291bnQgPSAwOwogICAgIHRoaXMuX2Ryb3BGcmFtZUNvdW50ID0gMTsK
ICAgICB0aGlzLl9tZWFzdXJlRnJhbWVDb3VudCA9IDM7IApAQCAtNzIsMTEgKzc0LDYgQEAgZnVu
Y3Rpb24gQW5pbWF0b3IoYmVuY2htYXJrKQogCiBBbmltYXRvci5wcm90b3R5cGUgPQogewotICAg
IHN0YXJ0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9pbnRlcnZhbElkID0gc2V0
SW50ZXJ2YWwodGhpcy5hbmltYXRlLmJpbmQodGhpcyksIDEpOwotICAgIH0sCi0gICAgCiAgICAg
dGltZURlbHRhOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVu
dFRpbWVPZmZzZXQgLSB0aGlzLl9zdGFydFRpbWVPZmZzZXQ7CkBAIC0xMDksMjAgKzEwNiwxNiBA
QCBBbmltYXRvci5wcm90b3R5cGUgPQogICAgICAgICB2YXIgY3VycmVudEZyYW1lUmF0ZSA9IE1h
dGguZmxvb3IoMTAwMCAvIChtZWFzdXJlVGltZURlbHRhIC8gdGhpcy5fbWVhc3VyZUZyYW1lQ291
bnQpKTsKICAgICAgICAgIAogICAgICAgICAvLyBVc2UgS2FsbWFuIGZpbHRlciB0byBnZXQgYSBt
b3JlIG5vbi1mbHVjdHVhdGluZyBmcmFtZSByYXRlLgotICAgICAgICBpZiAodGhpcy5fYmVuY2ht
YXJrLm9wdGlvbnNbImVzdGltYXRlZC1mcmFtZS1yYXRlIl0pCisgICAgICAgIGlmICh0aGlzLl9v
cHRpb25zWyJlc3RpbWF0ZWQtZnJhbWUtcmF0ZSJdKQogICAgICAgICAgICAgY3VycmVudEZyYW1l
UmF0ZSA9IHRoaXMuX2VzdGltYXRvci5lc3RpbWF0ZShjdXJyZW50RnJhbWVSYXRlKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIEFkanVzdCB0aGUgdGVzdCB0byByZWFjaCB0aGUgZGVzaXJlZCBGUFMu
CiAgICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9iZW5jaG1hcmsudXBkYXRlKHRoaXMuX2N1cnJl
bnRUaW1lT2Zmc2V0LCB0aGlzLnRpbWVEZWx0YSgpLCBjdXJyZW50RnJhbWVSYXRlKTsKICAgICAg
ICAgCi0gICAgICAgIC8vIFN0b3AgdGhlIGFuaW1hdG9yIGlmIHRoZSBiZW5jaG1hcmsgaGFzIGZp
bmlzaGVkLgotICAgICAgICBpZiAoIXJlc3VsdCAmJiB0eXBlb2YgdGhpcy5faW50ZXJ2YWxJZCAh
PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxJ
ZCk7Ci0KICAgICAgICAgLy8gU3RhcnQgdGhlIG5leHQgZHJvcC9tZWFzdXJlIGN5Y2xlLgogICAg
ICAgICB0aGlzLl9mcmFtZUNvdW50ID0gMDsKICAgICAgICAgCi0gICAgICAgIC8vIHJlc3VsdCBt
YXkgc3RvcCB0aGUgYW5pbWF0b3IgaWYgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCkgaGFzIGJlZW4g
dXNlZC4KKyAgICAgICAgLy8gSWYgcmVzdWx0ID09IDAsIG5vIG1vcmUgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lKCkgd2lsbCBiZSBpbnZva2NlZC4KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
LAogICAgIApAQCAtMTM2LDE5ICsxMjksMTIgQEAgQW5pbWF0b3IucHJvdG90eXBlID0KIGZ1bmN0
aW9uIEJlbmNobWFyayhvcHRpb25zKQogewogICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zOwot
ICAgIHRoaXMuX21ldGhvZCA9IHRoaXMuX29wdGlvbnNbIm1ldGhvZCJdIHx8ICJyZXF1ZXN0QW5p
bWF0aW9uRnJhbWUiOwotCi0gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKICAgICB0aGlzLl9y
ZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAgICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOwog
Ci0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRpb25zWyJnYWluIl0pIHx8IDE7Ci0g
ICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29wdGlvbnNbImFkZExpbWl0Il0pIHx8
IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRoaXMuX29wdGlvbnNbInJlbW92ZUxp
bWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9s
bGVyKGdhaW4sIG9wdGlvbnNbImZyYW1lLXJhdGUiXSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7Cisg
ICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9sbGVyKHRoaXMuX29wdGlvbnNbImZy
YW1lLXJhdGUiXSk7CiAgICAgdGhpcy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOwotICAgIHRo
aXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMub3B0aW9uc1sidGVzdC1pbnRlcnZh
bCJdICogMTAwMCk7CisgICAgdGhpcy5fc3RhdGUgPSBuZXcgQmVuY2htYXJrU3RhdGUodGhpcy5f
b3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CiB9CiAKIEJlbmNobWFyay5wcm90b3R5
cGUgPQpAQCAtMTU2LDEwICsxNDIsNyBAQCBCZW5jaG1hcmsucHJvdG90eXBlID0KICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgbG9hZCBldmVudCBsaXN0ZW5lciBvciBmcm9tIHRoaXMucnVuKCkuCiAg
ICAgc3RhcnQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT0g
InNldEludGVydmFsIikKLSAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLnN0YXJ0KCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CisgICAg
ICAgIHRoaXMuX2FuaW1hdG9yLmFuaW1hdGVMb29wKCk7CiAgICAgfSwKICAgICAKICAgICAvLyBD
YWxsZWQgZnJvbSB0aGUgYW5pbWF0b3IgdG8gYWRqdXN0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0
ZXN0LgpAQCAtMTc5LDE0ICsxNjIsMTQgQEAgQmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAg
IH0KIAogICAgICAgICB2YXIgdHVuZVZhbHVlID0gMDsKLSAgICAgICAgaWYgKHRoaXMub3B0aW9u
c1siY29tcGxleGl0eSJdICYmICF0aGlzLm9wdGlvbnNbImFkYXB0aXZlLXRlc3QiXSkgeworICAg
ICAgICBpZiAodGhpcy5fb3B0aW9uc1siY29tcGxleGl0eSJdICYmICF0aGlzLl9vcHRpb25zWyJh
ZGFwdGl2ZS10ZXN0Il0pIHsKICAgICAgICAgICAgIC8vIHRoaXMudHVuZSgwKSByZXR1cm5zIHRo
ZSBjdXJyZW50IGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICB0dW5lVmFsdWUg
PSB0aGlzLm9wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMudHVuZSgwKTsKKyAgICAgICAgICAg
IHR1bmVWYWx1ZSA9IHRoaXMuX29wdGlvbnNbImNvbXBsZXhpdHkiXSAtIHRoaXMudHVuZSgwKTsK
ICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghKHRoaXMuX2lzU2FtcGxpbmcgJiYgdGhpcy5v
cHRpb25zWyJmaXgtdGVzdC1jb21wbGV4aXR5Il0pKSB7CisgICAgICAgIGVsc2UgaWYgKCEodGhp
cy5faXNTYW1wbGluZyAmJiB0aGlzLl9vcHRpb25zWyJmaXgtdGVzdC1jb21wbGV4aXR5Il0pKSB7
CiAgICAgICAgICAgICAvLyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gZnJhbWVSYXRlIGFuZCB0
ZXN0IGNvbXBsZXhpdHkgaXMgaW52ZXJzZS1wcm9wb3J0aW9uYWwgc28gd2UKICAgICAgICAgICAg
IC8vIG5lZWQgdG8gdXNlIHRoZSBuZWdhdGl2ZSBvZiBQSURDb250cm9sbGVyLnR1bmUoKSB0byBj
aGFuZ2UgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIHRlc3QuCi0gICAgICAgICAgICB0dW5lVmFsdWUg
PSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1cnJlbnRGcmFtZVJhdGUsIHRpbWVEZWx0YSAvIDEw
MDApOworICAgICAgICAgICAgdHVuZVZhbHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJy
ZW50VGltZU9mZnNldCwgdGltZURlbHRhLCBjdXJyZW50RnJhbWVSYXRlKTsKICAgICAgICAgICAg
IHR1bmVWYWx1ZSA9IHR1bmVWYWx1ZSA+IDAgPyBNYXRoLmZsb29yKHR1bmVWYWx1ZSkgOiBNYXRo
LmNlaWwodHVuZVZhbHVlKTsKICAgICAgICAgfQogCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0Fu
aW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCShyZXZpc2lvbiAxOTI0
MDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGgu
anMJKHdvcmtpbmcgY29weSkKQEAgLTQsMTcgKzQsMTcgQEAgdmFyIE1hdHJpeCA9CiAgICAgewog
ICAgICAgICByZXR1cm4gQXJyYXkobSAqIG4pLmZpbGwodik7CiAgICAgfSwKLSAgICAKKwogICAg
IHplcm9zOiBmdW5jdGlvbihtLCBuKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5pbml0
KG0sIG4sIDApOwogICAgIH0sCi0gICAgCisKICAgICBvbmVzOiBmdW5jdGlvbihtLCBuKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5pbml0KG0sIG4sIDEpOwogICAgIH0sCi0gICAgCisK
ICAgICBpZGVudGl0eTogZnVuY3Rpb24obikKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBuZXcg
TWF0cml4Lnplcm9zKG4sIG4pOwpAQCAtMjIsNyArMjIsNyBAQCB2YXIgTWF0cml4ID0KICAgICAg
ICAgICAgIG91dFtpICogbiArIGldID0gMTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAot
ICAgIAorCiAgICAgc3RyOiBmdW5jdGlvbihBLCBuLCBtKQogICAgIHsKICAgICAgICAgdmFyIG91
dCA9IChtID4gMSAmJiBuID4gMSA/ICJNYXRyaXhbIiArIG4gKyAiLCAiICsgbSA6ICJWZWN0b3Jb
IiArIG0gKiBuKSArICJdID0gWyI7CkBAIC0zMCwxNSArMzAsMTUgQEAgdmFyIE1hdHJpeCA9CiAg
ICAgICAgICAgICBvdXQgKz0gQVtpXTsKICAgICAgICAgICAgIGlmIChpIDwgbiAqIG0gLSAxKQog
ICAgICAgICAgICAgICAgIG91dCArPSAiLCAiOwotICAgICAgICB9ICAgICAgIAorICAgICAgICB9
CiAgICAgICAgIHJldHVybiBvdXQgKyAiXSI7CiAgICAgfSwKLSAgICAKKwogICAgIHBvczogZnVu
Y3Rpb24obSwgaSwgaikKICAgICB7CiAgICAgICAgIHJldHVybiBtICogaSArIGo7CiAgICAgfSwK
LSAgICAKKwogICAgIGFkZDogZnVuY3Rpb24oQSwgQiwgbiwgbSkKICAgICB7CiAgICAgICAgIHZh
ciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CkBAIC00Niw3ICs0Niw3IEBAIHZhciBNYXRyaXgg
PQogICAgICAgICAgICAgb3V0W2ldID0gQVtpXSArIEJbaV07CiAgICAgICAgIHJldHVybiBvdXQ7
CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRyYWN0OiBmdW5jdGlvbihBLCBCLCBuLCBtKQogICAg
IHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKQEAgLTU0LDcgKzU0LDcg
QEAgdmFyIE1hdHJpeCA9CiAgICAgICAgICAgICBvdXRbaV0gPSBBW2ldIC0gQltpXTsKICAgICAg
ICAgcmV0dXJuIG91dDsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEs
IG4sIG0pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOwpAQCAt
NjIsMTcgKzYyLDE3IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2ldID0gcyAqIEFb
aV07CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfSwKLSAgICAKKwogICAgIHRyYW5zcG9zZTog
ZnVuY3Rpb24oQSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3Mo
bSwgbik7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgICAg
ICBmb3IgKHZhciBqID0gMDsgaiA8IG07ICsraikKICAgICAgICAgICAgICAgICBvdXRbTWF0cml4
LnBvcyhuLCBpLCBqKV0gPSBBW01hdHJpeC5wb3MobSwgaiwgaSldOwotICAgICAgICB9ICAgICAg
IAorICAgICAgICB9CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfSwKLSAgICAKKwogICAgIG11
bHRpcGx5OiBmdW5jdGlvbihBLCBCLCBuLCBtLCBwKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9
IE1hdHJpeC56ZXJvcyhuLCBwKTsKQEAgLTkzLDM3ICs5MywzNyBAQCB2YXIgVmVjdG9yMyA9CiAg
ICAgewogICAgICAgICByZXR1cm4gTWF0cml4Lnplcm9zKDEsIDMpOwogICAgIH0sCi0gICAgCisK
ICAgICBvbmVzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4Lm9uZXMo
MSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24odikKICAgICB7CiAgICAg
ICAgIHJldHVybiBNYXRyaXguc3RyKHYsIDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBhZGQ6
IGZ1bmN0aW9uKHYsIHcpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LmFkZCh2LCB3LCAx
LCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc3VidHJhY3Q6IGZ1bmN0aW9uKHYsIHcpCiAgICAg
ewogICAgICAgICByZXR1cm4gTWF0cml4LnN1YnRyYWN0KHYsIHcsIDEsIDMpOwogICAgIH0sCi0g
ICAgCisKICAgICBzY2FsZTogZnVuY3Rpb24ocywgdikKICAgICB7CiAgICAgICAgIHJldHVybiBN
YXRyaXguc2NhbGUocywgdiwgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIG11bHRpcGx5TWF0
cml4MzogZnVuY3Rpb24odiwgQSkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlw
bHkodiwgQSwgMSwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIG11bHRpcGx5VmVjdG9yMzog
ZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSAwOwpAQCAtMTM5LDk1ICsx
MzksMjA2IEBAIHZhciBNYXRyaXgzID0KICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguemVy
b3MoMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIGlkZW50aXR5OiBmdW5jdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gTWF0cml4LmlkZW50aXR5KDMsIDMpOwogICAgIH0sCi0gICAgCisK
ICAgICBzdHI6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnN0cihB
LCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgcG9zOiBmdW5jdGlvbihpLCBqKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIE1hdHJpeC5wb3MoMywgaSwgaik7CiAgICAgfSwKLSAgICAKKwogICAg
IGFkZDogZnVuY3Rpb24oQSwgQikKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguYWRkKEEs
IEIsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rpb24oQSwgQikK
ICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguc3VidHJhY3QoQSwgQiwgMywgMyk7CiAgICAg
fSwKLSAgICAKKwogICAgIHNjYWxlOiBmdW5jdGlvbihzLCBBKQogICAgIHsKICAgICAgICAgcmV0
dXJuIE1hdHJpeC5zY2FsZShzLCBBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgdHJhbnNw
b3NlOiBmdW5jdGlvbihBKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC50cmFuc3Bvc2Uo
QSwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIG11bHRpcGx5TWF0cml4MzogZnVuY3Rpb24o
QSwgQikKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlwbHkoQSwgQiwgMywgMywg
Myk7CiAgICAgfSwKLSAgICAKKwogICAgIG11bHRpcGx5VmVjdG9yMzogZnVuY3Rpb24oQSwgdikK
ICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgubXVsdGlwbHkoQSwgdiwgMywgMywgMSk7CiAg
ICAgfQogfQogCi1mdW5jdGlvbiBQSURDb250cm9sbGVyKEssIHlzcCwgdWxvdywgdWhpZ2gpCitm
dW5jdGlvbiBQSURDb250cm9sbGVyKHlzcCkKIHsKICAgICB0aGlzLl95c3AgPSB5c3A7CiAKLSAg
ICB0aGlzLl9UZCA9IDU7Ci0gICAgdGhpcy5fVGkgPSAxNTsKLQotICAgIHRoaXMuX0twID0gSzsK
LSAgICB0aGlzLl9LZCA9IEsgLyB0aGlzLl9UZDsKLSAgICB0aGlzLl9LaSA9IEsgLyB0aGlzLl9U
aTsKKyAgICB0aGlzLl9LcCA9IDA7CisgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0
YWdlcy5NQU5VQUxfR0FJTjsKIAogICAgIHRoaXMuX2VvbGQgPSAwOwogICAgIHRoaXMuX0kgPSAw
OwogfQogCisvLyBUaGlzIGVudW0gd2lsbCBiZSB1c2VkIHRvIHRlbGwgd2hldGhlciB0aGUgdGVz
dCBjdXJyZW50IG91dHB1dCBpcyBtb3ZpbmcgdG93YXJkcworLy8gdGhlIHNldC1wb2ludCBvciBh
d2F5IGZyb20gaXQuIAorUElEQ29udHJvbGxlci55UG9zaXRpb25zID0geworICAgIEJFRk9SRV9Z
U1A6IDAsCisgICAgQUZURVJfWVNQOiAxCit9CisKKy8vIFdlIHVzZSBaaWVnbGVy4oCTTmljaG9s
cyBtZXRob2QgZm9yIHR1bmluZyB0aGUgUElEIGNvbnRyb2xsZXIuIFRoZSB3b3JrZmxvdyBvZgor
Ly8gdGhlIFBJRCBpcyBzcGxpdCBpbnRvIHRocmVlIHN0YWdlcy4gVGhlIGZpcnN0IHR3byBzdGFn
ZXMgZGV0ZXJtaW5lIHRoZSB2YWx1ZXMKKy8vIG9mIHRoZSBQSUQgY29udHJvbGxlciBnYWlucy4g
RHVyaW5nIHRoZXNlIHN0YWdlcyB3ZSByZXR1cm4gdGhlIHByb3BvdGlvbmFsIHRlcm0KKy8vIG9u
bHkuIFRoZSBsYXN0IHN0YWdlIGlzIGEgbm9ybWFsIFBJRCBjb250cm9sbGVyLgorUElEQ29udHJv
bGxlci5zdGFnZXMgPSB7CisgICAgTUFOVUFMX0dBSU46IDAsICAgICAvLyBJbmNyZWFzZSB0aGUg
dmFsdWUgb2YgdGhlIEtwIHVudGlsIGl0IHJlYWNoZXMgeXNwLiAKKyAgICBNQU5VQUxfVElNRTog
MSwgICAgIC8vIE1lYXN1cmUgdGhlIG9zY2lsbGF0aW9uIHBlcmlvZCwgaS5lLnRoZSB0aW1lIG9m
IHRoZSBvdmVyc2hvdCBwZXJpb2QuCisgICAgTk9STUFMOiAyICAgICAgICAgICAvLyBSZXR1cm4g
dGhlIHRocmVlIGNvbXBvbmVudHMgUCwgSSBhbmQgRCBmb3IgdGhlIHR1bmluZyB2YWx1ZS4KK30K
KwogUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogewotICAgIF9zYXQ6IGZ1bmN0aW9uKHYsIGxv
dywgaGlnaCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2IDwgbG93ID8gbG93IDogKHYgPiBoaWdo
ID8gaGlnaCA6IHYpOworICAgIC8vIERldGVybWluZXMgd2hldGhlciB0aGUgY3VycmVudCB5IGlz
CisgICAgLy8gIGJlZm9yZSB5c3AgPT4gKGJlbG93IHlzcCBpZiB5c3AgPiB5MCkgfHwgKGFib3Zl
IHlzcCBpZiB5c3AgPCB5MCkKKyAgICAvLyAgYWZ0ZXIgeXNwID0+IChhYm92ZSB5c3AgaWYgeXNw
ID4geTApIHx8IChiZWxvdyB5c3AgaWYgeXNwIDwgeTApCisgICAgX3lQb3NpdGlvbjogZnVuY3Rp
b24oeSkKKyAgICB7CisgICAgICAgIHJldHVybiAoeSA8IHRoaXMuX3lzcCkgPT0gKHRoaXMuX3kw
IDwgdGhpcy5feXNwKQorICAgICAgICAgICAgPyBQSURDb250cm9sbGVyLnlQb3NpdGlvbnMuQkVG
T1JFX1lTUAorICAgICAgICAgICAgOiBQSURDb250cm9sbGVyLnlQb3NpdGlvbnMuQUZURVJfWVNQ
OworICAgIH0sCisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIHVsdGltYXRlIGRpc3RhbmNlIGZyb20g
eTAgYWZ0ZXIgdGltZSB0LiBXZSB3YW50IHRvIG1vdmUgdmVyeQorICAgIC8vIHNsb3dseSBhdCB0
aGUgYmVnaW5uaW5nIHRvIHNlZSBob3cgYWRkaW5nIGZldyBpdGVtcyB0byB0aGUgdGVzdCBjYW4g
YWZmZWN0CisgICAgLy8gaXRzIG91dHB1dC4gVGhlIGNvbXBsZXhpdHkgb2YgYSBzaW5nbGUgaXRl
bSBtaWdodCBiZSBiaWcgZW5vdWdoIHRvIGtlZXAgdGhlCisgICAgLy8gcHJvcG9ydGlvbmFsIGdh
aW4gdmVyeSBzbWFsbCBidXQgYWNoaWV2ZXMgdGhlIGRlc2lyZWQgcHJvZ3Jlc3MuIEJ1dCBpZiB5
IGRvZXMKKyAgICAvLyBub3QgY2hhbmdlIHNpZ25pZmljYW50bHkgYWZ0ZXIgYWRkaW5nIGZldyBp
dGVtcywgdGhhdCBtZWFucyB3ZSBuZWVkIGEgbXVjaAorICAgIC8vIGJpZ2dlciBnYWluLiBTbyB3
ZSBuZWVkIHRvIG1vdmUgb3ZlciBhIGN1YmljIGN1cnZlIHdoaWNoIGluY3JlYXNlcyB2ZXJ5Cisg
ICAgLy8gc2xvd2x5IHdpdGggc21hbGwgdCB2YWx1ZXMgYnV0IG1vdmVzIHZlcnkgZmFzdCB3aXRo
IGxhcmdlciB0IHZhbHVlcy4gCisgICAgLy8gVGhlIGJhc2ljIGZvcm11bGEgaXM6IHkgPSB0XjMK
KyAgICAvLyBDaGFuZ2UgdGhlIGZvcm11bGEgdG8gcmVhY2ggeT0xIGFmdGVyIDEwMDAgbXM6IHkg
PSAodC8xMDAwKV4zCisgICAgLy8gQ2hhbmdlIHRoZSBmb3JtdWxhIHRvIHJlYWNoIHk9KHlzcCAt
IHkwKSBhZnRlciAxMDAwIG1zOiB5ID0gKHlzcCAtIHkwKSAqICh0LzEwMDApXjMKKyAgICBfZGlz
dGFuY2VVbHRpbWF0ZTogZnVuY3Rpb24odCkKKyAgICB7CisgICAgICAgIHJldHVybiAodGhpcy5f
eXNwIC0gdGhpcy5feTApICogTWF0aC5wb3codCAvIDEwMDAsIDMpOworICAgIH0sCisKKyAgICAv
LyBDYWxjdWxhdGVzIHRoZSBkaXN0YW5jZSBvZiB5IHJlbGF0aXZlIHRvIHkwLiBJdCBhbHNvIGVu
c3VyZXMgd2UgZG8gbm90IHJldHVybgorICAgIC8vIHplcm8gYnkgcmV0dXJuaW5nIGEgZXBzaWxv
biB2YWx1ZSBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYXMgdWx0aW1hdGUgZGlzdGFuY2UuCisgICAg
X2Rpc3RhbmNlOiBmdW5jdGlvbih5LCBkdSkKKyAgICB7CisgICAgICAgIGNvbnN0IGVwc2lsb24g
PSAwLjAwMDE7CisgICAgICAgIHZhciBkICA9IHkgLSB0aGlzLl95MDsKKyAgICAgICAgcmV0dXJu
IGR1IDwgMCA/IE1hdGgubWluKGQsIC1lcHNpbG9uKSA6IE1hdGgubWF4KGQsIGVwc2lsb24pOwor
ICAgIH0sCisKKyAgICAvLyBEZWNpZGVzIGhvdyBtdWNoIHRoZSBwcm9wb3J0aW9uYWwgZ2FpbiBz
aG91bGQgYmUgaW5jcmVhc2VkIGR1cmluZyB0aGUgbWFudWFsCisgICAgLy8gZ2FpbiBzdGFnZS4g
V2UgY2hvb3NlIHRvIHVzZSB0aGUgcmF0aW8gb2YgdGhlIHVsdGltYXRlIGRpc3RhbmNlIHRvIHRo
ZSBjdXJyZW50CisgICAgLy8gZGlzdGFuY2UgYXMgYW4gaW5kaWNhdGlvbiBvZiBob3cgbXVjaCB0
aGUgc3lzdGVtIGlzIHJlc3BvbnNpdmUuIFdlIHdhbnQgCisgICAgLy8gdG8ga2VlcCB0aGUgaW5j
cmVtZW50IHVuZGVyIGNvbnRyb2wgc28gaXQgZG9lcyBub3QgY2F1c2UgdGhlIHN5c3RlbSBpbnN0
YWJpbGl0eQorICAgIC8vIFNvIHdlIGNob29zZSB0byB0YWtlIHRoZSBuYXR1cmFsIGxvZ2FyaXRo
bSBvZiB0aGlzIHJhdGlvLgorICAgIF9nYWluSW5jcmVtZW50OiBmdW5jdGlvbih0LCB5LCBlKQor
ICAgIHsKKyAgICAgICAgdmFyIGR1ID0gdGhpcy5fZGlzdGFuY2VVbHRpbWF0ZSh0KTsKKyAgICAg
ICAgdmFyIGQgPSB0aGlzLl9kaXN0YW5jZSh5LCBkdSk7CisgICAgICAgIHJldHVybiBNYXRoLmxv
ZyhkdSAvIGQpICogMC4xOworICAgIH0sCisKKyAgICAvLyBUaGlzIGlzIHRoZSBtYW51YWwgc3Rh
Z2Ugb2YgdGhlIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZC4gSXQgY29uc2lzdHMgb2YgdHdvCisg
ICAgLy8gc3ViLXN0YWdlcy4gVGhlIGZpcnN0IHN1Yi1zdGFnZSBpbmNyZW1lbnRzIHRoZSBwcm9w
b3J0aW9uYWwgZ2FpbiB0aWxsIHRoZQorICAgIC8vIHN5c3RlbSBvdXRwdXQgcGFzc2VzIHRoZSBz
ZXQtcG9pbnQgdmFsdWUuIFRoZSBzZWNvbmQgc3RhZ2UgbWVhc3VyZXMgdGhlCisgICAgLy8gb3Nj
aWxsYXRpb24gcGVyaW9kLiBXaGVuIHRoZSBzZWNvbmQgc3RhZ2UgaXMgZG9uZSwgaXQgY2FsY3Vs
YXRlcyB0aGUgaW50ZWdyYWwKKyAgICAvLyBhbmQgZGVyaXZhdGl2ZSBwZXJpb2RzIGFuZCBzd2l0
Y2hlcyB0aGUgY29udHJvbGxlciBtb2RlIHRvIG5vcm1hbC4KKyAgICBfdHVuZU1hbnVhbDogZnVu
Y3Rpb24odCwgaCwgeSwgZSkKKyAgICB7CisgICAgICAgIGlmICh0eXBlb2YgdGhpcy5feTAgPT0g
InVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgYSB0
dW5pbmcgdmFsdWUgaXMgcmVxdWlyZWQuIFdlIHdhbnQgdGhlIHRlc3QKKyAgICAgICAgICAgIC8v
IHRvIGFkZCBvbmx5IG9uZSBpdGVtLiBTbyB3ZSBuZWVkIHRvIHJldHVybiAtMSB3aGljaCBmb3Jj
ZXMgdXMgdG8KKyAgICAgICAgICAgIC8vIGNob29zZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBLcCB0
byBiZSA9IC0xIC8gZQorICAgICAgICAgICAgdGhpcy5feTAgPSB5OworICAgICAgICAgICAgdGhp
cy5fS3AgPSAtMSAvIGU7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fc3RhZ2UgPT0gUElEQ29u
dHJvbGxlci5zdGFnZXMuTUFOVUFMX0dBSU4pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl95UG9z
aXRpb24oeSkgPT0gUElEQ29udHJvbGxlci55UG9zaXRpb25zLkJFRk9SRV9ZU1ApIHsKKyAgICAg
ICAgICAgICAgICAvLyBLZWVwIGluY3JlbWVudGluZyB0aGUgS3AgYXMgbG9uZyBhcyB3ZSBoYXZl
IG5vdCByZWFjaGVkIHRoZQorICAgICAgICAgICAgICAgIC8vIHNldC1wb2ludCB5ZXQKKyAgICAg
ICAgICAgICAgICB0aGlzLl9LcCArPSB0aGlzLl9nYWluSW5jcmVtZW50KHQsIHksIGUpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBOb3cgd2UgbmVlZCB0byBzd2l0
Y2ggc3RhZ2VzIHNvIHdlIGNhbiBtZWFzdXJlIHRoZSBvdmVyc2hvdCB0aW1lLgorICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuTUFOVUFMX1RJTUU7Cisg
ICAgICAgICAgICAgICAgdGhpcy5fS3AgLz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmICh0aGlzLl9zdGFnZSA9PSBQSURDb250cm9sbGVyLnN0YWdlcy5NQU5VQUxfVElNRSkg
eworICAgICAgICAgICAgaWYgKGUgPCAwICE9IHRoaXMuX2VvbGQgPCAwKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHR5cGVvZiB0aGlzLl9UMCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAg
ICAgICAgICAvLyB0IGlzIHRoZSB0aW1lIG9mIHRoZSBiZWdpbmluZyBvZiB0aGUgZmlyc3Qgb3Zl
cnNob3QKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVDAgPSB0OworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRpbWUgb2YgdGhlIGVu
ZCBvZiB0aGUgZmlyc3Qgb3ZlcnNob3QKKyAgICAgICAgICAgICAgICAgICAgdmFyIFR1ID0gdCAt
IHRoaXMuX1QwOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8g
Q2FsY3VsYXRlIHRoZSBzeXN0ZW0gcGFyYW1ldGVycyBmcm9tIEtwIGFuZCBUdSBhc3N1bWluZwor
ICAgICAgICAgICAgICAgICAgICAvLyBhICJzb21lIG92ZXJzaG9vdCIgY29udHJvbCB0eXBlLiBT
ZWU6CisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp
L1ppZWdsZXIlRTIlODAlOTNOaWNob2xzX21ldGhvZAorICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9UaSA9IFR1IC8gMjsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fVGQgPSBUdSAvIDM7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX0twID0gMC4zMyAqIHRoaXMuX0twOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk5PUk1BTDsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1bmVOb3JtYWwoaCwgeSwgZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUmV0
dXJuIHRoZSBwcm9wb3J0aW9uYWwgdGVybSBvbmx5LgorICAgICAgICByZXR1cm4gdGhpcy5fS3Ag
KiBlOwogICAgIH0sCi0gICAgCi0gICAgdHVuZTogZnVuY3Rpb24oeSwgaCkKLSAgICB7Ci0gICAg
ICAgIC8vIEN1cnJlbnQgZXJyb3IuCi0gICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0geTsKIAor
ICAgIC8vIE5vcm1hbCBQSUQgdHVuaW5nIGZ1bmN0aW9uLiBLcCwgVGkgYW5kIFRkIHdlcmUgYWxy
ZWFkeSBjYWxjdWxhdGVkIGluIHRoZSAKKyAgICAvLyBtYW51YWwgc3RhZ2VzLgorICAgIF90dW5l
Tm9ybWFsOiBmdW5jdGlvbihoLCB5LCBlKQorICAgIHsKICAgICAgICAgLy8gUHJvcG9ydGlvbmFs
IHRlcm0uCiAgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOwotICAgICAgICAKKworICAgICAg
ICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBm
cm9tIHRoZSBiZWdpbm5pbmcKKyAgICAgICAgLy8gdGlsbCB0aGUgY3VycmVudCB0aW1lLgorICAg
ICAgICB0aGlzLl9JICs9ICh0aGlzLl9LcCAvIHRoaXMuX1RpKSAqICgoZSArIHRoaXMuX2VvbGQp
IC8gMikgKiBoOworCiAgICAgICAgIC8vIERlcml2YXRpdmUgdGVybSBpcyB0aGUgc2xvcGUgb2Yg
dGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUuCi0gICAgICAgIHZhciBEID0gdGhpcy5fS2Qg
KiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKyAgICAgICAgdmFyIEQgPSAodGhpcy5fS3AgKiB0aGlz
Ll9UZCkgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKworICAgICAgICAvLyBSZXR1cm4gYSBQSUQg
dGVybS4KKyAgICAgICAgcmV0dXJuIFAgKyB0aGlzLl9JICsgRDsKKyAgICB9LAogCi0gICAgICAg
IC8vIEludGVncmFsIHRlcm0gaXMgdGhlIGFyZWEgdW5kZXIgdGhlIGN1cnZlIHN0YXJ0aW5nIGZy
b20gdGhlIGJlZ2luaW5nIHRpbGwgdGhlIGN1cnJlbnQgdGltZS4KLSAgICAgICAgdGhpcy5fSSAr
PSB0aGlzLl9LaSAqICgoZSArIHRoaXMuX2VvbGQpIC8gMikgKiBoOworICAgIC8vIENhbGxlZCBm
cm9tIHRoZSBiZW5jaG1hcmsgdG8gdHVuZSBpdHMgdGVzdC4gSXQgdXNlcyBaaWVnbGVy4oCTTmlj
aG9scyBtZXRob2QKKyAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGNvbnRyb2xsZXIgcGFyYW1ldGVy
cy4gSXQgdGhlbiByZXR1cm5zIGEgUElEIHR1bmluZyB2YWx1ZS4KKyAgICB0dW5lOiBmdW5jdGlv
bih0LCBoLCB5KQorICAgIHsKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAgICAgICAgdmFy
IGUgPSB0aGlzLl95c3AgLSB5OwogCi0gICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVlLgot
ICAgICAgICB2YXIgdiA9IFAgKyBEICsgdGhpcy5fSTsKLSAgICAgICAgCi0gICAgICAgIC8vIEF2
b2lkIHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRvciBzYXR1cmF0aW9uLgotICAgICAgICB2YXIg
dSA9IHRoaXMuX3NhdCh2LCB0aGlzLl91bG93LCB0aGlzLl91aGlnaCk7ICAgICAgICAKKyAgICAg
ICAgLy8gVGhlIHR1bmluZyB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBzdGFnZSBvZiB0aGUgY29udHJv
bGxlci4KKyAgICAgICAgdmFyIHUgPSB0aGlzLl9zdGFnZSA9PSBQSURDb250cm9sbGVyLnN0YWdl
cy5OT1JNQUwgPyB0aGlzLl90dW5lTm9ybWFsKGgsIHksIGUpIDogdGhpcy5fdHVuZU1hbnVhbCh0
LCBoLCB5LCBlKTsKIAorICAgICAgICAvLyBTYXZlIGUgZm9yIHRoZSBuZXh0IGNhbGwuCiAgICAg
ICAgIHRoaXMuX2VvbGQgPSBlOwogICAgICAgICByZXR1cm4gdTsKICAgICB9CkBAIC0yMzUsMTgg
KzM0NiwxOCBAQCBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiAKIGZ1bmN0aW9uIEthbG1hbkVz
dGltYXRvcihpbml0WCkKIHsKLSAgICAvLyBJbml0aWFsaXplIHN0YXRlIHRyYW5zaXRpb24gbWF0
cml4CisgICAgLy8gSW5pdGlhbGl6ZSBzdGF0ZSB0cmFuc2l0aW9uIG1hdHJpeC4KICAgICB0aGlz
Ll9tYXRBID0gTWF0cml4My5pZGVudGl0eSgpOwogICAgIHRoaXMuX21hdEFbTWF0cml4My5wb3Mo
MCwgMildID0gMTsKLSAgICAKLSAgICAvLyBJbml0aWFsaXplIG1lYXN1cmVtZW50IG1hdHJpeAor
CisgICAgLy8gSW5pdGlhbGl6ZSBtZWFzdXJlbWVudCBtYXRyaXguCiAgICAgdGhpcy5fdmVjSCA9
IFZlY3RvcjMuemVyb3MoKTsKICAgICB0aGlzLl92ZWNIWzBdID0gMTsKLSAgICAKKwogICAgIHRo
aXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CiAgICAgdGhpcy5fUiA9IDEwMDA7Ci0gICAg
Ci0gICAgLy8gSW5pdGlhbCBzdGF0ZSBjb25kaXRpb25zCisKKyAgICAvLyBJbml0aWFsIHN0YXRl
IGNvbmRpdGlvbnMuCiAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLnplcm9zKCk7CiAgICAg
dGhpcy5fdmVjWF9lc3RbMF0gPSBpbml0WDsKICAgICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMu
emVyb3MoKTsKQEAgLTI1OSw3ICszNzAsNyBAQCBLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0K
ICAgICAgICAgLy8gUHJvamVjdCB0aGUgc3RhdGUgYWhlYWQKICAgICAgICAgLy8gIFhfcHJkKGsp
ID0gQSAqIFhfZXN0KGstMSkKICAgICAgICAgdmFyIHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBs
eVZlY3RvcjModGhpcy5fbWF0QSwgdGhpcy5fdmVjWF9lc3QpOwotICAgICAgICAKKwogICAgICAg
ICAvLyBQcm9qZWN0IHRoZSBlcnJvciBjb3ZhcmlhbmNlIGFoZWFkCiAgICAgICAgIC8vICBQX3By
ZChrKSA9IEEgKiBQX2VzdChrLTEpICogQScgKyBRCiAgICAgICAgIHZhciBtYXRQX3ByZCA9IE1h
dHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgz
KHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwgTWF0cml4My50cmFuc3Bvc2UodGhpcy5fbWF0
QSkpLCB0aGlzLl9tYXRRKTsKQEAgLTI3MSwxMSArMzgyLDExIEBAIEthbG1hbkVzdGltYXRvci5w
cm90b3R5cGUgPQogICAgICAgICB2YXIgdmVjQiA9IFZlY3RvcjMubXVsdGlwbHlNYXRyaXgzKHRo
aXMuX3ZlY0gsIE1hdHJpeDMudHJhbnNwb3NlKG1hdFBfcHJkKSk7CiAgICAgICAgIHZhciBTID0g
VmVjdG9yMy5tdWx0aXBseVZlY3RvcjModmVjQiwgdGhpcy5fdmVjSCkgKyB0aGlzLl9SOwogICAg
ICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2NhbGUoMS9TLCB2ZWNCKTsKLSAgICAgICAgCisK
ICAgICAgICAgLy8gVXBkYXRlIHRoZSBlc3RpbWF0ZSB2aWEgeihrKQogICAgICAgICAvLyAgWF9l
c3QoaykgPSB4X3ByZCArIEsoaykgKiAoeihrKSAtIEggKiBYX3ByZChrKSk7CiAgICAgICAgIHRo
aXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5hZGQodmVjWF9wcmQsIFZlY3RvcjMuc2NhbGUoY3VycmVu
dCAtIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRoaXMuX3ZlY0gsIHZlY1hfcHJkKSwgdmVjR2Fp
bikpOwotICAgICAgICAKKwogICAgICAgICAvLyBVcGRhdGUgdGhlIGVycm9yIGNvdmFyaWFuY2UK
ICAgICAgICAgLy8gIFBfZXN0KGspID0gUF9wcmQoaykgLSBLKGspICogSCAqIFBfcHJkKGspOwog
ICAgICAgICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuc3VidHJhY3QobWF0UF9wcmQsIE1hdHJp
eDMuc2NhbGUoVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModmVjR2FpbiwgdGhpcy5fdmVjSCksIG1h
dFBfcHJkKSk7CkBAIC0yODMsNSArMzk0LDUgQEAgS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZSA9
CiAgICAgICAgIC8vIENvbXB1dGUgdGhlIGVzdGltYXRlZCBtZWFzdXJlbWVudC4KICAgICAgICAg
Ly8gIHkgPSBIICogWF9lc3Qoayk7CiAgICAgICAgIHJldHVybiBWZWN0b3IzLm11bHRpcGx5VmVj
dG9yMyh0aGlzLl92ZWNILCAgdGhpcy5fdmVjWF9lc3QpOwotICAgIH0KKyAgIH0KIH0KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvc3RhZ2UuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9z
dGFnZS5qcwkocmV2aXNpb24gMTkyNDAwKQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVy
L3Rlc3RzL3Jlc291cmNlcy9zdGFnZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsMTMgKzQxLDE2
IEBAIFN0YWdlLnByb3RvdHlwZSA9CiB7CiAgICAgZ2V0IHNpemUoKQogICAgIHsKLSAgICAgICAg
dmFyIHN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7Ci0gICAg
ICAgIHZhciBwYWRkaW5nID0gbmV3IEluc2V0cygKLSAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5
bGVzLnBhZGRpbmdUb3ApLAotICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1Jp
Z2h0KSwKLSAgICAgICAgICAgIHBhcnNlRmxvYXQoc3R5bGVzLnBhZGRpbmdCb3R0b20pLAotICAg
ICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1RvcCkpOwotICAgICAgICByZXR1cm4g
bmV3IFBvaW50KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCAtIHBhZGRpbmcud2lkdGgsIHRoaXMu
ZWxlbWVudC5jbGllbnRIZWlnaHQgLSBwYWRkaW5nLmhlaWdodCk7CisgICAgICAgIGlmICh0eXBl
b2YgdGhpcy5fc2l6ZSA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgdmFyIHN0eWxlcyA9
IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudCk7CisgICAgICAgICAgICB2YXIg
cGFkZGluZyA9IG5ldyBJbnNldHMoCisgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMu
cGFkZGluZ1RvcCksCisgICAgICAgICAgICAgICAgcGFyc2VGbG9hdChzdHlsZXMucGFkZGluZ1Jp
Z2h0KSwKKyAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nQm90dG9tKSwK
KyAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHN0eWxlcy5wYWRkaW5nVG9wKSk7CisgICAgICAg
ICAgICB0aGlzLl9zaXplID0gbmV3IFBvaW50KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCAtIHBh
ZGRpbmcud2lkdGgsIHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQgLSBwYWRkaW5nLmhlaWdodCk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7CiAgICAgfSwKICAgICAKICAg
ICByYW5kb206IGZ1bmN0aW9uKG1pbiwgbWF4KQpAQCAtMTE3LDkgKzEyMCw5IEBAIFN0YWdlLnBy
b3RvdHlwZSA9CiAgICAgfQogfQogCi1mdW5jdGlvbiBTdGFnZUFuaW1hdG9yKGJlbmNobWFyaykK
K2Z1bmN0aW9uIFN0YWdlQW5pbWF0b3IoYmVuY2htYXJrLCBvcHRpb25zKQogewotICAgIEFuaW1h
dG9yLmNhbGwodGhpcywgYmVuY2htYXJrKTsKKyAgICBBbmltYXRvci5jYWxsKHRoaXMsIGJlbmNo
bWFyaywgb3B0aW9ucyk7CiB9OwogCiBTdGFnZUFuaW1hdG9yLnByb3RvdHlwZSA9IE9iamVjdC5j
cmVhdGUoQW5pbWF0b3IucHJvdG90eXBlKTsKQEAgLTE1OSw3ICsxNjIsNyBAQCBTdGFnZUJlbmNo
bWFyay5wcm90b3R5cGUuY3JlYXRlU3RhZ2UgPSBmCiAKIFN0YWdlQmVuY2htYXJrLnByb3RvdHlw
ZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKIHsKLSAgICByZXR1cm4gbmV3IFN0YWdlQW5p
bWF0b3IodGhpcyk7CisgICAgcmV0dXJuIG5ldyBTdGFnZUFuaW1hdG9yKHRoaXMsIHRoaXMuX29w
dGlvbnMpOwogfQogCiBTdGFnZUJlbmNobWFyay5wcm90b3R5cGUudHVuZSA9IGZ1bmN0aW9uKGNv
dW50KQpAQCAtMTc3LDggKzE4MCw4IEBAIFN0YWdlQmVuY2htYXJrLnByb3RvdHlwZS5zaG93UmVz
dWx0cyA9IGYKICAgICBpZiAoIXRoaXMuX3JlY29yZFRhYmxlIHx8ICF0aGlzLl9wcm9ncmVzc0Jh
ciB8fCAhdGhpcy5fdGVzdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHRoaXMub3B0aW9u
c1sic2hvdy1ydW5uaW5nLXJlc3VsdHMiXSkKLSAgICAgICAgdGhpcy5fcmVjb3JkVGFibGUuc2hv
d1JlY29yZCh0aGlzLl90ZXN0Lm5hbWUsIG1lc3NhZ2UsIHRoaXMuX3NhbXBsZXIudG9KU09OKHRy
dWUsIGZhbHNlKSk7CisgICAgaWYgKHRoaXMuX29wdGlvbnNbInNob3ctcnVubmluZy1yZXN1bHRz
Il0pCisgICAgICAgIHRoaXMuX3JlY29yZFRhYmxlLnNob3dSZWNvcmQodGhpcy5fdGVzdC5uYW1l
LCBtZXNzYWdlLCB0aGlzLl9zYW1wbGVyLnRvSlNPTih0cnVlLCBmYWxzZSksIHRoaXMuX29wdGlv
bnMpOwogCiAgICAgdGhpcy5fcHJvZ3Jlc3NCYXIuc2V0UG9zKHByb2dyZXNzKTsKIH0KSW5kZXg6
IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9zaW1wbGUvcmVzb3VyY2VzL3NpbXBs
ZS1jYW52YXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rl
c3RzL3NpbXBsZS9yZXNvdXJjZXMvc2ltcGxlLWNhbnZhcy5qcwkocmV2aXNpb24gMTkyNDAwKQor
KysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3NpbXBsZS9yZXNvdXJjZXMvc2lt
cGxlLWNhbnZhcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsOSBAQCBTaW1wbGVDYW52
YXNTdGFnZS5wcm90b3R5cGUuYW5pbWF0ZSA9IGZ1CiAgICAgfSk7CiB9CiAKLWZ1bmN0aW9uIFNp
bXBsZUNhbnZhc0FuaW1hdG9yKGJlbmNobWFyaykKK2Z1bmN0aW9uIFNpbXBsZUNhbnZhc0FuaW1h
dG9yKGJlbmNobWFyaywgb3B0aW9ucykKIHsKLSAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywg
YmVuY2htYXJrKTsKKyAgICBTdGFnZUFuaW1hdG9yLmNhbGwodGhpcywgYmVuY2htYXJrLCBvcHRp
b25zKTsKICAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2htYXJrLl9zdGFnZS5jb250ZXh0OwogfQog
CkBAIC01MiwxNCArNTIsMTEgQEAgU2ltcGxlQ2FudmFzQW5pbWF0b3IucHJvdG90eXBlLmFuaW1h
dGUgPQogCiAKIGZ1bmN0aW9uIFNpbXBsZUNhbnZhc0JlbmNobWFyayhzdWl0ZSwgdGVzdCwgb3B0
aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKSB7Ci0gICAgb3B0aW9uc1siZ2FpbiJdID0g
NjsKLSAgICBvcHRpb25zWyJhZGRMaW1pdCJdID0gMTAwOwotICAgIG9wdGlvbnNbInJlbW92ZUxp
bWl0Il0gPSAxMDAwOwogICAgIFN0YWdlQmVuY2htYXJrLmNhbGwodGhpcywgc3VpdGUsIHRlc3Qs
IG9wdGlvbnMsIHJlY29yZFRhYmxlLCBwcm9ncmVzc0Jhcik7CiB9CiBTaW1wbGVDYW52YXNCZW5j
aG1hcmsucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdGFnZUJlbmNobWFyay5wcm90b3R5cGUp
OwogU2ltcGxlQ2FudmFzQmVuY2htYXJrLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNpbXBsZUNh
bnZhc0JlbmNobWFyazsKIFNpbXBsZUNhbnZhc0JlbmNobWFyay5wcm90b3R5cGUuY3JlYXRlQW5p
bWF0b3IgPSBmdW5jdGlvbigpIHsKLSAgICByZXR1cm4gbmV3IFNpbXBsZUNhbnZhc0FuaW1hdG9y
KHRoaXMpOworICAgIHJldHVybiBuZXcgU2ltcGxlQ2FudmFzQW5pbWF0b3IodGhpcywgdGhpcy5f
b3B0aW9ucyk7CiB9CiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90
ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUtY2FudmFzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy90ZW1wbGF0ZS9yZXNvdXJjZXMvdGVtcGxhdGUt
Y2FudmFzLmpzCShyZXZpc2lvbiAxOTI0MDApCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0
ZXIvdGVzdHMvdGVtcGxhdGUvcmVzb3VyY2VzL3RlbXBsYXRlLWNhbnZhcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtNTcsOSArNTcsOSBAQCBUZW1wbGF0ZUNhbnZhc1N0YWdlLnByb3RvdHlwZS5hbmlt
YXRlID0gCiAgICAgLy8gTG9vcCB0aHJvdWdoIGFsbCB5b3VyIG9iamVjdHMgYW5kIGFzayB0aGVt
IHRvIGFuaW1hdGUuCiB9CiAKLWZ1bmN0aW9uIFRlbXBsYXRlQ2FudmFzQW5pbWF0b3IoYmVuY2ht
YXJrKQorZnVuY3Rpb24gVGVtcGxhdGVDYW52YXNBbmltYXRvcihiZW5jaG1hcmssIG9wdGlvbnMp
CiB7Ci0gICAgQW5pbWF0b3IuY2FsbCh0aGlzLCBiZW5jaG1hcmspOworICAgIEFuaW1hdG9yLmNh
bGwodGhpcywgYmVuY2htYXJrLCBvcHRpb25zKTsKICAgICB0aGlzLl9jb250ZXh0ID0gYmVuY2ht
YXJrLl9zdGFnZS5jb250ZXh0OwogfQogCkBAIC05Myw3ICs5Myw3IEBAIFRlbXBsYXRlQ2FudmFz
QmVuY2htYXJrLnByb3RvdHlwZS5jcmVhdGUKIFRlbXBsYXRlQ2FudmFzQmVuY2htYXJrLnByb3Rv
dHlwZS5jcmVhdGVBbmltYXRvciA9IGZ1bmN0aW9uKCkKIHsKICAgICAvLyBBdHRhY2ggdGhlIGFu
aW1hdG9yIHRvIHRoZSBiZW5jaG1hcmsuCi0gICAgcmV0dXJuIG5ldyBUZW1wbGF0ZUNhbnZhc0Fu
aW1hdG9yKHRoaXMpOworICAgIHJldHVybiBuZXcgVGVtcGxhdGVDYW52YXNBbmltYXRvcih0aGlz
LCB0aGlzLl9vcHRpb25zKTsKIH0KIAogd2luZG93LmJlbmNobWFya0NsaWVudC5jcmVhdGUgPSBm
dW5jdGlvbihzdWl0ZSwgdGVzdCwgb3B0aW9ucywgcmVjb3JkVGFibGUsIHByb2dyZXNzQmFyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265528</attachid>
            <date>2015-11-13 19:29:26 -0800</date>
            <delta_ts>2015-11-19 15:23:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151113192919.patch</filename>
            <type>text/plain</type>
            <size>24312</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI0NTMpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE1LTExLTEzICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fs
Y3VsYXRlIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdCBnYWluIGFkYXB0aXZlbHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIG5lZWQgdG8gY2Fs
Y3VsYXRlIHRoZSBnYWluIG9mIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdHMgYWRhcHRpdmVs
eQorICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2FpbiBhbmQgbGltaXRzIHBhcmFtZXRlcnMg
d2UgaGF2ZSB0byBjaG9vc2UgbWFudWFsbHkKKyAgICAgICAgZm9yIGV2ZXJ5IHRlc3QuIFdlIGFy
ZSBnb2luZyB0byB1c2UgdGhlIGNsYXNzaWMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kIGZvcgor
ICAgICAgICBjYWxjdWxhdGluZyB0aGUgZ2FpbiBhbmQgaW50ZWdyYWwgYW5kIGRlcml2YXRpdmUg
dGltZXMuIFdlIGFyZSBnb2luZyB0bworICAgICAgICB0cnkgbW92aW5nIG9uIGEgY3ViaWMgY3Vy
dmUgZHVyaW5nIHRoZSBtYW51YWwgc3RhZ2UgZnJvbSB5MCB0byByZWFjaCB5c3AuCisKKyAgICAg
ICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6IFJlbW92ZSBhbGwgdGhl
IG1hbnVhbCBnYWlucyBhbmQgbGltaXRzIHBhcmFtZXRlcnMgd2hpY2ggaGFkIHRvIGJlIHBhc3Nl
ZCB0byBldmVyeSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rlc3RzL3Jl
c291cmNlcy9tYWluLmpzOgorICAgICAgICAoQmVuY2htYXJrKTogR2V0IHJpZCBvZiBtYW51YWwg
Z2FpbiBhbmQgbGltaXRzLgorICAgICAgICAoQmVuY2htYXJrLnByb3RvdHlwZS51cGRhdGUpOiBT
aW1wbGlmeSB0aGUgY2FsY3VsYXRpb24gYnkgaGF2aW5nIGFsbCB0aGUgdGltZXMgaW4gbXMuCisg
ICAgICAgIAorICAgICAgICAqIEFuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanM6Cisg
ICAgICAgIChQSURDb250cm9sbGVyKTogR2V0IHJpZCBvZiB0aGUgbWFudWFsIGdhaW4gYW5kIGxp
bWl0cyBhbmQgdGhlIG1hZ2ljIG51bWJlcnMgZm9yIFRpIGFuZCBUZC4KKyAgICAgICAgKFBJRENv
bnRyb2xsZXIucHJvdG90eXBlLl95UG9zaXRpb24pOiBUZWxscyB3aGV0aGVyIHRoZSB0ZXN0IGN1
cnJlbnQgb3V0cHV0IGlzIG1vdmluZyB0b3dhcmRzIHRoZSBzZXQtcG9pbnQgb3IgYXdheSBmcm9t
IGl0LgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX2Rpc3RhbmNlVWx0aW1hdGUp
OiBDYWxjdWxhdGVzIHRoZSB1bHRpbWF0ZSBkaXN0YW5jZSBmcm9tIHkwIGFmdGVyIHRpbWUgdCB1
c2luZyBhIGN1YmljIGZvcm11bGEuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5f
ZGlzdGFuY2UpOiBDYWxjdWxhdGVzIHRoZSBkaXN0YW5jZSBvZiB5IHJlbGF0aXZlIHRvIHkwLgor
ICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX2dhaW5JbmNyZW1lbnQpOiBEZWNpZGVz
IGhvdyBtdWNoIHRoZSBwcm9wb3J0aW9uYWwgZ2FpbiBzaG91bGQgYmUgaW5jcmVhc2VkIGR1cmlu
ZyB0aGUgbWFudWFsIGdhaW4gc3RhZ2UuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlw
ZS5fdHVuZU1hbnVhbCk6IFRoZSBtYW51YWwgc3RhZ2Ugb2YgdGhlIFppZWdsZXLigJNOaWNob2xz
IG1ldGhvZC4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lTm9ybWFsKTog
Tm9ybWFsIFBJRCB0dW5pbmcgZnVuY3Rpb24uCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3Rv
dHlwZS50dW5lKTogTWFuYWdlcyBjYWxjdWxhdGluZyB0aGUgY29udHJvbGxlciBwYXJhbWV0ZXJz
LiBJdCB0aGVuIHJldHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgorICAgICAgICAoUElEQ29udHJv
bGxlci5wcm90b3R5cGUuX3NhdCk6IERlbGV0ZWQuIFdlIG1heSBuZWVkIHRvIHJldHVybiBpdCBi
YWNrIGJ1dCB0aGUgbGltaXRzIGhhdmUgdG8gYmUgY2FsY3VsYXRlZCBhZGFwdGl2ZWx5IG5vdCBt
YW51YWxseS4gCisKIDIwMTUtMTEtMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbml0aWFsaXplIHRoZSBncmFwaGljcyBiZW5jaG1hcmsn
cyBLYWxtYW4gZmlsdGVyIHdpdGggZXN0aW1hdGVkIDYwIEZQUwpJbmRleDogUGVyZm9ybWFuY2VU
ZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
UGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanMJKHJl
dmlzaW9uIDE5MjQwMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVz
b3VyY2VzL3Rlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC02MiwyNyArNjIsMjcgQEAgdmFyIFN1
aXRlcyA9IFtdOwogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKICAgICBbCiAg
ICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNs
ZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICB1
cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLXNoYXBlcy5odG1sP3BhcnRpY2xl
V2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAgICAgICAgIG5h
bWU6ICJDU1MgYm91bmNpbmcgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/
Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NDAmcGFydGlj
bGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgdXJsOiAiYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQw
JnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKICAgICAgICAgICAgIG5h
bWU6ICJDU1MgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKICAgICAgICAgfSwKICAgICAgICAgeyAK
LSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVz
Lmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9NTAm
cGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9wYXJ0
aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50
IiwKICAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKICAg
ICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVz
L2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0
PTImcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJj
ZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04
MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKICAgICAgICAgICAgIG5hbWU6
ICJDU1MgYm91bmNpbmcgU1ZHIGltYWdlcyIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1pbWFnZXMuaHRtbD9n
YWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNs
ZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/cGFy
dGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWlu
LXlhbmcucG5nIiwKICAgICAgICAgICAgIG5hbWU6ICJDU1MgYm91bmNpbmcgUE5HIGltYWdlcyIK
ICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAidGV4dC9sYXllcmluZy10
ZXh0Lmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAiLAorICAgICAgICAg
ICAgdXJsOiAidGV4dC9sYXllcmluZy10ZXh0Lmh0bWwiLAogICAgICAgICAgICAgbmFtZTogIkNT
UyBsYXllcmluZyB0ZXh0IgogICAgICAgICB9LAogICAgIF0KQEAgLTkxLDIzICs5MSwyMyBAQCBT
dWl0ZXMucHVzaChuZXcgU3VpdGUoIkhUTUwgc3VpdGUiLAogU3VpdGVzLnB1c2gobmV3IFN1aXRl
KCJDYW52YXMgc3VpdGUiLAogICAgIFsKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExp
bWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9MTImcGFydGljbGVIZWlnaHQ9
MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9i
b3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdo
dD0xMiZzaGFwZT1jaXJjbGUiLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBj
aXJjbGVzIgogICAgICAgICB9LAogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9
MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZz
aGFwZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNs
ZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVI
ZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAogICAgICAgICAgICAgbmFtZTogImNhbnZh
cyBib3VuY2luZyBjbGlwcGVkIHJlY3RzIgogICAgICAgICB9LAogICAgICAgICB7IAotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRt
bD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD01MCZw
YXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVudCIsCisgICAgICAgICAg
ICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGll
bnQiLAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBncmFkaWVudCBjaXJjbGVz
IgogICAgICAgICB9LAogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJl
bW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0u
Li9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBh
cnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0
aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKICAgICAg
ICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgU1ZHIGltYWdlcyIKICAgICAgICAgfSwKICAg
ICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNh
bnZhcy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwMCZyZW1vdmVMaW1pdD0xMDAwJnBh
cnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lp
bi15YW5nLnBuZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNp
bmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAm
aW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAi
Y2FudmFzIGJvdW5jaW5nIFBORyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgXQpAQCAtMTE2LDIz
ICsxMTYsMjMgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDYW52YXMgc3VpdGUiLAogU3VpdGVz
LnB1c2gobmV3IFN1aXRlKCJTVkcgc3VpdGUiLAogICAgIFsKICAgICAgICAgewotICAgICAgICAg
ICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWlu
PTYmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNs
ZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xl
SGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5n
IGNpcmNsZXMiLAogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLXNoYXBlcy5odG1sP2dhaW49MC42JmFkZExpbWl0
PTEwJnJlbW92ZUxpbWl0PTEmcGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFw
ZT1yZWN0JmNsaXA9c3RhciIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9NDAmcGFydGljbGVIZWlnaHQ9
NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAogICAgICAgICAgICAgbmFtZTogIlNWRyBib3VuY2lu
ZyBjbGlwcGVkIHJlY3RzIiwKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJs
OiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9nYWluPTAuOCZh
ZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD00JnBhcnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9
NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGllbnQiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNp
bmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBh
cnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKICAgICAgICAgICAg
IG5hbWU6ICJTVkcgYm91bmNpbmcgZ3JhZGllbnQgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAg
ICAgewotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1p
bWFnZXMuaHRtbD9nYWluPTAuNCZhZGRMaW1pdD01JnJlbW92ZUxpbWl0PTImcGFydGljbGVXaWR0
aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcuc3Zn
IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1h
Z2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9y
ZXNvdXJjZXMveWluLXlhbmcuc3ZnIiwKICAgICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcg
U1ZHIGltYWdlcyIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1pbWFnZXMuaHRtbD9nYWluPTQmYWRkTGltaXQ9
MTAwJnJlbW92ZUxpbWl0PTUmcGFydGljbGVXaWR0aD04MCZwYXJ0aWNsZUhlaWdodD04MCZpbWFn
ZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKKyAgICAgICAgICAgIHVybDogImJvdW5j
aW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/cGFydGljbGVXaWR0aD04MCZw
YXJ0aWNsZUhlaWdodD04MCZpbWFnZVNyYz0uLi9yZXNvdXJjZXMveWluLXlhbmcucG5nIiwKICAg
ICAgICAgICAgIG5hbWU6ICJTVkcgYm91bmNpbmcgUE5HIGltYWdlcyIKICAgICAgICAgfSwKICAg
ICBdCkBAIC0yMjYsMTEgKzIyNiwxMSBAQCBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkJhc2ljIGNh
bnZhcyBwYXRoCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNvbXBsZXggZXhhbXBsZXMiLAogICAg
IFsKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9u
cy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAiLAorICAgICAgICAgICAg
dXJsOiAiZXhhbXBsZXMvY2FudmFzLWVsZWN0cm9ucy5odG1sIiwKICAgICAgICAgICAgIG5hbWU6
ICJjYW52YXMgZWxlY3Ryb25zIgogICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1
cmw6ICJleGFtcGxlcy9jYW52YXMtc3RhcnMuaHRtbD9nYWluPTQmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTUiLAorICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWwi
LAogICAgICAgICAgICAgbmFtZTogImNhbnZhcyBzdGFycyIKICAgICAgICAgfSwKICAgICBdCkBA
IC0yMzksMTUgKzIzOSwxNSBAQCBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIkNvbXBsZXggZXhhbXBs
ZXMiCiBTdWl0ZXMucHVzaChuZXcgU3VpdGUoIlRlc3QgVGVtcGxhdGVzIiwKICAgICBbCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNzcy5odG1sP2dhaW49
MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSIsCisgICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0
ZS90ZW1wbGF0ZS1jc3MuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIHRlbXBsYXRlIgog
ICAgICAgICB9LAogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0
ZS1jYW52YXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEwMDAiLAorICAg
ICAgICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWwiLAogICAgICAgICAg
ICAgbmFtZTogImNhbnZhcyB0ZW1wbGF0ZSIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEw
MCZyZW1vdmVMaW1pdD01JjxvdGhlcl9wYXJhbXRlcj49PHZhbHVlPiIsCisgICAgICAgICAgICB1
cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0ZS1zdmcuaHRtbCIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZH
IHRlbXBsYXRlIgogICAgICAgICB9LAogICAgIF0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5p
bW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5j
ZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMJKHJldmlzaW9uIDE5MjQw
MCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWFpbi5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTQyLDExICsxNDIsNyBAQCBmdW5jdGlvbiBCZW5jaG1hcmso
b3B0aW9ucykKICAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAgICAgdGhpcy5f
aXNTYW1wbGluZyA9IGZhbHNlOwogCi0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0aGlzLl9vcHRp
b25zWyJnYWluIl0pIHx8IDE7Ci0gICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50KHRoaXMuX29w
dGlvbnNbImFkZExpbWl0Il0pIHx8IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBhcnNlSW50KHRo
aXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhpcy5fY29udHJv
bGxlciA9IG5ldyBQSURDb250cm9sbGVyKGdhaW4sIG9wdGlvbnNbImZyYW1lLXJhdGUiXSwgbG93
VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9s
bGVyKHRoaXMuX29wdGlvbnNbImZyYW1lLXJhdGUiXSk7CiAgICAgdGhpcy5fc2FtcGxlciA9IG5l
dyBTYW1wbGVyKDIpOwogICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNobWFya1N0YXRlKHRoaXMu
b3B0aW9uc1sidGVzdC1pbnRlcnZhbCJdICogMTAwMCk7CiB9CkBAIC0xODYsNyArMTgyLDcgQEAg
QmVuY2htYXJrLnByb3RvdHlwZSA9CiAgICAgICAgIGVsc2UgaWYgKCEodGhpcy5faXNTYW1wbGlu
ZyAmJiB0aGlzLm9wdGlvbnNbImZpeC10ZXN0LWNvbXBsZXhpdHkiXSkpIHsKICAgICAgICAgICAg
IC8vIFRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmcmFtZVJhdGUgYW5kIHRlc3QgY29tcGxleGl0
eSBpcyBpbnZlcnNlLXByb3BvcnRpb25hbCBzbyB3ZQogICAgICAgICAgICAgLy8gbmVlZCB0byB1
c2UgdGhlIG5lZ2F0aXZlIG9mIFBJRENvbnRyb2xsZXIudHVuZSgpIHRvIGNoYW5nZSB0aGUgY29t
cGxleGl0eSBvZiB0aGUgdGVzdC4KLSAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250
cm9sbGVyLnR1bmUoY3VycmVudEZyYW1lUmF0ZSwgdGltZURlbHRhIC8gMTAwMCk7CisgICAgICAg
ICAgICB0dW5lVmFsdWUgPSAtdGhpcy5fY29udHJvbGxlci50dW5lKGN1cnJlbnRUaW1lT2Zmc2V0
LCB0aW1lRGVsdGEsIGN1cnJlbnRGcmFtZVJhdGUpOwogICAgICAgICAgICAgdHVuZVZhbHVlID0g
dHVuZVZhbHVlID4gMCA/IE1hdGguZmxvb3IodHVuZVZhbHVlKSA6IE1hdGguY2VpbCh0dW5lVmFs
dWUpOwogICAgICAgICB9CiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0
cy9yZXNvdXJjZXMvbWF0aC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21hdGguanMJKHJldmlzaW9uIDE5MjQwMCkKKysrIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwkod29ya2luZyBj
b3B5KQpAQCAtNCwxNyArNCwxNyBAQCB2YXIgTWF0cml4ID0KICAgICB7CiAgICAgICAgIHJldHVy
biBBcnJheShtICogbikuZmlsbCh2KTsKICAgICB9LAotICAgIAorCiAgICAgemVyb3M6IGZ1bmN0
aW9uKG0sIG4pCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMCk7CiAg
ICAgfSwKLSAgICAKKwogICAgIG9uZXM6IGZ1bmN0aW9uKG0sIG4pCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4LmluaXQobSwgbiwgMSk7CiAgICAgfSwKLSAgICAKKwogICAgIGlkZW50aXR5
OiBmdW5jdGlvbihuKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IG5ldyBNYXRyaXguemVyb3Mo
biwgbik7CkBAIC0yMiw3ICsyMiw3IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2kg
KiBuICsgaV0gPSAxOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBz
dHI6IGZ1bmN0aW9uKEEsIG4sIG0pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0gKG0gPiAxICYm
IG4gPiAxID8gIk1hdHJpeFsiICsgbiArICIsICIgKyBtIDogIlZlY3RvclsiICsgbSAqIG4pICsg
Il0gPSBbIjsKQEAgLTMzLDEyICszMywxMiBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgfSAgICAg
ICAKICAgICAgICAgcmV0dXJuIG91dCArICJdIjsKICAgICB9LAotICAgIAorCiAgICAgcG9zOiBm
dW5jdGlvbihtLCBpLCBqKQogICAgIHsKICAgICAgICAgcmV0dXJuIG0gKiBpICsgajsKICAgICB9
LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCLCBuLCBtKQogICAgIHsKICAgICAgICAg
dmFyIG91dCA9IE1hdHJpeC56ZXJvcyhuLCBtKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgdmFyIE1hdHJp
eCA9CiAgICAgICAgICAgICBvdXRbaV0gPSBBW2ldICsgQltpXTsKICAgICAgICAgcmV0dXJuIG91
dDsKICAgICB9LAotICAgIAorCiAgICAgc3VidHJhY3Q6IGZ1bmN0aW9uKEEsIEIsIG4sIG0pCiAg
ICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOwpAQCAtNTQsNyArNTQs
NyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dFtpXSA9IEFbaV0gLSBCW2ldOwogICAg
ICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBzY2FsZTogZnVuY3Rpb24ocywg
QSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgbSk7CkBA
IC02MiwxNyArNjIsMTcgQEAgdmFyIE1hdHJpeCA9CiAgICAgICAgICAgICBvdXRbaV0gPSBzICog
QVtpXTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAotICAgIAorCiAgICAgdHJhbnNwb3Nl
OiBmdW5jdGlvbihBLCBuLCBtKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJpeC56ZXJv
cyhtLCBuKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgbTsgKytqKQogICAgICAgICAgICAgICAgIG91dFtNYXRy
aXgucG9zKG4sIGksIGopXSA9IEFbTWF0cml4LnBvcyhtLCBqLCBpKV07Ci0gICAgICAgIH0gICAg
ICAgCisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9LAotICAgIAorCiAgICAg
bXVsdGlwbHk6IGZ1bmN0aW9uKEEsIEIsIG4sIG0sIHApCiAgICAgewogICAgICAgICB2YXIgb3V0
ID0gTWF0cml4Lnplcm9zKG4sIHApOwpAQCAtOTMsMzcgKzkzLDM3IEBAIHZhciBWZWN0b3IzID0K
ICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguemVyb3MoMSwgMyk7CiAgICAgfSwKLSAgICAK
KwogICAgIG9uZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgub25l
cygxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc3RyOiBmdW5jdGlvbih2KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIE1hdHJpeC5zdHIodiwgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIGFk
ZDogZnVuY3Rpb24odiwgdykKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguYWRkKHYsIHcs
IDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rpb24odiwgdykKICAg
ICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguc3VidHJhY3QodiwgdywgMSwgMyk7CiAgICAgfSwK
LSAgICAKKwogICAgIHNjYWxlOiBmdW5jdGlvbihzLCB2KQogICAgIHsKICAgICAgICAgcmV0dXJu
IE1hdHJpeC5zY2FsZShzLCB2LCAxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlN
YXRyaXgzOiBmdW5jdGlvbih2LCBBKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0
aXBseSh2LCBBLCAxLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlWZWN0b3Iz
OiBmdW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IDA7CkBAIC0xMzksOTUg
KzEzOSwyMDYgQEAgdmFyIE1hdHJpeDMgPQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC56
ZXJvcygzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgaWRlbnRpdHk6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaWRlbnRpdHkoMywgMyk7CiAgICAgfSwKLSAgICAK
KwogICAgIHN0cjogZnVuY3Rpb24oQSkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguc3Ry
KEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBwb3M6IGZ1bmN0aW9uKGksIGopCiAgICAg
ewogICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsKICAgICB9LAotICAgIAorCiAg
ICAgYWRkOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5hZGQo
QSwgQiwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRyYWN0OiBmdW5jdGlvbihBLCBC
KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdChBLCBCLCAzLCAzKTsKICAg
ICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICB0cmFu
c3Bvc2U6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnRyYW5zcG9z
ZShBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlNYXRyaXgzOiBmdW5jdGlv
bihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCBCLCAzLCAz
LCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlWZWN0b3IzOiBmdW5jdGlvbihBLCB2
KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBseShBLCB2LCAzLCAzLCAxKTsK
ICAgICB9CiB9CiAKLWZ1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywgeXNwLCB1bG93LCB1aGlnaCkK
K2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoeXNwKQogewogICAgIHRoaXMuX3lzcCA9IHlzcDsKIAot
ICAgIHRoaXMuX1RkID0gNTsKLSAgICB0aGlzLl9UaSA9IDE1OwotCi0gICAgdGhpcy5fS3AgPSBL
OwotICAgIHRoaXMuX0tkID0gSyAvIHRoaXMuX1RkOwotICAgIHRoaXMuX0tpID0gSyAvIHRoaXMu
X1RpOwotCisgICAgdGhpcy5fS3AgPSAwOworICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxl
ci5zdGFnZXMuTUFOVUFMX0dBSU47CisgICAgCiAgICAgdGhpcy5fZW9sZCA9IDA7CiAgICAgdGhp
cy5fSSA9IDA7CiB9CiAKKy8vIFRoaXMgZW51bSB3aWxsIGJlIHVzZWQgdG8gdGVsbCB3aGV0aGVy
IHRoZSB0ZXN0IGN1cnJlbnQgb3V0cHV0IGlzIG1vdmluZyB0b3dhcmRzCisvLyB0aGUgc2V0LXBv
aW50IG9yIGF3YXkgZnJvbSBpdC4gCitQSURDb250cm9sbGVyLnlQb3NpdGlvbnMgPSB7CisgICAg
QkVGT1JFX1lTUDogMCwKKyAgICBBRlRFUl9ZU1A6IDEKK30KKworLy8gV2UgdXNlIFppZWdsZXLi
gJNOaWNob2xzIG1ldGhvZCBmb3IgdHVuaW5nIHRoZSBQSUQgY29udHJvbGxlci4gVGhlIHdvcmtm
bG93IG9mCisvLyB0aGUgUElEIGlzIHNwbGl0IGludG8gdGhyZWUgc3RhZ2VzLiBUaGUgZmlyc3Qg
dHdvIHN0YWdlcyBkZXRlcm1pbmUgdGhlIHZhbHVlcworLy8gb2YgdGhlIFBJRCBjb250cm9sbGVy
IGdhaW5zLiBEdXJpbmcgdGhlc2Ugc3RhZ2VzIHdlIHJldHVybiB0aGUgcHJvcG90aW9uYWwgdGVy
bQorLy8gb25seS4gVGhlIGxhc3Qgc3RhZ2UgaXMgYSBub3JtYWwgUElEIGNvbnRyb2xsZXIuCitQ
SURDb250cm9sbGVyLnN0YWdlcyA9IHsKKyAgICBNQU5VQUxfR0FJTjogMCwgICAgIC8vIEluY3Jl
YXNlIHRoZSB2YWx1ZSBvZiB0aGUgS3AgdW50aWwgaXQgcmVhY2hlcyB5c3AuIAorICAgIE1BTlVB
TF9USU1FOiAxLCAgICAgLy8gTWVhc3VyZSB0aGUgb3NjaWxsYXRpb24gcGVyaW9kLCBpLmUudGhl
IHRpbWUgb2YgdGhlIG92ZXJzaG90IHBlcmlvZC4KKyAgICBOT1JNQUw6IDIgICAgICAgICAgIC8v
IFJldHVybiB0aGUgdGhyZWUgY29tcG9uZW50cyBQLCBJIGFuZCBEIGZvciB0aGUgdHVuaW5nIHZh
bHVlLgorfQorCiBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiB7Ci0gICAgX3NhdDogZnVuY3Rp
b24odiwgbG93LCBoaWdoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cgOiAo
diA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJy
ZW50IHkgaXMKKyAgICAvLyAgYmVmb3JlIHlzcCA9PiAoYmVsb3cgeXNwIGlmIHlzcCA+IHkwKSB8
fCAoYWJvdmUgeXNwIGlmIHlzcCA8IHkwKQorICAgIC8vICBhZnRlciB5c3AgPT4gKGFib3ZlIHlz
cCBpZiB5c3AgPiB5MCkgfHwgKGJlbG93IHlzcCBpZiB5c3AgPCB5MCkKKyAgICBfeVBvc2l0aW9u
OiBmdW5jdGlvbih5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh5IDwgdGhpcy5feXNwKSA9PSAo
dGhpcy5feTAgPCB0aGlzLl95c3ApCisgICAgICAgICAgICA/IFBJRENvbnRyb2xsZXIueVBvc2l0
aW9ucy5CRUZPUkVfWVNQCisgICAgICAgICAgICA6IFBJRENvbnRyb2xsZXIueVBvc2l0aW9ucy5B
RlRFUl9ZU1A7CisgICAgfSwKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgdWx0aW1hdGUgZGlzdGFu
Y2UgZnJvbSB5MCBhZnRlciB0aW1lIHQuIFdlIHdhbnQgdG8gbW92ZSB2ZXJ5CisgICAgLy8gc2xv
d2x5IGF0IHRoZSBiZWdpbm5pbmcgdG8gc2VlIGhvdyBhZGRpbmcgZmV3IGl0ZW1zIHRvIHRoZSB0
ZXN0IGNhbiBhZmZlY3QKKyAgICAvLyBpdHMgb3V0cHV0LiBUaGUgY29tcGxleGl0eSBvZiBhIHNp
bmdsZSBpdGVtIG1pZ2h0IGJlIGJpZyBlbm91Z2ggdG8ga2VlcCB0aGUKKyAgICAvLyBwcm9wb3J0
aW9uYWwgZ2FpbiB2ZXJ5IHNtYWxsIGJ1dCBhY2hpZXZlcyB0aGUgZGVzaXJlZCBwcm9ncmVzcy4g
QnV0IGlmIHkgZG9lcworICAgIC8vIG5vdCBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBhZnRlciBhZGRp
bmcgZmV3IGl0ZW1zLCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBtdWNoCisgICAgLy8gYmlnZ2VyIGdh
aW4uIFNvIHdlIG5lZWQgdG8gbW92ZSBvdmVyIGEgY3ViaWMgY3VydmUgd2hpY2ggaW5jcmVhc2Vz
IHZlcnkKKyAgICAvLyBzbG93bHkgd2l0aCBzbWFsbCB0IHZhbHVlcyBidXQgbW92ZXMgdmVyeSBm
YXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVzLiAKKyAgICAvLyBUaGUgYmFzaWMgZm9ybXVsYSBpczog
eSA9IHReMworICAgIC8vIENoYW5nZSB0aGUgZm9ybXVsYSB0byByZWFjaCB5PTEgYWZ0ZXIgMTAw
MCBtczogeSA9ICh0LzEwMDApXjMKKyAgICAvLyBDaGFuZ2UgdGhlIGZvcm11bGEgdG8gcmVhY2gg
eT0oeXNwIC0geTApIGFmdGVyIDEwMDAgbXM6IHkgPSAoeXNwIC0geTApICogKHQvMTAwMCleMwor
ICAgIF9kaXN0YW5jZVVsdGltYXRlOiBmdW5jdGlvbih0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICh0aGlzLl95c3AgLSB0aGlzLl95MCkgKiBNYXRoLnBvdyh0IC8gMTAwMCwgMyk7CisgICAgfSwK
KworICAgIC8vIENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIG9mIHkgcmVsYXRpdmUgdG8geTAuIEl0
IGFsc28gZW5zdXJlcyB3ZSBkbyBub3QgcmV0dXJuCisgICAgLy8gemVybyBieSByZXR1cm5pbmcg
YSBlcHNpbG9uIHZhbHVlIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhcyB1bHRpbWF0ZSBkaXN0YW5j
ZS4KKyAgICBfZGlzdGFuY2U6IGZ1bmN0aW9uKHksIGR1KQorICAgIHsKKyAgICAgICAgY29uc3Qg
ZXBzaWxvbiA9IDAuMDAwMTsKKyAgICAgICAgdmFyIGQgID0geSAtIHRoaXMuX3kwOworICAgICAg
ICByZXR1cm4gZHUgPCAwID8gTWF0aC5taW4oZCwgLWVwc2lsb24pIDogTWF0aC5tYXgoZCwgZXBz
aWxvbik7CisgICAgfSwKKworICAgIC8vIERlY2lkZXMgaG93IG11Y2ggdGhlIHByb3BvcnRpb25h
bCBnYWluIHNob3VsZCBiZSBpbmNyZWFzZWQgZHVyaW5nIHRoZSBtYW51YWwKKyAgICAvLyBnYWlu
IHN0YWdlLiBXZSBjaG9vc2UgdG8gdXNlIHRoZSByYXRpbyBvZiB0aGUgdWx0aW1hdGUgZGlzdGFu
Y2UgdG8gdGhlIGN1cnJlbnQKKyAgICAvLyBkaXN0YW5jZSBhcyBhbiBpbmRpY2F0aW9uIG9mIGhv
dyBtdWNoIHRoZSBzeXN0ZW0gaXMgcmVzcG9uc2l2ZS4gV2Ugd2FudCAKKyAgICAvLyB0byBrZWVw
IHRoZSBpbmNyZW1lbnQgdW5kZXIgY29udHJvbCBzbyBpdCBkb2VzIG5vdCBjYXVzZSB0aGUgc3lz
dGVtIGluc3RhYmlsaXR5CisgICAgLy8gU28gd2UgY2hvb3NlIHRvIHRha2UgdGhlIG5hdHVyYWwg
bG9nYXJpdGhtIG9mIHRoaXMgcmF0aW8uCisgICAgX2dhaW5JbmNyZW1lbnQ6IGZ1bmN0aW9uKHQs
IHksIGUpCisgICAgeworICAgICAgICB2YXIgZHUgPSB0aGlzLl9kaXN0YW5jZVVsdGltYXRlKHQp
OworICAgICAgICB2YXIgZCA9IHRoaXMuX2Rpc3RhbmNlKHksIGR1KTsKKyAgICAgICAgcmV0dXJu
IE1hdGgubG9nKGR1IC8gZCkgKiAwLjE7CisgICAgfSwKKworICAgIC8vIFRoaXMgaXMgdGhlIG1h
bnVhbCBzdGFnZSBvZiB0aGUgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kLiBJdCBjb25zaXN0cyBv
ZiB0d28KKyAgICAvLyBzdWItc3RhZ2VzLiBUaGUgZmlyc3Qgc3ViLXN0YWdlIGluY3JlbWVudHMg
dGhlIHByb3BvcnRpb25hbCBnYWluIHRpbGwgdGhlCisgICAgLy8gc3lzdGVtIG91dHB1dCBwYXNz
ZXMgdGhlIHNldC1wb2ludCB2YWx1ZS4gVGhlIHNlY29uZCBzdGFnZSBtZWFzdXJlcyB0aGUKKyAg
ICAvLyBvc2NpbGxhdGlvbiBwZXJpb2QuIFdoZW4gdGhlIHNlY29uZCBzdGFnZSBpcyBkb25lLCBp
dCBjYWxjdWxhdGVzIHRoZSBpbnRlZ3JhbAorICAgIC8vIGFuZCBkZXJpdmF0aXZlIHBlcmlvZHMg
YW5kIHN3aXRjaGVzIHRoZSBjb250cm9sbGVyIG1vZGUgdG8gbm9ybWFsLgorICAgIF90dW5lTWFu
dWFsOiBmdW5jdGlvbih0LCBoLCB5LCBlKQorICAgIHsKKyAgICAgICAgaWYgKHR5cGVvZiB0aGlz
Ll95MCA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3Qg
dGltZSBhIHR1bmluZyB2YWx1ZSBpcyByZXF1aXJlZC4gV2Ugd2FudCB0aGUgdGVzdAorICAgICAg
ICAgICAgLy8gdG8gYWRkIG9ubHkgb25lIGl0ZW0uIFNvIHdlIG5lZWQgdG8gcmV0dXJuIC0xIHdo
aWNoIGZvcmNlcyB1cyB0bworICAgICAgICAgICAgLy8gY2hvb3NlIHRoZSBpbml0aWFsIHZhbHVl
IG9mIEtwIHRvIGJlID0gLTEgLyBlCisgICAgICAgICAgICB0aGlzLl95MCA9IHk7CisgICAgICAg
ICAgICB0aGlzLl9LcCA9IC0xIC8gZTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9zdGFnZSA9
PSBQSURDb250cm9sbGVyLnN0YWdlcy5NQU5VQUxfR0FJTikgeworICAgICAgICAgICAgaWYgKHRo
aXMuX3lQb3NpdGlvbih5KSA9PSBQSURDb250cm9sbGVyLnlQb3NpdGlvbnMuQkVGT1JFX1lTUCkg
eworICAgICAgICAgICAgICAgIC8vIEtlZXAgaW5jcmVtZW50aW5nIHRoZSBLcCBhcyBsb25nIGFz
IHdlIGhhdmUgbm90IHJlYWNoZWQgdGhlCisgICAgICAgICAgICAgICAgLy8gc2V0LXBvaW50IHll
dAorICAgICAgICAgICAgICAgIHRoaXMuX0twICs9IHRoaXMuX2dhaW5JbmNyZW1lbnQodCwgeSwg
ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIE5vdyB3ZSBuZWVk
IHRvIHN3aXRjaCBzdGFnZXMgc28gd2UgY2FuIG1lYXN1cmUgdGhlIG92ZXJzaG90IHRpbWUuCisg
ICAgICAgICAgICAgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5NQU5VQUxf
VElNRTsKKyAgICAgICAgICAgICAgICB0aGlzLl9LcCAvPSAyOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuX3N0YWdlID09IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk1BTlVB
TF9USU1FKSB7CisgICAgICAgICAgICBpZiAoZSA8IDAgIT0gdGhpcy5fZW9sZCA8IDApIHsKKyAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX1QwID09ICJ1bmRlZmluZWQiKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRpbWUgb2YgdGhlIGJlZ2luaW5nIG9mIHRoZSBm
aXJzdCBvdmVyc2hvdAorICAgICAgICAgICAgICAgICAgICB0aGlzLl9UMCA9IHQ7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdCBpcyB0aGUgdGltZSBv
ZiB0aGUgZW5kIG9mIHRoZSBmaXJzdCBvdmVyc2hvdAorICAgICAgICAgICAgICAgICAgICB2YXIg
VHUgPSB0IC0gdGhpcy5fVDA7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
ICAgICAvLyBDYWxjdWxhdGUgdGhlIHN5c3RlbSBwYXJhbWV0ZXJzIGZyb20gS3AgYW5kIFR1IGFz
c3VtaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIGEgInNvbWUgb3ZlcnNob290IiBjb250cm9s
IHR5cGUuIFNlZToKKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEu
b3JnL3dpa2kvWmllZ2xlciVFMiU4MCU5M05pY2hvbHNfbWV0aG9kCisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX1RpID0gVHUgLyAyOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9UZCA9IFR1
IC8gMzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fS3AgPSAwLjMzICogdGhpcy5fS3A7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuTk9S
TUFMOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHVuZU5vcm1hbChoLCB5LCBl
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBSZXR1cm4gdGhlIHByb3BvcnRpb25hbCB0ZXJtIG9ubHkuCisgICAgICAgIHJldHVybiB0
aGlzLl9LcCAqIGU7CiAgICAgfSwKLSAgICAKLSAgICB0dW5lOiBmdW5jdGlvbih5LCBoKQotICAg
IHsKLSAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KLSAgICAgICAgdmFyIGUgPSB0aGlzLl95c3Ag
LSB5OwogCisgICAgLy8gTm9ybWFsIFBJRCB0dW5pbmcgZnVuY3Rpb24uIEtwLCBUaSBhbmQgVGQg
d2VyZSBhbHJlYWR5IGNhbGN1bGF0ZWQgaW4gdGhlIAorICAgIC8vIG1hbnVhbCBzdGFnZXMuCisg
ICAgX3R1bmVOb3JtYWw6IGZ1bmN0aW9uKGgsIHksIGUpCisgICAgewogICAgICAgICAvLyBQcm9w
b3J0aW9uYWwgdGVybS4KICAgICAgICAgdmFyIFAgPSB0aGlzLl9LcCAqIGU7Ci0gICAgICAgIAor
CisgICAgICAgIC8vIEludGVncmFsIHRlcm0gaXMgdGhlIGFyZWEgdW5kZXIgdGhlIGN1cnZlIHN0
YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZworICAgICAgICAvLyB0aWxsIHRoZSBjdXJyZW50IHRp
bWUuCisgICAgICAgIHRoaXMuX0kgKz0gKHRoaXMuX0twIC8gdGhpcy5fVGkpICogKChlICsgdGhp
cy5fZW9sZCkgLyAyKSAqIGg7CisKICAgICAgICAgLy8gRGVyaXZhdGl2ZSB0ZXJtIGlzIHRoZSBz
bG9wZSBvZiB0aGUgY3VydmUgYXQgdGhlIGN1cnJlbnQgdGltZS4KLSAgICAgICAgdmFyIEQgPSB0
aGlzLl9LZCAqIChlIC0gdGhpcy5fZW9sZCkgLyBoOworICAgICAgICB2YXIgRCA9ICh0aGlzLl9L
cCAqIHRoaXMuX1RkKSAqIChlIC0gdGhpcy5fZW9sZCkgLyBoOwogCi0gICAgICAgIC8vIEludGVn
cmFsIHRlcm0gaXMgdGhlIGFyZWEgdW5kZXIgdGhlIGN1cnZlIHN0YXJ0aW5nIGZyb20gdGhlIGJl
Z2luaW5nIHRpbGwgdGhlIGN1cnJlbnQgdGltZS4KLSAgICAgICAgdGhpcy5fSSArPSB0aGlzLl9L
aSAqICgoZSArIHRoaXMuX2VvbGQpIC8gMikgKiBoOworICAgICAgICAvLyBSZXR1cm4gYSBQSUQg
dGVybS4KKyAgICAgICAgcmV0dXJuIFAgKyB0aGlzLl9JICsgRDsKKyAgICB9LAorCisgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGJlbmNobWFyayB0byB0dW5lIGl0cyB0ZXN0LiBJdCB1c2VzIFppZWds
ZXLigJNOaWNob2xzIG1ldGhvZAorICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgY29udHJvbGxlciBw
YXJhbWV0ZXJzLiBJdCB0aGVuIHJldHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgorICAgIHR1bmU6
IGZ1bmN0aW9uKHQsIGgsIHkpCisgICAgeworICAgICAgICAvLyBDdXJyZW50IGVycm9yLgorICAg
ICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CiAKLSAgICAgICAgLy8gcGlkIGNvbnRyb2xsZXIg
dmFsdWUuCi0gICAgICAgIHZhciB2ID0gUCArIEQgKyB0aGlzLl9JOwotICAgICAgICAKLSAgICAg
ICAgLy8gQXZvaWQgc3Bpa2VzIGJ5IGFwcGx5aW5nIGFjdHVhdG9yIHNhdHVyYXRpb24uCi0gICAg
ICAgIHZhciB1ID0gdGhpcy5fc2F0KHYsIHRoaXMuX3Vsb3csIHRoaXMuX3VoaWdoKTsgICAgICAg
IAorICAgICAgICAvLyBDYWxjdWxhdGluZyB0aGUgdHVuaW5nIHZhbHVlIGRlcGVuZHMgb24gdGhl
IHN0YWdlIG9mIHRoZSBjb250cm9sbGVyLgorICAgICAgICB2YXIgdSA9IHRoaXMuX3N0YWdlID09
IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk5PUk1BTCA/IHRoaXMuX3R1bmVOb3JtYWwoaCwgeSwgZSkg
OiB0aGlzLl90dW5lTWFudWFsKHQsIGgsIHksIGUpOwogCisgICAgICAgIC8vIFNhdmUgZSBmb3Ig
dGhlIG5leHQgY2FsbC4KICAgICAgICAgdGhpcy5fZW9sZCA9IGU7CiAgICAgICAgIHJldHVybiB1
OwogICAgIH0KQEAgLTIzNSwxOCArMzQ2LDE4IEBAIFBJRENvbnRyb2xsZXIucHJvdG90eXBlID0K
IAogZnVuY3Rpb24gS2FsbWFuRXN0aW1hdG9yKGluaXRYKQogewotICAgIC8vIEluaXRpYWxpemUg
c3RhdGUgdHJhbnNpdGlvbiBtYXRyaXgKKyAgICAvLyBJbml0aWFsaXplIHN0YXRlIHRyYW5zaXRp
b24gbWF0cml4LgogICAgIHRoaXMuX21hdEEgPSBNYXRyaXgzLmlkZW50aXR5KCk7CiAgICAgdGhp
cy5fbWF0QVtNYXRyaXgzLnBvcygwLCAyKV0gPSAxOwotICAgIAotICAgIC8vIEluaXRpYWxpemUg
bWVhc3VyZW1lbnQgbWF0cml4CisKKyAgICAvLyBJbml0aWFsaXplIG1lYXN1cmVtZW50IG1hdHJp
eC4KICAgICB0aGlzLl92ZWNIID0gVmVjdG9yMy56ZXJvcygpOwogICAgIHRoaXMuX3ZlY0hbMF0g
PSAxOwotICAgIAorCiAgICAgdGhpcy5fbWF0USA9IE1hdHJpeDMuaWRlbnRpdHkoKTsKICAgICB0
aGlzLl9SID0gMTAwMDsKLSAgICAKLSAgICAvLyBJbml0aWFsIHN0YXRlIGNvbmRpdGlvbnMKKwor
ICAgIC8vIEluaXRpYWwgc3RhdGUgY29uZGl0aW9ucy4KICAgICB0aGlzLl92ZWNYX2VzdCA9IFZl
Y3RvcjMuemVyb3MoKTsKICAgICB0aGlzLl92ZWNYX2VzdFswXSA9IGluaXRYOwogICAgIHRoaXMu
X21hdFBfZXN0ID0gTWF0cml4My56ZXJvcygpOwpAQCAtMjU5LDcgKzM3MCw3IEBAIEthbG1hbkVz
dGltYXRvci5wcm90b3R5cGUgPQogICAgICAgICAvLyBQcm9qZWN0IHRoZSBzdGF0ZSBhaGVhZAog
ICAgICAgICAvLyAgWF9wcmQoaykgPSBBICogWF9lc3Qoay0xKQogICAgICAgICB2YXIgdmVjWF9w
cmQgPSBNYXRyaXgzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl9tYXRBLCB0aGlzLl92ZWNYX2VzdCk7
Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFByb2plY3QgdGhlIGVycm9yIGNvdmFyaWFuY2UgYWhl
YWQKICAgICAgICAgLy8gIFBfcHJkKGspID0gQSAqIFBfZXN0KGstMSkgKiBBJyArIFEKICAgICAg
ICAgdmFyIG1hdFBfcHJkID0gTWF0cml4My5hZGQoTWF0cml4My5tdWx0aXBseU1hdHJpeDMoTWF0
cml4My5tdWx0aXBseU1hdHJpeDModGhpcy5fbWF0QSwgdGhpcy5fbWF0UF9lc3QpLCBNYXRyaXgz
LnRyYW5zcG9zZSh0aGlzLl9tYXRBKSksIHRoaXMuX21hdFEpOwpAQCAtMjcxLDExICszODIsMTEg
QEAgS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZSA9CiAgICAgICAgIHZhciB2ZWNCID0gVmVjdG9y
My5tdWx0aXBseU1hdHJpeDModGhpcy5fdmVjSCwgTWF0cml4My50cmFuc3Bvc2UobWF0UF9wcmQp
KTsKICAgICAgICAgdmFyIFMgPSBWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNCLCB0aGlzLl92
ZWNIKSArIHRoaXMuX1I7CiAgICAgICAgIHZhciB2ZWNHYWluID0gVmVjdG9yMy5zY2FsZSgxL1Ms
IHZlY0IpOwotICAgICAgICAKKwogICAgICAgICAvLyBVcGRhdGUgdGhlIGVzdGltYXRlIHZpYSB6
KGspCiAgICAgICAgIC8vICBYX2VzdChrKSA9IHhfcHJkICsgSyhrKSAqICh6KGspIC0gSCAqIFhf
cHJkKGspKTsKICAgICAgICAgdGhpcy5fdmVjWF9lc3QgPSBWZWN0b3IzLmFkZCh2ZWNYX3ByZCwg
VmVjdG9yMy5zY2FsZShjdXJyZW50IC0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModGhpcy5fdmVj
SCwgdmVjWF9wcmQpLCB2ZWNHYWluKSk7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFVwZGF0ZSB0
aGUgZXJyb3IgY292YXJpYW5jZQogICAgICAgICAvLyAgUF9lc3QoaykgPSBQX3ByZChrKSAtIEso
aykgKiBIICogUF9wcmQoayk7CiAgICAgICAgIHRoaXMuX21hdFBfZXN0ID0gTWF0cml4My5zdWJ0
cmFjdChtYXRQX3ByZCwgTWF0cml4My5zY2FsZShWZWN0b3IzLm11bHRpcGx5VmVjdG9yMyh2ZWNH
YWluLCB0aGlzLl92ZWNIKSwgbWF0UF9wcmQpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265910</attachid>
            <date>2015-11-19 15:23:58 -0800</date>
            <delta_ts>2015-11-19 16:26:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151119152346.patch</filename>
            <type>text/plain</type>
            <size>32093</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI2NjApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTExLTE5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fs
Y3VsYXRlIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdCBnYWluIGFkYXB0aXZlbHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIG5lZWQgdG8gY2FsY3Vs
YXRlIHRoZSBnYWluIG9mIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdHMgYWRhcHRpdmVseQor
ICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2FpbiBhbmQgbGltaXRzIHBhcmFtZXRlcnMgd2Ug
aGF2ZSB0byBjaG9vc2UgbWFudWFsbHkKKyAgICAgICAgZm9yIGV2ZXJ5IHRlc3QuIFdlIGFyZSBn
b2luZyB0byB1c2UgdGhlIGNsYXNzaWMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kIGZvcgorICAg
ICAgICBjYWxjdWxhdGluZyB0aGUgZ2FpbiBhbmQgaW50ZWdyYWwgYW5kIGRlcml2YXRpdmUgdGlt
ZXMuIFdlIGFyZSBnb2luZyB0bworICAgICAgICB0cnkgbW92aW5nIG9uIGEgY3ViaWMgY3VydmUg
ZHVyaW5nIHRoZSBtYW51YWwgc3RhZ2UgZnJvbSB5MCB0byByZWFjaCB5c3AuCisgICAgICAgIFdl
IGFsc28gZ29pbmcgdG8gdXNlIGEgc2F0dXJhdGlvbiBhY3R1YXRvciB0byBlbnN1cmUgdGhlIHN5
c3RlbSBkb2VzIG5vdAorICAgICAgICBmbHVjdHVhdGUuCisKKyAgICAgICAgKiBBbmltb21ldGVy
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlw
ZS5faXNOb2lzeU1lYXN1cmVtZW50KTogRml4IGEgcGFyYW1ldGVyIG5hbWUuCisgICAgICAgIChS
ZXN1bHRzVGFibGUucHJvdG90eXBlLl9pc05vaXN5VGVzdCk6IFNpbmNlIHNjb3JlIGlzIGEgbWVt
YmVyIG9mIHRlc3RSZXN1bHRzLCB3ZSBuZWVkIHRvIGxpbWl0IG91ciBzZWFyY2ggdG8gZnJhbWUg
cmF0ZSBhbmQgY29tcGxleGl0eS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3No
b3dUZXN0KTogUGFzcyB0aGUgY29ycmVjdCBwYXJhbWV0ZXIgdG8gX2lzTm9pc3lNZWFzdXJlbWVu
dCgpLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5q
czogRml4IHRoZSBpbmRlbnRhdGlvbiBhbmQgbmFtZSBhbmQgdmFsdWUgb2YgYSBzdHJpbmcuCisK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6IFJlbW92ZSBh
bGwgdGhlIG1hbnVhbCBnYWlucyBhbmQgbGltaXRzIHBhcmFtZXRlcnMgd2hpY2ggaGFkIHRvIGJl
IHBhc3NlZCB0byBldmVyeSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRTdGFnZSk6IEZpeCBhbiBlbnVtIG5hbWUuCisgICAgICAgIChCZW5jaG1hcmspOiBH
ZXQgcmlkIG9mIG1hbnVhbCBnYWluIGFuZCBsaW1pdHMuCisgICAgICAgIChCZW5jaG1hcmsucHJv
dG90eXBlLnVwZGF0ZSk6IFNpbXBsaWZ5IHRoZSBjYWxjdWxhdGlvbiBieSBoYXZpbmcgYWxsIHRo
ZSB0aW1lcyBpbiBtcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvbWF0aC5qczoKKyAgICAgICAgKFBJRENvbnRyb2xsZXIpOiBHZXQgcmlkIG9mIHRoZSBt
YW51YWwgZ2FpbiBhbmQgbGltaXRzIGFuZCB0aGUgbWFnaWMgbnVtYmVycyBmb3IgVGkgYW5kIFRk
LgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3lQb3NpdGlvbik6IFRlbGxzIHdo
ZXRoZXIgdGhlIHRlc3QgY3VycmVudCBvdXRwdXQgaXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1w
b2ludCBvciBhd2F5IGZyb20gaXQuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5f
ZGlzdGFuY2VVbHRpbWF0ZSk6IENhbGN1bGF0ZXMgdGhlIHVsdGltYXRlIGRpc3RhbmNlIGZyb20g
eTAgYWZ0ZXIgdGltZSB0IHVzaW5nIGEgY3ViaWMgZm9ybXVsYS4KKyAgICAgICAgKFBJRENvbnRy
b2xsZXIucHJvdG90eXBlLl9kaXN0YW5jZSk6IENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIG9mIHkg
cmVsYXRpdmUgdG8geTAuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fZ2Fpbklu
Y3JlbWVudCk6IERlY2lkZXMgaG93IG11Y2ggdGhlIHByb3BvcnRpb25hbCBnYWluIHNob3VsZCBi
ZSBpbmNyZWFzZWQgZHVyaW5nIHRoZSBtYW51YWwgZ2FpbiBzdGFnZS4KKyAgICAgICAgKFBJRENv
bnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVTdGFnZSk6IFVwZGF0ZXMgdGhlIHN0YWdlIG9mIHRo
ZSBjb250cm9sbGVyIGJhc2VkIG9uIGl0cyBjdXJyZW50IHN0YWdlIGFuZCB0aGUgc3lzdGVtIG91
dHB1dC4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lUCk6IFR1bmVzIHRo
ZSBzeXN0ZW0gYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBQSUQgY29udHJvbGxlciBnYWlucy4KKyAg
ICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lUElEKTogUElEIHR1bmluZyBmdW5j
dGlvbi4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lKToKKyAgICAgICAg
KFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXR1cmF0ZSk6CisgICAgICAgIChQSURDb250cm9s
bGVyLnByb3RvdHlwZS50dW5lKTogTWFuYWdlcyBjYWxjdWxhdGluZyB0aGUgY29udHJvbGxlciBw
YXJhbWV0ZXJzLiBJdCB0aGVuIHJldHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgorICAgICAgICAo
UElEQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IERlbGV0ZWQuIFdlIG1heSBuZWVkIHRvIHJl
dHVybiBpdCBiYWNrIGJ1dCB0aGUgbGltaXRzIGhhdmUgdG8gYmUgY2FsY3VsYXRlZCBhZGFwdGl2
ZWx5IG5vdCBtYW51YWxseS4gCisKIDIwMTUtMTEtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW9yZ2FuaXplIHRoZSBncmFwaGljcyBi
ZW5jaG1hcmsgc3RyaW5nIHRhYmxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAg
ICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gU3RyaW5ncy50ZXh0LnJlc3VsdHMuanNvbiArICIu
Li4iOwogICAgIH0sCiAgICAgCi0gICAgX2lzTm9pc3lNZWFzdXJlbWVudDogZnVuY3Rpb24oZXhw
ZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpCisgICAgX2lzTm9pc3lNZWFzdXJl
bWVudDogZnVuY3Rpb24oanNvbkV4cGVyaW1lbnQsIGRhdGEsIG1lYXN1cmVtZW50LCBvcHRpb25z
KQogICAgIHsKICAgICAgICAgY29uc3QgcGVyY2VudFRocmVzaG9sZCA9IDEwOwogICAgICAgICBj
b25zdCBhdmVyYWdlVGhyZXNob2xkID0gMjsKQEAgLTM2OSw3ICszNjksNyBAQCBSZXN1bHRzVGFi
bGUucHJvdG90eXBlID0KICAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNvbi5t
ZWFzdXJlbWVudHMucGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMucGVyY2VudF0gPj0gcGVyY2VudFRocmVzaG9sZDsKICAgICAgICAgICAg
IAotICAgICAgICBpZiAoZXhwZXJpbWVudCA9PSBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJh
bWVSYXRlICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFn
ZSkKKyAgICAgICAgaWYgKGpzb25FeHBlcmltZW50ID09IFN0cmluZ3MuanNvbi5leHBlcmltZW50
cy5mcmFtZVJhdGUgJiYgbWVhc3VyZW1lbnQgPT0gU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5h
dmVyYWdlKQogICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGFbU3RyaW5ncy5qc29uLm1l
YXN1cmVtZW50cy5hdmVyYWdlXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUiXSkgPj0gYXZlcmFnZVRo
cmVzaG9sZDsKIAogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzcsMTAgKzM3NywxMSBAQCBS
ZXN1bHRzVGFibGUucHJvdG90eXBlID0KIAogICAgIF9pc05vaXN5VGVzdDogZnVuY3Rpb24odGVz
dFJlc3VsdHMsIG9wdGlvbnMpCiAgICAgewotICAgICAgICBmb3IgKHZhciBleHBlcmltZW50IGlu
IHRlc3RSZXN1bHRzKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2V4cGVy
aW1lbnRdOworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgMjsgKytpbmRleCkg
eworICAgICAgICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gIWluZGV4ID8gU3RyaW5ncy5qc29u
LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHkgOiBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJhbWVS
YXRlOworICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tqc29uRXhwZXJpbWVudF07
CiAgICAgICAgICAgICBmb3IgKHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX2lzTm9pc3lNZWFzdXJlbWVudChleHBlcmltZW50LCBkYXRhLCBtZWFz
dXJlbWVudCwgb3B0aW9ucykpCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzTm9pc3lNZWFz
dXJlbWVudChqc29uRXhwZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNDIyLDkgKzQyMywxMCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KIAogICAgICAgICAg
ICAgY2FzZSAyOgogICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIHZhciBkYXRh
ID0gdGVzdFJlc3VsdHNbaW5kZXggPT0gMiA/IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21w
bGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV07CisgICAgICAgICAg
ICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gaW5kZXggPT0gMiA/IFN0cmluZ3MuanNvbi5leHBl
cmltZW50cy5jb21wbGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZTsK
KyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2pzb25FeHBlcmltZW50XTsK
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwg
MiwgdGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGluZGV4IC0gMiwgZGF0YSwgbWVhc3VyZW1lbnQs
IG9wdGlvbnMpID8gY2xhc3NOYW1lIDogIiIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9z
aG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMiwgdGhpcy5faXNOb2lzeU1l
YXN1cmVtZW50KGpzb25FeHBlcmltZW50LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9ucykgPyBj
bGFzc05hbWUgOiAiIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBjYXNlIDQ6CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3N0cmluZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTIgKzEsMTIgQEAKIHZhciBTdHJpbmdzID0gewogICAgIHRleHQ6IHsKLSAgICAgICB0
ZXN0TmFtZTogIlRlc3QgTmFtZSIsCi0gICAgICAgc2NvcmU6ICJTY29yZSIsCi0gICAgICAgc2Ft
cGxlczogIlNhbXBsZXMiLAorICAgICAgICB0ZXN0TmFtZTogIlRlc3QgTmFtZSIsCisgICAgICAg
IHNjb3JlOiAiU2NvcmUiLAorICAgICAgICBzYW1wbGVzOiAiU2FtcGxlcyIsCiAKLSAgICAgICBy
dW5uaW5nU3RhdGU6IHsKLSAgICAgICAgICAgd2FybWluZ3VwOiAiV2FybWluZyB1cCIsCi0gICAg
ICAgICAgIHNhbXBsaW5nOiAiU2FtcGxpbmciLAorICAgICAgICBydW5uaW5nU3RhdGU6IHsKKyAg
ICAgICAgICAgIHdhcm1pbmc6ICJXYXJtaW5nIiwKKyAgICAgICAgICAgIHNhbXBsaW5nOiAiU2Ft
cGxpbmciLAogICAgICAgICAgICAgZmluaXNoZWQ6ICJGaW5pc2hlZCIKICAgICAgICAgfSwKIApA
QCAtNTUsNSArNTUsNCBAQCB2YXIgU3RyaW5ncyA9IHsKICAgICAgICAgICAgIHNhbXBsaW5nVGlt
ZU9mZnNldDogInNhbXBsaW5nVGltZU9mZnNldCIKICAgICAgICAgfQogICAgIH0KLQogfTsKSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNjIsMjcg
KzYyLDI3IEBAIHZhciBTdWl0ZXMgPSBbXTsKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBz
dWl0ZSIsCiAgICAgWwogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTUmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUi
LAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFw
ZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIs
CiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNs
ZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/
cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIs
CiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCiAgICAgICAg
IH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctY3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZw
YXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRp
ZW50IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
c2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRp
ZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGlt
aXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAm
cGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAg
ICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xl
V2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5n
LnBuZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5j
aW5nIFBORyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDog
InRleHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
MTAwIiwKKyAgICAgICAgICAgIHVybDogInRleHQvbGF5ZXJpbmctdGV4dC5odG1sIiwKICAgICAg
ICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKICAgICAgICAgfSwKICAgICBdCkBAIC05
MSwyMyArOTEsMjMgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKIFN1aXRl
cy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFzIHN1aXRlIiwKICAgICBbCiAgICAgICAgIHsgCi0gICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5o
dG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9
MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgYm91bmNpbmcgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NDAmcGFy
dGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgdXJsOiAi
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdp
ZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKICAgICAgICAg
ICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKICAgICAgICAgfSwKICAg
ICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBh
cnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGll
bnQiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZh
cy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNp
cmNsZSZmaWxsPWdyYWRpZW50IiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcg
Z3JhZGllbnQgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj0w
LjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1
cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMi
CiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMDAmcmVt
b3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3Jj
PS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBh
cnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAogICAg
ICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgogICAgICAgICB9LAog
ICAgIF0KQEAgLTExNiwyMyArMTE2LDIzIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFz
IHN1aXRlIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiU1ZHIHN1aXRlIiwKICAgICBbCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
c2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xl
V2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVX
aWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAogICAgICAgICAgICAgbmFt
ZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9n
YWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9NDAmcGFydGlj
bGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgdXJsOiAiYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQw
JnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKICAgICAgICAgICAgIG5h
bWU6ICJTVkcgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCiAgICAgICAgIH0sCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWw/Z2Fpbj0wLjgmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9NCZwYXJ0aWNsZVdpZHRoPTUw
JnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1p
dD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9
ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lp
bi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMi
CiAgICAgICAgIH0sCiAgICAgXQpAQCAtMjI2LDExICsyMjYsMTEgQEAgU3VpdGVzLnB1c2gobmV3
IFN1aXRlKCJCYXNpYyBjYW52YXMgcGF0aAogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDb21wbGV4
IGV4YW1wbGVzIiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImV4YW1wbGVz
L2NhbnZhcy1lbGVjdHJvbnMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEw
IiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCIsCiAg
ICAgICAgICAgICBuYW1lOiAiY2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAgfSwKICAgICAgICAg
ewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWw/Z2Fpbj00JmFk
ZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01IiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2Nh
bnZhcy1zdGFycy5odG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgc3RhcnMiCiAgICAg
ICAgIH0sCiAgICAgXQpAQCAtMjM5LDE1ICsyMzksMTUgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRl
KCJDb21wbGV4IGV4YW1wbGVzIgogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJUZXN0IFRlbXBsYXRl
cyIsCiAgICAgWwogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0
ZS1jc3MuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUiLAorICAgICAgICAg
ICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwiLAogICAgICAgICAgICAgbmFtZTog
IkNTUyB0ZW1wbGF0ZSIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAi
dGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD0xMDAwIiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5o
dG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sP2dh
aW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSY8b3RoZXJfcGFyYW10ZXI+PTx2YWx1ZT4i
LAorICAgICAgICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwiLAogICAgICAg
ICAgICAgbmFtZTogIlNWRyB0ZW1wbGF0ZSIKICAgICAgICAgfSwKICAgICBdCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpz
CShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEgKzYsMTEgQEAgZnVuY3Rp
b24gQmVuY2htYXJrU3RhdGUodGVzdEludGVydmFsKQogCiAvLyBUaGUgZW51bSB2YWx1ZXMgYW5k
IHRoZSBtZXNzYWdlcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgb3JkZXIKIEJlbmNobWFya1N0YXRl
LnN0YWdlcyA9IHsKLSAgICBXQVJNSU5HX1VQOiAwLAorICAgIFdBUk1JTkc6IDAsCiAgICAgU0FN
UExJTkc6IDEsCiAgICAgRklOSVNIRUQ6IDIsCiAgICAgbWVzc2FnZXM6IFsgCi0gICAgICAgIFN0
cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUud2FybWluZ3VwLAorICAgICAgICBTdHJpbmdzLnRleHQu
cnVubmluZ1N0YXRlLndhcm1pbmcsCiAgICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUu
c2FtcGxpbmcsCiAgICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUuZmluaXNoZWQKICAg
ICBdCkBAIC00NSw3ICs0NSw3IEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgCiAg
ICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBzdGFn
ZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0
YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HOyBzdGFnZSA8IEJlbmNobWFya1N0YXRlLnN0
YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRU
aW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGFnZTsKICAgICAgICAgfQpAQCAtMTM2LDExICsxMzYsNyBAQCBmdW5jdGlvbiBC
ZW5jaG1hcmsob3B0aW9ucykKICAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAg
ICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOwogCi0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0
aGlzLl9vcHRpb25zWyJnYWluIl0pIHx8IDE7Ci0gICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50
KHRoaXMuX29wdGlvbnNbImFkZExpbWl0Il0pIHx8IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBh
cnNlSW50KHRoaXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhp
cy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9sbGVyKGdhaW4sIHRoaXMuX29wdGlvbnNbImZy
YW1lLXJhdGUiXSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fY29udHJvbGxlciA9
IG5ldyBQSURDb250cm9sbGVyKHRoaXMuX29wdGlvbnNbImZyYW1lLXJhdGUiXSk7CiAgICAgdGhp
cy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOwogICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNo
bWFya1N0YXRlKHRoaXMuX29wdGlvbnNbInRlc3QtaW50ZXJ2YWwiXSAqIDEwMDApOwogfQpAQCAt
MTc3LDcgKzE3Myw3IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICBlbHNlIGlmICgh
KHRoaXMuX2lzU2FtcGxpbmcgJiYgdGhpcy5fb3B0aW9uc1siZml4LXRlc3QtY29tcGxleGl0eSJd
KSkgewogICAgICAgICAgICAgLy8gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGZyYW1lUmF0ZSBh
bmQgdGVzdCBjb21wbGV4aXR5IGlzIGludmVyc2UtcHJvcG9ydGlvbmFsIHNvIHdlCiAgICAgICAg
ICAgICAvLyBuZWVkIHRvIHVzZSB0aGUgbmVnYXRpdmUgb2YgUElEQ29udHJvbGxlci50dW5lKCkg
dG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgdHVuZVZh
bHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50RnJhbWVSYXRlLCB0aW1lRGVsdGEg
LyAxMDAwKTsKKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUo
Y3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7CiAgICAgICAg
ICAgICB0dW5lVmFsdWUgPSB0dW5lVmFsdWUgPiAwID8gTWF0aC5mbG9vcih0dW5lVmFsdWUpIDog
TWF0aC5jZWlsKHR1bmVWYWx1ZSk7CiAgICAgICAgIH0KIApJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwkocmV2aXNpb24g
MTkyNTc3KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE3IEBAIHZhciBNYXRyaXggPQogICAg
IHsKICAgICAgICAgcmV0dXJuIEFycmF5KG0gKiBuKS5maWxsKHYpOwogICAgIH0sCi0gICAgCisK
ICAgICB6ZXJvczogZnVuY3Rpb24obSwgbikKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgu
aW5pdChtLCBuLCAwKTsKICAgICB9LAotICAgIAorCiAgICAgb25lczogZnVuY3Rpb24obSwgbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAxKTsKICAgICB9LAotICAg
IAorCiAgICAgaWRlbnRpdHk6IGZ1bmN0aW9uKG4pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0g
bmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKQEAgLTIyLDcgKzIyLDcgQEAgdmFyIE1hdHJpeCA9CiAg
ICAgICAgICAgICBvdXRbaSAqIG4gKyBpXSA9IDE7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAg
fSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZh
ciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVj
dG9yWyIgKyBtICogbikgKyAiXSA9IFsiOwpAQCAtMzMsMTIgKzMzLDEyIEBAIHZhciBNYXRyaXgg
PQogICAgICAgICB9ICAgICAgIAogICAgICAgICByZXR1cm4gb3V0ICsgIl0iOwogICAgIH0sCi0g
ICAgCisKICAgICBwb3M6IGZ1bmN0aW9uKG0sIGksIGopCiAgICAgewogICAgICAgICByZXR1cm4g
bSAqIGkgKyBqOwogICAgIH0sCi0gICAgCisKICAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIsIG4sIG0p
CiAgICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOwpAQCAtNDYsNyAr
NDYsNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOwog
ICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rp
b24oQSwgQiwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3Mobiwg
bSk7CkBAIC01NCw3ICs1NCw3IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2ldID0g
QVtpXSAtIEJbaV07CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfSwKLSAgICAKKwogICAgIHNj
YWxlOiBmdW5jdGlvbihzLCBBLCBuLCBtKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJp
eC56ZXJvcyhuLCBtKTsKQEAgLTYyLDE3ICs2MiwxNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAg
ICAgIG91dFtpXSA9IHMgKiBBW2ldOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAg
CisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEsIG4sIG0pCiAgICAgewogICAgICAgICB2YXIg
b3V0ID0gTWF0cml4Lnplcm9zKG0sIG4pOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyArK2opCiAgICAgICAg
ICAgICAgICAgb3V0W01hdHJpeC5wb3MobiwgaSwgaildID0gQVtNYXRyaXgucG9zKG0sIGosIGkp
XTsKLSAgICAgICAgfSAgICAgICAKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gb3V0OwogICAg
IH0sCi0gICAgCisKICAgICBtdWx0aXBseTogZnVuY3Rpb24oQSwgQiwgbiwgbSwgcCkKICAgICB7
CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CkBAIC05MywzNyArOTMsMzcg
QEAgdmFyIFZlY3RvcjMgPQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAz
KTsKICAgICB9LAotICAgIAorCiAgICAgb25lczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdHI6IGZ1bmN0
aW9uKHYpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnN0cih2LCAxLCAzKTsKICAgICB9
LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgcmV0dXJu
IE1hdHJpeC5hZGQodiwgdywgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRyYWN0OiBm
dW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdCh2LCB3
LCAxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIHYpCiAgICAg
ewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOwogICAgIH0sCi0gICAg
CisKICAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0aW9uKHYsIEEpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAg
ICBtdWx0aXBseVZlY3RvcjM6IGZ1bmN0aW9uKHYsIHcpCiAgICAgewogICAgICAgICB2YXIgb3V0
ID0gMDsKQEAgLTEzOSwxMTQgKzEzOSwzMDggQEAgdmFyIE1hdHJpeDMgPQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgaWRlbnRp
dHk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaWRlbnRpdHkoMywg
Myk7CiAgICAgfSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSkKICAgICB7CiAgICAgICAg
IHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBwb3M6IGZ1
bmN0aW9uKGksIGopCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsK
ICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE1hdHJpeC5hZGQoQSwgQiwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRy
YWN0OiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFj
dChBLCBCLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEp
CiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOwogICAgIH0s
Ci0gICAgCisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICByZXR1
cm4gTWF0cml4LnRyYW5zcG9zZShBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlw
bHlNYXRyaXgzOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5t
dWx0aXBseShBLCBCLCAzLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlWZWN0
b3IzOiBmdW5jdGlvbihBLCB2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBs
eShBLCB2LCAzLCAzLCAxKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywg
eXNwLCB1bG93LCB1aGlnaCkKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoeXNwKQogewogICAgIHRo
aXMuX3lzcCA9IHlzcDsKKyAgICB0aGlzLl9vdXQgPSAwOwogCi0gICAgdGhpcy5fVGQgPSA1Owot
ICAgIHRoaXMuX1RpID0gMTU7Ci0KLSAgICB0aGlzLl9LcCA9IEs7Ci0gICAgdGhpcy5fS2QgPSBL
IC8gdGhpcy5fVGQ7Ci0gICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7Ci0KKyAgICB0aGlzLl9L
cCA9IDA7CisgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5XQVJNSU5HOwor
ICAgIAogICAgIHRoaXMuX2VvbGQgPSAwOwogICAgIHRoaXMuX0kgPSAwOwogfQogCisvLyBUaGlz
IGVudW0gd2lsbCBiZSB1c2VkIHRvIHRlbGwgd2hldGhlciB0aGUgc3lzdGVtIG91dHB1dCAob3Ig
dGhlIGNvbnRyb2xsZXIgaW5wdXQpCisvLyBpcyBtb3ZpbmcgdG93YXJkcyB0aGUgc2V0LXBvaW50
IG9yIGF3YXkgZnJvbSBpdC4KK1BJRENvbnRyb2xsZXIueVBvc2l0aW9ucyA9IHsKKyAgICBCRUZP
UkVfWVNQOiAwLAorICAgIEFGVEVSX1lTUDogMQorfQorCisvLyBUaGUgWmllZ2xlcuKAk05pY2hv
bHMgbWV0aG9kIGZvciBpcyB1c2VkIHR1bmluZyB0aGUgUElEIGNvbnRyb2xsZXIuIFRoZSB3b3Jr
ZmxvdyBvZgorLy8gdGhlIHR1bmluZyBpcyBzcGxpdCBpbnRvIGZvdXIgc3RhZ2VzLiBUaGUgZmly
c3QgdHdvIHN0YWdlcyBkZXRlcm1pbmUgdGhlIHZhbHVlcworLy8gb2YgdGhlIFBJRCBjb250cm9s
bGVyIGdhaW5zLiBEdXJpbmcgdGhlc2UgdHdvIHN0YWdlcyB3ZSByZXR1cm4gdGhlIHByb3BvcnRp
b25hbAorLy8gdGVybSBvbmx5LiBUaGUgdGhpcmQgc3RhZ2UgaXMgdXNlZCB0byBkZXRlcm1pbmUg
dGhlIG1pbi1tYXggdmFsdWVzIG9mIHRoZSAKKy8vIHNhdHVyYXRpb24gYWN0dWF0b3IuIEluIHRo
ZSBsYXN0IHN0YWdlIGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNraW5nIGFyZSBhcHBsaWVkCisv
LyB0byBhdm9pZCBpbnRlZ3JhdG9yIHdpbmR1cC4gRHVyaW5nIHRoZSBsYXN0IHR3byBzdGFnZXMs
IHdlIHJldHVybiBhIFBJRCBjb250cm9sCisvLyB2YWx1ZS4KK1BJRENvbnRyb2xsZXIuc3RhZ2Vz
ID0geworICAgIFdBUk1JTkc6IDAsICAgICAgICAgLy8gSW5jcmVhc2UgdGhlIHZhbHVlIG9mIHRo
ZSBLcCB1bnRpbCB0aGUgc3lzdGVtIG91dHB1dCByZWFjaGVzIHlzcC4gCisgICAgT1ZFUlNIT09U
OiAxLCAgICAgICAvLyBNZWFzdXJlIHRoZSBvc2NpbGxhdGlvbiBwZXJpb2QgYW5kIHRoZSBvdmVy
c2hvb3QgdmFsdWUKKyAgICBVTkRFUlNIT09UOiAyLCAgICAgIC8vIFJldHVybiBQSUQgdmFsdWUg
YW5kIG1lYXN1cmUgdGhlIHVuZGVyc2hvb3QgdmFsdWUKKyAgICBTQVRVUkFURTogMyAgICAgICAg
IC8vIFJldHVybiBQSUQgdmFsdWUgYW5kIGFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNr
aW5nLgorfQorCiBQSURDb250cm9sbGVyLnByb3RvdHlwZSA9CiB7Ci0gICAgX3NhdDogZnVuY3Rp
b24odiwgbG93LCBoaWdoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHYgPCBsb3cgPyBsb3cgOiAo
diA+IGhpZ2ggPyBoaWdoIDogdik7CisgICAgLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJy
ZW50IHkgaXMKKyAgICAvLyAgYmVmb3JlIHlzcCA9PiAoYmVsb3cgeXNwIGlmIHlzcCA+IHkwKSB8
fCAoYWJvdmUgeXNwIGlmIHlzcCA8IHkwKQorICAgIC8vICBhZnRlciB5c3AgPT4gKGFib3ZlIHlz
cCBpZiB5c3AgPiB5MCkgfHwgKGJlbG93IHlzcCBpZiB5c3AgPCB5MCkKKyAgICBfeVBvc2l0aW9u
OiBmdW5jdGlvbih5KQorICAgIHsKKyAgICAgICAgcmV0dXJuICh5IDwgdGhpcy5feXNwKSA9PSAo
dGhpcy5feTAgPCB0aGlzLl95c3ApCisgICAgICAgICAgICA/IFBJRENvbnRyb2xsZXIueVBvc2l0
aW9ucy5CRUZPUkVfWVNQCisgICAgICAgICAgICA6IFBJRENvbnRyb2xsZXIueVBvc2l0aW9ucy5B
RlRFUl9ZU1A7CisgICAgfSwKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgdWx0aW1hdGUgZGlzdGFu
Y2UgZnJvbSB5MCBhZnRlciB0aW1lIHQuIFdlIHdhbnQgdG8gbW92ZSB2ZXJ5CisgICAgLy8gc2xv
d2x5IGF0IHRoZSBiZWdpbm5pbmcgdG8gc2VlIGhvdyBhZGRpbmcgZmV3IGl0ZW1zIHRvIHRoZSB0
ZXN0IGNhbiBhZmZlY3QKKyAgICAvLyBpdHMgb3V0cHV0LiBUaGUgY29tcGxleGl0eSBvZiBhIHNp
bmdsZSBpdGVtIG1pZ2h0IGJlIGJpZyBlbm91Z2ggdG8ga2VlcCB0aGUKKyAgICAvLyBwcm9wb3J0
aW9uYWwgZ2FpbiB2ZXJ5IHNtYWxsIGJ1dCBhY2hpZXZlcyB0aGUgZGVzaXJlZCBwcm9ncmVzcy4g
QnV0IGlmIHkgZG9lcworICAgIC8vIG5vdCBjaGFuZ2Ugc2lnbmlmaWNhbnRseSBhZnRlciBhZGRp
bmcgZmV3IGl0ZW1zLCB0aGF0IG1lYW5zIHdlIG5lZWQgYSBtdWNoCisgICAgLy8gYmlnZ2VyIGdh
aW4uIFNvIHdlIG5lZWQgdG8gbW92ZSBvdmVyIGEgY3ViaWMgY3VydmUgd2hpY2ggaW5jcmVhc2Vz
IHZlcnkKKyAgICAvLyBzbG93bHkgd2l0aCBzbWFsbCB0IHZhbHVlcyBidXQgbW92ZXMgdmVyeSBm
YXN0IHdpdGggbGFyZ2VyIHQgdmFsdWVzLiAKKyAgICAvLyBUaGUgYmFzaWMgZm9ybXVsYSBpczog
eSA9IHReMworICAgIC8vIENoYW5nZSB0aGUgZm9ybXVsYSB0byByZWFjaCB5PTEgYWZ0ZXIgMTAw
MCBtczogeSA9ICh0LzEwMDApXjMKKyAgICAvLyBDaGFuZ2UgdGhlIGZvcm11bGEgdG8gcmVhY2gg
eT0oeXNwIC0geTApIGFmdGVyIDEwMDAgbXM6IHkgPSAoeXNwIC0geTApICogKHQvMTAwMCleMwor
ICAgIF9kaXN0YW5jZVVsdGltYXRlOiBmdW5jdGlvbih0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
ICh0aGlzLl95c3AgLSB0aGlzLl95MCkgKiBNYXRoLnBvdyh0IC8gMTAwMCwgMyk7CisgICAgfSwK
KworICAgIC8vIENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIG9mIHkgcmVsYXRpdmUgdG8geTAuIEl0
IGFsc28gZW5zdXJlcyB3ZSBkbyBub3QgcmV0dXJuCisgICAgLy8gemVybyBieSByZXR1cm5pbmcg
YSBlcHNpbG9uIHZhbHVlIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhcyB1bHRpbWF0ZSBkaXN0YW5j
ZS4KKyAgICBfZGlzdGFuY2U6IGZ1bmN0aW9uKHksIGR1KQorICAgIHsKKyAgICAgICAgY29uc3Qg
ZXBzaWxvbiA9IDAuMDAwMTsKKyAgICAgICAgdmFyIGQgID0geSAtIHRoaXMuX3kwOworICAgICAg
ICByZXR1cm4gZHUgPCAwID8gTWF0aC5taW4oZCwgLWVwc2lsb24pIDogTWF0aC5tYXgoZCwgZXBz
aWxvbik7CisgICAgfSwKKworICAgIC8vIERlY2lkZXMgaG93IG11Y2ggdGhlIHByb3BvcnRpb25h
bCBnYWluIHNob3VsZCBiZSBpbmNyZWFzZWQgZHVyaW5nIHRoZSBtYW51YWwKKyAgICAvLyBnYWlu
IHN0YWdlLiBXZSBjaG9vc2UgdG8gdXNlIHRoZSByYXRpbyBvZiB0aGUgdWx0aW1hdGUgZGlzdGFu
Y2UgdG8gdGhlIGN1cnJlbnQKKyAgICAvLyBkaXN0YW5jZSBhcyBhbiBpbmRpY2F0aW9uIG9mIGhv
dyBtdWNoIHRoZSBzeXN0ZW0gaXMgcmVzcG9uc2l2ZS4gV2Ugd2FudCAKKyAgICAvLyB0byBrZWVw
IHRoZSBpbmNyZW1lbnQgdW5kZXIgY29udHJvbCBzbyBpdCBkb2VzIG5vdCBjYXVzZSB0aGUgc3lz
dGVtIGluc3RhYmlsaXR5CisgICAgLy8gU28gd2UgY2hvb3NlIHRvIHRha2UgdGhlIG5hdHVyYWwg
bG9nYXJpdGhtIG9mIHRoaXMgcmF0aW8uCisgICAgX2dhaW5JbmNyZW1lbnQ6IGZ1bmN0aW9uKHQs
IHksIGUpCisgICAgeworICAgICAgICB2YXIgZHUgPSB0aGlzLl9kaXN0YW5jZVVsdGltYXRlKHQp
OworICAgICAgICB2YXIgZCA9IHRoaXMuX2Rpc3RhbmNlKHksIGR1KTsKKyAgICAgICAgcmV0dXJu
IE1hdGgubG9nKGR1IC8gZCkgKiAwLjE7CisgICAgfSwKKworICAgIC8vIFVwZGF0ZSB0aGUgc3Rh
Z2Ugb2YgdGhlIGNvbnRyb2xsZXIgYmFzZWQgb24gaXRzIGN1cnJlbnQgc3RhZ2UgYW5kIHRoZSBz
eXN0ZW0gb3V0cHV0CisgICAgX3VwZGF0ZVN0YWdlOiBmdW5jdGlvbih5KQorICAgIHsKKyAgICAg
ICAgdmFyIHlQb3NpdGlvbiA9IHRoaXMuX3lQb3NpdGlvbih5KTsKKworICAgICAgICBzd2l0Y2gg
KHRoaXMuX3N0YWdlKSB7CisgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuV0FSTUlO
RzoKKyAgICAgICAgICAgIGlmICh5UG9zaXRpb24gPT0gUElEQ29udHJvbGxlci55UG9zaXRpb25z
LkFGVEVSX1lTUCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRyb2xsZXIu
c3RhZ2VzLk9WRVJTSE9PVDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAg
Y2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5PVkVSU0hPT1Q6CisgICAgICAgICAgICBpZiAoeVBv
c2l0aW9uID09IFBJRENvbnRyb2xsZXIueVBvc2l0aW9ucy5CRUZPUkVfWVNQKQorICAgICAgICAg
ICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuVU5ERVJTSE9PVDsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuVU5E
RVJTSE9PVDoKKyAgICAgICAgICAgIGlmICh5UG9zaXRpb24gPT0gUElEQ29udHJvbGxlci55UG9z
aXRpb25zLkFGVEVSX1lTUCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zdGFnZSA9IFBJRENvbnRy
b2xsZXIuc3RhZ2VzLlNBVFVSQVRFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICB9LAotICAgIAotICAgIHR1bmU6IGZ1bmN0aW9uKHksIGgpCisKKyAgICAvLyBNYW51YWwgdHVu
aW5nIGlzIHVzZWQgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBQSUQgY29udHJvbGxlciBnYWlucy4K
KyAgICBfdHVuZVA6IGZ1bmN0aW9uKGUpCiAgICAgewotICAgICAgICAvLyBDdXJyZW50IGVycm9y
LgotICAgICAgICB2YXIgZSA9IHRoaXMuX3lzcCAtIHk7CisgICAgICAgIC8vIFRoZSBvdXRwdXQg
aXMgdGhlIHByb3BvcnRpb25hbCB0ZXJtIG9ubHkuCisgICAgICAgIHJldHVybiB0aGlzLl9LcCAq
IGU7CisgICAgfSwKIAorICAgIC8vIFBJRCB0dW5pbmcgZnVuY3Rpb24uIEtwLCBUaSBhbmQgVGQg
d2VyZSBhbHJlYWR5IGNhbGN1bGF0ZWQKKyAgICBfdHVuZVBJRDogZnVuY3Rpb24oaCwgeSwgZSkK
KyAgICB7CiAgICAgICAgIC8vIFByb3BvcnRpb25hbCB0ZXJtLgogICAgICAgICB2YXIgUCA9IHRo
aXMuX0twICogZTsKLSAgICAgICAgCisKKyAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUg
YXJlYSB1bmRlciB0aGUgY3VydmUgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nCisgICAgICAg
IC8vIHRpbGwgdGhlIGN1cnJlbnQgdGltZS4KKyAgICAgICAgdGhpcy5fSSArPSAodGhpcy5fS3Ag
LyB0aGlzLl9UaSkgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKwogICAgICAgICAvLyBE
ZXJpdmF0aXZlIHRlcm0gaXMgdGhlIHNsb3BlIG9mIHRoZSBjdXJ2ZSBhdCB0aGUgY3VycmVudCB0
aW1lLgotICAgICAgICB2YXIgRCA9IHRoaXMuX0tkICogKGUgLSB0aGlzLl9lb2xkKSAvIGg7Cisg
ICAgICAgIHZhciBEID0gKHRoaXMuX0twICogdGhpcy5fVGQpICogKGUgLSB0aGlzLl9lb2xkKSAv
IGg7CiAKLSAgICAgICAgLy8gSW50ZWdyYWwgdGVybSBpcyB0aGUgYXJlYSB1bmRlciB0aGUgY3Vy
dmUgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5pbmcgdGlsbCB0aGUgY3VycmVudCB0aW1lLgotICAg
ICAgICB0aGlzLl9JICs9IHRoaXMuX0tpICogKChlICsgdGhpcy5fZW9sZCkgLyAyKSAqIGg7Cisg
ICAgICAgIC8vIFRoZSBvdXB1dCBpcyBhIFBJRCBmdW5jdGlvbi4KKyAgICAgICByZXR1cm4gUCAr
IHRoaXMuX0kgKyBEOworICAgIH0sCisgICAgCisgICAgLy8gQXBwbHkgZGlmZmVyZW50IHN0cmF0
ZWdpZXMgZm9yIHRoZSB0dW5pbmcgYmFzZWQgb24gdGhlIHN0YWdlIG9mIHRoZSBjb250cm9sbGVy
LgorICAgIF90dW5lOiBmdW5jdGlvbih0LCBoLCB5LCBlKQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0aGlzLl9zdGFnZSkgeworICAgICAgICBjYXNlIFBJRENvbnRyb2xsZXIuc3RhZ2VzLldBUk1J
Tkc6CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgWmllZ2xl
csOiwoBOaWNob2xzIG1ldGhvZC4gSXQgaW5jcmVtZW50cworICAgICAgICAgICAgLy8gdGhlIHBy
b3BvcnRpb25hbCBnYWluIHRpbGwgdGhlIHN5c3RlbSBvdXRwdXQgcGFzc2VzIHRoZSBzZXQtcG9p
bnQgdmFsdWUuCisgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuX3kwID09ICJ1bmRlZmluZWQi
KSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgdGltZSBhIHR1bmluZyB2
YWx1ZSBpcyByZXF1aXJlZC4gV2Ugd2FudCB0aGUgdGVzdAorICAgICAgICAgICAgICAgIC8vIHRv
IGFkZCBvbmx5IG9uZSBpdGVtLiBTbyB3ZSBuZWVkIHRvIHJldHVybiAtMSB3aGljaCBmb3JjZXMg
dXMgdG8KKyAgICAgICAgICAgICAgICAvLyBjaG9vc2UgdGhlIGluaXRpYWwgdmFsdWUgb2YgS3Ag
dG8gYmUgPSAtMSAvIGUKKyAgICAgICAgICAgICAgICB0aGlzLl95MCA9IHk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fS3AgPSAtMSAvIGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIC8vIEtlZXAgaW5jcmVtZW50aW5nIHRoZSBLcCBhcyBsb25nIGFzIHdlIGhhdmUgbm90
IHJlYWNoZWQgdGhlCisgICAgICAgICAgICAgICAgLy8gc2V0LXBvaW50IHlldAorICAgICAgICAg
ICAgICAgIHRoaXMuX0twICs9IHRoaXMuX2dhaW5JbmNyZW1lbnQodCwgeSwgZSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1bmVQKGUpOwogCi0g
ICAgICAgIC8vIHBpZCBjb250cm9sbGVyIHZhbHVlLgotICAgICAgICB2YXIgdiA9IFAgKyBEICsg
dGhpcy5fSTsKKyAgICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5PVkVSU0hPT1Q6Cisg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzZWNvbmQgc3RhZ2Ugb2YgdGhlIFppZWdsZXLDosKA
TmljaG9scyBtZXRob2QuIEl0IG1lYXN1cmVzIHRoZQorICAgICAgICAgICAgLy8gb3NjaWxsYXRp
b24gcGVyaW9kLgorICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl90MCA9PSAidW5kZWZpbmVk
IikgeworICAgICAgICAgICAgICAgIC8vIHQgaXMgdGhlIHRpbWUgb2YgdGhlIGJlZ2luaW5nIG9m
IHRoZSBmaXJzdCBvdmVyc2hvdAorICAgICAgICAgICAgICAgIHRoaXMuX3QwID0gdDsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9LcCAvPSAyOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLl90dW5lUChlKTsKKyAgICAKKyAgICAgICAgY2FzZSBQSURDb250
cm9sbGVyLnN0YWdlcy5VTkRFUlNIT09UOgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5k
IG9mIHRoZSBaaWVnbGVyw6LCgE5pY2hvbHMgbWV0aG9kLiBXZSBuZWVkIHRvIGNhbGN1bGF0ZSB0
aGUKKyAgICAgICAgICAgIC8vIGludGVncmFsIGFuZCBkZXJpdmF0aXZlIHBlcmlvZHMuCisgICAg
ICAgICAgICBpZiAodHlwZW9mIHRoaXMuX1RpID09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAg
ICAgICAgLy8gdCBpcyB0aGUgdGltZSBvZiB0aGUgZW5kIG9mIHRoZSBmaXJzdCBvdmVyc2hvdAor
ICAgICAgICAgICAgICAgIHZhciBUdSA9IHQgLSB0aGlzLl90MDsKKyAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBzeXN0ZW0gcGFyYW1ldGVycyBmcm9tIEtwIGFuZCBU
dSBhc3N1bWluZworICAgICAgICAgICAgICAgIC8vIGEgInNvbWUgb3ZlcnNob290IiBjb250cm9s
IHR5cGUuIFNlZToKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcv
d2lraS9aaWVnbGVyJUUyJTgwJTkzTmljaG9sc19tZXRob2QKKyAgICAgICAgICAgICAgICB0aGlz
Ll9UaSA9IFR1IC8gMjsKKyAgICAgICAgICAgICAgICB0aGlzLl9UZCA9IFR1IC8gMzsKKyAgICAg
ICAgICAgICAgICB0aGlzLl9LcCA9IDAuMzMgKiB0aGlzLl9LcDsKKyAgICAgICAgCisgICAgICAg
ICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSB0cmFja2luZyB0aW1lLgorICAgICAgICAgICAgICAg
IHRoaXMuX1R0ID0gTWF0aC5zcXJ0KHRoaXMuX1RpICogdGhpcy5fVGQpOworICAgICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl90dW5lUElEKGgsIHksIGUpOwor
ICAgICAgICAKKyAgICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5TQVRVUkFURToKKyAg
ICAgICAgICAgIHJldHVybiB0aGlzLl90dW5lUElEKGgsIHksIGUpOworICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICAvLyBBdm9pZCBzcGlrZXMgYnkgYXBwbHlpbmcgYWN0dWF0b3Igc2F0dXJh
dGlvbi4KLSAgICAgICAgdmFyIHUgPSB0aGlzLl9zYXQodiwgdGhpcy5fdWxvdywgdGhpcy5fdWhp
Z2gpOyAgICAgICAgCisgICAgICAgIHJldHVybiAwOworICAgIH0sCisgICAgCisgICAgLy8gRW5z
dXJlcyB0aGUgc3lzdGVtIGRvZXMgbm90IGZsdWN0dWF0ZXMuCisgICAgX3NhdHVyYXRlOiBmdW5j
dGlvbih2LCBlKQorICAgIHsKKyAgICAgICAgdmFyIHUgPSB2OworICAgICAgICAKKyAgICAgICAg
c3dpdGNoICh0aGlzLl9zdGFnZSkgeworICAgICAgICBjYXNlIFBJRENvbnRyb2xsZXIuc3RhZ2Vz
Lk9WRVJTSE9PVDoKKyAgICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5VTkRFUlNIT09U
OgorICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBtaW4tbWF4IHZhbHVlcyBvZiB0aGUgc2F0
dXJhdGlvbiBhY3R1YXRvci4KKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fbWluID09ICJ1
bmRlZmluZWQiKQorICAgICAgICAgICAgICAgIHRoaXMuX21pbiA9IHRoaXMuX21heCA9IHRoaXMu
X291dDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX21pbiA9IE1h
dGgubWluKHRoaXMuX21pbiwgdGhpcy5fb3V0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9tYXgg
PSBNYXRoLm1heCh0aGlzLl9tYXgsIHRoaXMuX291dCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgCisgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMu
U0FUVVJBVEU6CisgICAgICAgICAgICB2YXIgb3V0ID0gdGhpcy5fb3V0ICsgdTsKKyAgICAgICAg
ICAgIHZhciBtaW4gPSBNYXRoLm1pbih0aGlzLl9taW4sIHRoaXMuX21heCAqIDAuNzApOworICAg
ICAgICAgICAgdmFyIG1heCA9IHRoaXMuX21heDsKKworICAgICAgICAgICAgLy8gQ2xpcCB0aGUg
Y29udHJvbGxlciBvdXRwdXQgdG8gdGhlIG1pbi1tYXggdmFsdWVzCisgICAgICAgICAgICBvdXQg
PSBNYXRoLm1heChNYXRoLm1pbihtYXgsIG91dCksIG1pbik7CisgICAgICAgICAgICB1ID0gb3V0
IC0gdGhpcy5fb3V0OworICAgIAorICAgICAgICAgICAgLy8gQXBwbHkgdGhlIGJhY2stY2FsY3Vs
YXRpb24gYW5kIHRyYWNraW5nCisgICAgICAgICAgICBpZiAodSAhPSB2KQorICAgICAgICAgICAg
ICAgIHUgKz0gKHRoaXMuX0twICogdGhpcy5fVHQgLyB0aGlzLl9UaSkgKiBlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX291dCArPSB1Owor
ICAgICAgICByZXR1cm4gdTsKKyAgICB9LAogCisgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGJlbmNo
bWFyayB0byB0dW5lIGl0cyB0ZXN0LiBJdCB1c2VzIFppZWdsZXLigJNOaWNob2xzIG1ldGhvZAor
ICAgIC8vIHRvIGNhbGN1bGF0ZSB0aGUgY29udHJvbGxlciBwYXJhbWV0ZXJzLiBJdCB0aGVuIHJl
dHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgorICAgIHR1bmU6IGZ1bmN0aW9uKHQsIGgsIHkpCisg
ICAgeworICAgICAgICB0aGlzLl91cGRhdGVTdGFnZSh5KTsKKyAgICAgICAgCisgICAgICAgIC8v
IEN1cnJlbnQgZXJyb3IuCisgICAgICAgIHZhciBlID0gdGhpcy5feXNwIC0geTsKKyAgICAgICAg
dmFyIHYgPSB0aGlzLl90dW5lKHQsIGgsIHksIGUpOworICAgICAgICAKKyAgICAgICAgLy8gU2F2
ZSBlIGZvciB0aGUgbmV4dCBjYWxsLgogICAgICAgICB0aGlzLl9lb2xkID0gZTsKLSAgICAgICAg
cmV0dXJuIHU7CisgICAgICAgIAorICAgICAgICAvLyBBcHBseSBiYWNrLWNhbGN1bGF0aW9uIGFu
ZCB0cmFja2luZyB0byBhdm9pZCBpbnRlZ3JhdG9yIHdpbmR1cAorICAgICAgICByZXR1cm4gdGhp
cy5fc2F0dXJhdGUodiwgZSk7CiAgICAgfQogfQogCiBmdW5jdGlvbiBLYWxtYW5Fc3RpbWF0b3Io
aW5pdFgpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSBzdGF0ZSB0cmFuc2l0aW9uIG1hdHJpeAorICAg
IC8vIEluaXRpYWxpemUgc3RhdGUgdHJhbnNpdGlvbiBtYXRyaXguCiAgICAgdGhpcy5fbWF0QSA9
IE1hdHJpeDMuaWRlbnRpdHkoKTsKICAgICB0aGlzLl9tYXRBW01hdHJpeDMucG9zKDAsIDIpXSA9
IDE7Ci0gICAgCi0gICAgLy8gSW5pdGlhbGl6ZSBtZWFzdXJlbWVudCBtYXRyaXgKKworICAgIC8v
IEluaXRpYWxpemUgbWVhc3VyZW1lbnQgbWF0cml4LgogICAgIHRoaXMuX3ZlY0ggPSBWZWN0b3Iz
Lnplcm9zKCk7CiAgICAgdGhpcy5fdmVjSFswXSA9IDE7Ci0gICAgCisKICAgICB0aGlzLl9tYXRR
ID0gTWF0cml4My5pZGVudGl0eSgpOwogICAgIHRoaXMuX1IgPSAxMDAwOwotICAgIAotICAgIC8v
IEluaXRpYWwgc3RhdGUgY29uZGl0aW9ucworCisgICAgLy8gSW5pdGlhbCBzdGF0ZSBjb25kaXRp
b25zLgogICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy56ZXJvcygpOwogICAgIHRoaXMuX3Zl
Y1hfZXN0WzBdID0gaW5pdFg7CiAgICAgdGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnplcm9zKCk7
CkBAIC0yNTksNyArNDUzLDcgQEAgS2FsbWFuRXN0aW1hdG9yLnByb3RvdHlwZSA9CiAgICAgICAg
IC8vIFByb2plY3QgdGhlIHN0YXRlIGFoZWFkCiAgICAgICAgIC8vICBYX3ByZChrKSA9IEEgKiBY
X2VzdChrLTEpCiAgICAgICAgIHZhciB2ZWNYX3ByZCA9IE1hdHJpeDMubXVsdGlwbHlWZWN0b3Iz
KHRoaXMuX21hdEEsIHRoaXMuX3ZlY1hfZXN0KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gUHJv
amVjdCB0aGUgZXJyb3IgY292YXJpYW5jZSBhaGVhZAogICAgICAgICAvLyAgUF9wcmQoaykgPSBB
ICogUF9lc3Qoay0xKSAqIEEnICsgUQogICAgICAgICB2YXIgbWF0UF9wcmQgPSBNYXRyaXgzLmFk
ZChNYXRyaXgzLm11bHRpcGx5TWF0cml4MyhNYXRyaXgzLm11bHRpcGx5TWF0cml4Myh0aGlzLl9t
YXRBLCB0aGlzLl9tYXRQX2VzdCksIE1hdHJpeDMudHJhbnNwb3NlKHRoaXMuX21hdEEpKSwgdGhp
cy5fbWF0USk7CkBAIC0yNzEsMTEgKzQ2NSwxMSBAQCBLYWxtYW5Fc3RpbWF0b3IucHJvdG90eXBl
ID0KICAgICAgICAgdmFyIHZlY0IgPSBWZWN0b3IzLm11bHRpcGx5TWF0cml4Myh0aGlzLl92ZWNI
LCBNYXRyaXgzLnRyYW5zcG9zZShtYXRQX3ByZCkpOwogICAgICAgICB2YXIgUyA9IFZlY3RvcjMu
bXVsdGlwbHlWZWN0b3IzKHZlY0IsIHRoaXMuX3ZlY0gpICsgdGhpcy5fUjsKICAgICAgICAgdmFy
IHZlY0dhaW4gPSBWZWN0b3IzLnNjYWxlKDEvUywgdmVjQik7Ci0gICAgICAgIAorCiAgICAgICAg
IC8vIFVwZGF0ZSB0aGUgZXN0aW1hdGUgdmlhIHooaykKICAgICAgICAgLy8gIFhfZXN0KGspID0g
eF9wcmQgKyBLKGspICogKHooaykgLSBIICogWF9wcmQoaykpOwogICAgICAgICB0aGlzLl92ZWNY
X2VzdCA9IFZlY3RvcjMuYWRkKHZlY1hfcHJkLCBWZWN0b3IzLnNjYWxlKGN1cnJlbnQgLSBWZWN0
b3IzLm11bHRpcGx5VmVjdG9yMyh0aGlzLl92ZWNILCB2ZWNYX3ByZCksIHZlY0dhaW4pKTsKLSAg
ICAgICAgCisKICAgICAgICAgLy8gVXBkYXRlIHRoZSBlcnJvciBjb3ZhcmlhbmNlCiAgICAgICAg
IC8vICBQX2VzdChrKSA9IFBfcHJkKGspIC0gSyhrKSAqIEggKiBQX3ByZChrKTsKICAgICAgICAg
dGhpcy5fbWF0UF9lc3QgPSBNYXRyaXgzLnN1YnRyYWN0KG1hdFBfcHJkLCBNYXRyaXgzLnNjYWxl
KFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHZlY0dhaW4sIHRoaXMuX3ZlY0gpLCBtYXRQX3ByZCkp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265916</attachid>
            <date>2015-11-19 16:26:39 -0800</date>
            <delta_ts>2015-11-19 17:20:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151208-20151119162627.patch</filename>
            <type>text/plain</type>
            <size>32128</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTI2NjApCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTExLTE5ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2Fs
Y3VsYXRlIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdCBnYWluIGFkYXB0aXZlbHkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIwOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdlIG5lZWQgdG8gY2FsY3Vs
YXRlIHRoZSBnYWluIG9mIHRoZSBncmFwaGljcyBiZW5jaG1hcmsgdGVzdHMgYWRhcHRpdmVseQor
ICAgICAgICBhbmQgZ2V0IHJpZCBvZiB0aGUgZ2FpbiBhbmQgbGltaXRzIHBhcmFtZXRlcnMgd2Ug
aGF2ZSB0byBjaG9vc2UgbWFudWFsbHkKKyAgICAgICAgZm9yIGV2ZXJ5IHRlc3QuIFdlIGFyZSBn
b2luZyB0byB1c2UgdGhlIGNsYXNzaWMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kIGZvcgorICAg
ICAgICBjYWxjdWxhdGluZyB0aGUgZ2FpbiBhbmQgaW50ZWdyYWwgYW5kIGRlcml2YXRpdmUgdGlt
ZXMuIFdlIGFyZSBnb2luZyB0bworICAgICAgICB0cnkgbW92aW5nIG9uIGEgY3ViaWMgY3VydmUg
ZHVyaW5nIHRoZSBtYW51YWwgc3RhZ2UgZnJvbSB5MCB0byByZWFjaCB5c3AuCisgICAgICAgIFdl
IGFsc28gZ29pbmcgdG8gdXNlIGEgc2F0dXJhdGlvbiBhY3R1YXRvciB0byBlbnN1cmUgdGhlIHN5
c3RlbSBkb2VzIG5vdAorICAgICAgICBmbHVjdHVhdGUuCisKKyAgICAgICAgKiBBbmltb21ldGVy
L3Jlc291cmNlcy9leHRlbnNpb25zLmpzOgorICAgICAgICAoUmVzdWx0c1RhYmxlLnByb3RvdHlw
ZS5faXNOb2lzeU1lYXN1cmVtZW50KTogRml4IGEgcGFyYW1ldGVyIG5hbWUuCisgICAgICAgIChS
ZXN1bHRzVGFibGUucHJvdG90eXBlLl9pc05vaXN5VGVzdCk6IFNpbmNlIHNjb3JlIGlzIGEgbWVt
YmVyIG9mIHRlc3RSZXN1bHRzLCB3ZSBuZWVkIHRvIGxpbWl0IG91ciBzZWFyY2ggdG8gZnJhbWUg
cmF0ZSBhbmQgY29tcGxleGl0eS4KKyAgICAgICAgKFJlc3VsdHNUYWJsZS5wcm90b3R5cGUuX3No
b3dUZXN0KTogUGFzcyB0aGUgY29ycmVjdCBwYXJhbWV0ZXIgdG8gX2lzTm9pc3lNZWFzdXJlbWVu
dCgpLiAKKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci9yZXNvdXJjZXMvc3RyaW5ncy5q
czogRml4IHRoZSBpbmRlbnRhdGlvbiBhbmQgbmFtZSBhbmQgdmFsdWUgb2YgYSBzdHJpbmcuCisK
KyAgICAgICAgKiBBbmltb21ldGVyL3J1bm5lci9yZXNvdXJjZXMvdGVzdHMuanM6IFJlbW92ZSBh
bGwgdGhlIG1hbnVhbCBnYWlucyBhbmQgbGltaXRzIHBhcmFtZXRlcnMgd2hpY2ggaGFkIHRvIGJl
IHBhc3NlZCB0byBldmVyeSB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBBbmltb21ldGVyL3Rl
c3RzL3Jlc291cmNlcy9tYWluLmpzOgorICAgICAgICAoQmVuY2htYXJrU3RhdGUucHJvdG90eXBl
LmN1cnJlbnRTdGFnZSk6IEZpeCBhbiBlbnVtIG5hbWUuCisgICAgICAgIChCZW5jaG1hcmspOiBH
ZXQgcmlkIG9mIG1hbnVhbCBnYWluIGFuZCBsaW1pdHMuCisgICAgICAgIChCZW5jaG1hcmsucHJv
dG90eXBlLnVwZGF0ZSk6IFNpbXBsaWZ5IHRoZSBjYWxjdWxhdGlvbiBieSBoYXZpbmcgYWxsIHRo
ZSB0aW1lcyBpbiBtcy4KKyAgICAgICAgCisgICAgICAgICogQW5pbW9tZXRlci90ZXN0cy9yZXNv
dXJjZXMvbWF0aC5qczoKKyAgICAgICAgKFBJRENvbnRyb2xsZXIpOiBHZXQgcmlkIG9mIHRoZSBt
YW51YWwgZ2FpbiBhbmQgbGltaXRzIGFuZCB0aGUgbWFnaWMgbnVtYmVycyBmb3IgVGkgYW5kIFRk
LgorICAgICAgICAoUElEQ29udHJvbGxlci5wcm90b3R5cGUuX3lQb3NpdGlvbik6IFRlbGxzIHdo
ZXRoZXIgdGhlIHRlc3QgY3VycmVudCBvdXRwdXQgaXMgbW92aW5nIHRvd2FyZHMgdGhlIHNldC1w
b2ludCBvciBhd2F5IGZyb20gaXQuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5f
ZGlzdGFuY2VVbHRpbWF0ZSk6IENhbGN1bGF0ZXMgdGhlIHVsdGltYXRlIGRpc3RhbmNlIGZyb20g
eTAgYWZ0ZXIgdGltZSB0IHVzaW5nIGEgY3ViaWMgZm9ybXVsYS4KKyAgICAgICAgKFBJRENvbnRy
b2xsZXIucHJvdG90eXBlLl9kaXN0YW5jZSk6IENhbGN1bGF0ZXMgdGhlIGRpc3RhbmNlIG9mIHkg
cmVsYXRpdmUgdG8geTAuCisgICAgICAgIChQSURDb250cm9sbGVyLnByb3RvdHlwZS5fZ2Fpbklu
Y3JlbWVudCk6IERlY2lkZXMgaG93IG11Y2ggdGhlIHByb3BvcnRpb25hbCBnYWluIHNob3VsZCBi
ZSBpbmNyZWFzZWQgZHVyaW5nIHRoZSBtYW51YWwgZ2FpbiBzdGFnZS4KKyAgICAgICAgKFBJRENv
bnRyb2xsZXIucHJvdG90eXBlLl91cGRhdGVTdGFnZSk6IFVwZGF0ZXMgdGhlIHN0YWdlIG9mIHRo
ZSBjb250cm9sbGVyIGJhc2VkIG9uIGl0cyBjdXJyZW50IHN0YWdlIGFuZCB0aGUgc3lzdGVtIG91
dHB1dC4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lUCk6IFR1bmVzIHRo
ZSBzeXN0ZW0gYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSBQSUQgY29udHJvbGxlciBnYWlucy4KKyAg
ICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lUElEKTogUElEIHR1bmluZyBmdW5j
dGlvbi4KKyAgICAgICAgKFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl90dW5lKToKKyAgICAgICAg
KFBJRENvbnRyb2xsZXIucHJvdG90eXBlLl9zYXR1cmF0ZSk6CisgICAgICAgIChQSURDb250cm9s
bGVyLnByb3RvdHlwZS50dW5lKTogTWFuYWdlcyBjYWxjdWxhdGluZyB0aGUgY29udHJvbGxlciBw
YXJhbWV0ZXJzLiBJdCB0aGVuIHJldHVybnMgYSBQSUQgdHVuaW5nIHZhbHVlLgorICAgICAgICAo
UElEQ29udHJvbGxlci5wcm90b3R5cGUuX3NhdCk6IERlbGV0ZWQuIFdlIG1heSBuZWVkIHRvIHJl
dHVybiBpdCBiYWNrIGJ1dCB0aGUgbGltaXRzIGhhdmUgdG8gYmUgY2FsY3VsYXRlZCBhZGFwdGl2
ZWx5IG5vdCBtYW51YWxseS4gCisKIDIwMTUtMTEtMTcgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fi
b3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW9yZ2FuaXplIHRoZSBncmFwaGljcyBi
ZW5jaG1hcmsgc3RyaW5nIHRhYmxlCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL2V4dGVuc2lvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9B
bmltb21ldGVyL3Jlc291cmNlcy9leHRlbnNpb25zLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL2V4dGVuc2lvbnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTM2MSw3ICszNjEsNyBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KICAg
ICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gU3RyaW5ncy50ZXh0LnJlc3VsdHMuanNvbiArICIu
Li4iOwogICAgIH0sCiAgICAgCi0gICAgX2lzTm9pc3lNZWFzdXJlbWVudDogZnVuY3Rpb24oZXhw
ZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpCisgICAgX2lzTm9pc3lNZWFzdXJl
bWVudDogZnVuY3Rpb24oanNvbkV4cGVyaW1lbnQsIGRhdGEsIG1lYXN1cmVtZW50LCBvcHRpb25z
KQogICAgIHsKICAgICAgICAgY29uc3QgcGVyY2VudFRocmVzaG9sZCA9IDEwOwogICAgICAgICBj
b25zdCBhdmVyYWdlVGhyZXNob2xkID0gMjsKQEAgLTM2OSw3ICszNjksNyBAQCBSZXN1bHRzVGFi
bGUucHJvdG90eXBlID0KICAgICAgICAgaWYgKG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNvbi5t
ZWFzdXJlbWVudHMucGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBkYXRhW1N0cmluZ3MuanNv
bi5tZWFzdXJlbWVudHMucGVyY2VudF0gPj0gcGVyY2VudFRocmVzaG9sZDsKICAgICAgICAgICAg
IAotICAgICAgICBpZiAoZXhwZXJpbWVudCA9PSBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJh
bWVSYXRlICYmIG1lYXN1cmVtZW50ID09IFN0cmluZ3MuanNvbi5tZWFzdXJlbWVudHMuYXZlcmFn
ZSkKKyAgICAgICAgaWYgKGpzb25FeHBlcmltZW50ID09IFN0cmluZ3MuanNvbi5leHBlcmltZW50
cy5mcmFtZVJhdGUgJiYgbWVhc3VyZW1lbnQgPT0gU3RyaW5ncy5qc29uLm1lYXN1cmVtZW50cy5h
dmVyYWdlKQogICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRhdGFbU3RyaW5ncy5qc29uLm1l
YXN1cmVtZW50cy5hdmVyYWdlXSAtIG9wdGlvbnNbImZyYW1lLXJhdGUiXSkgPj0gYXZlcmFnZVRo
cmVzaG9sZDsKIAogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNzcsMTAgKzM3NywxMSBAQCBS
ZXN1bHRzVGFibGUucHJvdG90eXBlID0KIAogICAgIF9pc05vaXN5VGVzdDogZnVuY3Rpb24odGVz
dFJlc3VsdHMsIG9wdGlvbnMpCiAgICAgewotICAgICAgICBmb3IgKHZhciBleHBlcmltZW50IGlu
IHRlc3RSZXN1bHRzKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2V4cGVy
aW1lbnRdOworICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgMjsgKytpbmRleCkg
eworICAgICAgICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gIWluZGV4ID8gU3RyaW5ncy5qc29u
LmV4cGVyaW1lbnRzLmNvbXBsZXhpdHkgOiBTdHJpbmdzLmpzb24uZXhwZXJpbWVudHMuZnJhbWVS
YXRlOworICAgICAgICAgICAgdmFyIGRhdGEgPSB0ZXN0UmVzdWx0c1tqc29uRXhwZXJpbWVudF07
CiAgICAgICAgICAgICBmb3IgKHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXMuX2lzTm9pc3lNZWFzdXJlbWVudChleHBlcmltZW50LCBkYXRhLCBtZWFz
dXJlbWVudCwgb3B0aW9ucykpCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2lzTm9pc3lNZWFz
dXJlbWVudChqc29uRXhwZXJpbWVudCwgZGF0YSwgbWVhc3VyZW1lbnQsIG9wdGlvbnMpKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtNDIyLDkgKzQyMywxMCBAQCBSZXN1bHRzVGFibGUucHJvdG90eXBlID0KIAogICAgICAgICAg
ICAgY2FzZSAyOgogICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIHZhciBkYXRh
ID0gdGVzdFJlc3VsdHNbaW5kZXggPT0gMiA/IFN0cmluZ3MuanNvbi5leHBlcmltZW50cy5jb21w
bGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZV07CisgICAgICAgICAg
ICAgICAgdmFyIGpzb25FeHBlcmltZW50ID0gaW5kZXggPT0gMiA/IFN0cmluZ3MuanNvbi5leHBl
cmltZW50cy5jb21wbGV4aXR5IDogU3RyaW5ncy5qc29uLmV4cGVyaW1lbnRzLmZyYW1lUmF0ZTsK
KyAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRlc3RSZXN1bHRzW2pzb25FeHBlcmltZW50XTsK
ICAgICAgICAgICAgICAgICBmb3IgKHZhciBtZWFzdXJlbWVudCBpbiBkYXRhKQotICAgICAgICAg
ICAgICAgICAgICB0aGlzLl9zaG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwg
MiwgdGhpcy5faXNOb2lzeU1lYXN1cmVtZW50KGluZGV4IC0gMiwgZGF0YSwgbWVhc3VyZW1lbnQs
IG9wdGlvbnMpID8gY2xhc3NOYW1lIDogIiIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9z
aG93Rml4ZWROdW1iZXIocm93LCBkYXRhW21lYXN1cmVtZW50XSwgMiwgdGhpcy5faXNOb2lzeU1l
YXN1cmVtZW50KGpzb25FeHBlcmltZW50LCBkYXRhLCBtZWFzdXJlbWVudCwgb3B0aW9ucykgPyBj
bGFzc05hbWUgOiAiIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBjYXNlIDQ6CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIv
cmVzb3VyY2VzL3N0cmluZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmlt
b21ldGVyL3Jlc291cmNlcy9zdHJpbmdzLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0FuaW1vbWV0ZXIvcmVzb3VyY2VzL3N0cmluZ3MuanMJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTIgKzEsMTIgQEAKIHZhciBTdHJpbmdzID0gewogICAgIHRleHQ6IHsKLSAgICAgICB0
ZXN0TmFtZTogIlRlc3QgTmFtZSIsCi0gICAgICAgc2NvcmU6ICJTY29yZSIsCi0gICAgICAgc2Ft
cGxlczogIlNhbXBsZXMiLAorICAgICAgICB0ZXN0TmFtZTogIlRlc3QgTmFtZSIsCisgICAgICAg
IHNjb3JlOiAiU2NvcmUiLAorICAgICAgICBzYW1wbGVzOiAiU2FtcGxlcyIsCiAKLSAgICAgICBy
dW5uaW5nU3RhdGU6IHsKLSAgICAgICAgICAgd2FybWluZ3VwOiAiV2FybWluZyB1cCIsCi0gICAg
ICAgICAgIHNhbXBsaW5nOiAiU2FtcGxpbmciLAorICAgICAgICBydW5uaW5nU3RhdGU6IHsKKyAg
ICAgICAgICAgIHdhcm1pbmc6ICJXYXJtaW5nIiwKKyAgICAgICAgICAgIHNhbXBsaW5nOiAiU2Ft
cGxpbmciLAogICAgICAgICAgICAgZmluaXNoZWQ6ICJGaW5pc2hlZCIKICAgICAgICAgfSwKIApA
QCAtNTUsNSArNTUsNCBAQCB2YXIgU3RyaW5ncyA9IHsKICAgICAgICAgICAgIHNhbXBsaW5nVGlt
ZU9mZnNldDogInNhbXBsaW5nVGltZU9mZnNldCIKICAgICAgICAgfQogICAgIH0KLQogfTsKSW5k
ZXg6IFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3VyY2VzL3Rlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvQW5pbW9tZXRlci9ydW5uZXIvcmVzb3Vy
Y2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1v
bWV0ZXIvcnVubmVyL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNjIsMjcg
KzYyLDI3IEBAIHZhciBTdWl0ZXMgPSBbXTsKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiSFRNTCBz
dWl0ZSIsCiAgICAgWwogICAgICAgICB7IAotICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFy
dGljbGVzL2JvdW5jaW5nLWNzcy1zaGFwZXMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92
ZUxpbWl0PTUmcGFydGljbGVXaWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUi
LAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNzcy1zaGFw
ZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTEyJnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIs
CiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNpcmNsZXMiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmct
Y3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZwYXJ0aWNs
ZVdpZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKKyAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mtc2hhcGVzLmh0bWw/
cGFydGljbGVXaWR0aD00MCZwYXJ0aWNsZUhlaWdodD00MCZzaGFwZT1yZWN0JmNsaXA9c3RhciIs
CiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGNsaXBwZWQgcmVjdHMiCiAgICAgICAg
IH0sCiAgICAgICAgIHsgCi0gICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91
bmNpbmctY3NzLXNoYXBlcy5odG1sP2dhaW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSZw
YXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRp
ZW50IiwKKyAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3Mt
c2hhcGVzLmh0bWw/cGFydGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJj
bGUmZmlsbD1ncmFkaWVudCIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIGdyYWRp
ZW50IGNpcmNsZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJv
dW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jc3MtaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGlt
aXQ9NSZyZW1vdmVMaW1pdD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1h
Z2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3NzLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAm
cGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAg
ICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5jaW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
c3MtaW1hZ2VzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xl
V2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5n
LnBuZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY3Nz
LWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9
Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAiQ1NTIGJvdW5j
aW5nIFBORyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDog
InRleHQvbGF5ZXJpbmctdGV4dC5odG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9
MTAwIiwKKyAgICAgICAgICAgIHVybDogInRleHQvbGF5ZXJpbmctdGV4dC5odG1sIiwKICAgICAg
ICAgICAgIG5hbWU6ICJDU1MgbGF5ZXJpbmcgdGV4dCIKICAgICAgICAgfSwKICAgICBdCkBAIC05
MSwyMyArOTEsMjMgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJIVE1MIHN1aXRlIiwKIFN1aXRl
cy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFzIHN1aXRlIiwKICAgICBbCiAgICAgICAgIHsgCi0gICAg
ICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5o
dG1sP2dhaW49NCZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTEy
JnBhcnRpY2xlSGVpZ2h0PTEyJnNoYXBlPWNpcmNsZSIsCisgICAgICAgICAgICB1cmw6ICJib3Vu
Y2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLXNoYXBlcy5odG1sP3BhcnRpY2xlV2lkdGg9
MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKICAgICAgICAgICAgIG5hbWU6ICJj
YW52YXMgYm91bmNpbmcgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtc2hhcGVzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xlV2lkdGg9NDAmcGFy
dGljbGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgdXJsOiAi
Ym91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdp
ZHRoPTQwJnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKICAgICAgICAg
ICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIKICAgICAgICAgfSwKICAg
ICAgICAgeyAKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1j
YW52YXMtc2hhcGVzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBh
cnRpY2xlV2lkdGg9NTAmcGFydGljbGVIZWlnaHQ9NTAmc2hhcGU9Y2lyY2xlJmZpbGw9Z3JhZGll
bnQiLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLWNhbnZh
cy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTUwJnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNp
cmNsZSZmaWxsPWdyYWRpZW50IiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgYm91bmNpbmcg
Z3JhZGllbnQgY2lyY2xlcyIKICAgICAgICAgfSwKICAgICAgICAgeyAKLSAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj0w
LjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWln
aHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1
cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctY2FudmFzLWltYWdlcy5odG1sP3BhcnRp
Y2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15
YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1lOiAiY2FudmFzIGJvdW5jaW5nIFNWRyBpbWFnZXMi
CiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRp
Y2xlcy9ib3VuY2luZy1jYW52YXMtaW1hZ2VzLmh0bWw/Z2Fpbj00JmFkZExpbWl0PTEwMDAmcmVt
b3ZlTGltaXQ9MTAwMCZwYXJ0aWNsZVdpZHRoPTgwJnBhcnRpY2xlSGVpZ2h0PTgwJmltYWdlU3Jj
PS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAorICAgICAgICAgICAgdXJsOiAiYm91bmNpbmct
cGFydGljbGVzL2JvdW5jaW5nLWNhbnZhcy1pbWFnZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTgwJnBh
cnRpY2xlSGVpZ2h0PTgwJmltYWdlU3JjPS4uL3Jlc291cmNlcy95aW4teWFuZy5wbmciLAogICAg
ICAgICAgICAgbmFtZTogImNhbnZhcyBib3VuY2luZyBQTkcgaW1hZ2VzIgogICAgICAgICB9LAog
ICAgIF0KQEAgLTExNiwyMyArMTE2LDIzIEBAIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiQ2FudmFz
IHN1aXRlIiwKIFN1aXRlcy5wdXNoKG5ldyBTdWl0ZSgiU1ZHIHN1aXRlIiwKICAgICBbCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmct
c2hhcGVzLmh0bWw/Z2Fpbj02JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD0xMDAwJnBhcnRpY2xl
V2lkdGg9MTImcGFydGljbGVIZWlnaHQ9MTImc2hhcGU9Y2lyY2xlIiwKKyAgICAgICAgICAgIHVy
bDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFydGljbGVX
aWR0aD0xMiZwYXJ0aWNsZUhlaWdodD0xMiZzaGFwZT1jaXJjbGUiLAogICAgICAgICAgICAgbmFt
ZTogIlNWRyBib3VuY2luZyBjaXJjbGVzIiwKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAg
ICAgICAgdXJsOiAiYm91bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9n
YWluPTAuNiZhZGRMaW1pdD0xMCZyZW1vdmVMaW1pdD0xJnBhcnRpY2xlV2lkdGg9NDAmcGFydGlj
bGVIZWlnaHQ9NDAmc2hhcGU9cmVjdCZjbGlwPXN0YXIiLAorICAgICAgICAgICAgdXJsOiAiYm91
bmNpbmctcGFydGljbGVzL2JvdW5jaW5nLXN2Zy1zaGFwZXMuaHRtbD9wYXJ0aWNsZVdpZHRoPTQw
JnBhcnRpY2xlSGVpZ2h0PTQwJnNoYXBlPXJlY3QmY2xpcD1zdGFyIiwKICAgICAgICAgICAgIG5h
bWU6ICJTVkcgYm91bmNpbmcgY2xpcHBlZCByZWN0cyIsCiAgICAgICAgIH0sCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVz
Lmh0bWw/Z2Fpbj0wLjgmYWRkTGltaXQ9MTAmcmVtb3ZlTGltaXQ9NCZwYXJ0aWNsZVdpZHRoPTUw
JnBhcnRpY2xlSGVpZ2h0PTUwJnNoYXBlPWNpcmNsZSZmaWxsPWdyYWRpZW50IiwKKyAgICAgICAg
ICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctc2hhcGVzLmh0bWw/cGFy
dGljbGVXaWR0aD01MCZwYXJ0aWNsZUhlaWdodD01MCZzaGFwZT1jaXJjbGUmZmlsbD1ncmFkaWVu
dCIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIGdyYWRpZW50IGNpcmNsZXMiCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xl
cy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/Z2Fpbj0wLjQmYWRkTGltaXQ9NSZyZW1vdmVMaW1p
dD0yJnBhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3Vy
Y2VzL3lpbi15YW5nLnN2ZyIsCisgICAgICAgICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMv
Ym91bmNpbmctc3ZnLWltYWdlcy5odG1sP3BhcnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9
ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnN2ZyIsCiAgICAgICAgICAgICBuYW1l
OiAiU1ZHIGJvdW5jaW5nIFNWRyBpbWFnZXMiCiAgICAgICAgIH0sCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHVybDogImJvdW5jaW5nLXBhcnRpY2xlcy9ib3VuY2luZy1zdmctaW1hZ2VzLmh0bWw/
Z2Fpbj00JmFkZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01JnBhcnRpY2xlV2lkdGg9ODAmcGFydGlj
bGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lpbi15YW5nLnBuZyIsCisgICAgICAg
ICAgICB1cmw6ICJib3VuY2luZy1wYXJ0aWNsZXMvYm91bmNpbmctc3ZnLWltYWdlcy5odG1sP3Bh
cnRpY2xlV2lkdGg9ODAmcGFydGljbGVIZWlnaHQ9ODAmaW1hZ2VTcmM9Li4vcmVzb3VyY2VzL3lp
bi15YW5nLnBuZyIsCiAgICAgICAgICAgICBuYW1lOiAiU1ZHIGJvdW5jaW5nIFBORyBpbWFnZXMi
CiAgICAgICAgIH0sCiAgICAgXQpAQCAtMjI2LDExICsyMjYsMTEgQEAgU3VpdGVzLnB1c2gobmV3
IFN1aXRlKCJCYXNpYyBjYW52YXMgcGF0aAogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJDb21wbGV4
IGV4YW1wbGVzIiwKICAgICBbCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVybDogImV4YW1wbGVz
L2NhbnZhcy1lbGVjdHJvbnMuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTEw
IiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2NhbnZhcy1lbGVjdHJvbnMuaHRtbCIsCiAg
ICAgICAgICAgICBuYW1lOiAiY2FudmFzIGVsZWN0cm9ucyIKICAgICAgICAgfSwKICAgICAgICAg
ewotICAgICAgICAgICAgdXJsOiAiZXhhbXBsZXMvY2FudmFzLXN0YXJzLmh0bWw/Z2Fpbj00JmFk
ZExpbWl0PTEwMCZyZW1vdmVMaW1pdD01IiwKKyAgICAgICAgICAgIHVybDogImV4YW1wbGVzL2Nh
bnZhcy1zdGFycy5odG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgc3RhcnMiCiAgICAg
ICAgIH0sCiAgICAgXQpAQCAtMjM5LDE1ICsyMzksMTUgQEAgU3VpdGVzLnB1c2gobmV3IFN1aXRl
KCJDb21wbGV4IGV4YW1wbGVzIgogU3VpdGVzLnB1c2gobmV3IFN1aXRlKCJUZXN0IFRlbXBsYXRl
cyIsCiAgICAgWwogICAgICAgICB7Ci0gICAgICAgICAgICB1cmw6ICJ0ZW1wbGF0ZS90ZW1wbGF0
ZS1jc3MuaHRtbD9nYWluPTEmYWRkTGltaXQ9MTAwJnJlbW92ZUxpbWl0PTUiLAorICAgICAgICAg
ICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtY3NzLmh0bWwiLAogICAgICAgICAgICAgbmFtZTog
IkNTUyB0ZW1wbGF0ZSIKICAgICAgICAgfSwKICAgICAgICAgewotICAgICAgICAgICAgdXJsOiAi
dGVtcGxhdGUvdGVtcGxhdGUtY2FudmFzLmh0bWw/Z2Fpbj0xJmFkZExpbWl0PTEwMCZyZW1vdmVM
aW1pdD0xMDAwIiwKKyAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLWNhbnZhcy5o
dG1sIiwKICAgICAgICAgICAgIG5hbWU6ICJjYW52YXMgdGVtcGxhdGUiCiAgICAgICAgIH0sCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHVybDogInRlbXBsYXRlL3RlbXBsYXRlLXN2Zy5odG1sP2dh
aW49MSZhZGRMaW1pdD0xMDAmcmVtb3ZlTGltaXQ9NSY8b3RoZXJfcGFyYW10ZXI+PTx2YWx1ZT4i
LAorICAgICAgICAgICAgdXJsOiAidGVtcGxhdGUvdGVtcGxhdGUtc3ZnLmh0bWwiLAogICAgICAg
ICAgICAgbmFtZTogIlNWRyB0ZW1wbGF0ZSIKICAgICAgICAgfSwKICAgICBdCkluZGV4OiBQZXJm
b3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMvcmVzb3VyY2VzL21haW4uanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYWluLmpz
CShyZXZpc2lvbiAxOTI1NzcpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0FuaW1vbWV0ZXIvdGVzdHMv
cmVzb3VyY2VzL21haW4uanMJKHdvcmtpbmcgY29weSkKQEAgLTYsMTEgKzYsMTEgQEAgZnVuY3Rp
b24gQmVuY2htYXJrU3RhdGUodGVzdEludGVydmFsKQogCiAvLyBUaGUgZW51bSB2YWx1ZXMgYW5k
IHRoZSBtZXNzYWdlcyBzaG91bGQgYmUgaW4gdGhlIHNhbWUgb3JkZXIKIEJlbmNobWFya1N0YXRl
LnN0YWdlcyA9IHsKLSAgICBXQVJNSU5HX1VQOiAwLAorICAgIFdBUk1JTkc6IDAsCiAgICAgU0FN
UExJTkc6IDEsCiAgICAgRklOSVNIRUQ6IDIsCiAgICAgbWVzc2FnZXM6IFsgCi0gICAgICAgIFN0
cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUud2FybWluZ3VwLAorICAgICAgICBTdHJpbmdzLnRleHQu
cnVubmluZ1N0YXRlLndhcm1pbmcsCiAgICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUu
c2FtcGxpbmcsCiAgICAgICAgIFN0cmluZ3MudGV4dC5ydW5uaW5nU3RhdGUuZmluaXNoZWQKICAg
ICBdCkBAIC00NSw3ICs0NSw3IEBAIEJlbmNobWFya1N0YXRlLnByb3RvdHlwZSA9CiAgICAgCiAg
ICAgY3VycmVudFN0YWdlOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBmb3IgKHZhciBzdGFn
ZSA9IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HX1VQOyBzdGFnZSA8IEJlbmNobWFya1N0
YXRlLnN0YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgeworICAgICAgICBmb3IgKHZhciBzdGFnZSA9
IEJlbmNobWFya1N0YXRlLnN0YWdlcy5XQVJNSU5HOyBzdGFnZSA8IEJlbmNobWFya1N0YXRlLnN0
YWdlcy5GSU5JU0hFRDsgKytzdGFnZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRU
aW1lT2Zmc2V0IDwgdGhpcy5fdGltZU9mZnNldChzdGFnZSArIDEpKQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGFnZTsKICAgICAgICAgfQpAQCAtMTM2LDExICsxMzYsNyBAQCBmdW5jdGlvbiBC
ZW5jaG1hcmsob3B0aW9ucykKICAgICB0aGlzLl9yZWNvcmRJbnRlcnZhbCA9IDIwMDsgICAgCiAg
ICAgdGhpcy5faXNTYW1wbGluZyA9IGZhbHNlOwogCi0gICAgdmFyIGdhaW4gPSBwYXJzZUludCh0
aGlzLl9vcHRpb25zWyJnYWluIl0pIHx8IDE7Ci0gICAgdmFyIGxvd1ZhbHVlID0gLXBhcnNlSW50
KHRoaXMuX29wdGlvbnNbImFkZExpbWl0Il0pIHx8IDE7Ci0gICAgdmFyIGhpZ2hWYWx1ZSA9IHBh
cnNlSW50KHRoaXMuX29wdGlvbnNbInJlbW92ZUxpbWl0Il0pIHx8IDE7Ci0gICAgCi0gICAgdGhp
cy5fY29udHJvbGxlciA9IG5ldyBQSURDb250cm9sbGVyKGdhaW4sIHRoaXMuX29wdGlvbnNbImZy
YW1lLXJhdGUiXSwgbG93VmFsdWUsIGhpZ2hWYWx1ZSk7CisgICAgdGhpcy5fY29udHJvbGxlciA9
IG5ldyBQSURDb250cm9sbGVyKHRoaXMuX29wdGlvbnNbImZyYW1lLXJhdGUiXSk7CiAgICAgdGhp
cy5fc2FtcGxlciA9IG5ldyBTYW1wbGVyKDIpOwogICAgIHRoaXMuX3N0YXRlID0gbmV3IEJlbmNo
bWFya1N0YXRlKHRoaXMuX29wdGlvbnNbInRlc3QtaW50ZXJ2YWwiXSAqIDEwMDApOwogfQpAQCAt
MTc3LDcgKzE3Myw3IEBAIEJlbmNobWFyay5wcm90b3R5cGUgPQogICAgICAgICBlbHNlIGlmICgh
KHRoaXMuX2lzU2FtcGxpbmcgJiYgdGhpcy5fb3B0aW9uc1siZml4LXRlc3QtY29tcGxleGl0eSJd
KSkgewogICAgICAgICAgICAgLy8gVGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGZyYW1lUmF0ZSBh
bmQgdGVzdCBjb21wbGV4aXR5IGlzIGludmVyc2UtcHJvcG9ydGlvbmFsIHNvIHdlCiAgICAgICAg
ICAgICAvLyBuZWVkIHRvIHVzZSB0aGUgbmVnYXRpdmUgb2YgUElEQ29udHJvbGxlci50dW5lKCkg
dG8gY2hhbmdlIHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgdHVuZVZh
bHVlID0gLXRoaXMuX2NvbnRyb2xsZXIudHVuZShjdXJyZW50RnJhbWVSYXRlLCB0aW1lRGVsdGEg
LyAxMDAwKTsKKyAgICAgICAgICAgIHR1bmVWYWx1ZSA9IC10aGlzLl9jb250cm9sbGVyLnR1bmUo
Y3VycmVudFRpbWVPZmZzZXQsIHRpbWVEZWx0YSwgY3VycmVudEZyYW1lUmF0ZSk7CiAgICAgICAg
ICAgICB0dW5lVmFsdWUgPSB0dW5lVmFsdWUgPiAwID8gTWF0aC5mbG9vcih0dW5lVmFsdWUpIDog
TWF0aC5jZWlsKHR1bmVWYWx1ZSk7CiAgICAgICAgIH0KIApJbmRleDogUGVyZm9ybWFuY2VUZXN0
cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9tYXRoLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZv
cm1hbmNlVGVzdHMvQW5pbW9tZXRlci90ZXN0cy9yZXNvdXJjZXMvbWF0aC5qcwkocmV2aXNpb24g
MTkyNTc3KQorKysgUGVyZm9ybWFuY2VUZXN0cy9Bbmltb21ldGVyL3Rlc3RzL3Jlc291cmNlcy9t
YXRoLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDE3ICs0LDE3IEBAIHZhciBNYXRyaXggPQogICAg
IHsKICAgICAgICAgcmV0dXJuIEFycmF5KG0gKiBuKS5maWxsKHYpOwogICAgIH0sCi0gICAgCisK
ICAgICB6ZXJvczogZnVuY3Rpb24obSwgbikKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXgu
aW5pdChtLCBuLCAwKTsKICAgICB9LAotICAgIAorCiAgICAgb25lczogZnVuY3Rpb24obSwgbikK
ICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaW5pdChtLCBuLCAxKTsKICAgICB9LAotICAg
IAorCiAgICAgaWRlbnRpdHk6IGZ1bmN0aW9uKG4pCiAgICAgewogICAgICAgICB2YXIgb3V0ID0g
bmV3IE1hdHJpeC56ZXJvcyhuLCBuKTsKQEAgLTIyLDcgKzIyLDcgQEAgdmFyIE1hdHJpeCA9CiAg
ICAgICAgICAgICBvdXRbaSAqIG4gKyBpXSA9IDE7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAg
fSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSwgbiwgbSkKICAgICB7CiAgICAgICAgIHZh
ciBvdXQgPSAobSA+IDEgJiYgbiA+IDEgPyAiTWF0cml4WyIgKyBuICsgIiwgIiArIG0gOiAiVmVj
dG9yWyIgKyBtICogbikgKyAiXSA9IFsiOwpAQCAtMzMsMTIgKzMzLDEyIEBAIHZhciBNYXRyaXgg
PQogICAgICAgICB9ICAgICAgIAogICAgICAgICByZXR1cm4gb3V0ICsgIl0iOwogICAgIH0sCi0g
ICAgCisKICAgICBwb3M6IGZ1bmN0aW9uKG0sIGksIGopCiAgICAgewogICAgICAgICByZXR1cm4g
bSAqIGkgKyBqOwogICAgIH0sCi0gICAgCisKICAgICBhZGQ6IGZ1bmN0aW9uKEEsIEIsIG4sIG0p
CiAgICAgewogICAgICAgICB2YXIgb3V0ID0gTWF0cml4Lnplcm9zKG4sIG0pOwpAQCAtNDYsNyAr
NDYsNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAgICAgIG91dFtpXSA9IEFbaV0gKyBCW2ldOwog
ICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAgCisKICAgICBzdWJ0cmFjdDogZnVuY3Rp
b24oQSwgQiwgbiwgbSkKICAgICB7CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3Mobiwg
bSk7CkBAIC01NCw3ICs1NCw3IEBAIHZhciBNYXRyaXggPQogICAgICAgICAgICAgb3V0W2ldID0g
QVtpXSAtIEJbaV07CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfSwKLSAgICAKKwogICAgIHNj
YWxlOiBmdW5jdGlvbihzLCBBLCBuLCBtKQogICAgIHsKICAgICAgICAgdmFyIG91dCA9IE1hdHJp
eC56ZXJvcyhuLCBtKTsKQEAgLTYyLDE3ICs2MiwxNyBAQCB2YXIgTWF0cml4ID0KICAgICAgICAg
ICAgIG91dFtpXSA9IHMgKiBBW2ldOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0sCi0gICAg
CisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEsIG4sIG0pCiAgICAgewogICAgICAgICB2YXIg
b3V0ID0gTWF0cml4Lnplcm9zKG0sIG4pOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkgewogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyArK2opCiAgICAgICAg
ICAgICAgICAgb3V0W01hdHJpeC5wb3MobiwgaSwgaildID0gQVtNYXRyaXgucG9zKG0sIGosIGkp
XTsKLSAgICAgICAgfSAgICAgICAKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gb3V0OwogICAg
IH0sCi0gICAgCisKICAgICBtdWx0aXBseTogZnVuY3Rpb24oQSwgQiwgbiwgbSwgcCkKICAgICB7
CiAgICAgICAgIHZhciBvdXQgPSBNYXRyaXguemVyb3MobiwgcCk7CkBAIC05MywzNyArOTMsMzcg
QEAgdmFyIFZlY3RvcjMgPQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC56ZXJvcygxLCAz
KTsKICAgICB9LAotICAgIAorCiAgICAgb25lczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE1hdHJpeC5vbmVzKDEsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBzdHI6IGZ1bmN0
aW9uKHYpCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnN0cih2LCAxLCAzKTsKICAgICB9
LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgcmV0dXJu
IE1hdHJpeC5hZGQodiwgdywgMSwgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRyYWN0OiBm
dW5jdGlvbih2LCB3KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFjdCh2LCB3
LCAxLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIHYpCiAgICAg
ewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIHYsIDEsIDMpOwogICAgIH0sCi0gICAg
CisKICAgICBtdWx0aXBseU1hdHJpeDM6IGZ1bmN0aW9uKHYsIEEpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTWF0cml4Lm11bHRpcGx5KHYsIEEsIDEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAg
ICBtdWx0aXBseVZlY3RvcjM6IGZ1bmN0aW9uKHYsIHcpCiAgICAgewogICAgICAgICB2YXIgb3V0
ID0gMDsKQEAgLTEzOSwxMTQgKzEzOSwzMDggQEAgdmFyIE1hdHJpeDMgPQogICAgIHsKICAgICAg
ICAgcmV0dXJuIE1hdHJpeC56ZXJvcygzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgaWRlbnRp
dHk6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBNYXRyaXguaWRlbnRpdHkoMywg
Myk7CiAgICAgfSwKLSAgICAKKwogICAgIHN0cjogZnVuY3Rpb24oQSkKICAgICB7CiAgICAgICAg
IHJldHVybiBNYXRyaXguc3RyKEEsIDMsIDMpOwogICAgIH0sCi0gICAgCisKICAgICBwb3M6IGZ1
bmN0aW9uKGksIGopCiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnBvcygzLCBpLCBqKTsK
ICAgICB9LAotICAgIAorCiAgICAgYWRkOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAg
cmV0dXJuIE1hdHJpeC5hZGQoQSwgQiwgMywgMyk7CiAgICAgfSwKLSAgICAKKwogICAgIHN1YnRy
YWN0OiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5zdWJ0cmFj
dChBLCBCLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgc2NhbGU6IGZ1bmN0aW9uKHMsIEEp
CiAgICAgewogICAgICAgICByZXR1cm4gTWF0cml4LnNjYWxlKHMsIEEsIDMsIDMpOwogICAgIH0s
Ci0gICAgCisKICAgICB0cmFuc3Bvc2U6IGZ1bmN0aW9uKEEpCiAgICAgewogICAgICAgICByZXR1
cm4gTWF0cml4LnRyYW5zcG9zZShBLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlw
bHlNYXRyaXgzOiBmdW5jdGlvbihBLCBCKQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5t
dWx0aXBseShBLCBCLCAzLCAzLCAzKTsKICAgICB9LAotICAgIAorCiAgICAgbXVsdGlwbHlWZWN0
b3IzOiBmdW5jdGlvbihBLCB2KQogICAgIHsKICAgICAgICAgcmV0dXJuIE1hdHJpeC5tdWx0aXBs
eShBLCB2LCAzLCAzLCAxKTsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIFBJRENvbnRyb2xsZXIoSywg
eXNwLCB1bG93LCB1aGlnaCkKK2Z1bmN0aW9uIFBJRENvbnRyb2xsZXIoeXNwKQogewogICAgIHRo
aXMuX3lzcCA9IHlzcDsKKyAgICB0aGlzLl9vdXQgPSAwOwogCi0gICAgdGhpcy5fVGQgPSA1Owot
ICAgIHRoaXMuX1RpID0gMTU7Ci0KLSAgICB0aGlzLl9LcCA9IEs7Ci0gICAgdGhpcy5fS2QgPSBL
IC8gdGhpcy5fVGQ7Ci0gICAgdGhpcy5fS2kgPSBLIC8gdGhpcy5fVGk7Ci0KKyAgICB0aGlzLl9L
cCA9IDA7CisgICAgdGhpcy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5XQVJNSU5HOwor
ICAgIAogICAgIHRoaXMuX2VvbGQgPSAwOwogICAgIHRoaXMuX0kgPSAwOwogfQogCisvLyBUaGlz
IGVudW0gd2lsbCBiZSB1c2VkIHRvIHRlbGwgd2hldGhlciB0aGUgc3lzdGVtIG91dHB1dCAob3Ig
dGhlIGNvbnRyb2xsZXIgaW5wdXQpCisvLyBpcyBtb3ZpbmcgdG93YXJkcyB0aGUgc2V0LXBvaW50
IG9yIGF3YXkgZnJvbSBpdC4KK1BJRENvbnRyb2xsZXIueVBvc2l0aW9ucyA9IHsKKyAgICBCRUZP
UkVfU0VUUE9JTlQ6IDAsCisgICAgQUZURVJfU0VUUE9JTlQ6IDEKK30KKworLy8gVGhlIFppZWds
ZXLigJNOaWNob2xzIG1ldGhvZCBmb3IgaXMgdXNlZCB0dW5pbmcgdGhlIFBJRCBjb250cm9sbGVy
LiBUaGUgd29ya2Zsb3cgb2YKKy8vIHRoZSB0dW5pbmcgaXMgc3BsaXQgaW50byBmb3VyIHN0YWdl
cy4gVGhlIGZpcnN0IHR3byBzdGFnZXMgZGV0ZXJtaW5lIHRoZSB2YWx1ZXMKKy8vIG9mIHRoZSBQ
SUQgY29udHJvbGxlciBnYWlucy4gRHVyaW5nIHRoZXNlIHR3byBzdGFnZXMgd2UgcmV0dXJuIHRo
ZSBwcm9wb3J0aW9uYWwKKy8vIHRlcm0gb25seS4gVGhlIHRoaXJkIHN0YWdlIGlzIHVzZWQgdG8g
ZGV0ZXJtaW5lIHRoZSBtaW4tbWF4IHZhbHVlcyBvZiB0aGUgCisvLyBzYXR1cmF0aW9uIGFjdHVh
dG9yLiBJbiB0aGUgbGFzdCBzdGFnZSBiYWNrLWNhbGN1bGF0aW9uIGFuZCB0cmFja2luZyBhcmUg
YXBwbGllZAorLy8gdG8gYXZvaWQgaW50ZWdyYXRvciB3aW5kdXAuIER1cmluZyB0aGUgbGFzdCB0
d28gc3RhZ2VzLCB3ZSByZXR1cm4gYSBQSUQgY29udHJvbAorLy8gdmFsdWUuCitQSURDb250cm9s
bGVyLnN0YWdlcyA9IHsKKyAgICBXQVJNSU5HOiAwLCAgICAgICAgIC8vIEluY3JlYXNlIHRoZSB2
YWx1ZSBvZiB0aGUgS3AgdW50aWwgdGhlIHN5c3RlbSBvdXRwdXQgcmVhY2hlcyB5c3AuIAorICAg
IE9WRVJTSE9PVDogMSwgICAgICAgLy8gTWVhc3VyZSB0aGUgb3NjaWxsYXRpb24gcGVyaW9kIGFu
ZCB0aGUgb3ZlcnNob290IHZhbHVlCisgICAgVU5ERVJTSE9PVDogMiwgICAgICAvLyBSZXR1cm4g
UElEIHZhbHVlIGFuZCBtZWFzdXJlIHRoZSB1bmRlcnNob290IHZhbHVlCisgICAgU0FUVVJBVEU6
IDMgICAgICAgICAvLyBSZXR1cm4gUElEIHZhbHVlIGFuZCBhcHBseSBiYWNrLWNhbGN1bGF0aW9u
IGFuZCB0cmFja2luZy4KK30KKwogUElEQ29udHJvbGxlci5wcm90b3R5cGUgPQogewotICAgIF9z
YXQ6IGZ1bmN0aW9uKHYsIGxvdywgaGlnaCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2IDwgbG93
ID8gbG93IDogKHYgPiBoaWdoID8gaGlnaCA6IHYpOworICAgIC8vIERldGVybWluZXMgd2hldGhl
ciB0aGUgY3VycmVudCB5IGlzCisgICAgLy8gIGJlZm9yZSB5c3AgPT4gKGJlbG93IHlzcCBpZiB5
c3AgPiB5MCkgfHwgKGFib3ZlIHlzcCBpZiB5c3AgPCB5MCkKKyAgICAvLyAgYWZ0ZXIgeXNwID0+
IChhYm92ZSB5c3AgaWYgeXNwID4geTApIHx8IChiZWxvdyB5c3AgaWYgeXNwIDwgeTApCisgICAg
X3lQb3NpdGlvbjogZnVuY3Rpb24oeSkKKyAgICB7CisgICAgICAgIHJldHVybiAoeSA8IHRoaXMu
X3lzcCkgPT0gKHRoaXMuX3kwIDwgdGhpcy5feXNwKQorICAgICAgICAgICAgPyBQSURDb250cm9s
bGVyLnlQb3NpdGlvbnMuQkVGT1JFX1NFVFBPSU5UCisgICAgICAgICAgICA6IFBJRENvbnRyb2xs
ZXIueVBvc2l0aW9ucy5BRlRFUl9TRVRQT0lOVDsKKyAgICB9LAorCisgICAgLy8gQ2FsY3VsYXRl
IHRoZSB1bHRpbWF0ZSBkaXN0YW5jZSBmcm9tIHkwIGFmdGVyIHRpbWUgdC4gV2Ugd2FudCB0byBt
b3ZlIHZlcnkKKyAgICAvLyBzbG93bHkgYXQgdGhlIGJlZ2lubmluZyB0byBzZWUgaG93IGFkZGlu
ZyBmZXcgaXRlbXMgdG8gdGhlIHRlc3QgY2FuIGFmZmVjdAorICAgIC8vIGl0cyBvdXRwdXQuIFRo
ZSBjb21wbGV4aXR5IG9mIGEgc2luZ2xlIGl0ZW0gbWlnaHQgYmUgYmlnIGVub3VnaCB0byBrZWVw
IHRoZQorICAgIC8vIHByb3BvcnRpb25hbCBnYWluIHZlcnkgc21hbGwgYnV0IGFjaGlldmVzIHRo
ZSBkZXNpcmVkIHByb2dyZXNzLiBCdXQgaWYgeSBkb2VzCisgICAgLy8gbm90IGNoYW5nZSBzaWdu
aWZpY2FudGx5IGFmdGVyIGFkZGluZyBmZXcgaXRlbXMsIHRoYXQgbWVhbnMgd2UgbmVlZCBhIG11
Y2gKKyAgICAvLyBiaWdnZXIgZ2Fpbi4gU28gd2UgbmVlZCB0byBtb3ZlIG92ZXIgYSBjdWJpYyBj
dXJ2ZSB3aGljaCBpbmNyZWFzZXMgdmVyeQorICAgIC8vIHNsb3dseSB3aXRoIHNtYWxsIHQgdmFs
dWVzIGJ1dCBtb3ZlcyB2ZXJ5IGZhc3Qgd2l0aCBsYXJnZXIgdCB2YWx1ZXMuIAorICAgIC8vIFRo
ZSBiYXNpYyBmb3JtdWxhIGlzOiB5ID0gdF4zCisgICAgLy8gQ2hhbmdlIHRoZSBmb3JtdWxhIHRv
IHJlYWNoIHk9MSBhZnRlciAxMDAwIG1zOiB5ID0gKHQvMTAwMCleMworICAgIC8vIENoYW5nZSB0
aGUgZm9ybXVsYSB0byByZWFjaCB5PSh5c3AgLSB5MCkgYWZ0ZXIgMTAwMCBtczogeSA9ICh5c3Ag
LSB5MCkgKiAodC8xMDAwKV4zCisgICAgX2Rpc3RhbmNlVWx0aW1hdGU6IGZ1bmN0aW9uKHQpCisg
ICAgeworICAgICAgICByZXR1cm4gKHRoaXMuX3lzcCAtIHRoaXMuX3kwKSAqIE1hdGgucG93KHQg
LyAxMDAwLCAzKTsKKyAgICB9LAorCisgICAgLy8gQ2FsY3VsYXRlcyB0aGUgZGlzdGFuY2Ugb2Yg
eSByZWxhdGl2ZSB0byB5MC4gSXQgYWxzbyBlbnN1cmVzIHdlIGRvIG5vdCByZXR1cm4KKyAgICAv
LyB6ZXJvIGJ5IHJldHVybmluZyBhIGVwc2lsb24gdmFsdWUgaW4gdGhlIHNhbWUgZGlyZWN0aW9u
IGFzIHVsdGltYXRlIGRpc3RhbmNlLgorICAgIF9kaXN0YW5jZTogZnVuY3Rpb24oeSwgZHUpCisg
ICAgeworICAgICAgICBjb25zdCBlcHNpbG9uID0gMC4wMDAxOworICAgICAgICB2YXIgZCAgPSB5
IC0gdGhpcy5feTA7CisgICAgICAgIHJldHVybiBkdSA8IDAgPyBNYXRoLm1pbihkLCAtZXBzaWxv
bikgOiBNYXRoLm1heChkLCBlcHNpbG9uKTsKKyAgICB9LAorCisgICAgLy8gRGVjaWRlcyBob3cg
bXVjaCB0aGUgcHJvcG9ydGlvbmFsIGdhaW4gc2hvdWxkIGJlIGluY3JlYXNlZCBkdXJpbmcgdGhl
IG1hbnVhbAorICAgIC8vIGdhaW4gc3RhZ2UuIFdlIGNob29zZSB0byB1c2UgdGhlIHJhdGlvIG9m
IHRoZSB1bHRpbWF0ZSBkaXN0YW5jZSB0byB0aGUgY3VycmVudAorICAgIC8vIGRpc3RhbmNlIGFz
IGFuIGluZGljYXRpb24gb2YgaG93IG11Y2ggdGhlIHN5c3RlbSBpcyByZXNwb25zaXZlLiBXZSB3
YW50IAorICAgIC8vIHRvIGtlZXAgdGhlIGluY3JlbWVudCB1bmRlciBjb250cm9sIHNvIGl0IGRv
ZXMgbm90IGNhdXNlIHRoZSBzeXN0ZW0gaW5zdGFiaWxpdHkKKyAgICAvLyBTbyB3ZSBjaG9vc2Ug
dG8gdGFrZSB0aGUgbmF0dXJhbCBsb2dhcml0aG0gb2YgdGhpcyByYXRpby4KKyAgICBfZ2Fpbklu
Y3JlbWVudDogZnVuY3Rpb24odCwgeSwgZSkKKyAgICB7CisgICAgICAgIHZhciBkdSA9IHRoaXMu
X2Rpc3RhbmNlVWx0aW1hdGUodCk7CisgICAgICAgIHZhciBkID0gdGhpcy5fZGlzdGFuY2UoeSwg
ZHUpOworICAgICAgICByZXR1cm4gTWF0aC5sb2coZHUgLyBkKSAqIDAuMTsKKyAgICB9LAorCisg
ICAgLy8gVXBkYXRlIHRoZSBzdGFnZSBvZiB0aGUgY29udHJvbGxlciBiYXNlZCBvbiBpdHMgY3Vy
cmVudCBzdGFnZSBhbmQgdGhlIHN5c3RlbSBvdXRwdXQKKyAgICBfdXBkYXRlU3RhZ2U6IGZ1bmN0
aW9uKHkpCisgICAgeworICAgICAgICB2YXIgeVBvc2l0aW9uID0gdGhpcy5feVBvc2l0aW9uKHkp
OworCisgICAgICAgIHN3aXRjaCAodGhpcy5fc3RhZ2UpIHsKKyAgICAgICAgY2FzZSBQSURDb250
cm9sbGVyLnN0YWdlcy5XQVJNSU5HOgorICAgICAgICAgICAgaWYgKHlQb3NpdGlvbiA9PSBQSURD
b250cm9sbGVyLnlQb3NpdGlvbnMuQUZURVJfU0VUUE9JTlQpCisgICAgICAgICAgICAgICAgdGhp
cy5fc3RhZ2UgPSBQSURDb250cm9sbGVyLnN0YWdlcy5PVkVSU0hPT1Q7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgCisgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuT1ZFUlNI
T09UOgorICAgICAgICAgICAgaWYgKHlQb3NpdGlvbiA9PSBQSURDb250cm9sbGVyLnlQb3NpdGlv
bnMuQkVGT1JFX1NFVFBPSU5UKQorICAgICAgICAgICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29u
dHJvbGxlci5zdGFnZXMuVU5ERVJTSE9PVDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuVU5ERVJTSE9PVDoKKyAgICAgICAgICAgIGlmICh5
UG9zaXRpb24gPT0gUElEQ29udHJvbGxlci55UG9zaXRpb25zLkFGVEVSX1NFVFBPSU5UKQorICAg
ICAgICAgICAgICAgIHRoaXMuX3N0YWdlID0gUElEQ29udHJvbGxlci5zdGFnZXMuU0FUVVJBVEU7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0sCi0gICAgCi0gICAgdHVuZTog
ZnVuY3Rpb24oeSwgaCkKKworICAgIC8vIE1hbnVhbCB0dW5pbmcgaXMgdXNlZCBiZWZvcmUgY2Fs
Y3VsYXRpbmcgdGhlIFBJRCBjb250cm9sbGVyIGdhaW5zLgorICAgIF90dW5lUDogZnVuY3Rpb24o
ZSkKICAgICB7Ci0gICAgICAgIC8vIEN1cnJlbnQgZXJyb3IuCi0gICAgICAgIHZhciBlID0gdGhp
cy5feXNwIC0geTsKKyAgICAgICAgLy8gVGhlIG91dHB1dCBpcyB0aGUgcHJvcG9ydGlvbmFsIHRl
cm0gb25seS4KKyAgICAgICAgcmV0dXJuIHRoaXMuX0twICogZTsKKyAgICB9LAogCisgICAgLy8g
UElEIHR1bmluZyBmdW5jdGlvbi4gS3AsIFRpIGFuZCBUZCB3ZXJlIGFscmVhZHkgY2FsY3VsYXRl
ZAorICAgIF90dW5lUElEOiBmdW5jdGlvbihoLCB5LCBlKQorICAgIHsKICAgICAgICAgLy8gUHJv
cG9ydGlvbmFsIHRlcm0uCiAgICAgICAgIHZhciBQID0gdGhpcy5fS3AgKiBlOwotICAgICAgICAK
KworICAgICAgICAvLyBJbnRlZ3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBz
dGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcKKyAgICAgICAgLy8gdGlsbCB0aGUgY3VycmVudCB0
aW1lLgorICAgICAgICB0aGlzLl9JICs9ICh0aGlzLl9LcCAvIHRoaXMuX1RpKSAqICgoZSArIHRo
aXMuX2VvbGQpIC8gMikgKiBoOworCiAgICAgICAgIC8vIERlcml2YXRpdmUgdGVybSBpcyB0aGUg
c2xvcGUgb2YgdGhlIGN1cnZlIGF0IHRoZSBjdXJyZW50IHRpbWUuCi0gICAgICAgIHZhciBEID0g
dGhpcy5fS2QgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKKyAgICAgICAgdmFyIEQgPSAodGhpcy5f
S3AgKiB0aGlzLl9UZCkgKiAoZSAtIHRoaXMuX2VvbGQpIC8gaDsKIAotICAgICAgICAvLyBJbnRl
Z3JhbCB0ZXJtIGlzIHRoZSBhcmVhIHVuZGVyIHRoZSBjdXJ2ZSBzdGFydGluZyBmcm9tIHRoZSBi
ZWdpbmluZyB0aWxsIHRoZSBjdXJyZW50IHRpbWUuCi0gICAgICAgIHRoaXMuX0kgKz0gdGhpcy5f
S2kgKiAoKGUgKyB0aGlzLl9lb2xkKSAvIDIpICogaDsKKyAgICAgICAgLy8gVGhlIG91cHV0IGlz
IGEgUElEIGZ1bmN0aW9uLgorICAgICAgIHJldHVybiBQICsgdGhpcy5fSSArIEQ7CisgICAgfSwK
KyAgICAKKyAgICAvLyBBcHBseSBkaWZmZXJlbnQgc3RyYXRlZ2llcyBmb3IgdGhlIHR1bmluZyBi
YXNlZCBvbiB0aGUgc3RhZ2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgICAgX3R1bmU6IGZ1bmN0aW9u
KHQsIGgsIHksIGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3N0YWdlKSB7CisgICAg
ICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuV0FSTUlORzoKKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGZpcnN0IHN0YWdlIG9mIHRoZSBaaWVnbGVyw6LCgE5pY2hvbHMgbWV0aG9kLiBJ
dCBpbmNyZW1lbnRzCisgICAgICAgICAgICAvLyB0aGUgcHJvcG9ydGlvbmFsIGdhaW4gdGlsbCB0
aGUgc3lzdGVtIG91dHB1dCBwYXNzZXMgdGhlIHNldC1wb2ludCB2YWx1ZS4KKyAgICAgICAgICAg
IGlmICh0eXBlb2YgdGhpcy5feTAgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBmaXJzdCB0aW1lIGEgdHVuaW5nIHZhbHVlIGlzIHJlcXVpcmVkLiBXZSB3
YW50IHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgLy8gdG8gYWRkIG9ubHkgb25lIGl0ZW0uIFNv
IHdlIG5lZWQgdG8gcmV0dXJuIC0xIHdoaWNoIGZvcmNlcyB1cyB0bworICAgICAgICAgICAgICAg
IC8vIGNob29zZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBLcCB0byBiZSA9IC0xIC8gZQorICAgICAg
ICAgICAgICAgIHRoaXMuX3kwID0geTsKKyAgICAgICAgICAgICAgICB0aGlzLl9LcCA9IC0xIC8g
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gS2VlcCBpbmNyZW1l
bnRpbmcgdGhlIEtwIGFzIGxvbmcgYXMgd2UgaGF2ZSBub3QgcmVhY2hlZCB0aGUKKyAgICAgICAg
ICAgICAgICAvLyBzZXQtcG9pbnQgeWV0CisgICAgICAgICAgICAgICAgdGhpcy5fS3AgKz0gdGhp
cy5fZ2FpbkluY3JlbWVudCh0LCB5LCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fdHVuZVAoZSk7CiAKLSAgICAgICAgLy8gcGlkIGNvbnRyb2xs
ZXIgdmFsdWUuCi0gICAgICAgIHZhciB2ID0gUCArIEQgKyB0aGlzLl9JOworICAgICAgICBjYXNl
IFBJRENvbnRyb2xsZXIuc3RhZ2VzLk9WRVJTSE9PVDoKKyAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIHNlY29uZCBzdGFnZSBvZiB0aGUgWmllZ2xlcsOiwoBOaWNob2xzIG1ldGhvZC4gSXQgbWVh
c3VyZXMgdGhlCisgICAgICAgICAgICAvLyBvc2NpbGxhdGlvbiBwZXJpb2QuCisgICAgICAgICAg
ICBpZiAodHlwZW9mIHRoaXMuX3QwID09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAg
Ly8gdCBpcyB0aGUgdGltZSBvZiB0aGUgYmVnaW5pbmcgb2YgdGhlIGZpcnN0IG92ZXJzaG90Cisg
ICAgICAgICAgICAgICAgdGhpcy5fdDAgPSB0OworICAgICAgICAgICAgICAgIHRoaXMuX0twIC89
IDI7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3R1
bmVQKGUpOworICAgIAorICAgICAgICBjYXNlIFBJRENvbnRyb2xsZXIuc3RhZ2VzLlVOREVSU0hP
T1Q6CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBlbmQgb2YgdGhlIFppZWdsZXLDosKATmlj
aG9scyBtZXRob2QuIFdlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZQorICAgICAgICAgICAgLy8gaW50
ZWdyYWwgYW5kIGRlcml2YXRpdmUgcGVyaW9kcy4KKyAgICAgICAgICAgIGlmICh0eXBlb2YgdGhp
cy5fVGkgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgICAgICAvLyB0IGlzIHRoZSB0aW1l
IG9mIHRoZSBlbmQgb2YgdGhlIGZpcnN0IG92ZXJzaG90CisgICAgICAgICAgICAgICAgdmFyIFR1
ID0gdCAtIHRoaXMuX3QwOworICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUg
dGhlIHN5c3RlbSBwYXJhbWV0ZXJzIGZyb20gS3AgYW5kIFR1IGFzc3VtaW5nCisgICAgICAgICAg
ICAgICAgLy8gYSAic29tZSBvdmVyc2hvb3QiIGNvbnRyb2wgdHlwZS4gU2VlOgorICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ppZWdsZXIlRTIlODAlOTNO
aWNob2xzX21ldGhvZAorICAgICAgICAgICAgICAgIHRoaXMuX1RpID0gVHUgLyAyOworICAgICAg
ICAgICAgICAgIHRoaXMuX1RkID0gVHUgLyAzOworICAgICAgICAgICAgICAgIHRoaXMuX0twID0g
MC4zMyAqIHRoaXMuX0twOworICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBDYWxjdWxhdGUg
dGhlIHRyYWNraW5nIHRpbWUuCisgICAgICAgICAgICAgICAgdGhpcy5fVHQgPSBNYXRoLnNxcnQo
dGhpcy5fVGkgKiB0aGlzLl9UZCk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX3R1bmVQSUQoaCwgeSwgZSk7CisgICAgICAgIAorICAgICAgICBjYXNl
IFBJRENvbnRyb2xsZXIuc3RhZ2VzLlNBVFVSQVRFOgorICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3R1bmVQSUQoaCwgeSwgZSk7CisgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIEF2b2lk
IHNwaWtlcyBieSBhcHBseWluZyBhY3R1YXRvciBzYXR1cmF0aW9uLgotICAgICAgICB2YXIgdSA9
IHRoaXMuX3NhdCh2LCB0aGlzLl91bG93LCB0aGlzLl91aGlnaCk7ICAgICAgICAKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfSwKKyAgICAKKyAgICAvLyBFbnN1cmVzIHRoZSBzeXN0ZW0gZG9lcyBu
b3QgZmx1Y3R1YXRlcy4KKyAgICBfc2F0dXJhdGU6IGZ1bmN0aW9uKHYsIGUpCisgICAgeworICAg
ICAgICB2YXIgdSA9IHY7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKHRoaXMuX3N0YWdlKSB7
CisgICAgICAgIGNhc2UgUElEQ29udHJvbGxlci5zdGFnZXMuT1ZFUlNIT09UOgorICAgICAgICBj
YXNlIFBJRENvbnRyb2xsZXIuc3RhZ2VzLlVOREVSU0hPT1Q6CisgICAgICAgICAgICAvLyBDYWxj
dWxhdGUgdGhlIG1pbi1tYXggdmFsdWVzIG9mIHRoZSBzYXR1cmF0aW9uIGFjdHVhdG9yLgorICAg
ICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9taW4gPT0gInVuZGVmaW5lZCIpCisgICAgICAgICAg
ICAgICAgdGhpcy5fbWluID0gdGhpcy5fbWF4ID0gdGhpcy5fb3V0OworICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluID0gTWF0aC5taW4odGhpcy5fbWluLCB0aGlz
Ll9vdXQpOworICAgICAgICAgICAgICAgIHRoaXMuX21heCA9IE1hdGgubWF4KHRoaXMuX21heCwg
dGhpcy5fb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAK
KyAgICAgICAgY2FzZSBQSURDb250cm9sbGVyLnN0YWdlcy5TQVRVUkFURToKKyAgICAgICAgICAg
IHZhciBvdXQgPSB0aGlzLl9vdXQgKyB1OworICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGgubWlu
KHRoaXMuX21pbiwgdGhpcy5fbWF4ICogMC43MCk7CisgICAgICAgICAgICB2YXIgbWF4ID0gdGhp
cy5fbWF4OworCisgICAgICAgICAgICAvLyBDbGlwIHRoZSBjb250cm9sbGVyIG91dHB1dCB0byB0
aGUgbWluLW1heCB2YWx1ZXMKKyAgICAgICAgICAgIG91dCA9IE1hdGgubWF4KE1hdGgubWluKG1h
eCwgb3V0KSwgbWluKTsKKyAgICAgICAgICAgIHUgPSBvdXQgLSB0aGlzLl9vdXQ7CisgICAgCisg
ICAgICAgICAgICAvLyBBcHBseSB0aGUgYmFjay1jYWxjdWxhdGlvbiBhbmQgdHJhY2tpbmcKKyAg
ICAgICAgICAgIGlmICh1ICE9IHYpCisgICAgICAgICAgICAgICAgdSArPSAodGhpcy5fS3AgKiB0
aGlzLl9UdCAvIHRoaXMuX1RpKSAqIGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdGhpcy5fb3V0ICs9IHU7CisgICAgICAgIHJldHVybiB1OworICAg
IH0sCiAKKyAgICAvLyBDYWxsZWQgZnJvbSB0aGUgYmVuY2htYXJrIHRvIHR1bmUgaXRzIHRlc3Qu
IEl0IHVzZXMgWmllZ2xlcuKAk05pY2hvbHMgbWV0aG9kCisgICAgLy8gdG8gY2FsY3VsYXRlIHRo
ZSBjb250cm9sbGVyIHBhcmFtZXRlcnMuIEl0IHRoZW4gcmV0dXJucyBhIFBJRCB0dW5pbmcgdmFs
dWUuCisgICAgdHVuZTogZnVuY3Rpb24odCwgaCwgeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0YWdlKHkpOworICAgICAgICAKKyAgICAgICAgLy8gQ3VycmVudCBlcnJvci4KKyAgICAg
ICAgdmFyIGUgPSB0aGlzLl95c3AgLSB5OworICAgICAgICB2YXIgdiA9IHRoaXMuX3R1bmUodCwg
aCwgeSwgZSk7CisgICAgICAgIAorICAgICAgICAvLyBTYXZlIGUgZm9yIHRoZSBuZXh0IGNhbGwu
CiAgICAgICAgIHRoaXMuX2VvbGQgPSBlOwotICAgICAgICByZXR1cm4gdTsKKyAgICAgICAgCisg
ICAgICAgIC8vIEFwcGx5IGJhY2stY2FsY3VsYXRpb24gYW5kIHRyYWNraW5nIHRvIGF2b2lkIGlu
dGVncmF0b3Igd2luZHVwCisgICAgICAgIHJldHVybiB0aGlzLl9zYXR1cmF0ZSh2LCBlKTsKICAg
ICB9CiB9CiAKIGZ1bmN0aW9uIEthbG1hbkVzdGltYXRvcihpbml0WCkKIHsKLSAgICAvLyBJbml0
aWFsaXplIHN0YXRlIHRyYW5zaXRpb24gbWF0cml4CisgICAgLy8gSW5pdGlhbGl6ZSBzdGF0ZSB0
cmFuc2l0aW9uIG1hdHJpeC4KICAgICB0aGlzLl9tYXRBID0gTWF0cml4My5pZGVudGl0eSgpOwog
ICAgIHRoaXMuX21hdEFbTWF0cml4My5wb3MoMCwgMildID0gMTsKLSAgICAKLSAgICAvLyBJbml0
aWFsaXplIG1lYXN1cmVtZW50IG1hdHJpeAorCisgICAgLy8gSW5pdGlhbGl6ZSBtZWFzdXJlbWVu
dCBtYXRyaXguCiAgICAgdGhpcy5fdmVjSCA9IFZlY3RvcjMuemVyb3MoKTsKICAgICB0aGlzLl92
ZWNIWzBdID0gMTsKLSAgICAKKwogICAgIHRoaXMuX21hdFEgPSBNYXRyaXgzLmlkZW50aXR5KCk7
CiAgICAgdGhpcy5fUiA9IDEwMDA7Ci0gICAgCi0gICAgLy8gSW5pdGlhbCBzdGF0ZSBjb25kaXRp
b25zCisKKyAgICAvLyBJbml0aWFsIHN0YXRlIGNvbmRpdGlvbnMuCiAgICAgdGhpcy5fdmVjWF9l
c3QgPSBWZWN0b3IzLnplcm9zKCk7CiAgICAgdGhpcy5fdmVjWF9lc3RbMF0gPSBpbml0WDsKICAg
ICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJpeDMuemVyb3MoKTsKQEAgLTI1OSw3ICs0NTMsNyBAQCBL
YWxtYW5Fc3RpbWF0b3IucHJvdG90eXBlID0KICAgICAgICAgLy8gUHJvamVjdCB0aGUgc3RhdGUg
YWhlYWQKICAgICAgICAgLy8gIFhfcHJkKGspID0gQSAqIFhfZXN0KGstMSkKICAgICAgICAgdmFy
IHZlY1hfcHJkID0gTWF0cml4My5tdWx0aXBseVZlY3RvcjModGhpcy5fbWF0QSwgdGhpcy5fdmVj
WF9lc3QpOwotICAgICAgICAKKwogICAgICAgICAvLyBQcm9qZWN0IHRoZSBlcnJvciBjb3Zhcmlh
bmNlIGFoZWFkCiAgICAgICAgIC8vICBQX3ByZChrKSA9IEEgKiBQX2VzdChrLTEpICogQScgKyBR
CiAgICAgICAgIHZhciBtYXRQX3ByZCA9IE1hdHJpeDMuYWRkKE1hdHJpeDMubXVsdGlwbHlNYXRy
aXgzKE1hdHJpeDMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX21hdEEsIHRoaXMuX21hdFBfZXN0KSwg
TWF0cml4My50cmFuc3Bvc2UodGhpcy5fbWF0QSkpLCB0aGlzLl9tYXRRKTsKQEAgLTI3MSwxMSAr
NDY1LDExIEBAIEthbG1hbkVzdGltYXRvci5wcm90b3R5cGUgPQogICAgICAgICB2YXIgdmVjQiA9
IFZlY3RvcjMubXVsdGlwbHlNYXRyaXgzKHRoaXMuX3ZlY0gsIE1hdHJpeDMudHJhbnNwb3NlKG1h
dFBfcHJkKSk7CiAgICAgICAgIHZhciBTID0gVmVjdG9yMy5tdWx0aXBseVZlY3RvcjModmVjQiwg
dGhpcy5fdmVjSCkgKyB0aGlzLl9SOwogICAgICAgICB2YXIgdmVjR2FpbiA9IFZlY3RvcjMuc2Nh
bGUoMS9TLCB2ZWNCKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVXBkYXRlIHRoZSBlc3RpbWF0
ZSB2aWEgeihrKQogICAgICAgICAvLyAgWF9lc3QoaykgPSB4X3ByZCArIEsoaykgKiAoeihrKSAt
IEggKiBYX3ByZChrKSk7CiAgICAgICAgIHRoaXMuX3ZlY1hfZXN0ID0gVmVjdG9yMy5hZGQodmVj
WF9wcmQsIFZlY3RvcjMuc2NhbGUoY3VycmVudCAtIFZlY3RvcjMubXVsdGlwbHlWZWN0b3IzKHRo
aXMuX3ZlY0gsIHZlY1hfcHJkKSwgdmVjR2FpbikpOwotICAgICAgICAKKwogICAgICAgICAvLyBV
cGRhdGUgdGhlIGVycm9yIGNvdmFyaWFuY2UKICAgICAgICAgLy8gIFBfZXN0KGspID0gUF9wcmQo
aykgLSBLKGspICogSCAqIFBfcHJkKGspOwogICAgICAgICB0aGlzLl9tYXRQX2VzdCA9IE1hdHJp
eDMuc3VidHJhY3QobWF0UF9wcmQsIE1hdHJpeDMuc2NhbGUoVmVjdG9yMy5tdWx0aXBseVZlY3Rv
cjModmVjR2FpbiwgdGhpcy5fdmVjSCksIG1hdFBfcHJkKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>