<?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>66868</bug_id>
          
          <creation_ts>2011-08-24 11:10:50 -0700</creation_ts>
          <short_desc>Web Inspector: Option+Click on Node Expander Doesn&apos;t Work the First Time</short_desc>
          <delta_ts>2013-01-11 04:29:54 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>106435</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456219</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-08-24 11:10:50 -0700</bug_when>
    <thetext>I think this is a regression. Option/Alt + Click on the node expando triangle
in the Elements tree hierarchy  does not expand subtrees the first time. Closing
and then reopening with alt+click the second and subsequent times works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804337</commentid>
    <comment_count>1</comment_count>
      <attachid>182131</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-10 06:54:12 -0800</bug_when>
    <thetext>Created attachment 182131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804340</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-10 06:56:02 -0800</bug_when>
    <thetext>*** Bug 106435 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804357</commentid>
    <comment_count>3</comment_count>
      <attachid>182131</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-01-10 07:28:34 -0800</bug_when>
    <thetext>Comment on attachment 182131
Patch

numberOfArguments might not be enough in the future. We should check if an argument exists by name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804386</commentid>
    <comment_count>4</comment_count>
      <attachid>182142</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-10 08:11:57 -0800</bug_when>
    <thetext>Created attachment 182142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804470</commentid>
    <comment_count>5</comment_count>
      <attachid>182142</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-01-10 09:51:43 -0800</bug_when>
    <thetext>Comment on attachment 182142
Patch

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

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:309
&gt; +        var method = DOMAgent.requestChildNodes;
&gt; +        if (method.numberOfArguments === 2)
&gt; +            method(this.id, depth, mycallback.bind(this));
&gt; +        else
&gt; +            method(this.id, mycallback.bind(this))

Maybe one of the Chromium or Android developers can correct me on this but I don&apos;t think the OpenSource inspector does backwards compatibility protocol checking. You should just use DOMAgent.requestChildNodes expecting the current version. The OpenSource inspector here is bundled with WebKit and thus the generated InspectorBackendCommands file will always have the latest DOMAgent.requestChildNodes with the optional argument. Safari&apos;s inspector though needs backwards compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804493</commentid>
    <comment_count>6</comment_count>
      <attachid>182142</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-10 10:09:39 -0800</bug_when>
    <thetext>Comment on attachment 182142
Patch

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

You also need a front-end test that is calling expand recursively.

Timothy: it would be great if you could give me a chance to make a review and point to the problems. I&apos;ll try to be responsive to not slow you down, but stamping everything without giving us a chance to look at it is not going to work well.

&gt; Source/WebCore/inspector/Inspector.json:1711
&gt; +                    { &quot;name&quot;: &quot;depth&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The maximum depth at which children should be retrieved.&quot; }

You should mention that the default is 1.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:483
&gt; +    pushChildNodesToFrontend(nodeId, depth ? *depth : 1);

You should check for the depth being &gt;= 0.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:283
&gt; +    getChildNodes: function(depth, callback)

I think you should leave this one as is and introduce getSubtree(depth) instead.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:301
&gt; +        // The requestChildNodes method has an optional depth parameter

This scenario is not necessary to support.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1075
&gt; +        TreeElement.prototype.expandRecursively.call(this, Number.MAX_VALUE);

I would do representedObject.getChildNodes(MAX_VALUE) and in the callback, I would call for the existing expandRecursively without any other modifications to the code.

&gt; Source/WebCore/inspector/front-end/InspectorBackend.js:72
&gt; +        window[agentName][domainAndMethod[1]][&quot;numberOfArguments&quot;] = signature.length || 0;

Why did this change?

&gt; Source/WebCore/inspector/front-end/treeoutline.js:884
&gt; +    // If the element has children, we want to make sure it&apos;s fully populated before

As mentioned above, I think populateWithDepth just makes things more complex. I wonder if you should simply go down the hierarchy and call expand instead? But before you call expandRecursively, you should fetch all the data from the backend.

&gt; LayoutTests/inspector-protocol/dom-request-child-nodes-depth.html:13
&gt; +    InspectorTest.eventHandler[&quot;DOM.setChildNodes&quot;] = function (messageObject) {

{ should be on the next line, we don&apos;t use anonymous functions - should be a named one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804534</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-10 10:46:45 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 182142 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=182142&amp;action=review
&gt; 
&gt; You also need a front-end test that is calling expand recursively.

I&apos;ll look into providing one such test.

&gt; &gt; Source/WebCore/inspector/Inspector.json:1711
&gt; &gt; +                    { &quot;name&quot;: &quot;depth&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The maximum depth at which children should be retrieved.&quot; }
&gt; 
&gt; You should mention that the default is 1.

Will do.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:483
&gt; &gt; +    pushChildNodesToFrontend(nodeId, depth ? *depth : 1);
&gt; 
&gt; You should check for the depth being &gt;= 0.

Will do.
 
&gt; &gt; Source/WebCore/inspector/front-end/DOMAgent.js:283
&gt; &gt; +    getChildNodes: function(depth, callback)
&gt; 
&gt; I think you should leave this one as is and introduce getSubtree(depth) instead.

Good point.

&gt; &gt; Source/WebCore/inspector/front-end/DOMAgent.js:301
&gt; &gt; +        // The requestChildNodes method has an optional depth parameter
&gt; 
&gt; This scenario is not necessary to support.

OK, thanks for the clarification. Joe was gathering as much. This will make the patch simpler.

&gt; &gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1075
&gt; &gt; +        TreeElement.prototype.expandRecursively.call(this, Number.MAX_VALUE);
&gt; 
&gt; I would do representedObject.getChildNodes(MAX_VALUE) and in the callback, I would call for the existing expandRecursively without any other modifications to the code.

Interesting. I will try that.

&gt; &gt; Source/WebCore/inspector/front-end/InspectorBackend.js:72
&gt; &gt; +        window[agentName][domainAndMethod[1]][&quot;numberOfArguments&quot;] = signature.length || 0;
&gt; 
&gt; Why did this change?

This was for the backward compatibility issue which you mentioned was not necessary. I will remove this.

&gt; &gt; Source/WebCore/inspector/front-end/treeoutline.js:884
&gt; &gt; +    // If the element has children, we want to make sure it&apos;s fully populated before
&gt; 
&gt; As mentioned above, I think populateWithDepth just makes things more complex. I wonder if you should simply go down the hierarchy and call expand instead? But before you call expandRecursively, you should fetch all the data from the backend.

I will look into that.

&gt; &gt; LayoutTests/inspector-protocol/dom-request-child-nodes-depth.html:13
&gt; &gt; +    InspectorTest.eventHandler[&quot;DOM.setChildNodes&quot;] = function (messageObject) {
&gt; 
&gt; { should be on the next line, we don&apos;t use anonymous functions - should be a named one.

Correct, thanks for pointing that out.

I will prepare an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804780</commentid>
    <comment_count>8</comment_count>
      <attachid>182217</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-10 15:28:27 -0800</bug_when>
    <thetext>Created attachment 182217
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804888</commentid>
    <comment_count>9</comment_count>
      <attachid>182217</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-01-10 19:30:42 -0800</bug_when>
    <thetext>Comment on attachment 182217
Patch

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

Looks good to me. I just want to negatives handled more directly.

&gt; Source/WebCore/inspector/Inspector.json:1711
&gt; +                    { &quot;name&quot;: &quot;depth&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The maximum depth at which children should be retrieved, defaults to 1.&quot; }

I still think you should document the range of this value. It sounds like 1 &lt;= depth &lt;= MAX_INT.

How does this work with Number.MAX_VALUE, a very large double, being truncated to an int? InspectorValues::asNumber(int*) just casts the m_doubleValue to an int, which seems like it could produce unexpected results:

    #include &lt;stdio.h&gt;
    int main() {
        double num = 1.7976931348623157e+308; // Number.MAX_VALUE
        printf(&quot;double: %e\nint: %d\n&quot;, num, (int)num);
    }

    // Produces:
    // double: 1.797693e+308
    // int: -2147483648

Obviously your tests show this was working though, so I wonder what I might be missing.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:483
&gt; +    pushChildNodesToFrontend(nodeId, depth &amp;&amp; depth &gt;= 0 ? *depth : 1);

I still think it would be nice to produce a protocol error if *depth is &lt;= 0 and to not support 0.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:304
&gt; +     * @param {int} depth

Nit (type): I believe this should be {number}, not {int}.

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1054
&gt; +        var depth = Number.MAX_VALUE;

Nit: &quot;var&quot; -&gt; &quot;const&quot; seems clearer here. (We don&apos;t really have a style guide for when to use const)

&gt; Source/WebCore/inspector/front-end/ElementsTreeOutline.js:1059
&gt; +        };

Nit (style): we don&apos;t normally put a semicolon after inline function declarations

&gt; LayoutTests/inspector/elements/expand-recursively-expected.txt:6
&gt; +Running: initialExpand
&gt; +
&gt; +Running: deepExpand

You could dump at the initialExpand as well.

&gt; LayoutTests/inspector/elements/expand-recursively.html:20
&gt; +                for (var i = 0; children &amp;&amp; i &lt; children.length; ++i) {
&gt; +                    children[i].expand();
&gt; +                }

Nit (style): braces not needed for the single line for loop.

&gt; LayoutTests/inspector/elements/expand-recursively.html:33
&gt; +            setTimeout(next, 10);

Instead of this setTimeout I think you can use InspectorTest.runAfterPendingDispatches(next). The expandRecursively do your requestChildNodes, and runAfterPendingDispatches will wait until that message has its response dispatched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804963</commentid>
    <comment_count>10</comment_count>
      <attachid>182217</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-10 22:04:11 -0800</bug_when>
    <thetext>Comment on attachment 182217
Patch

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

This looks great, thanks for following up with the test. Few nits left and it is ready for landing.

&gt;&gt; Source/WebCore/inspector/Inspector.json:1711
&gt;&gt; +                    { &quot;name&quot;: &quot;depth&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The maximum depth at which children should be retrieved, defaults to 1.&quot; }
&gt; 
&gt; I still think you should document the range of this value. It sounds like 1 &lt;= depth &lt;= MAX_INT.
&gt; 
&gt; How does this work with Number.MAX_VALUE, a very large double, being truncated to an int? InspectorValues::asNumber(int*) just casts the m_doubleValue to an int, which seems like it could produce unexpected results:
&gt; 
&gt;     #include &lt;stdio.h&gt;
&gt;     int main() {
&gt;         double num = 1.7976931348623157e+308; // Number.MAX_VALUE
&gt;         printf(&quot;double: %e\nint: %d\n&quot;, num, (int)num);
&gt;     }
&gt; 
&gt;     // Produces:
&gt;     // double: 1.797693e+308
&gt;     // int: -2147483648
&gt; 
&gt; Obviously your tests show this was working though, so I wonder what I might be missing.

I wonder if we should instead allow -1 as a special case for unbounded. It is easier to explain.

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:483
&gt;&gt; +    pushChildNodesToFrontend(nodeId, depth &amp;&amp; depth &gt;= 0 ? *depth : 1);
&gt; 
&gt; I still think it would be nice to produce a protocol error if *depth is &lt;= 0 and to not support 0.

*errorString = &quot;Please provide positive integer as a depth or -1 for entire subtree&quot;. Also, you should be comparing *depth, not depth to 0 (-1), otherwise you are checking the address value.

&gt;&gt; Source/WebCore/inspector/front-end/DOMAgent.js:304
&gt;&gt; +     * @param {int} depth
&gt; 
&gt; Nit (type): I believe this should be {number}, not {int}.

Yep. Putting closure&apos;s compiler.jar into ~/closure and running Source/WebCore/inspector/compile-front-end.py would check this and other issues. We don&apos;t require it formally, but all inspector contributors us the tool.

&gt; Source/WebCore/inspector/front-end/DOMAgent.js:316
&gt; +                callback(this.children);

You should run callback(null) otherwise. Call sites might have continuation they expect to run at all times.

&gt; LayoutTests/inspector/elements/expand-recursively.html:11
&gt; +    InspectorTest.runTestSuite([

It is not a test suite in case your steps are inter-dependent. In your case, it is simply a multi-step test. We just do a series of steps followed by an InspectorTest.completeTest in that case.

&gt; LayoutTests/inspector/elements/expand-recursively.html:12
&gt; +        function initialExpand(next)

Why do you need the initial expand? Does it expand first level? (html node?) In fact, elements panel will request document to the 3rd level on its own and expand the first two upon load.

&gt; LayoutTests/inspector/elements/expand-recursively.html:18
&gt; +                for (var i = 0; children &amp;&amp; i &lt; children.length; ++i) {

No need for {} around the single-line block.

&gt; LayoutTests/inspector/elements/expand-recursively.html:24
&gt; +            WebInspector.showPanel(&quot;elements&quot;);

This should be a first line in the test to load the panel code.

&gt;&gt; LayoutTests/inspector/elements/expand-recursively.html:33
&gt;&gt; +            setTimeout(next, 10);
&gt; 
&gt; Instead of this setTimeout I think you can use InspectorTest.runAfterPendingDispatches(next). The expandRecursively do your requestChildNodes, and runAfterPendingDispatches will wait until that message has its response dispatched.

We never do setTimeout(value), it is either setTimeout(0) or InspectorTest.runAfterPendingDispatches. The difference between the two is that setTimeout(0) is basically invokes your callback after current message loop entry. I.e. post your synchronous JS. InspectorTest.runAfterPendingDispatches is making sure all the pending protocol commands are processed and all the callbacks are received.

So in this case, Joe is absolutely right. Since expandRecursively is issueing the command, you need to use runAfterPendingDispatches. Timer won&apos;t help since on many platforms asynchronity of command processing is not timer-based. So timer may tick, but the request will still be up in the air. If your expandRecursively had a callback and you knew that the command you need is processed, your wouldn&apos;t even need the setTimeout since all onpopulate / getChildren would return synchronously.

Having an optional callback in expandRecursively or even better another method that would be used both by expandRecursively and this test, would make this test more robust. We try to not use runAfterPendingDispatches unless necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805128</commentid>
    <comment_count>11</comment_count>
      <attachid>182313</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-11 03:16:50 -0800</bug_when>
    <thetext>Created attachment 182313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805130</commentid>
    <comment_count>12</comment_count>
      <attachid>182314</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2013-01-11 03:19:50 -0800</bug_when>
    <thetext>Created attachment 182314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805170</commentid>
    <comment_count>13</comment_count>
      <attachid>182314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 04:29:49 -0800</bug_when>
    <thetext>Comment on attachment 182314
Patch

Clearing flags on attachment: 182314

Committed r139429: &lt;http://trac.webkit.org/changeset/139429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805171</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 04:29:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182131</attachid>
            <date>2013-01-10 06:54:12 -0800</date>
            <delta_ts>2013-01-10 08:11:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66868-20130110155113.patch</filename>
            <type>text/plain</type>
            <size>21233</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc3MWY2YTNkZDZjNTY2
ZjBkZDMxZTI1OWRmNmI4YmYyMWNjNjA4My4uMzQ4Mjk1ZDBjNmNhZjA2NmQ0MDQ3YjFlYzI5ODIy
MWQ3M2Q5ZWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAxLTEwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
T3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg2OAor
CisgICAgICAgIFVwIHRvIG5vdywgdGhlIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseSgpIG1ldGhvZCB3b3VsZCBjb3JyZWN0bHkKKyAgICAgICAgZXhwYW5kIGNoaWxkcmVu
IHJlY3Vyc2l2ZWx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkZXB0aCwgYnV0IHdvdWxkIG5vdCB3
YWl0IHRvCisgICAgICAgIHBlcmZvcm0gdGhpcyB0YXNrIHVudGlsIGFsbCBjaGlsZCBub2RlcyBo
YWQgYmVlbiBwb3B1bGF0ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcworICAgICAgICB3b3VsZCBv
bmx5IHdvcmsgaW5jcmVtZW50YWxseSB3aXRoIG9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGNoaWxk
IG5vZGVzIGJlaW5nIHNob3duCisgICAgICAgIGV4cGFuZGVkIGluIHRoZSBET00gdHJlZSB1cG9u
IGFsdCtjbGlja2luZyBhIGdpdmVuIG5vZGUgd2l0aCBhIGRlZXAgaGllcmFyY2h5LgorICAgICAg
ICAKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBv
cHRpb25hbCBhcmd1bWVudCB0byB0aGUgRE9NQWdlbnQncworICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcygpIG1ldGhvZHMgdG8gcHJvdmlkZSB0aGUgZGVwdGggYXQgd2hpY2ggd2Ugd2FudCB0byBy
ZXRyaWV2ZSBjaGlsZHJlbgorICAgICAgICBvZiBhIGdpdmVuIG5vZGUuIEluIG9yZGVyIGZvciB0
aGUgZnJvbnQtZW5kIHRvIGtub3cgd2l0aCB3aGF0IHZlcnNpb24gb2YgdGhpcyBtZXRob2QKKyAg
ICAgICAgd2UncmUgZGVhbGluZywgd2UgYWRkIGEgbmV3IC5udW1iZXJPZkFyZ3VtZW50cyBwYXJh
bWV0ZXIgdG8gZnJvbnQtZW5kIG1ldGhvZHMgd2hlbgorICAgICAgICBjb21tYW5kcyBhcmUgcmVn
aXN0ZXJlZCB1c2luZyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJlZ2lzdGVyQ29t
bWFuZCgpLiBUaGlzIHdheQorICAgICAgICB0aGUgRE9NTm9kZS5wcm90b3R5cGUuZ2V0Q2hpbGRO
b2RlcygpIG1ldGhvZCBjYW4gZ3JhY2VmdWxseSBkZXRlY3QgY2xpZW50cyB0aGF0IHN1cHBvcnQK
KyAgICAgICAgcmV0cmlldmFsIG9mIGNoaWxkcmVuIHdpdGggYSBwcm92aWRlZCBkZXB0aCwgYW5k
IGtlZXAgZGVhbGluZyB3aXRoIG9sZGVyIGNsaWVudHMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhl
eSB3ZXJlIGFsd2F5cyBzdXBwb3J0ZWQuCisKKyAgICAgICAgRmluYWxseSwgd2UgaGFkIHRvIG1h
a2UgdGhyZWUgY2hhbmdlcyB0byB0aGUgZnJvbnQtZW5kIHRvIGNvcnJlY3RseSB3YWl0IHVudGls
CisgICAgICAgIG5ldyBjaGlsZCBub2RlcyB3ZXJlIHJldHJpZXZlZCBmcm9tIHRoZSBiYWNrZW5k
IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHJlY3Vyc2l2ZSBleHBhbnNpb24KKyAgICAgICAg
b2YgaXRlbXMgaW4gdGhlIHRyZWU6CisgICAgICAgIAorICAgICAgICAxLiBBZGQgYSBub3Rpb24g
b2YgZGVwdGggdG8gRWxlbWVudHNUcmVlRWxlbWVudCdzIHVwZGF0ZUNoaWxkcmVuKCkgbWV0aG9k
IGluIG9yZGVyIHRvIHJlcXVlc3QgYWxsIG9mCisgICAgICAgIHRoZSBjaGlsZHJlbiBhdCBvbmNl
IHdoZW4gZGVlcCBleHBhbmRpbmcuCisKKyAgICAgICAgMi4gQWRkIGEgbm90aW9uIG9mIGRlcHRo
IHRvIERPTU5vZGUncyBnZXRDaGlsZE5vZGVzKCkgbWV0aG9kIHNvIHRoYXQgd2UgY2FuIGFzayB0
aGUgYmFja2VuZCBmb3IKKyAgICAgICAgYWxsIGNoaWxkcmVuIHRvIGJlIHB1c2hlZCB0byB0aGUg
ZnJvbnQtZW5kLgorCisgICAgICAgIDMuIEVuc3VyZSB3ZSBkZWxheSB0aGUgZXhwYW5zaW9uIG9m
IG5vZGVzIGluIHRoZSBET00gdHJlZSBpbiBUcmVlRWxlbWVudCdzIGV4cGFuZFJlY3Vyc2l2ZWx5
KCkgbWV0aG9kCisgICAgICAgIHVudGlsIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgZXhwYW5k
ZWQgYW5kIHNob3duIGFyZSByZXRyaWV2ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjogQWRkIHRoZSBuZXcgYGRlcHRoYCBwYXJhbWV0ZXIgdG8gRE9NLnJlcXVlc3RDaGlsZE5v
ZGVzKCkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OiBBZGQgYSBuZXcgb3B0aW9uYWwgYGRlcHRoYCBwYXJhbWV0ZXIKKyAgICAgICAgd2hpY2ggZGVm
YXVsdHMgdG8gMS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0
Q2hpbGROb2Rlcyk6IEFkZCBhIG5ldyBvcHRpb25hbCBgZGVwdGhgIHBhcmFtZXRlcgorICAgICAg
ICB3aGljaCBkZWZhdWx0cyB0byAxLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUuZ2V0Q2hpbGROb2Rlcyk6IEFkZCBhIG5ldyBgZGVwdGhgIHBhcmFtZXRlciBhbmQg
Y29ycmVjdGx5IGRlYWwKKyAgICAgICAgd2l0aCBvbGRlciBjbGllbnRzIHdoaWNoIGRvIG5vdCBo
YXZlIGEgRE9NLnJlcXVlc3RDaGlsZE5vZGVzKCkgbWV0aG9kIHRoYXQgc3VwcG9ydHMgdGhpcyBw
YXJhbWV0ZXIuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlLnBvcHVsYXRlV2l0aERlcHRoKTogTmV3IG1ldGhvZCB0byBhbGxvdyBwb3B1
bGF0aW9uIG9mCisgICAgICAgIERPTSBub2RlcyBnb2luZyBkb3duIHRocm91Z2ggdGhlaXIgY2hp
bGQgbm9kZXMgYSBnaXZlbiBkZXB0aC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVFbGVtZW50LnByb3RvdHlwZS5teUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVDaGlsZHJlbik6IFJlbW92ZSB0aGUg
dW51c2VkIGBmb3JjZVJlZnJlc2hgIGFyZ3VtZW50CisgICAgICAgIGFuZCByZXBsYWNlIGl0IHdp
dGggYSBuZXcgYGRlcHRoYCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJzaXZlbHkpOiBTdWJjbGFzcyB0aGlz
IG1ldGhvZCB0byBtYWtlIHN1cmUgd2UKKyAgICAgICAgYWx3YXlzIGNhbGwgdGhlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24gd2l0aCBgbWF4RGVwdGhgIHNldCB0byBOdW1iZXIuTUFYX1ZBTFVFLgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZC5qczoKKyAgICAg
ICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUucmVnaXN0ZXJDb21tYW5kKTogQWRk
IGEgbmV3IC5udW1iZXJPZkFyZ3VtZW50cyBwcm9wZXJ0eSB0byBtZXRob2RzCisgICAgICAgIHJl
Z2lzdGVyZWQgb24gYWdlbnRzIHNvIHRoYXQgd2UgbWF5IHRyYWNrIGNoYW5nZXMgaW4gdGhlIGxp
c3Qgb2YgYXJndW1lbnRzIGR5bmFtaWNhbGx5IGFzIHRoZSBwcm90b2NvbAorICAgICAgICBldm9s
dmVzLiBOb3RlIHRoYXQgdGhlIC5sZW5ndGggcHJvcGVydHkgY2Fubm90IGJlIHVzZWQgaGVyZSBz
aW5jZSB0aGUgbWV0aG9kcyBhcmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nCisgICAgICAgIHRoaXMu
X3NlbmRNZXNzYWdlVG9CYWNrZW5kLmJpbmQoKSB3aGljaCB3b3VsZCBhbHdheXMgaGF2ZSBhIC5s
ZW5ndGggcHJvcGVydHkgb2YgMS4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVv
dXRsaW5lLmpzOgorICAgICAgICAoVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2
ZWx5LmV4cGFuZCk6CisgICAgICAgIChUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJz
aXZlbHkpOiBFbnN1cmUgd2Ugb25seSBleHBhbmQgdGhlIG5vZGVzIGluIHRoZSB0cmVlIG9uY2Ug
dGhleSd2ZSBiZWVuCisgICAgICAgIHBvcHVsYXRlZC4KKwogMjAxMy0wMS0wOSAgWmVubyBBbGJp
c3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01hY10gR3JhcGhpY3NTdXJm
YWNlIGRvZXMgbm90IG5lZWQgZ2xFbmFibGUvZ2xEaXNhYmxlIGZvciB0ZXh0dXJlIHRhcmdldHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNTdmNmY3YWNkYmZk
ZWQ5MWZhNzk1OTJlNTkwY2I4ODkyNTdjZmFmOC4uOGZhMGZmZjM1NTg3MmM1YjUyMzBhMDVkM2Yx
YjM2ZGQ0ZmJjNDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpA
QCAtMTcwNyw5ICsxNzA3LDEwIEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5h
bWUiOiAicmVxdWVzdENoaWxkTm9kZXMiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0byBnZXQgY2hpbGRyZW4gZm9yLiIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0byBnZXQgY2hpbGRyZW4gZm9yLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXB0aCIsICJ0eXBlIjogImludGVn
ZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1heGltdW0gZGVwdGgg
YXQgd2hpY2ggY2hpbGRyZW4gc2hvdWxkIGJlIHJldHJpZXZlZC4iIH0KICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxk
cmVuIG9mIHRoZSBub2RlIHdpdGggZ2l2ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIg
aW4gZm9ybSBvZiA8Y29kZT5zZXRDaGlsZE5vZGVzPC9jb2RlPiBldmVudHMuIgorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxkcmVuIG9mIHRoZSBub2Rl
IHdpdGggZ2l2ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW4gZm9ybSBvZiA8Y29k
ZT5zZXRDaGlsZE5vZGVzPC9jb2RlPiBldmVudHMgd2hlcmUgbm90IG9ubHkgaW1tZWRpYXRlIGNo
aWxkcmVuIGFyZSByZXRyaWV2ZWQsIGJ1dCBhbGwgY2hpbGRyZW4gZG93biB0byB0aGUgc3BlY2lm
aWVkIGRlcHRoLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAicXVlcnlTZWxlY3RvciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBmZDRmNmU0NGRkYjgwM2IzOTdjZWYwZjhkNjI4
YTQzNzkwZTBiOWQwLi42MzM3YzcwMzZjM2UxNGVlZTZjY2EzODE0NjE4YzkzOTVlOGNjNmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcgogICAgIHJvb3QgPSBidWls
ZE9iamVjdEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1fZG9jdW1lbnROb2RlVG9JZE1h
cCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVu
ZChpbnQgbm9kZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zy
b250ZW5kKGludCBub2RlSWQsIGludCBkZXB0aCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZv
cklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUg
JiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSkKQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1Rv
RnJvbnRlbmQoaW50IG5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZVRvSWRNYXAq
IG5vZGVNYXAgPSBtX2lkVG9Ob2Rlc01hcC5nZXQobm9kZUlkKTsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gY2hpbGRyZW4gPSBidWlsZEFy
cmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgMSwgbm9kZU1hcCk7CisgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGNoaWxkcmVuID0gYnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKICAgICBt
X2Zyb250ZW5kLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsKIH0K
IApAQCAtNDc4LDkgKzQ3OCw5IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9ySWQo
aW50IGlkKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1
ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IGludCogZGVwdGgpCiB7Ci0gICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCk7Cisg
ICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCwgZGVwdGggPyAqZGVwdGggOiAxKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVs
ZW1lbnRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggZTIzYTgxODBmNDk3MGI4OTdlZmFkYzg3MzQyYTA0ZmU0NWExZGQ1Ny4uOTE5ZTg2OTNl
OWYzOGY5MmRkYmI3ZjI2NmNiNTBjMjY1MmYzOTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50PiA+JiByZXN1bHQpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5v
ZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1l
bnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBuYW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQqIGFz
c2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyosIGludCBub2RlSWQpOwogCiAgICAgaW50
IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwotICAgIHZvaWQgcHVzaENoaWxkTm9kZXNU
b0Zyb250ZW5kKGludCBub2RlSWQpOworICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5k
KGludCBub2RlSWQsIGludCBkZXB0aCA9IDEpOwogCiAgICAgYm9vbCBoYXNCcmVha3BvaW50KE5v
ZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSog
cm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXggMTYxYmEwYjNmYWJlMzAxMWFj
YmE1ZTI1ZTQ3ZDEwZGI4MzhmNzhlNC4uMjJmZjEyMjE3YWJiNzA0YjM4MDY5ZWRkNGI2YTgxZjM2
NTVhMTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCkBAIC0yNzcsMTEgKzI3NywxMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAog
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPik9fSBj
YWxsYmFjawogICAgICAqLwotICAgIGdldENoaWxkTm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIGdldENoaWxkTm9kZXM6IGZ1bmN0aW9uKGRlcHRoLCBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7CisgICAgICAgIGlmIChkZXB0aCA9PT0gMSAmJiB0aGlz
LmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2sodGhpcy5jaGlsZHJlbik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTcsNyAr
Mjk4LDE1IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICBjYWxsYmFjayh0aGlzLmNoaWxkcmVuKTsKICAgICAgICAgfQogCi0gICAgICAgIERPTUFn
ZW50LnJlcXVlc3RDaGlsZE5vZGVzKHRoaXMuaWQsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIC8vIFRoZSByZXF1ZXN0Q2hpbGROb2RlcyBtZXRob2QgaGFzIGFuIG9wdGlvbmFsIGRl
cHRoIHBhcmFtZXRlcgorICAgICAgICAvLyB3aGljaCB3YXMgbm90IGluIHRoZSBvcmlnbmlhbCB2
ZXJzaW9uIG9mIHRoZSBtZXRob2QuIEluIG9yZGVyCisgICAgICAgIC8vIHRvIHN1cHBvcnQgaW5z
cGVjdGlvbiBvZiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBXZWJDb3JlLCB3ZSBjaGVjaworICAgICAg
ICAvLyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGlzIG1ldGhvZCBzdXBwb3J0cy4KKyAgICAg
ICAgdmFyIG1ldGhvZCA9IERPTUFnZW50LnJlcXVlc3RDaGlsZE5vZGVzOworICAgICAgICBpZiAo
bWV0aG9kLm51bWJlck9mQXJndW1lbnRzID09PSAyKQorICAgICAgICAgICAgbWV0aG9kKHRoaXMu
aWQsIGRlcHRoLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtZXRob2QodGhpcy5pZCwgbXljYWxsYmFjay5iaW5kKHRoaXMpKQogICAgIH0sCiAKICAg
ICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAxMDE5NzEyNTAwZDJhMTk5YjZjM2M1MDQ3NjBh
YTJjYjY3OTg5YjEwLi4zZmNlOWYwZWYxN2ZhZDBkMTlhNDNlNGQ1ZjU5YWQyMDg2ZjVmNDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzCkBAIC04ODAsMTcgKzg4MCwzOCBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVu
Lmxlbmd0aCB8fCB0aGlzLl9zaG93SW5saW5lVGV4dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KSB8
fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy51cGRhdGVDaGlsZHJlbigpOworICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKDEpOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmdWxsUmVmcmVzaAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNh
bGxiYWNrCisgICAgICovCisgICAgcG9wdWxhdGVXaXRoRGVwdGg6IGZ1bmN0aW9uKGRlcHRoLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihkZXB0aCwgY2Fs
bGJhY2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgK
KyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjawogICAgICAqLwotICAgIHVwZGF0ZUNo
aWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24oZGVwdGgsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9z
ZVRhZykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5nZXRDaGlsZE5vZGVzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywgZnVsbFJlZnJl
c2gpKTsKKworICAgICAgICBmdW5jdGlvbiBteUNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4oZmFsc2UpOworICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldENoaWxkTm9kZXMoZGVwdGgsIG15Q2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA0OCw2ICsxMDY5LDEyIEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5l
eHBhbmRlZENoaWxkcmVuTGltaXQgPSBNYXRoLm1heCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9j
aGlsZE5vZGVDb3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCk7CiAgICAgfSwKIAorICAg
IGV4cGFuZFJlY3Vyc2l2ZWx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBDYW4ndCB1
c2UgSW5maW5pdHkgaGVyZSBhcyBpdCB3b3VsZCBiZSBzdHJpbmdpZmllZCBhcyAibnVsbCIuCisg
ICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseS5jYWxsKHRoaXMs
IE51bWJlci5NQVhfVkFMVUUpOworICAgIH0sCisKICAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKQEAgLTIxNjEsNyArMjE4
OCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAgICAgdmFyIHBhcmVudE5vZGVJdGVtID0gdGhpcy5fdHJlZU91dGxpbmUuZmluZFRy
ZWVFbGVtZW50KHBhcmVudCk7CiAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZUl0ZW0gJiYgIXBh
cmVudE5vZGVJdGVtLmFscmVhZHlVcGRhdGVkQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAgICBw
YXJlbnROb2RlSXRlbS51cGRhdGVDaGlsZHJlbigpOworICAgICAgICAgICAgICAgIHBhcmVudE5v
ZGVJdGVtLnVwZGF0ZUNoaWxkcmVuKDEpOwogICAgICAgICAgICAgICAgIHBhcmVudE5vZGVJdGVt
LmFscmVhZHlVcGRhdGVkQ2hpbGRyZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIHVwZGF0ZWRQ
YXJlbnRUcmVlRWxlbWVudHMucHVzaChwYXJlbnROb2RlSXRlbSk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJh
Y2tlbmQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJh
Y2tlbmQuanMKaW5kZXggYzI3MjJiMzRkNWU4MmMyNmE2MWM1ZDdlYjRiYmEyMWExNTBkZDVlYy4u
MTM1ZDMyODE2MTBlZjZhOTk2NzdhMTY3ODZkYjllMmFjOGViOTg4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZC5qcwpA
QCAtNjksNiArNjksNyBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHdpbmRvd1thZ2VudE5hbWVdW2RvbWFpbkFuZE1ldGhvZFsxXV0gPSB0aGlzLl9zZW5k
TWVzc2FnZVRvQmFja2VuZC5iaW5kKHRoaXMsIG1ldGhvZCwgc2lnbmF0dXJlKTsKICAgICAgICAg
d2luZG93W2FnZW50TmFtZV1bZG9tYWluQW5kTWV0aG9kWzFdXVsiaW52b2tlIl0gPSB0aGlzLl9p
bnZva2UuYmluZCh0aGlzLCBtZXRob2QsIHNpZ25hdHVyZSk7CisgICAgICAgIHdpbmRvd1thZ2Vu
dE5hbWVdW2RvbWFpbkFuZE1ldGhvZFsxXV1bIm51bWJlck9mQXJndW1lbnRzIl0gPSBzaWduYXR1
cmUubGVuZ3RoIHx8IDA7CiAgICAgICAgIHRoaXMuX3JlcGx5QXJnc1ttZXRob2RdID0gcmVwbHlB
cmdzOwogCiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IDEwZDdmMzMw
OWQ4NjRjMDI2ZTc4NzdlNzc2NzE3MTNjMGI0NGMxZDUuLmEzMGUzOTJmYmMyNzc2Yzk2ZDYzNzQ1
OTM1ZjM0YjQzZTQ4NzI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdHJlZW91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC90cmVlb3V0bGluZS5qcwpAQCAtODcxLDEyICs4NzEsMjMgQEAgVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24obWF4RGVwdGgpCiAgICAgaWYg
KGlzTmFOKG1heERlcHRoKSkKICAgICAgICAgbWF4RGVwdGggPSAzOwogCi0gICAgd2hpbGUgKGl0
ZW0pIHsKLSAgICAgICAgaWYgKGRlcHRoIDwgbWF4RGVwdGgpCi0gICAgICAgICAgICBpdGVtLmV4
cGFuZCgpOwotICAgICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxz
ZSwgdGhpcywgKGRlcHRoID49IG1heERlcHRoKSwgaW5mbyk7Ci0gICAgICAgIGRlcHRoICs9IGlu
Zm8uZGVwdGhDaGFuZ2U7CisgICAgZnVuY3Rpb24gZXhwYW5kKCkKKyAgICB7CisgICAgICAgIHdo
aWxlIChpdGVtKSB7CisgICAgICAgICAgICBpZiAoZGVwdGggPCBtYXhEZXB0aCkKKyAgICAgICAg
ICAgICAgICBpdGVtLmV4cGFuZCgpOworICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8pOwor
ICAgICAgICAgICAgZGVwdGggKz0gaW5mby5kZXB0aENoYW5nZTsKKyAgICAgICAgfQogICAgIH0K
KworICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBjaGlsZHJlbiwgd2Ugd2FudCB0byBtYWtlIHN1
cmUgaXQncyBmdWxseSBwb3B1bGF0ZWQgYmVmb3JlCisgICAgLy8gZXhwYW5kaW5nIHRoZSBpdGVt
cyB0aGF0IHdpbGwgYmUgaW4gdGhlIHRyZWUgYXMgYSByZXN1bHQgb2YgcmVxdWVzdGluZyB0aGVt
CisgICAgLy8gZnJvbSB0aGUgYmFja2VuZC4KKyAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAmJiBp
dGVtLnBvcHVsYXRlV2l0aERlcHRoKQorICAgICAgICBpdGVtLnBvcHVsYXRlV2l0aERlcHRoKG1h
eERlcHRoLCBleHBhbmQuYmluZCh0aGlzKSk7CisgICAgZWxzZQorICAgICAgICBleHBhbmQoKTsK
IH0KIAogVHJlZUVsZW1lbnQucHJvdG90eXBlLmhhc0FuY2VzdG9yID0gZnVuY3Rpb24oYW5jZXN0
b3IpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAwOTNhM2NkZTVmMDVhMGJjMzY5YWI3NzAyMTFjNDI3YWMzNGIyNWU5Li5j
NGYxOGM4ZWM2MjM4MDVhZmYxMTdlMTNlZTEzZDkyZmFiY2JjNGQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTMtMDEtMTAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBPcHRpb24rQ2xpY2sgb24gTm9kZSBFeHBhbmRlciBEb2Vz
bid0IFdvcmsgdGhlIEZpcnN0IFRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2ODY4CisKKyAgICAgICAgVGVzdGluZyB0aGUgbmV3IGBkZXB0aGAg
cGFyYW1ldGVyIGZvciB0aGUgcmVxdWVzdENoaWxkTm9kZXMgbWV0aG9kLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29s
L2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0
bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA5ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBv
emRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIEVGTCBwb3J0IGdhcmRlbmluZyBhZnRlciBy
MTM5MTQ1LCByMTM5MDAyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM3NGJjMjUzMDdmMjg0NzUxNDQ3MWVkM2Q1MDI4YWQyZTBk
NTIwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
b20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBA
QAorCis9PT0gR2V0IHRoZSBEb2N1bWVudCA9PT0KKworCis9PT0gR2V0IGltbWVkaWF0ZSBjaGls
ZHJlbiBvZiB0aGUgYm9keSA9PT0KKworUEFTUzogRmlyc3QgY2hpbGQgaXMgYSBkaXYKK1BBU1M6
IEZpcnN0IGNoaWxkIGlzIGRpdiNkZXB0aC0xCitQQVNTOiBGaXJzdCBjaGlsZCBoYXMgb25lIGNo
aWxkCitQQVNTOiBGaXJzdCBjaGlsZCBoYXMgbm8gLmNoaWxkcmVuIHByb3BlcnR5CisKKz09PSBH
ZXQgYWxsIGNoaWxkcmVuIG9mIGRpdiNkZXB0aC0xID09PQorCitQQVNTOiBkaXYjZGVwdGgtMSBo
YXMgbm9kZXMgOSBsZXZlbHMgZGVlcAorUEFTUzogRXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxk
Tm9kZXMgZXZlbnRzCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uODExMDQwYTMxZTQ2MTlmOGY4M2Q1MTU3N2NiZDUzOGEwN2JmZGZjYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1u
b2Rlcy1kZXB0aC5odG1sCkBAIC0wLDAgKzEsMTM2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBldmVu
dHNDb3VudCA9IDA7CisKKyAgICBnZXREb2N1bWVudCgpOworCisgICAgSW5zcGVjdG9yVGVzdC5l
dmVudEhhbmRsZXJbIkRPTS5zZXRDaGlsZE5vZGVzIl0gPSBmdW5jdGlvbiAobWVzc2FnZU9iamVj
dCkgeworICAgICAgICBldmVudHNDb3VudCsrOworCisgICAgICAgIGlmIChldmVudHNDb3VudCA9
PT0gMSkKKyAgICAgICAgICAgIGdvdEltbWVkaWF0ZUNoaWxkcmVuKG1lc3NhZ2VPYmplY3QpOwor
ICAgICAgICBlbHNlIGlmIChldmVudHNDb3VudCA9PT0gMikKKyAgICAgICAgICAgIGdvdEFsbENo
aWxkcmVuKG1lc3NhZ2VPYmplY3QpOworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9j
dW1lbnQoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50
IHNvIHRoYXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBz
dGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAg
IGNvbW1hbmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30s
CisgICAgICAgICAgICBjYWxsYmFjazogZ2V0SW1tZWRpYXRlQ2hpbGRyZW4KKyAgICAgICAgfSk7
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdldEltbWVkaWF0ZUNoaWxkcmVuKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHZhciBib2R5SWQgPSByZXN1bHQucm9vdC5jaGlsZHJlblswXS5jaGlsZHJl
blsxXS5ub2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCBpbW1l
ZGlhdGUgY2hpbGRyZW4gb2YgdGhlIGJvZHkiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5y
ZXF1ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGJv
ZHlJZH0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdEltbWVkaWF0ZUNo
aWxkcmVuKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IG1l
c3NhZ2VPYmplY3QucGFyYW1zLm5vZGVzWzBdOworICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxk
IGlzIGEgZGl2IiwgZmlyc3RDaGlsZC5sb2NhbE5hbWUsICJkaXYiKTsKKyAgICAgICAgYXNzZXJ0
KCJGaXJzdCBjaGlsZCBpcyBkaXYjZGVwdGgtMSIsIGZpcnN0Q2hpbGQuYXR0cmlidXRlc1sxXSwg
ImRlcHRoLTEiKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxkIiwg
Zmlyc3RDaGlsZC5jaGlsZE5vZGVDb3VudCwgMSk7CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hp
bGQgaGFzIG5vIC5jaGlsZHJlbiBwcm9wZXJ0eSIsIGZpcnN0Q2hpbGQuY2hpbGRyZW4sIHVuZGVm
aW5lZCk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGFsbCBjaGls
ZHJlbiBvZiBkaXYjZGVwdGgtMSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLnJlcXVlc3RD
aGlsZE5vZGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZmlyc3RDaGls
ZC5ub2RlSWQsICJkZXB0aCI6IE51bWJlci5NQVhfVkFMVUV9CisgICAgICAgIH0pOworICAgIH07
CisKKyAgICBmdW5jdGlvbiBnb3RBbGxDaGlsZHJlbihtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgdmFyIGRlcHRoID0gMTsKKyAgICAgICAgdmFyIG5vZGUgPSBtZXNzYWdlT2JqZWN0LnBh
cmFtcy5ub2Rlc1swXTsKKyAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5jaGlsZHJlbikgewor
ICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuWzBd
OworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KCJkaXYjZGVwdGgtMSBoYXMgbm9kZXMgOSBs
ZXZlbHMgZGVlcCIsIGRlcHRoLCA5KTsKKworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfTsK
KyAgICAKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICB7CisgICAgICAgIGFzc2VydCgi
RXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzIiwgZXZlbnRzQ291bnQsIDIp
OworICAgICAgICAKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
OworCisgICAgZnVuY3Rpb24gc3RlcCh0ZXN0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlxuPT09ICIgKyB0ZXN0Lm5hbWUgKyAiID09PVxuIikKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5zZW5kQ29tbWFuZCh0ZXN0LmNvbW1hbmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rpb24o
bWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJv
cGVydHkoImVycm9yIikpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJ
TDogIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0
LmVycm9yLmNvZGUgKyAiKSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAodGVzdC5jYWxsYmFjaykKKyAgICAgICAgICAgICAgICB0ZXN0LmNhbGxiYWNr
KG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0
aW9uIGFzc2VydChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgaWYg
KGFjdHVhbCA9PT0gZXhwZWN0ZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFT
UzogIiArIG1lc3NhZ2UpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZSArICIsIGV4cGVjdGVkIFwiIiArIGV4cGVjdGVkICsg
IlwiIGJ1dCBnb3QgXCIiICsgYWN0dWFsICsgIlwiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfTsKKworfTsKKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgcnVu
VGVzdCgpOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2
IGlkPSJkZXB0aC0xIj4KKyAgICA8ZGl2IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgPGRpdiBpZD0i
ZGVwdGgtMyI+CisgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC00Ij4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJkZXB0aC01Ij4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgt
NiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC03Ij4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC04Ij4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtOSI+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC0xMCI+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182142</attachid>
            <date>2013-01-10 08:11:57 -0800</date>
            <delta_ts>2013-01-10 15:28:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66868-20130110170858.patch</filename>
            <type>text/plain</type>
            <size>22531</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc3MWY2YTNkZDZjNTY2
ZjBkZDMxZTI1OWRmNmI4YmYyMWNjNjA4My4uMzQ4Mjk1ZDBjNmNhZjA2NmQ0MDQ3YjFlYzI5ODIy
MWQ3M2Q5ZWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDEzLTAxLTEwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
T3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg2OAor
CisgICAgICAgIFVwIHRvIG5vdywgdGhlIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseSgpIG1ldGhvZCB3b3VsZCBjb3JyZWN0bHkKKyAgICAgICAgZXhwYW5kIGNoaWxkcmVu
IHJlY3Vyc2l2ZWx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkZXB0aCwgYnV0IHdvdWxkIG5vdCB3
YWl0IHRvCisgICAgICAgIHBlcmZvcm0gdGhpcyB0YXNrIHVudGlsIGFsbCBjaGlsZCBub2RlcyBo
YWQgYmVlbiBwb3B1bGF0ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcworICAgICAgICB3b3VsZCBv
bmx5IHdvcmsgaW5jcmVtZW50YWxseSB3aXRoIG9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGNoaWxk
IG5vZGVzIGJlaW5nIHNob3duCisgICAgICAgIGV4cGFuZGVkIGluIHRoZSBET00gdHJlZSB1cG9u
IGFsdCtjbGlja2luZyBhIGdpdmVuIG5vZGUgd2l0aCBhIGRlZXAgaGllcmFyY2h5LgorICAgICAg
ICAKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBv
cHRpb25hbCBhcmd1bWVudCB0byB0aGUgRE9NQWdlbnQncworICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcygpIG1ldGhvZHMgdG8gcHJvdmlkZSB0aGUgZGVwdGggYXQgd2hpY2ggd2Ugd2FudCB0byBy
ZXRyaWV2ZSBjaGlsZHJlbgorICAgICAgICBvZiBhIGdpdmVuIG5vZGUuIEluIG9yZGVyIGZvciB0
aGUgZnJvbnQtZW5kIHRvIGtub3cgd2l0aCB3aGF0IHZlcnNpb24gb2YgdGhpcyBtZXRob2QKKyAg
ICAgICAgd2UncmUgZGVhbGluZywgd2UgYWRkIGEgbmV3IC5udW1iZXJPZkFyZ3VtZW50cyBwYXJh
bWV0ZXIgdG8gZnJvbnQtZW5kIG1ldGhvZHMgd2hlbgorICAgICAgICBjb21tYW5kcyBhcmUgcmVn
aXN0ZXJlZCB1c2luZyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlLnJlZ2lzdGVyQ29t
bWFuZCgpLiBUaGlzIHdheQorICAgICAgICB0aGUgRE9NTm9kZS5wcm90b3R5cGUuZ2V0Q2hpbGRO
b2RlcygpIG1ldGhvZCBjYW4gZ3JhY2VmdWxseSBkZXRlY3QgY2xpZW50cyB0aGF0IHN1cHBvcnQK
KyAgICAgICAgcmV0cmlldmFsIG9mIGNoaWxkcmVuIHdpdGggYSBwcm92aWRlZCBkZXB0aCwgYW5k
IGtlZXAgZGVhbGluZyB3aXRoIG9sZGVyIGNsaWVudHMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhl
eSB3ZXJlIGFsd2F5cyBzdXBwb3J0ZWQuCisKKyAgICAgICAgRmluYWxseSwgd2UgaGFkIHRvIG1h
a2UgdGhyZWUgY2hhbmdlcyB0byB0aGUgZnJvbnQtZW5kIHRvIGNvcnJlY3RseSB3YWl0IHVudGls
CisgICAgICAgIG5ldyBjaGlsZCBub2RlcyB3ZXJlIHJldHJpZXZlZCBmcm9tIHRoZSBiYWNrZW5k
IGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHJlY3Vyc2l2ZSBleHBhbnNpb24KKyAgICAgICAg
b2YgaXRlbXMgaW4gdGhlIHRyZWU6CisgICAgICAgIAorICAgICAgICAxLiBBZGQgYSBub3Rpb24g
b2YgZGVwdGggdG8gRWxlbWVudHNUcmVlRWxlbWVudCdzIHVwZGF0ZUNoaWxkcmVuKCkgbWV0aG9k
IGluIG9yZGVyIHRvIHJlcXVlc3QgYWxsIG9mCisgICAgICAgIHRoZSBjaGlsZHJlbiBhdCBvbmNl
IHdoZW4gZGVlcCBleHBhbmRpbmcuCisKKyAgICAgICAgMi4gQWRkIGEgbm90aW9uIG9mIGRlcHRo
IHRvIERPTU5vZGUncyBnZXRDaGlsZE5vZGVzKCkgbWV0aG9kIHNvIHRoYXQgd2UgY2FuIGFzayB0
aGUgYmFja2VuZCBmb3IKKyAgICAgICAgYWxsIGNoaWxkcmVuIHRvIGJlIHB1c2hlZCB0byB0aGUg
ZnJvbnQtZW5kLgorCisgICAgICAgIDMuIEVuc3VyZSB3ZSBkZWxheSB0aGUgZXhwYW5zaW9uIG9m
IG5vZGVzIGluIHRoZSBET00gdHJlZSBpbiBUcmVlRWxlbWVudCdzIGV4cGFuZFJlY3Vyc2l2ZWx5
KCkgbWV0aG9kCisgICAgICAgIHVudGlsIGFsbCBub2RlcyB0aGF0IG5lZWQgdG8gYmUgZXhwYW5k
ZWQgYW5kIHNob3duIGFyZSByZXRyaWV2ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjogQWRkIHRoZSBuZXcgYGRlcHRoYCBwYXJhbWV0ZXIgdG8gRE9NLnJlcXVlc3RDaGlsZE5v
ZGVzKCkuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQp
OiBBZGQgYSBuZXcgb3B0aW9uYWwgYGRlcHRoYCBwYXJhbWV0ZXIKKyAgICAgICAgd2hpY2ggZGVm
YXVsdHMgdG8gMS4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZXF1ZXN0
Q2hpbGROb2Rlcyk6IEFkZCBhIG5ldyBvcHRpb25hbCBgZGVwdGhgIHBhcmFtZXRlcgorICAgICAg
ICB3aGljaCBkZWZhdWx0cyB0byAxLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5w
cm90b3R5cGUuZ2V0Q2hpbGROb2Rlcyk6IEFkZCBhIG5ldyBgZGVwdGhgIHBhcmFtZXRlciBhbmQg
Y29ycmVjdGx5IGRlYWwKKyAgICAgICAgd2l0aCBvbGRlciBjbGllbnRzIHdoaWNoIGRvIG5vdCBo
YXZlIGEgRE9NLnJlcXVlc3RDaGlsZE5vZGVzKCkgbWV0aG9kIHRoYXQgc3VwcG9ydHMgdGhpcyBw
YXJhbWV0ZXIuCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRs
aW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90
eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1l
bnQucHJvdG90eXBlLnBvcHVsYXRlV2l0aERlcHRoKTogTmV3IG1ldGhvZCB0byBhbGxvdyBwb3B1
bGF0aW9uIG9mCisgICAgICAgIERPTSBub2RlcyBnb2luZyBkb3duIHRocm91Z2ggdGhlaXIgY2hp
bGQgbm9kZXMgYSBnaXZlbiBkZXB0aC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1Ry
ZWVFbGVtZW50LnByb3RvdHlwZS5teUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVDaGlsZHJlbik6IFJlbW92ZSB0aGUg
dW51c2VkIGBmb3JjZVJlZnJlc2hgIGFyZ3VtZW50CisgICAgICAgIGFuZCByZXBsYWNlIGl0IHdp
dGggYSBuZXcgYGRlcHRoYCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRWxlbWVu
dHNUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJzaXZlbHkpOiBTdWJjbGFzcyB0aGlz
IG1ldGhvZCB0byBtYWtlIHN1cmUgd2UKKyAgICAgICAgYWx3YXlzIGNhbGwgdGhlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24gd2l0aCBgbWF4RGVwdGhgIHNldCB0byBOdW1iZXIuTUFYX1ZBTFVFLgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZC5qczoKKyAgICAg
ICAgKEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUucmVnaXN0ZXJDb21tYW5kKTogQWRk
IGEgbmV3IC5udW1iZXJPZkFyZ3VtZW50cyBwcm9wZXJ0eSB0byBtZXRob2RzCisgICAgICAgIHJl
Z2lzdGVyZWQgb24gYWdlbnRzIHNvIHRoYXQgd2UgbWF5IHRyYWNrIGNoYW5nZXMgaW4gdGhlIGxp
c3Qgb2YgYXJndW1lbnRzIGR5bmFtaWNhbGx5IGFzIHRoZSBwcm90b2NvbAorICAgICAgICBldm9s
dmVzLiBOb3RlIHRoYXQgdGhlIC5sZW5ndGggcHJvcGVydHkgY2Fubm90IGJlIHVzZWQgaGVyZSBz
aW5jZSB0aGUgbWV0aG9kcyBhcmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nCisgICAgICAgIHRoaXMu
X3NlbmRNZXNzYWdlVG9CYWNrZW5kLmJpbmQoKSB3aGljaCB3b3VsZCBhbHdheXMgaGF2ZSBhIC5s
ZW5ndGggcHJvcGVydHkgb2YgMS4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVv
dXRsaW5lLmpzOgorICAgICAgICAoVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2
ZWx5LmV4cGFuZCk6CisgICAgICAgIChUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJz
aXZlbHkpOiBFbnN1cmUgd2Ugb25seSBleHBhbmQgdGhlIG5vZGVzIGluIHRoZSB0cmVlIG9uY2Ug
dGhleSd2ZSBiZWVuCisgICAgICAgIHBvcHVsYXRlZC4KKwogMjAxMy0wMS0wOSAgWmVubyBBbGJp
c3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01hY10gR3JhcGhpY3NTdXJm
YWNlIGRvZXMgbm90IG5lZWQgZ2xFbmFibGUvZ2xEaXNhYmxlIGZvciB0ZXh0dXJlIHRhcmdldHMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNTdmNmY3YWNkYmZk
ZWQ5MWZhNzk1OTJlNTkwY2I4ODkyNTdjZmFmOC4uOGZhMGZmZjM1NTg3MmM1YjUyMzBhMDVkM2Yx
YjM2ZGQ0ZmJjNDI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpA
QCAtMTcwNyw5ICsxNzA3LDEwIEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5h
bWUiOiAicmVxdWVzdENoaWxkTm9kZXMiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0byBnZXQgY2hpbGRyZW4gZm9yLiIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICIkcmVmIjogIk5vZGVJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZCBvZiB0aGUgbm9kZSB0byBnZXQgY2hpbGRyZW4gZm9yLiIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkZXB0aCIsICJ0eXBlIjogImludGVn
ZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG1heGltdW0gZGVwdGgg
YXQgd2hpY2ggY2hpbGRyZW4gc2hvdWxkIGJlIHJldHJpZXZlZC4iIH0KICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxk
cmVuIG9mIHRoZSBub2RlIHdpdGggZ2l2ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIg
aW4gZm9ybSBvZiA8Y29kZT5zZXRDaGlsZE5vZGVzPC9jb2RlPiBldmVudHMuIgorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxkcmVuIG9mIHRoZSBub2Rl
IHdpdGggZ2l2ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW4gZm9ybSBvZiA8Y29k
ZT5zZXRDaGlsZE5vZGVzPC9jb2RlPiBldmVudHMgd2hlcmUgbm90IG9ubHkgaW1tZWRpYXRlIGNo
aWxkcmVuIGFyZSByZXRyaWV2ZWQsIGJ1dCBhbGwgY2hpbGRyZW4gZG93biB0byB0aGUgc3BlY2lm
aWVkIGRlcHRoLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAicXVlcnlTZWxlY3RvciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBmZDRmNmU0NGRkYjgwM2IzOTdjZWYwZjhkNjI4
YTQzNzkwZTBiOWQwLi42MzM3YzcwMzZjM2UxNGVlZTZjY2EzODE0NjE4YzkzOTVlOGNjNmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTQzMyw3ICs0MzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcgogICAgIHJvb3QgPSBidWls
ZE9iamVjdEZvck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1fZG9jdW1lbnROb2RlVG9JZE1h
cCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVu
ZChpbnQgbm9kZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zy
b250ZW5kKGludCBub2RlSWQsIGludCBkZXB0aCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZv
cklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkVMRU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUg
JiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSkKQEAg
LTQ0Miw3ICs0NDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1Rv
RnJvbnRlbmQoaW50IG5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZVRvSWRNYXAq
IG5vZGVNYXAgPSBtX2lkVG9Ob2Rlc01hcC5nZXQobm9kZUlkKTsKLSAgICBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gY2hpbGRyZW4gPSBidWlsZEFy
cmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4obm9kZSwgMSwgbm9kZU1hcCk7CisgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGNoaWxkcmVuID0gYnVp
bGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKICAgICBt
X2Zyb250ZW5kLT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsKIH0K
IApAQCAtNDc4LDkgKzQ3OCw5IEBAIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9ySWQo
aW50IGlkKQogICAgIHJldHVybiAwOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXF1
ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQpCit2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpyZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0
IGludCogZGVwdGgpCiB7Ci0gICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCk7Cisg
ICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCwgZGVwdGggPyAqZGVwdGggOiAxKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVs
ZW1lbnRJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggZTIzYTgxODBmNDk3MGI4OTdlZmFkYzg3MzQyYTA0ZmU0NWExZGQ1Ny4uOTE5ZTg2OTNl
OWYzOGY5MmRkYmI3ZjI2NmNiNTBjMjY1MmYzOTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpOwogICAgIHZpcnR1YWwgdm9p
ZCBxdWVyeVNlbGVjdG9yQWxsKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8aW50PiA+JiByZXN1bHQpOwog
ICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVp
bGRlcjo6RE9NOjpOb2RlPiYgcm9vdCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGlsZE5v
ZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGlsZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZVZhbHVlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1l
bnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5nKiBuYW1lKTsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKQEAgLTIxOCw3ICsyMTgsNyBAQCBwcml2YXRlOgogICAgIEVsZW1lbnQqIGFz
c2VydEVkaXRhYmxlRWxlbWVudChFcnJvclN0cmluZyosIGludCBub2RlSWQpOwogCiAgICAgaW50
IHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSopOwotICAgIHZvaWQgcHVzaENoaWxkTm9kZXNU
b0Zyb250ZW5kKGludCBub2RlSWQpOworICAgIHZvaWQgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5k
KGludCBub2RlSWQsIGludCBkZXB0aCA9IDEpOwogCiAgICAgYm9vbCBoYXNCcmVha3BvaW50KE5v
ZGUqLCBpbnQgdHlwZSk7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSog
cm9vdCwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKaW5kZXggMTYxYmEwYjNmYWJlMzAxMWFj
YmE1ZTI1ZTQ3ZDEwZGI4MzhmNzhlNC4uMjJmZjEyMjE3YWJiNzA0YjM4MDY5ZWRkNGI2YTgxZjM2
NTVhMTFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01BZ2VudC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFn
ZW50LmpzCkBAIC0yNzcsMTEgKzI3NywxMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAog
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPik9fSBj
YWxsYmFjawogICAgICAqLwotICAgIGdldENoaWxkTm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQor
ICAgIGdldENoaWxkTm9kZXM6IGZ1bmN0aW9uKGRlcHRoLCBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7CisgICAgICAgIGlmIChkZXB0aCA9PT0gMSAmJiB0aGlz
LmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAoY2FsbGJhY2spCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2sodGhpcy5jaGlsZHJlbik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTcsNyAr
Mjk4LDE1IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICBjYWxsYmFjayh0aGlzLmNoaWxkcmVuKTsKICAgICAgICAgfQogCi0gICAgICAgIERPTUFn
ZW50LnJlcXVlc3RDaGlsZE5vZGVzKHRoaXMuaWQsIG15Y2FsbGJhY2suYmluZCh0aGlzKSk7Cisg
ICAgICAgIC8vIFRoZSByZXF1ZXN0Q2hpbGROb2RlcyBtZXRob2QgaGFzIGFuIG9wdGlvbmFsIGRl
cHRoIHBhcmFtZXRlcgorICAgICAgICAvLyB3aGljaCB3YXMgbm90IGluIHRoZSBvcmlnbmlhbCB2
ZXJzaW9uIG9mIHRoZSBtZXRob2QuIEluIG9yZGVyCisgICAgICAgIC8vIHRvIHN1cHBvcnQgaW5z
cGVjdGlvbiBvZiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBXZWJDb3JlLCB3ZSBjaGVjaworICAgICAg
ICAvLyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGlzIG1ldGhvZCBzdXBwb3J0cy4KKyAgICAg
ICAgdmFyIG1ldGhvZCA9IERPTUFnZW50LnJlcXVlc3RDaGlsZE5vZGVzOworICAgICAgICBpZiAo
bWV0aG9kLm51bWJlck9mQXJndW1lbnRzID09PSAyKQorICAgICAgICAgICAgbWV0aG9kKHRoaXMu
aWQsIGRlcHRoLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBtZXRob2QodGhpcy5pZCwgbXljYWxsYmFjay5iaW5kKHRoaXMpKQogICAgIH0sCiAKICAg
ICAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAxMDE5NzEyNTAwZDJhMTk5YjZjM2M1MDQ3NjBh
YTJjYjY3OTg5YjEwLi4zZmNlOWYwZWYxN2ZhZDBkMTlhNDNlNGQ1ZjU5YWQyMDg2ZjVmNDJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzCkBAIC04ODAsMTcgKzg4MCwzOCBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVu
Lmxlbmd0aCB8fCB0aGlzLl9zaG93SW5saW5lVGV4dCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KSB8
fCB0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
dGhpcy51cGRhdGVDaGlsZHJlbigpOworICAgICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKDEpOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmdWxsUmVmcmVzaAor
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNh
bGxiYWNrCisgICAgICovCisgICAgcG9wdWxhdGVXaXRoRGVwdGg6IGZ1bmN0aW9uKGRlcHRoLCBj
YWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihkZXB0aCwgY2Fs
bGJhY2spOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgK
KyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjawogICAgICAqLwotICAgIHVwZGF0ZUNo
aWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVzaCkKKyAgICB1cGRhdGVDaGlsZHJlbjogZnVuY3Rp
b24oZGVwdGgsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9z
ZVRhZykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5nZXRDaGlsZE5vZGVzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywgZnVsbFJlZnJl
c2gpKTsKKworICAgICAgICBmdW5jdGlvbiBteUNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4oZmFsc2UpOworICAgICAgICAgICAgaWYgKGNhbGxi
YWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldENoaWxkTm9kZXMoZGVwdGgsIG15Q2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA0OCw2ICsxMDY5LDEyIEBAIFdlYklu
c3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5l
eHBhbmRlZENoaWxkcmVuTGltaXQgPSBNYXRoLm1heCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9j
aGlsZE5vZGVDb3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3Iu
RWxlbWVudHNUcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCk7CiAgICAgfSwKIAorICAg
IGV4cGFuZFJlY3Vyc2l2ZWx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBDYW4ndCB1
c2UgSW5maW5pdHkgaGVyZSBhcyBpdCB3b3VsZCBiZSBzdHJpbmdpZmllZCBhcyAibnVsbCIuCisg
ICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseS5jYWxsKHRoaXMs
IE51bWJlci5NQVhfVkFMVUUpOworICAgIH0sCisKICAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKQEAgLTIxNjEsNyArMjE4
OCw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAgICAgdmFyIHBhcmVudE5vZGVJdGVtID0gdGhpcy5fdHJlZU91dGxpbmUuZmluZFRy
ZWVFbGVtZW50KHBhcmVudCk7CiAgICAgICAgICAgICBpZiAocGFyZW50Tm9kZUl0ZW0gJiYgIXBh
cmVudE5vZGVJdGVtLmFscmVhZHlVcGRhdGVkQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgICAgICBw
YXJlbnROb2RlSXRlbS51cGRhdGVDaGlsZHJlbigpOworICAgICAgICAgICAgICAgIHBhcmVudE5v
ZGVJdGVtLnVwZGF0ZUNoaWxkcmVuKDEpOwogICAgICAgICAgICAgICAgIHBhcmVudE5vZGVJdGVt
LmFscmVhZHlVcGRhdGVkQ2hpbGRyZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgIHVwZGF0ZWRQ
YXJlbnRUcmVlRWxlbWVudHMucHVzaChwYXJlbnROb2RlSXRlbSk7CiAgICAgICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJh
Y2tlbmQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJh
Y2tlbmQuanMKaW5kZXggYzI3MjJiMzRkNWU4MmMyNmE2MWM1ZDdlYjRiYmEyMWExNTBkZDVlYy4u
MTM1ZDMyODE2MTBlZjZhOTk2NzdhMTY3ODZkYjllMmFjOGViOTg4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZC5qcwpA
QCAtNjksNiArNjksNyBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHdpbmRvd1thZ2VudE5hbWVdW2RvbWFpbkFuZE1ldGhvZFsxXV0gPSB0aGlzLl9zZW5k
TWVzc2FnZVRvQmFja2VuZC5iaW5kKHRoaXMsIG1ldGhvZCwgc2lnbmF0dXJlKTsKICAgICAgICAg
d2luZG93W2FnZW50TmFtZV1bZG9tYWluQW5kTWV0aG9kWzFdXVsiaW52b2tlIl0gPSB0aGlzLl9p
bnZva2UuYmluZCh0aGlzLCBtZXRob2QsIHNpZ25hdHVyZSk7CisgICAgICAgIHdpbmRvd1thZ2Vu
dE5hbWVdW2RvbWFpbkFuZE1ldGhvZFsxXV1bIm51bWJlck9mQXJndW1lbnRzIl0gPSBzaWduYXR1
cmUubGVuZ3RoIHx8IDA7CiAgICAgICAgIHRoaXMuX3JlcGx5QXJnc1ttZXRob2RdID0gcmVwbHlB
cmdzOwogCiAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IDEwZDdmMzMw
OWQ4NjRjMDI2ZTc4NzdlNzc2NzE3MTNjMGI0NGMxZDUuLmEzMGUzOTJmYmMyNzc2Yzk2ZDYzNzQ1
OTM1ZjM0YjQzZTQ4NzI0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvdHJlZW91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC90cmVlb3V0bGluZS5qcwpAQCAtODcxLDEyICs4NzEsMjMgQEAgVHJlZUVsZW1lbnQu
cHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24obWF4RGVwdGgpCiAgICAgaWYg
KGlzTmFOKG1heERlcHRoKSkKICAgICAgICAgbWF4RGVwdGggPSAzOwogCi0gICAgd2hpbGUgKGl0
ZW0pIHsKLSAgICAgICAgaWYgKGRlcHRoIDwgbWF4RGVwdGgpCi0gICAgICAgICAgICBpdGVtLmV4
cGFuZCgpOwotICAgICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxz
ZSwgdGhpcywgKGRlcHRoID49IG1heERlcHRoKSwgaW5mbyk7Ci0gICAgICAgIGRlcHRoICs9IGlu
Zm8uZGVwdGhDaGFuZ2U7CisgICAgZnVuY3Rpb24gZXhwYW5kKCkKKyAgICB7CisgICAgICAgIHdo
aWxlIChpdGVtKSB7CisgICAgICAgICAgICBpZiAoZGVwdGggPCBtYXhEZXB0aCkKKyAgICAgICAg
ICAgICAgICBpdGVtLmV4cGFuZCgpOworICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8pOwor
ICAgICAgICAgICAgZGVwdGggKz0gaW5mby5kZXB0aENoYW5nZTsKKyAgICAgICAgfQogICAgIH0K
KworICAgIC8vIElmIHRoZSBlbGVtZW50IGhhcyBjaGlsZHJlbiwgd2Ugd2FudCB0byBtYWtlIHN1
cmUgaXQncyBmdWxseSBwb3B1bGF0ZWQgYmVmb3JlCisgICAgLy8gZXhwYW5kaW5nIHRoZSBpdGVt
cyB0aGF0IHdpbGwgYmUgaW4gdGhlIHRyZWUgYXMgYSByZXN1bHQgb2YgcmVxdWVzdGluZyB0aGVt
CisgICAgLy8gZnJvbSB0aGUgYmFja2VuZC4KKyAgICBpZiAoaXRlbS5oYXNDaGlsZHJlbiAmJiBp
dGVtLnBvcHVsYXRlV2l0aERlcHRoKQorICAgICAgICBpdGVtLnBvcHVsYXRlV2l0aERlcHRoKG1h
eERlcHRoLCBleHBhbmQuYmluZCh0aGlzKSk7CisgICAgZWxzZQorICAgICAgICBleHBhbmQoKTsK
IH0KIAogVHJlZUVsZW1lbnQucHJvdG90eXBlLmhhc0FuY2VzdG9yID0gZnVuY3Rpb24oYW5jZXN0
b3IpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAwOTNhM2NkZTVmMDVhMGJjMzY5YWI3NzAyMTFjNDI3YWMzNGIyNWU5Li4y
NzIyNGQ0YzUxNWU3MmM2M2JhODQ3MTMxZGJmZTM4YmNhYWNmYjE5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjAgQEAKKzIwMTMtMDEtMTAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBPcHRpb24rQ2xpY2sgb24gTm9kZSBFeHBhbmRlciBEb2Vz
bid0IFdvcmsgdGhlIEZpcnN0IFRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2ODY4CisKKyAgICAgICAgVGVzdGluZyB0aGUgbmV3IGBkZXB0aGAg
cGFyYW1ldGVyIGZvciB0aGUgcmVxdWVzdENoaWxkTm9kZXMgbWV0aG9kLiBBbHNvLAorICAgICAg
ICBmaXhpbmcgc29tZSB1dGlsaXRpZXMgdGhhdCByZWx5IG9uIC5nZXRDaGlsZE5vZGVzKCkgd2hp
Y2ggaGFzIGEgbmV3IHNpZ25hdHVyZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanM6
CisgICAgICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0LnByb2Nlc3NDaGlsZHJlbik6CisgICAg
ICAgIChpbml0aWFsaXplX0VsZW1lbnRUZXN0LmRvY3VtZW50UmVxdWVzdGVkKToKKyAgICAgICAg
KGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5maW5kTm9kZSk6CisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA5ICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIEVGTCBw
b3J0IGdhcmRlbmluZyBhZnRlciByMTM5MTQ1LCByMTM5MDAyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5kZXggOGFmM2NjNjE1MjBm
NTIzYTAzYzA2ZGQ0Mjg4ODJhYjRjZDE4YjAwOC4uMjg5NTZhZGViMmRlNTg2MTViYmQ3MTc4YmM3
NTY1ZWUxOTg1YzE4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9lbGVtZW50cy10ZXN0LmpzCkBAIC0yMCw3ICsyMCw3IEBAIEluc3BlY3RvclRlc3QuZmluZE5v
ZGUgPSBmdW5jdGlvbihtYXRjaEZ1bmN0aW9uLCBjYWxsYmFjaykKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwZW5kaW5nUmVxdWVzdHMrKzsKLSAg
ICAgICAgICAgIGNoaWxkTm9kZS5nZXRDaGlsZE5vZGVzKHByb2Nlc3NDaGlsZHJlbi5iaW5kKG51
bGwsIGZhbHNlKSk7CisgICAgICAgICAgICBjaGlsZE5vZGUuZ2V0Q2hpbGROb2RlcygxLCBwcm9j
ZXNzQ2hpbGRyZW4uYmluZChudWxsLCBmYWxzZSkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHRvcExldmVsKQpAQCAtMzMsNyArMzMsNyBAQCBJbnNwZWN0b3JUZXN0LmZpbmROb2RlID0gZnVu
Y3Rpb24obWF0Y2hGdW5jdGlvbiwgY2FsbGJhY2spCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50
LnJlcXVlc3REb2N1bWVudChkb2N1bWVudFJlcXVlc3RlZC5iaW5kKHRoaXMpKTsKICAgICBmdW5j
dGlvbiBkb2N1bWVudFJlcXVlc3RlZChkb2MpCiAgICAgewotICAgICAgICBkb2MuZ2V0Q2hpbGRO
b2Rlcyhwcm9jZXNzQ2hpbGRyZW4uYmluZCh0aGlzLCB0cnVlKSk7CisgICAgICAgIGRvYy5nZXRD
aGlsZE5vZGVzKDEsIHByb2Nlc3NDaGlsZHJlbi5iaW5kKHRoaXMsIHRydWUpKTsKICAgICB9CiB9
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVl
c3QtY2hpbGQtbm9kZXMtZGVwdGgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
LXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40Yzc0YmMyNTMwN2YyODQ3NTE0NDcxZWQzZDUwMjhhZDJlMGQ1MjA3Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNo
aWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACisKKz09PSBHZXQg
dGhlIERvY3VtZW50ID09PQorCisKKz09PSBHZXQgaW1tZWRpYXRlIGNoaWxkcmVuIG9mIHRoZSBi
b2R5ID09PQorCitQQVNTOiBGaXJzdCBjaGlsZCBpcyBhIGRpdgorUEFTUzogRmlyc3QgY2hpbGQg
aXMgZGl2I2RlcHRoLTEKK1BBU1M6IEZpcnN0IGNoaWxkIGhhcyBvbmUgY2hpbGQKK1BBU1M6IEZp
cnN0IGNoaWxkIGhhcyBubyAuY2hpbGRyZW4gcHJvcGVydHkKKworPT09IEdldCBhbGwgY2hpbGRy
ZW4gb2YgZGl2I2RlcHRoLTEgPT09CisKK1BBU1M6IGRpdiNkZXB0aC0xIGhhcyBub2RlcyA5IGxl
dmVscyBkZWVwCitQQVNTOiBFeHBlY3RlZCBudW1iZXIgb2Ygc2V0Q2hpbGROb2RlcyBldmVudHMK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTEwNDBhMzFl
NDYxOWY4ZjgzZDUxNTc3Y2JkNTM4YTA3YmZkZmNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0
bWwKQEAgLTAsMCArMSwxMzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJj
ZXMvcHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCI+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworCisgICAgdmFyIGV2ZW50c0NvdW50ID0gMDsK
KworICAgIGdldERvY3VtZW50KCk7CisKKyAgICBJbnNwZWN0b3JUZXN0LmV2ZW50SGFuZGxlclsi
RE9NLnNldENoaWxkTm9kZXMiXSA9IGZ1bmN0aW9uIChtZXNzYWdlT2JqZWN0KSB7CisgICAgICAg
IGV2ZW50c0NvdW50Kys7CisKKyAgICAgICAgaWYgKGV2ZW50c0NvdW50ID09PSAxKQorICAgICAg
ICAgICAgZ290SW1tZWRpYXRlQ2hpbGRyZW4obWVzc2FnZU9iamVjdCk7CisgICAgICAgIGVsc2Ug
aWYgKGV2ZW50c0NvdW50ID09PSAyKQorICAgICAgICAgICAgZ290QWxsQ2hpbGRyZW4obWVzc2Fn
ZU9iamVjdCk7CisgICAgfTsKKyAgICAKKyAgICBmdW5jdGlvbiBnZXREb2N1bWVudCgpCisgICAg
eworICAgICAgICAvLyBXZSBtdXN0IGZpcnN0IGdldCB0aGUgZG9jdW1lbnQgc28gdGhhdCBsYXRl
ciBvbiB3ZSBtYXkgZ2V0IHNlbnNpYmxlIG5vZGVJZHMuCisgICAgICAgIHN0ZXAoeworICAgICAg
ICAgICAgbmFtZTogIkdldCB0aGUgRG9jdW1lbnQiLAorICAgICAgICAgICAgY29tbWFuZDogIkRP
TS5nZXREb2N1bWVudCIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7fSwKKyAgICAgICAgICAg
IGNhbGxiYWNrOiBnZXRJbW1lZGlhdGVDaGlsZHJlbgorICAgICAgICB9KTsKKyAgICB9OworCisg
ICAgZnVuY3Rpb24gZ2V0SW1tZWRpYXRlQ2hpbGRyZW4ocmVzdWx0KQorICAgIHsKKyAgICAgICAg
dmFyIGJvZHlJZCA9IHJlc3VsdC5yb290LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLm5vZGVJZDsK
KyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGltbWVkaWF0ZSBjaGlsZHJl
biBvZiB0aGUgYm9keSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLnJlcXVlc3RDaGlsZE5v
ZGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogYm9keUlkfQorICAgICAg
ICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ290SW1tZWRpYXRlQ2hpbGRyZW4obWVzc2Fn
ZU9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBmaXJzdENoaWxkID0gbWVzc2FnZU9iamVjdC5w
YXJhbXMubm9kZXNbMF07CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hpbGQgaXMgYSBkaXYiLCBm
aXJzdENoaWxkLmxvY2FsTmFtZSwgImRpdiIpOworICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxk
IGlzIGRpdiNkZXB0aC0xIiwgZmlyc3RDaGlsZC5hdHRyaWJ1dGVzWzFdLCAiZGVwdGgtMSIpOwor
ICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxkIGhhcyBvbmUgY2hpbGQiLCBmaXJzdENoaWxkLmNo
aWxkTm9kZUNvdW50LCAxKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBoYXMgbm8gLmNo
aWxkcmVuIHByb3BlcnR5IiwgZmlyc3RDaGlsZC5jaGlsZHJlbiwgdW5kZWZpbmVkKTsKKworICAg
ICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgYWxsIGNoaWxkcmVuIG9mIGRpdiNk
ZXB0aC0xIiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00ucmVxdWVzdENoaWxkTm9kZXMiLAor
ICAgICAgICAgICAgcGFyYW1ldGVyczogeyJub2RlSWQiOiBmaXJzdENoaWxkLm5vZGVJZCwgImRl
cHRoIjogTnVtYmVyLk1BWF9WQUxVRX0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0
aW9uIGdvdEFsbENoaWxkcmVuKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgZGVw
dGggPSAxOworICAgICAgICB2YXIgbm9kZSA9IG1lc3NhZ2VPYmplY3QucGFyYW1zLm5vZGVzWzBd
OworICAgICAgICB3aGlsZSAobm9kZSAmJiBub2RlLmNoaWxkcmVuKSB7CisgICAgICAgICAgICBk
ZXB0aCsrOworICAgICAgICAgICAgbm9kZSA9IG5vZGUuY2hpbGRyZW5bMF07CisgICAgICAgIH0K
KworICAgICAgICBhc3NlcnQoImRpdiNkZXB0aC0xIGhhcyBub2RlcyA5IGxldmVscyBkZWVwIiwg
ZGVwdGgsIDkpOworCisgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICB9OworICAgIAorICAgIGZ1
bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgIHsKKyAgICAgICAgYXNzZXJ0KCJFeHBlY3RlZCBudW1i
ZXIgb2Ygc2V0Q2hpbGROb2RlcyBldmVudHMiLCBldmVudHNDb3VudCwgMik7CisgICAgICAgIAor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH07CisKKyAgICBmdW5j
dGlvbiBzdGVwKHRlc3QpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiXG49PT0g
IiArIHRlc3QubmFtZSArICIgPT09XG4iKQorICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21t
YW5kKHRlc3QuY29tbWFuZCwgdGVzdC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdlT2JqZWN0
KSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiZXJyb3Ii
KSkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsgbWVzc2Fn
ZU9iamVjdC5lcnJvci5tZXNzYWdlICsgIiAoIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IuY29kZSAr
ICIpIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh0
ZXN0LmNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVj
dC5yZXN1bHQpOworICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYXNzZXJ0KG1l
c3NhZ2UsIGFjdHVhbCwgZXhwZWN0ZWQpCisgICAgeworICAgICAgICBpZiAoYWN0dWFsID09PSBl
eHBlY3RlZCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiAiICsgbWVzc2Fn
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6
ICIgKyBtZXNzYWdlICsgIiwgZXhwZWN0ZWQgXCIiICsgZXhwZWN0ZWQgKyAiXCIgYnV0IGdvdCBc
IiIgKyBhY3R1YWwgKyAiXCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgICAgIH0KKyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBm
YWxzZSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImRlcHRoLTEi
PgorICAgIDxkaXYgaWQ9ImRlcHRoLTIiPgorICAgICAgICA8ZGl2IGlkPSJkZXB0aC0zIj4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTQiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRl
cHRoLTUiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC02Ij4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTciPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9ImRlcHRoLTgiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJkZXB0aC05Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDxkaXYgaWQ9ImRlcHRoLTEwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182217</attachid>
            <date>2013-01-10 15:28:27 -0800</date>
            <delta_ts>2013-01-11 03:16:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66868-20130111002529.patch</filename>
            <type>text/plain</type>
            <size>19122</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc3MWY2YTNkZDZjNTY2
ZjBkZDMxZTI1OWRmNmI4YmYyMWNjNjA4My4uZjU4NDI2NTlkN2QyZjVjZWQ0NWVlOWYwNTEzNmU4
ZjFlNjM2MTY3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAxLTEwICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
T3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg2OAor
CisgICAgICAgIFVwIHRvIG5vdywgdGhlIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseSgpIG1ldGhvZCB3b3VsZCBjb3JyZWN0bHkKKyAgICAgICAgZXhwYW5kIGNoaWxkcmVu
IHJlY3Vyc2l2ZWx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkZXB0aCwgYnV0IHdvdWxkIG5vdCB3
YWl0IHRvCisgICAgICAgIHBlcmZvcm0gdGhpcyB0YXNrIHVudGlsIGFsbCBjaGlsZCBub2RlcyBo
YWQgYmVlbiBwb3B1bGF0ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcworICAgICAgICB3b3VsZCBv
bmx5IHdvcmsgaW5jcmVtZW50YWxseSB3aXRoIG9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGNoaWxk
IG5vZGVzIGJlaW5nIHNob3duCisgICAgICAgIGV4cGFuZGVkIGluIHRoZSBET00gdHJlZSB1cG9u
IGFsdCtjbGlja2luZyBhIGdpdmVuIG5vZGUgd2l0aCBhIGRlZXAgaGllcmFyY2h5LgorICAgICAg
ICAKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBv
cHRpb25hbCBhcmd1bWVudCB0byB0aGUgRE9NQWdlbnQncworICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcygpIG1ldGhvZHMgdG8gcHJvdmlkZSB0aGUgZGVwdGggYXQgd2hpY2ggd2Ugd2FudCB0byBy
ZXRyaWV2ZSBjaGlsZHJlbgorICAgICAgICBvZiBhIGdpdmVuIG5vZGUuIFRoZSBET01BZ2VudCBw
cm92aWRlcyBhIG5ldyAuZ2V0U3VidHJlZSgpIG1ldGhvZCB0aGF0IGNhbGxzCisgICAgICAgIHJl
cXVlc3RDaGlsZE5vZGVzKCkgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguCisKKyAgICAgICAgVGhl
biBpbiBFbGVtZW50c1RyZWVPdXRsaW5lLCB3ZSBzdWJjbGFzcyAuZXhwYW5kUmVjdXJzaXZlbHko
KSB0byBmaXJzdCBjYWxsIERPTUFnZW50J3MKKyAgICAgICAgbmV3IC5nZXRTdWJ0cmVlKCkgbWV0
aG9kIGFuZCB0aGVuIGNhbGwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBhbGwgbm9k
ZXMKKyAgICAgICAgaGF2ZSBiZWVuIHJldHJpZXZlZCBmcm9tIHRoZSBiYWNrZW5kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0
b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGguaHRtbAorICAgICAgICAg
ICAgICAgaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEFkZCB0aGUgbmV3IGBkZXB0aGAgcGFyYW1l
dGVyIHRvIERPTS5yZXF1ZXN0Q2hpbGROb2RlcygpLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKTogQWRkIGEgbmV3IG9wdGlvbmFsIGBkZXB0aGAgcGFy
YW1ldGVyCisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDEuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMpOiBBZGQgYSBuZXcgb3B0aW9uYWwg
YGRlcHRoYCBwYXJhbWV0ZXIKKyAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gMS4KKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckRPTUFn
ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NTm9kZS5wcm90b3R5cGUuZ2V0U3VidHJlZSk6IE5ldyBtZXRob2QgYWxsb3dpbmcgdG8g
c3BlY2lmeSBhdCB3aGF0IGRlcHRoCisgICAgICAgIHdlIHdhbnQgdG8gcmV0cmlldmUgY2hpbGRy
ZW4gb2YgYSBnaXZlbiBub2RlIGZyb20gdGhlIGJhY2tlbmQuCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlLmV4cGFuZFJlY3Vyc2l2ZWx5LmNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZS5l
eHBhbmRSZWN1cnNpdmVseSk6IE92ZXJyaWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KKyAgICAg
ICAgdG8gZmlyc3Qgb2J0YWluIHRoZSBkZWVwZXN0IHN1YnRyZWUgZm9yIHRoZSBjdXJyZW50IG5v
ZGUgc28gdGhhdCBkZWVwIGV4cGFuc2lvbiBoYXBwZW5zIGFzIGV4cGVjdGVkLgorCiAyMDEzLTAx
LTA5ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bTWFj
XSBHcmFwaGljc1N1cmZhY2UgZG9lcyBub3QgbmVlZCBnbEVuYWJsZS9nbERpc2FibGUgZm9yIHRl
eHR1cmUgdGFyZ2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRl
eCA1N2Y2ZjdhY2RiZmRlZDkxZmE3OTU5MmU1OTBjYjg4OTI1N2NmYWY4Li5mMDk3ZWFiYzJmMDli
NDE2OWZmNzEyZjU3OGYxMWE0ZDc4YmQ4MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uCkBAIC0xNzA3LDkgKzE3MDcsMTAgQEAKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0Q2hpbGROb2RlcyIsCiAgICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwg
IiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRvIGdldCBj
aGlsZHJlbiBmb3IuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibm9kZUlkIiwg
IiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2RlIHRvIGdldCBj
aGlsZHJlbiBmb3IuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRlcHRoIiwg
InR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUg
bWF4aW11bSBkZXB0aCBhdCB3aGljaCBjaGlsZHJlbiBzaG91bGQgYmUgcmV0cmlldmVkLCBkZWZh
dWx0cyB0byAxLiIgfQogICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgY2hpbGRyZW4gb2YgdGhlIG5vZGUgd2l0aCBnaXZlbiBp
ZCBhcmUgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBpbiBmb3JtIG9mIDxjb2RlPnNldENoaWxkTm9k
ZXM8L2NvZGU+IGV2ZW50cy4iCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVl
c3RzIHRoYXQgY2hpbGRyZW4gb2YgdGhlIG5vZGUgd2l0aCBnaXZlbiBpZCBhcmUgcmV0dXJuZWQg
dG8gdGhlIGNhbGxlciBpbiBmb3JtIG9mIDxjb2RlPnNldENoaWxkTm9kZXM8L2NvZGU+IGV2ZW50
cyB3aGVyZSBub3Qgb25seSBpbW1lZGlhdGUgY2hpbGRyZW4gYXJlIHJldHJpZXZlZCwgYnV0IGFs
bCBjaGlsZHJlbiBkb3duIHRvIHRoZSBzcGVjaWZpZWQgZGVwdGguIgogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJxdWVyeVNlbGVjdG9yIiwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4
IGZkNGY2ZTQ0ZGRiODAzYjM5N2NlZjBmOGQ2MjhhNDM3OTBlMGI5ZDAuLmM4MjVlYmJmMjJiMDI4
NTg2YTgwNzc1ZWM2M2RmNjg0NTAyMTFhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldERvY3VtZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgUmVmUHRy
PFR5cGVCdWlsZGVyCiAgICAgcm9vdCA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShtX2RvY3VtZW50Lmdl
dCgpLCAyLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGludCBub2RlSWQpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5vZGVJZCwgaW50IGRlcHRo
KQogewogICAgIE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKICAgICBpZiAoIW5vZGUg
fHwgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVU
eXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpKQpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKQogICAgICAg
ICByZXR1cm47CiAKICAgICBOb2RlVG9JZE1hcCogbm9kZU1hcCA9IG1faWRUb05vZGVzTWFwLmdl
dChub2RlSWQpOwotICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRP
TTo6Tm9kZT4gPiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihub2Rl
LCAxLCBub2RlTWFwKTsKKyAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpET006Ok5vZGU+ID4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4o
bm9kZSwgZGVwdGgsIG5vZGVNYXApOwogICAgIG1fZnJvbnRlbmQtPnNldENoaWxkTm9kZXMobm9k
ZUlkLCBjaGlsZHJlbi5yZWxlYXNlKCkpOwogfQogCkBAIC00NzgsOSArNDc4LDkgQEAgTm9kZSog
SW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChpbnQgaWQpCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlcXVlc3RDaGlsZE5vZGVzKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgaW50KiBkZXB0aCkKIHsKLSAgICBwdXNoQ2hp
bGROb2Rlc1RvRnJvbnRlbmQobm9kZUlkKTsKKyAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQo
bm9kZUlkLCBkZXB0aCAmJiBkZXB0aCA+PSAwID8gKmRlcHRoIDogMSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGUyM2E4MTgw
ZjQ5NzBiODk3ZWZhZGM4NzM0MmEwNGZlNDVhMWRkNTcuLjkxOWU4NjkzZTlmMzhmOTJkZGJiN2Yy
NjZjYjUwYzI2NTJmMzk0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBz
ZWxlY3RvcnMsIGludCogZWxlbWVudElkKTsKICAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3Rv
ckFsbChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4gPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9k
ZT4mIHJvb3QpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0cmlu
ZyosIGludCBub2RlSWQpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0
dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0dHJp
YnV0ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7CkBA
IC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVs
ZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKIAogICAgIGludCBwdXNoTm9kZVBhdGhU
b0Zyb250ZW5kKE5vZGUqKTsKLSAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQg
bm9kZUlkKTsKKyAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkLCBp
bnQgZGVwdGggPSAxKTsKIAogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUp
OwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQzMl90
IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDE2MWJhMGIzZmFiZTMwMTFhY2JhNWUyNWU0N2QxMGRi
ODM4Zjc4ZTQuLjgzZGY1YWU2ZjE0NzE2ZGE4Yjk2NjVkODg2Zjg2ODFjMTYyZGRjOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwpAQCAtMzAx
LDYgKzMwMSwyNSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7aW50fSBkZXB0aAorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPik9fSBjYWxsYmFjaworICAgICAqLwor
ICAgIGdldFN1YnRyZWU6IGZ1bmN0aW9uKGRlcHRoLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAg
IC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9CisgICAgICAgICAq
IEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKi8KKyAgICAgICAgZnVu
Y3Rpb24gbXljYWxsYmFjayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFlcnJv
ciAmJiBjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh0aGlzLmNoaWxkcmVuKTsK
KyAgICAgICAgfQorCisgICAgICAgIERPTUFnZW50LnJlcXVlc3RDaGlsZE5vZGVzKHRoaXMuaWQs
IGRlcHRoLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvcik9fSBjYWxsYmFjawogICAgICAqLwog
ICAgIGdldE91dGVySFRNTDogZnVuY3Rpb24oY2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5k
ZXggMTAxOTcxMjUwMGQyYTE5OWI2YzNjNTA0NzYwYWEyY2I2Nzk4OWIxMC4uZTVjN2U4ZGNjYWYw
NzlmM2E3YWI3OWJkNmQxMjc0Mzg5OWZlMGRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMTA0
OCw2ICsxMDQ4LDE5IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgPSBNYXRoLm1heCh0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Ll9jaGlsZE5vZGVDb3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVu
TGltaXQgKyBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5M
aW1pdCk7CiAgICAgfSwKIAorICAgIGV4cGFuZFJlY3Vyc2l2ZWx5OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICAvLyBDYW4ndCB1c2UgSW5maW5pdHkgaGVyZSBhcyBpdCB3b3VsZCBiZSBzdHJp
bmdpZmllZCBhcyAibnVsbCIuCisgICAgICAgIHZhciBkZXB0aCA9IE51bWJlci5NQVhfVkFMVUU7
CisKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBU
cmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJzaXZlbHkuY2FsbCh0aGlzLCBkZXB0aCk7
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmdl
dFN1YnRyZWUoZGVwdGgsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0sCisKICAgICBvbmV4
cGFuZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRh
ZykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCAwOTNhM2NkZTVmMDVhMGJjMzY5YWI3NzAyMTFjNDI3YWMzNGIyNWU5Li5hZmIy
ZWU3ZGExMzc0MzI5YTc4ZDliNGMwODAzNTExMDdmYWIwOThkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTMtMDEtMTAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBPcHRpb24rQ2xpY2sgb24gTm9kZSBFeHBhbmRlciBEb2Vzbid0
IFdvcmsgdGhlIEZpcnN0IFRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY2ODY4CisKKyAgICAgICAgQWRkaW5nIGEgbmV3IHByb3RvY29sIHRlc3Qg
dGhhdCBjb3ZlcnMgdGhlIG5ldyBgZGVwdGhgIHBhcmFtZXRlciBmb3IgdGhlCisgICAgICAgIHJl
cXVlc3RDaGlsZE5vZGVzIG1ldGhvZCBhbmQgYSBuZXcgZnJvbnQtZW5kIG1ldGhvZCB0aGF0IHRl
c3RzIGNvcnJlY3QKKyAgICAgICAgYmVoYXZpb3Igb2YgdGhlIGV4cGFuZFJlY3Vyc2l2ZWx5KCkg
bWV0aG9kLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVt
ZW50cy9leHBhbmQtcmVjdXJzaXZlbHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvZWxlbWVudHMvZXhwYW5kLXJlY3Vyc2l2ZWx5Lmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAxLTA5ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29t
PgogCiAgICAgICAgIEVGTCBwb3J0IGdhcmRlbmluZyBhZnRlciByMTM5MTQ1LCByMTM5MDAyLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNo
aWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGM3NGJjMjUzMDdmMjg0NzUxNDQ3MWVkM2Q1MDI4YWQyZTBkNTIwNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1u
b2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNiBAQAorCis9PT0gR2V0IHRoZSBE
b2N1bWVudCA9PT0KKworCis9PT0gR2V0IGltbWVkaWF0ZSBjaGlsZHJlbiBvZiB0aGUgYm9keSA9
PT0KKworUEFTUzogRmlyc3QgY2hpbGQgaXMgYSBkaXYKK1BBU1M6IEZpcnN0IGNoaWxkIGlzIGRp
diNkZXB0aC0xCitQQVNTOiBGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxkCitQQVNTOiBGaXJzdCBj
aGlsZCBoYXMgbm8gLmNoaWxkcmVuIHByb3BlcnR5CisKKz09PSBHZXQgYWxsIGNoaWxkcmVuIG9m
IGRpdiNkZXB0aC0xID09PQorCitQQVNTOiBkaXYjZGVwdGgtMSBoYXMgbm9kZXMgOSBsZXZlbHMg
ZGVlcAorUEFTUzogRXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGls
ZC1ub2Rlcy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1y
ZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGExNTE5ODVjMjA2Yzk4
M2RhM2YwZTBiMTg3MWFmZDY2ZThmMTZkYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sCkBA
IC0wLDAgKzEsMTM3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3By
b3RvY29sLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBldmVudHNDb3VudCA9IDA7CisKKyAg
ICBnZXREb2N1bWVudCgpOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRPTS5z
ZXRDaGlsZE5vZGVzIl0gPSBmdW5jdGlvbiBzZXRDaGlsZE5vZGVzKG1lc3NhZ2VPYmplY3QpCisg
ICAgeworICAgICAgICBldmVudHNDb3VudCsrOworCisgICAgICAgIGlmIChldmVudHNDb3VudCA9
PT0gMSkKKyAgICAgICAgICAgIGdvdEltbWVkaWF0ZUNoaWxkcmVuKG1lc3NhZ2VPYmplY3QpOwor
ICAgICAgICBlbHNlIGlmIChldmVudHNDb3VudCA9PT0gMikKKyAgICAgICAgICAgIGdvdEFsbENo
aWxkcmVuKG1lc3NhZ2VPYmplY3QpOworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9j
dW1lbnQoKQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50
IHNvIHRoYXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBz
dGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAg
IGNvbW1hbmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30s
CisgICAgICAgICAgICBjYWxsYmFjazogZ2V0SW1tZWRpYXRlQ2hpbGRyZW4KKyAgICAgICAgfSk7
CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdldEltbWVkaWF0ZUNoaWxkcmVuKHJlc3VsdCkKKyAg
ICB7CisgICAgICAgIHZhciBib2R5SWQgPSByZXN1bHQucm9vdC5jaGlsZHJlblswXS5jaGlsZHJl
blsxXS5ub2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCBpbW1l
ZGlhdGUgY2hpbGRyZW4gb2YgdGhlIGJvZHkiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5y
ZXF1ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGJv
ZHlJZH0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdEltbWVkaWF0ZUNo
aWxkcmVuKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IG1l
c3NhZ2VPYmplY3QucGFyYW1zLm5vZGVzWzBdOworICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxk
IGlzIGEgZGl2IiwgZmlyc3RDaGlsZC5sb2NhbE5hbWUsICJkaXYiKTsKKyAgICAgICAgYXNzZXJ0
KCJGaXJzdCBjaGlsZCBpcyBkaXYjZGVwdGgtMSIsIGZpcnN0Q2hpbGQuYXR0cmlidXRlc1sxXSwg
ImRlcHRoLTEiKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxkIiwg
Zmlyc3RDaGlsZC5jaGlsZE5vZGVDb3VudCwgMSk7CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hp
bGQgaGFzIG5vIC5jaGlsZHJlbiBwcm9wZXJ0eSIsIGZpcnN0Q2hpbGQuY2hpbGRyZW4sIHVuZGVm
aW5lZCk7CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGFsbCBjaGls
ZHJlbiBvZiBkaXYjZGVwdGgtMSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLnJlcXVlc3RD
aGlsZE5vZGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZmlyc3RDaGls
ZC5ub2RlSWQsICJkZXB0aCI6IE51bWJlci5NQVhfVkFMVUV9CisgICAgICAgIH0pOworICAgIH07
CisKKyAgICBmdW5jdGlvbiBnb3RBbGxDaGlsZHJlbihtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAg
ICAgICAgdmFyIGRlcHRoID0gMTsKKyAgICAgICAgdmFyIG5vZGUgPSBtZXNzYWdlT2JqZWN0LnBh
cmFtcy5ub2Rlc1swXTsKKyAgICAgICAgd2hpbGUgKG5vZGUgJiYgbm9kZS5jaGlsZHJlbikgewor
ICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLmNoaWxkcmVuWzBd
OworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KCJkaXYjZGVwdGgtMSBoYXMgbm9kZXMgOSBs
ZXZlbHMgZGVlcCIsIGRlcHRoLCA5KTsKKworICAgICAgICBmaW5pc2hUZXN0KCk7CisgICAgfTsK
KyAgICAKKyAgICBmdW5jdGlvbiBmaW5pc2hUZXN0KCkKKyAgICB7CisgICAgICAgIGFzc2VydCgi
RXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzIiwgZXZlbnRzQ291bnQsIDIp
OworICAgICAgICAKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICB9
OworCisgICAgZnVuY3Rpb24gc3RlcCh0ZXN0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlxuPT09ICIgKyB0ZXN0Lm5hbWUgKyAiID09PVxuIikKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5zZW5kQ29tbWFuZCh0ZXN0LmNvbW1hbmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rpb24o
bWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3duUHJv
cGVydHkoImVycm9yIikpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRkFJ
TDogIiArIG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0
LmVycm9yLmNvZGUgKyAiKSIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAodGVzdC5jYWxsYmFjaykKKyAgICAgICAgICAgICAgICB0ZXN0LmNhbGxiYWNr
KG1lc3NhZ2VPYmplY3QucmVzdWx0KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0
aW9uIGFzc2VydChtZXNzYWdlLCBhY3R1YWwsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgaWYg
KGFjdHVhbCA9PT0gZXhwZWN0ZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFT
UzogIiArIG1lc3NhZ2UpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJGQUlMOiAiICsgbWVzc2FnZSArICIsIGV4cGVjdGVkIFwiIiArIGV4cGVjdGVkICsg
IlwiIGJ1dCBnb3QgXCIiICsgYWN0dWFsICsgIlwiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisgICAgfTsKKworfTsKKword2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgcnVu
VGVzdCgpOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2
IGlkPSJkZXB0aC0xIj4KKyAgICA8ZGl2IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgPGRpdiBpZD0i
ZGVwdGgtMyI+CisgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC00Ij4KKyAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJkZXB0aC01Ij4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgt
NiI+CisgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC03Ij4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC04Ij4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtOSI+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC0xMCI+CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+
Cis8L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZXhwYW5kLXJlY3Vyc2l2ZWx5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wZDUxZGZlNGRhMjA1NzYxNTE2MDliMzhiOGVhZTc2Yjk4Nzc2NWYzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1
cnNpdmVseS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCBleHBhbmRp
bmcgZWxlbWVudHMgcmVjdXJzaXZlbHkgd29ya3MuCisKKworUnVubmluZzogaW5pdGlhbEV4cGFu
ZAorCitSdW5uaW5nOiBkZWVwRXhwYW5kCisKK1J1bm5pbmc6IGR1bXAKKy0gPGRpdiBpZD0iZGVw
dGgtMSI+CisgICAgLSA8ZGl2IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgLSA8ZGl2IGlkPSJkZXB0
aC0zIj4KKyAgICAgICAgICAgIC0gPGRpdiBpZD0iZGVwdGgtNCI+CisgICAgICAgICAgICAgICAg
LSA8ZGl2IGlkPSJkZXB0aC01Ij4KKyAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0
aC02Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIC0gPGRpdiBpZD0iZGVwdGgtNyI+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC04Ij4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC05Ij4KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtMTAiPlxuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgPC9k
aXY+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgPC9kaXY+CisgICAg
ICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgPC9kaXY+CisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZlbHkuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZlbHkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZGY4N2YzZWJhN2IzMDJjZDEwNTljMDM0Mjk5NWZkMTY3NjgzNTllCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVs
eS5odG1sCkBAIC0wLDAgKzEsNzYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRyZWVPdXRs
aW5lOworCisgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3VpdGUoWworICAgICAgICBmdW5jdGlv
biBpbml0aWFsRXhwYW5kKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV4
cGFuZFJvb3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5lLl91
cGRhdGVNb2RpZmllZE5vZGVzKCk7CisgICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdHJl
ZU91dGxpbmUuY2hpbGRyZW47CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGNoaWxk
cmVuICYmIGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBj
aGlsZHJlbltpXS5leHBhbmQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
bmV4dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
bmVsKCJlbGVtZW50cyIpOworICAgICAgICAgICAgdHJlZU91dGxpbmUgPSBXZWJJbnNwZWN0b3Iu
cGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5m
aW5kTm9kZShmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LCBleHBhbmRSb290KTsKKyAgICAg
ICAgfSwKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGRlZXBFeHBhbmQobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHRvcE5vZGUgPSB0cmVlT3V0bGluZS5jaGlsZHJlblswXS5j
aGlsZHJlblsxXS5jaGlsZHJlblsxXTsKKyAgICAgICAgICAgIHRvcE5vZGUuZXhwYW5kUmVjdXJz
aXZlbHkoKTsKKyAgICAgICAgICAgIHNldFRpbWVvdXQobmV4dCwgMTApOworICAgICAgICB9LAor
ICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gZHVtcChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgdG9wTm9kZSA9IEluc3BlY3RvclRlc3QuZXhwYW5kZWROb2RlV2l0aElkKCJkZXB0
aC0xIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBFbGVtZW50c1RyZWUodG9wTm9k
ZSk7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0KKyAgICBdKTsKKworfQorCis8L3Nj
cmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+CitUZXN0cyB0
aGF0IGV4cGFuZGluZyBlbGVtZW50cyByZWN1cnNpdmVseSB3b3Jrcy4KKzwvcD4KKworPGRpdiBp
ZD0iZGVwdGgtMSI+CisgICAgPGRpdiBpZD0iZGVwdGgtMiI+CisgICAgICAgIDxkaXYgaWQ9ImRl
cHRoLTMiPgorICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtNCI+CisgICAgICAgICAgICAgICAg
PGRpdiBpZD0iZGVwdGgtNSI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTYi
PgorICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtNyI+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtOCI+CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTkiPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtMTAiPgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAg
IDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2Pgor
PC9kaXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182313</attachid>
            <date>2013-01-11 03:16:50 -0800</date>
            <delta_ts>2013-01-11 03:19:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66868-20130111121352.patch</filename>
            <type>text/plain</type>
            <size>19461</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc3MWY2YTNkZDZjNTY2
ZjBkZDMxZTI1OWRmNmI4YmYyMWNjNjA4My4uM2Y2MjU4NzM4NjcxMjhjZTU4NjBhMDhhOWM5Yzg4
Yzk0NmE5YTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAxLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
T3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg2OAor
CisgICAgICAgIFVwIHRvIG5vdywgdGhlIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseSgpIG1ldGhvZCB3b3VsZCBjb3JyZWN0bHkKKyAgICAgICAgZXhwYW5kIGNoaWxkcmVu
IHJlY3Vyc2l2ZWx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkZXB0aCwgYnV0IHdvdWxkIG5vdCB3
YWl0IHRvCisgICAgICAgIHBlcmZvcm0gdGhpcyB0YXNrIHVudGlsIGFsbCBjaGlsZCBub2RlcyBo
YWQgYmVlbiBwb3B1bGF0ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcworICAgICAgICB3b3VsZCBv
bmx5IHdvcmsgaW5jcmVtZW50YWxseSB3aXRoIG9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGNoaWxk
IG5vZGVzIGJlaW5nIHNob3duCisgICAgICAgIGV4cGFuZGVkIGluIHRoZSBET00gdHJlZSB1cG9u
IGFsdCtjbGlja2luZyBhIGdpdmVuIG5vZGUgd2l0aCBhIGRlZXAgaGllcmFyY2h5LgorICAgICAg
ICAKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBv
cHRpb25hbCBhcmd1bWVudCB0byB0aGUgRE9NQWdlbnQncworICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcygpIG1ldGhvZHMgdG8gcHJvdmlkZSB0aGUgZGVwdGggYXQgd2hpY2ggd2Ugd2FudCB0byBy
ZXRyaWV2ZSBjaGlsZHJlbgorICAgICAgICBvZiBhIGdpdmVuIG5vZGUuIFRoZSBET01BZ2VudCBw
cm92aWRlcyBhIG5ldyAuZ2V0U3VidHJlZSgpIG1ldGhvZCB0aGF0IGNhbGxzCisgICAgICAgIHJl
cXVlc3RDaGlsZE5vZGVzKCkgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguCisKKyAgICAgICAgVGhl
biBpbiBFbGVtZW50c1RyZWVPdXRsaW5lLCB3ZSBzdWJjbGFzcyAuZXhwYW5kUmVjdXJzaXZlbHko
KSB0byBmaXJzdCBjYWxsIERPTUFnZW50J3MKKyAgICAgICAgbmV3IC5nZXRTdWJ0cmVlKCkgbWV0
aG9kIGFuZCB0aGVuIGNhbGwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBhbGwgbm9k
ZXMKKyAgICAgICAgaGF2ZSBiZWVuIHJldHJpZXZlZCBmcm9tIHRoZSBiYWNrZW5kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0
b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGguaHRtbAorICAgICAgICAg
ICAgICAgaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEFkZCB0aGUgbmV3IGBkZXB0aGAgcGFyYW1l
dGVyIHRvIERPTS5yZXF1ZXN0Q2hpbGROb2RlcygpLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKTogQWRkIGEgbmV3IG9wdGlvbmFsIGBkZXB0aGAgcGFy
YW1ldGVyCisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDEuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMpOiBBZGQgYSBuZXcgb3B0aW9uYWwg
YGRlcHRoYCBwYXJhbWV0ZXIKKyAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gMSBhbmQgYWxsb3dz
IC0xIGFzIGFuIHVuYm91bmQgdmFsdWUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZS4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLmdl
dFN1YnRyZWUpOiBOZXcgbWV0aG9kIGFsbG93aW5nIHRvIHNwZWNpZnkgYXQgd2hhdCBkZXB0aAor
ICAgICAgICB3ZSB3YW50IHRvIHJldHJpZXZlIGNoaWxkcmVuIG9mIGEgZ2l2ZW4gbm9kZSBmcm9t
IHRoZSBiYWNrZW5kLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnBy
b3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseSk6IE92ZXJyaWRlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgdG8gZmlyc3Qgb2J0YWluIHRoZSBkZWVwZXN0IHN1YnRyZWUgZm9yIHRoZSBj
dXJyZW50IG5vZGUgc28gdGhhdCBkZWVwIGV4cGFuc2lvbiBoYXBwZW5zIGFzIGV4cGVjdGVkLgor
CiAyMDEzLTAxLTA5ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF1bTWFjXSBHcmFwaGljc1N1cmZhY2UgZG9lcyBub3QgbmVlZCBnbEVuYWJsZS9nbERpc2Fi
bGUgZm9yIHRleHR1cmUgdGFyZ2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgppbmRleCA1N2Y2ZjdhY2RiZmRlZDkxZmE3OTU5MmU1OTBjYjg4OTI1N2NmYWY4Li4yNDQw
MmE1YmVhYzQyOTMzY2Q3YmIwYzJkODcwYjQxMDFjNzgzZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNzA3LDkgKzE3MDcsMTAgQEAKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0Q2hpbGROb2RlcyIsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2Rl
IHRvIGdldCBjaGlsZHJlbiBmb3IuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2Rl
IHRvIGdldCBjaGlsZHJlbiBmb3IuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImRlcHRoIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJUaGUgbWF4aW11bSBkZXB0aCBhdCB3aGljaCBjaGlsZHJlbiBzaG91bGQgYmUgcmV0cmll
dmVkLCBkZWZhdWx0cyB0byAxLiBVc2UgLTEgZm9yIHRoZSBlbnRpcmUgc3VidHJlZSBvciBwcm92
aWRlIGFuIGludGVyZ2VyIGxhcmdlciB0aGFuIDAuIiB9CiAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhhdCBjaGlsZHJlbiBvZiB0
aGUgbm9kZSB3aXRoIGdpdmVuIGlkIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGluIGZvcm0g
b2YgPGNvZGU+c2V0Q2hpbGROb2RlczwvY29kZT4gZXZlbnRzLiIKKyAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhhdCBjaGlsZHJlbiBvZiB0aGUgbm9kZSB3aXRoIGdp
dmVuIGlkIGFyZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGluIGZvcm0gb2YgPGNvZGU+c2V0Q2hp
bGROb2RlczwvY29kZT4gZXZlbnRzIHdoZXJlIG5vdCBvbmx5IGltbWVkaWF0ZSBjaGlsZHJlbiBh
cmUgcmV0cmlldmVkLCBidXQgYWxsIGNoaWxkcmVuIGRvd24gdG8gdGhlIHNwZWNpZmllZCBkZXB0
aC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogInF1ZXJ5U2VsZWN0b3IiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggZmQ0ZjZlNDRkZGI4MDNiMzk3Y2VmMGY4ZDYyOGE0Mzc5MGUw
YjlkMC4uM2NlZjQzMTE0ZDY0OTk4YWIyZTEyOWQ3Mzk4Y2MxNTY1ODBmZGIwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00MzMsNyAr
NDMzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXIKICAgICByb290ID0gYnVpbGRPYmplY3RG
b3JOb2RlKG1fZG9jdW1lbnQuZ2V0KCksIDIsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQoaW50IG5v
ZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChp
bnQgbm9kZUlkLCBpbnQgZGVwdGgpCiB7CiAgICAgTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2Rl
SWQpOwogICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5U
X05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFICYmIG5vZGUt
Pm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSkpCkBAIC00NDIsNyAr
NDQyLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5k
KGludCBub2RlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGVUb0lkTWFwKiBub2RlTWFw
ID0gbV9pZFRvTm9kZXNNYXAuZ2V0KG5vZGVJZCk7Ci0gICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZvckNv
bnRhaW5lckNoaWxkcmVuKG5vZGUsIDEsIG5vZGVNYXApOworICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4gPiBjaGlsZHJlbiA9IGJ1aWxkQXJyYXlG
b3JDb250YWluZXJDaGlsZHJlbihub2RlLCBkZXB0aCwgbm9kZU1hcCk7CiAgICAgbV9mcm9udGVu
ZC0+c2V0Q2hpbGROb2Rlcyhub2RlSWQsIGNoaWxkcmVuLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTQ3
OCw5ICs0NzgsMjIgQEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JJZChpbnQgaWQp
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlcXVlc3RDaGls
ZE5vZGVzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwg
Y29uc3QgaW50KiBkZXB0aCkKIHsKLSAgICBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQobm9kZUlk
KTsKKyAgICBpbnQgc2FuaXRpemVkRGVwdGg7CisKKyAgICBpZiAoIWRlcHRoKQorICAgICAgICBz
YW5pdGl6ZWREZXB0aCA9IDE7CisgICAgZWxzZSBpZiAoKmRlcHRoID09IC0xKQorICAgICAgICBz
YW5pdGl6ZWREZXB0aCA9IElOVF9NQVg7CisgICAgZWxzZSBpZiAoKmRlcHRoID4gMCkKKyAgICAg
ICAgc2FuaXRpemVkRGVwdGggPSAqZGVwdGg7CisgICAgZWxzZSB7CisgICAgICAgICplcnJvclN0
cmluZyA9ICJQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIGludGVnZXIgYXMgYSBkZXB0aCBvciAt
MSBmb3IgZW50aXJlIHN1YnRyZWUiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAg
ICAgCisgICAgcHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKG5vZGVJZCwgc2FuaXRpemVkRGVwdGgp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGludCog
ZWxlbWVudElkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
aAppbmRleCBlMjNhODE4MGY0OTcwYjg5N2VmYWRjODczNDJhMDRmZTQ1YTFkZDU3Li45MTllODY5
M2U5ZjM4ZjkyZGRiYjdmMjY2Y2I1MGMyNjUyZjM5NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCk7CiAgICAgdmlydHVhbCB2
b2lkIHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHNlbGVjdG9ycywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxpbnQ+ID4mIHJlc3VsdCk7
CiAgICAgdmlydHVhbCB2b2lkIGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVC
dWlsZGVyOjpET006Ok5vZGU+JiByb290KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoaWxk
Tm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBpbnQqIGRlcHRoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxl
bWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJ
ZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIHByaXZhdGU6CiAgICAgRWxlbWVudCog
YXNzZXJ0RWRpdGFibGVFbGVtZW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CiAKICAgICBp
bnQgcHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKik7Ci0gICAgdm9pZCBwdXNoQ2hpbGROb2Rl
c1RvRnJvbnRlbmQoaW50IG5vZGVJZCk7CisgICAgdm9pZCBwdXNoQ2hpbGROb2Rlc1RvRnJvbnRl
bmQoaW50IG5vZGVJZCwgaW50IGRlcHRoID0gMSk7CiAKICAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiByb290LCB1aW50MzJfdCByb290TWFzaywgYm9vbCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCAxNjFiYTBiM2ZhYmUzMDEx
YWNiYTVlMjVlNDdkMTBkYjgzOGY3OGU0Li45MTViNmNmYzlkMjM2NzUyY2U1NTAxZWQ5OWYyNTc0
MzRhNWM2ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
QWdlbnQuanMKQEAgLTMwMSw2ICszMDEsMjUgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90
eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVwdGgK
KyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuRE9NTm9kZT4pPX0g
Y2FsbGJhY2sKKyAgICAgKi8KKyAgICBnZXRTdWJ0cmVlOiBmdW5jdGlvbihkZXB0aCwgY2FsbGJh
Y2spCisgICAgeworICAgICAgICAvKioKKyAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rvci5E
T01Ob2RlfQorICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKKyAgICAg
ICAgICovCisgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvciA/
IG51bGwgOiB0aGlzLmNoaWxkcmVuKTsgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKworICAg
ICAgICBET01BZ2VudC5yZXF1ZXN0Q2hpbGROb2Rlcyh0aGlzLmlkLCBkZXB0aCwgbXljYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtmdW5jdGlv
big/UHJvdG9jb2wuRXJyb3IpPX0gY2FsbGJhY2sKICAgICAgKi8KICAgICBnZXRPdXRlckhUTUw6
IGZ1bmN0aW9uKGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDEwMTk3MTI1MDBkMmEx
OTliNmMzYzUwNDc2MGFhMmNiNjc5ODliMTAuLjA1ZDc0ZmQ5NzNlNDgwOTc2ZmJiZGRhODc2NWNh
YjlmMTVkZjRlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTEwNDgsNiArMTA0OCwxNiBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gTWF0aC5tYXgodGhpcy5yZXByZXNlbnRlZE9iamVj
dC5fY2hpbGROb2RlQ291bnQsIHRoaXMuZXhwYW5kZWRDaGlsZHJlbkxpbWl0ICsgV2ViSW5zcGVj
dG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQuSW5pdGlhbENoaWxkcmVuTGltaXQpOwogICAgIH0sCiAK
KyAgICBleHBhbmRSZWN1cnNpdmVseTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICBUcmVlRWxlbWVudC5wcm90b3R5
cGUuZXhwYW5kUmVjdXJzaXZlbHkuY2FsbCh0aGlzLCBOdW1iZXIuTUFYX1ZBTFVFKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRTdWJ0cmVl
KC0xLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCiAgICAgb25leHBhbmQ6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDkzYTNjZGU1ZjA1YTBiYzM2OWFiNzcwMjExYzQyN2FjMzRiMjVlOS4uMjQ0ZDgzZDgyMjdjYjFh
YTg3NmZlMzk4MDNlMDVhZTYxYWM2Yzk4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAx
LTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogT3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBG
aXJzdCBUaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njg2OAorCisgICAgICAgIEFkZGluZyBhIG5ldyBwcm90b2NvbCB0ZXN0IHRoYXQgY292ZXJz
IHRoZSBuZXcgYGRlcHRoYCBwYXJhbWV0ZXIgZm9yIHRoZQorICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcyBtZXRob2QgYW5kIGEgbmV3IGZyb250LWVuZCBtZXRob2QgdGhhdCB0ZXN0cyBjb3JyZWN0
CisgICAgICAgIGJlaGF2aW9yIG9mIHRoZSBleHBhbmRSZWN1cnNpdmVseSgpIG1ldGhvZC4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rl
cy1kZXB0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvZXhwYW5k
LXJlY3Vyc2l2ZWx5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Vs
ZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOSAgTWlr
aGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAg
ICBFRkwgcG9ydCBnYXJkZW5pbmcgYWZ0ZXIgcjEzOTE0NSwgcjEzOTAwMi4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1k
ZXB0aC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJl
cXVlc3QtY2hpbGQtbm9kZXMtZGVwdGgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3NmY3NGU5
ZmIzODBiMmY2ZTcxNjMzZDFhNTlhNGE4NzhjYjA3MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjEgQEAKKworPT09IEdldCB0aGUgRG9jdW1lbnQgPT09
CisKKworPT09IEdldCBpbW1lZGlhdGUgY2hpbGRyZW4gb2YgdGhlIGJvZHkgPT09CisKK1BBU1M6
IEZpcnN0IGNoaWxkIGlzIGEgZGl2CitQQVNTOiBGaXJzdCBjaGlsZCBpcyBkaXYjZGVwdGgtMQor
UEFTUzogRmlyc3QgY2hpbGQgaGFzIG9uZSBjaGlsZAorUEFTUzogRmlyc3QgY2hpbGQgaGFzIG5v
IC5jaGlsZHJlbiBwcm9wZXJ0eQorCis9PT0gR2V0IGFsbCBjaGlsZHJlbiBvZiBkaXYjZGVwdGgt
MSA9PT0KKworUEFTUzogZGl2I2RlcHRoLTEgaGFzIG5vZGVzIDkgbGV2ZWxzIGRlZXAKKworPT09
IFBhc3MgYW4gaW52YWxpZCBkZXB0aCA9PT0KKworQmFja2VuZCBlcnJvcjogUGxlYXNlIHByb3Zp
ZGUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGFzIGEgZGVwdGggb3IgLTEgZm9yIGVudGlyZSBzdWJ0cmVl
ICgtMzIwMDApCisKK1BBU1M6IEV4cGVjdGVkIG51bWJlciBvZiBzZXRDaGlsZE5vZGVzIGV2ZW50
cworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVl
c3QtY2hpbGQtbm9kZXMtZGVwdGguaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2Nv
bC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRmYTMzMzE4
Njg4NDU3Y2YxM2VlNTJlOTJhNmFjMTg4ODRjMTEzNjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGgu
aHRtbApAQCAtMCwwICsxLDE0MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL3Jlc291
cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICB2YXIgZXZlbnRzQ291bnQgPSAw
OworCisgICAgZ2V0RG9jdW1lbnQoKTsKKworICAgIEluc3BlY3RvclRlc3QuZXZlbnRIYW5kbGVy
WyJET00uc2V0Q2hpbGROb2RlcyJdID0gZnVuY3Rpb24gc2V0Q2hpbGROb2RlcyhtZXNzYWdlT2Jq
ZWN0KQorICAgIHsKKyAgICAgICAgZXZlbnRzQ291bnQrKzsKKworICAgICAgICBpZiAoZXZlbnRz
Q291bnQgPT09IDEpCisgICAgICAgICAgICBnb3RJbW1lZGlhdGVDaGlsZHJlbihtZXNzYWdlT2Jq
ZWN0KTsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnRzQ291bnQgPT09IDIpCisgICAgICAgICAgICBn
b3RBbGxDaGlsZHJlbihtZXNzYWdlT2JqZWN0KTsKKyAgICB9OworICAgIAorICAgIGZ1bmN0aW9u
IGdldERvY3VtZW50KCkKKyAgICB7CisgICAgICAgIC8vIFdlIG11c3QgZmlyc3QgZ2V0IHRoZSBk
b2N1bWVudCBzbyB0aGF0IGxhdGVyIG9uIHdlIG1heSBnZXQgc2Vuc2libGUgbm9kZUlkcy4KKyAg
ICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IHRoZSBEb2N1bWVudCIsCisgICAg
ICAgICAgICBjb21tYW5kOiAiRE9NLmdldERvY3VtZW50IiwKKyAgICAgICAgICAgIHBhcmFtZXRl
cnM6IHt9LAorICAgICAgICAgICAgY2FsbGJhY2s6IGdldEltbWVkaWF0ZUNoaWxkcmVuCisgICAg
ICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnZXRJbW1lZGlhdGVDaGlsZHJlbihyZXN1
bHQpCisgICAgeworICAgICAgICB2YXIgYm9keUlkID0gcmVzdWx0LnJvb3QuY2hpbGRyZW5bMF0u
Y2hpbGRyZW5bMV0ubm9kZUlkOworICAgICAgICBzdGVwKHsKKyAgICAgICAgICAgIG5hbWU6ICJH
ZXQgaW1tZWRpYXRlIGNoaWxkcmVuIG9mIHRoZSBib2R5IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6
ICJET00ucmVxdWVzdENoaWxkTm9kZXMiLAorICAgICAgICAgICAgcGFyYW1ldGVyczogeyJub2Rl
SWQiOiBib2R5SWR9CisgICAgICAgIH0pOworICAgIH07CisKKyAgICBmdW5jdGlvbiBnb3RJbW1l
ZGlhdGVDaGlsZHJlbihtZXNzYWdlT2JqZWN0KQorICAgIHsKKyAgICAgICAgdmFyIGZpcnN0Q2hp
bGQgPSBtZXNzYWdlT2JqZWN0LnBhcmFtcy5ub2Rlc1swXTsKKyAgICAgICAgYXNzZXJ0KCJGaXJz
dCBjaGlsZCBpcyBhIGRpdiIsIGZpcnN0Q2hpbGQubG9jYWxOYW1lLCAiZGl2Iik7CisgICAgICAg
IGFzc2VydCgiRmlyc3QgY2hpbGQgaXMgZGl2I2RlcHRoLTEiLCBmaXJzdENoaWxkLmF0dHJpYnV0
ZXNbMV0sICJkZXB0aC0xIik7CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hpbGQgaGFzIG9uZSBj
aGlsZCIsIGZpcnN0Q2hpbGQuY2hpbGROb2RlQ291bnQsIDEpOworICAgICAgICBhc3NlcnQoIkZp
cnN0IGNoaWxkIGhhcyBubyAuY2hpbGRyZW4gcHJvcGVydHkiLCBmaXJzdENoaWxkLmNoaWxkcmVu
LCB1bmRlZmluZWQpOworCisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCBh
bGwgY2hpbGRyZW4gb2YgZGl2I2RlcHRoLTEiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5y
ZXF1ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGZp
cnN0Q2hpbGQubm9kZUlkLCAiZGVwdGgiOiAtMX0KKyAgICAgICAgfSk7CisgICAgfTsKKworICAg
IGZ1bmN0aW9uIGdvdEFsbENoaWxkcmVuKG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2
YXIgZGVwdGggPSAxOworICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IG1lc3NhZ2VPYmplY3QucGFy
YW1zLm5vZGVzWzBdOworICAgICAgICB2YXIgbm9kZSA9IGZpcnN0Q2hpbGQ7CisgICAgICAgIHdo
aWxlIChub2RlICYmIG5vZGUuY2hpbGRyZW4pIHsKKyAgICAgICAgICAgIGRlcHRoKys7CisgICAg
ICAgICAgICBub2RlID0gbm9kZS5jaGlsZHJlblswXTsKKyAgICAgICAgfQorCisgICAgICAgIGFz
c2VydCgiZGl2I2RlcHRoLTEgaGFzIG5vZGVzIDkgbGV2ZWxzIGRlZXAiLCBkZXB0aCwgOSk7CisK
KyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiUGFzcyBhbiBpbnZhbGlkIGRlcHRo
IiwKKyAgICAgICAgICAgIGNvbW1hbmQ6ICJET00ucmVxdWVzdENoaWxkTm9kZXMiLAorICAgICAg
ICAgICAgcGFyYW1ldGVyczogeyJub2RlSWQiOiBmaXJzdENoaWxkLm5vZGVJZCwgImRlcHRoIjog
MH0sCisgICAgICAgICAgICBjYWxsYmFjazogZmluaXNoVGVzdAorICAgICAgICB9KTsKKyAgICB9
OworICAgIAorICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQorICAgIHsKKyAgICAgICAgYXNzZXJ0
KCJFeHBlY3RlZCBudW1iZXIgb2Ygc2V0Q2hpbGROb2RlcyBldmVudHMiLCBldmVudHNDb3VudCwg
Mik7CisgICAgICAgIAorICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
IH07CisKKyAgICBmdW5jdGlvbiBzdGVwKHRlc3QpCisgICAgeworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiXG49PT0gIiArIHRlc3QubmFtZSArICIgPT09XG4iKTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCh0ZXN0LmNvbW1hbmQsIHRlc3QucGFyYW1ldGVycywgZnVuY3Rp
b24obWVzc2FnZU9iamVjdCkgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2VPYmplY3QuaGFzT3du
UHJvcGVydHkoImVycm9yIikpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJh
Y2tlbmQgZXJyb3I6ICIgKyBtZXNzYWdlT2JqZWN0LmVycm9yLm1lc3NhZ2UgKyAiICgiICsgbWVz
c2FnZU9iamVjdC5lcnJvci5jb2RlICsgIilcbiIpOworCisgICAgICAgICAgICBpZiAodGVzdC5j
YWxsYmFjaykKKyAgICAgICAgICAgICAgICB0ZXN0LmNhbGxiYWNrKG1lc3NhZ2VPYmplY3QucmVz
dWx0KTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGFzc2VydChtZXNzYWdl
LCBhY3R1YWwsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0
ZWQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiUEFTUzogIiArIG1lc3NhZ2UpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGQUlMOiAiICsg
bWVzc2FnZSArICIsIGV4cGVjdGVkIFwiIiArIGV4cGVjdGVkICsgIlwiIGJ1dCBnb3QgXCIiICsg
YWN0dWFsICsgIlwiIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgp
OworICAgICAgICB9CisgICAgfTsKKworfTsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CisgICAgcnVuVGVzdCgpOworfSwgZmFsc2Up
OworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCis8ZGl2IGlkPSJkZXB0aC0xIj4KKyAg
ICA8ZGl2IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgPGRpdiBpZD0iZGVwdGgtMyI+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJkZXB0aC00Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC01
Ij4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtNiI+CisgICAgICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC03Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8ZGl2IGlkPSJkZXB0aC04Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRp
diBpZD0iZGVwdGgtOSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJkZXB0aC0xMCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2V4
cGFuZC1yZWN1cnNpdmVseS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxl
bWVudHMvZXhwYW5kLXJlY3Vyc2l2ZWx5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTE1Yjky
ZTQyYTQ1Nzk2MjcwN2ZlMTljZTg0ZGJjNmI2NjJiZDMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwyOCBAQAorVGVzdHMgdGhhdCBleHBhbmRpbmcgZWxlbWVudHMgcmVjdXJz
aXZlbHkgd29ya3MuCisKKz09PT09IEluaXRpYWwgc3RhdGUgb2YgdHJlZSBvdXRsaW5lID09PT09
CisKKysgPGRpdiBpZD0iZGVwdGgtMSI+4oCmPC9kaXY+CisKKz09PT09IFN0YXRlIG9mIHRyZWUg
b3V0bGluZSBhZnRlciBjYWxsaW5nIC5leHBhbmRSZWN1cnNpdmVseSgpID09PT09CisKKy0gPGRp
diBpZD0iZGVwdGgtMSI+CisgICAgLSA8ZGl2IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgLSA8ZGl2
IGlkPSJkZXB0aC0zIj4KKyAgICAgICAgICAgIC0gPGRpdiBpZD0iZGVwdGgtNCI+CisgICAgICAg
ICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC01Ij4KKyAgICAgICAgICAgICAgICAgICAgLSA8ZGl2
IGlkPSJkZXB0aC02Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIC0gPGRpdiBpZD0iZGVwdGgt
NyI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC04Ij4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC05Ij4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtMTAiPjwvZGl2
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2
PgorICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgPC9kaXY+
CisgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+Cisg
IDwvZGl2PgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZXhw
YW5kLXJlY3Vyc2l2ZWx5Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZXhw
YW5kLXJlY3Vyc2l2ZWx5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBmYzhiOGQ3ZjI2MzU4MTlhZmUwMDA3
MDNmZmQyZTkyNGMyNjA3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZlbHkuaHRtbApAQCAtMCwwICsxLDY3IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoImVsZW1lbnRzIik7CisgICAg
dmFyIHRyZWVPdXRsaW5lID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy50cmVlT3V0bGlu
ZTsKKyAgICBJbnNwZWN0b3JUZXN0LmZpbmROb2RlKGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7
IH0sIGZpcnN0U3RlcCk7CisgICAgICAgIAorICAgIGZ1bmN0aW9uIGZpcnN0U3RlcCgpCisgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09PT0gSW5pdGlhbCBzdGF0ZSBv
ZiB0cmVlIG91dGxpbmUgPT09PT1cbiIpOworICAgICAgICBkdW1wKCk7CisKKyAgICAgICAgdmFy
IHRvcE5vZGUgPSB0cmVlT3V0bGluZS5jaGlsZHJlblswXS5jaGlsZHJlblsxXS5jaGlsZHJlblsx
XTsKKyAgICAgICAgdG9wTm9kZS5leHBhbmRSZWN1cnNpdmVseSgpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc2Vjb25kU3RlcCk7CisgICAgfTsKKyAg
ICAgICAgCisgICAgZnVuY3Rpb24gc2Vjb25kU3RlcCgpCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiXG49PT09PSBTdGF0ZSBvZiB0cmVlIG91dGxpbmUgYWZ0ZXIgY2Fs
bGluZyAuZXhwYW5kUmVjdXJzaXZlbHkoKSA9PT09PVxuIik7CisgICAgICAgIGR1bXAoKTsKKwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgIH07CisKKyAgICBmdW5j
dGlvbiBkdW1wKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0gSW5zcGVjdG9yVGVzdC5leHBh
bmRlZE5vZGVXaXRoSWQoImRlcHRoLTEiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wRWxl
bWVudHNUcmVlKG5vZGUpOworICAgIH07Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1Rlc3RzIHRoYXQgZXhwYW5kaW5nIGVsZW1lbnRz
IHJlY3Vyc2l2ZWx5IHdvcmtzLgorPC9wPgorCis8ZGl2IGlkPSJkZXB0aC0xIj4KKyAgICA8ZGl2
IGlkPSJkZXB0aC0yIj4KKyAgICAgICAgPGRpdiBpZD0iZGVwdGgtMyI+CisgICAgICAgICAgICA8
ZGl2IGlkPSJkZXB0aC00Ij4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC01Ij4KKyAg
ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGVwdGgtNiI+CisgICAgICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJkZXB0aC03Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2
IGlkPSJkZXB0aC04Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0i
ZGVwdGgtOSI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJk
ZXB0aC0xMCI+PC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorPC9k
aXY+CisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182314</attachid>
            <date>2013-01-11 03:19:50 -0800</date>
            <delta_ts>2013-01-11 04:29:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66868-20130111121652.patch</filename>
            <type>text/plain</type>
            <size>19448</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc3MWY2YTNkZDZjNTY2
ZjBkZDMxZTI1OWRmNmI4YmYyMWNjNjA4My4uM2Y2MjU4NzM4NjcxMjhjZTU4NjBhMDhhOWM5Yzg4
Yzk0NmE5YTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAxLTExICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
T3B0aW9uK0NsaWNrIG9uIE5vZGUgRXhwYW5kZXIgRG9lc24ndCBXb3JrIHRoZSBGaXJzdCBUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg2OAor
CisgICAgICAgIFVwIHRvIG5vdywgdGhlIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseSgpIG1ldGhvZCB3b3VsZCBjb3JyZWN0bHkKKyAgICAgICAgZXhwYW5kIGNoaWxkcmVu
IHJlY3Vyc2l2ZWx5IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBkZXB0aCwgYnV0IHdvdWxkIG5vdCB3
YWl0IHRvCisgICAgICAgIHBlcmZvcm0gdGhpcyB0YXNrIHVudGlsIGFsbCBjaGlsZCBub2RlcyBo
YWQgYmVlbiBwb3B1bGF0ZWQsIHdoaWNoIG1lYW5zIHRoYXQgdGhpcworICAgICAgICB3b3VsZCBv
bmx5IHdvcmsgaW5jcmVtZW50YWxseSB3aXRoIG9uZSBhZGRpdGlvbmFsIGxldmVsIG9mIGNoaWxk
IG5vZGVzIGJlaW5nIHNob3duCisgICAgICAgIGV4cGFuZGVkIGluIHRoZSBET00gdHJlZSB1cG9u
IGFsdCtjbGlja2luZyBhIGdpdmVuIG5vZGUgd2l0aCBhIGRlZXAgaGllcmFyY2h5LgorICAgICAg
ICAKKyAgICAgICAgSW4gb3JkZXIgdG8gZml4IHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBv
cHRpb25hbCBhcmd1bWVudCB0byB0aGUgRE9NQWdlbnQncworICAgICAgICByZXF1ZXN0Q2hpbGRO
b2RlcygpIG1ldGhvZHMgdG8gcHJvdmlkZSB0aGUgZGVwdGggYXQgd2hpY2ggd2Ugd2FudCB0byBy
ZXRyaWV2ZSBjaGlsZHJlbgorICAgICAgICBvZiBhIGdpdmVuIG5vZGUuIFRoZSBET01BZ2VudCBw
cm92aWRlcyBhIG5ldyAuZ2V0U3VidHJlZSgpIG1ldGhvZCB0aGF0IGNhbGxzCisgICAgICAgIHJl
cXVlc3RDaGlsZE5vZGVzKCkgd2l0aCB0aGUgcHJvdmlkZWQgZGVwdGguCisKKyAgICAgICAgVGhl
biBpbiBFbGVtZW50c1RyZWVPdXRsaW5lLCB3ZSBzdWJjbGFzcyAuZXhwYW5kUmVjdXJzaXZlbHko
KSB0byBmaXJzdCBjYWxsIERPTUFnZW50J3MKKyAgICAgICAgbmV3IC5nZXRTdWJ0cmVlKCkgbWV0
aG9kIGFuZCB0aGVuIGNhbGwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hlbiBhbGwgbm9k
ZXMKKyAgICAgICAgaGF2ZSBiZWVuIHJldHJpZXZlZCBmcm9tIHRoZSBiYWNrZW5kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBpbnNwZWN0
b3ItcHJvdG9jb2wvZG9tLXJlcXVlc3QtY2hpbGQtbm9kZXMtZGVwdGguaHRtbAorICAgICAgICAg
ICAgICAgaW5zcGVjdG9yL2VsZW1lbnRzL2V4cGFuZC1yZWN1cnNpdmVseS5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246IEFkZCB0aGUgbmV3IGBkZXB0aGAgcGFyYW1l
dGVyIHRvIERPTS5yZXF1ZXN0Q2hpbGROb2RlcygpLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKTogQWRkIGEgbmV3IG9wdGlvbmFsIGBkZXB0aGAgcGFy
YW1ldGVyCisgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDEuCisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxkTm9kZXMpOiBBZGQgYSBuZXcgb3B0aW9uYWwg
YGRlcHRoYCBwYXJhbWV0ZXIKKyAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gMSBhbmQgYWxsb3dz
IC0xIGFzIGFuIHVuYm91bmQgdmFsdWUuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2Rl
LnByb3RvdHlwZS4pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlLmdl
dFN1YnRyZWUpOiBOZXcgbWV0aG9kIGFsbG93aW5nIHRvIHNwZWNpZnkgYXQgd2hhdCBkZXB0aAor
ICAgICAgICB3ZSB3YW50IHRvIHJldHJpZXZlIGNoaWxkcmVuIG9mIGEgZ2l2ZW4gbm9kZSBmcm9t
IHRoZSBiYWNrZW5kLgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVl
T3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnBy
b3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseSk6IE92ZXJyaWRlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgdG8gZmlyc3Qgb2J0YWluIHRoZSBkZWVwZXN0IHN1YnRyZWUgZm9yIHRoZSBj
dXJyZW50IG5vZGUgc28gdGhhdCBkZWVwIGV4cGFuc2lvbiBoYXBwZW5zIGFzIGV4cGVjdGVkLgor
CiAyMDEzLTAxLTA5ICBaZW5vIEFsYmlzc2VyICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF1bTWFjXSBHcmFwaGljc1N1cmZhY2UgZG9lcyBub3QgbmVlZCBnbEVuYWJsZS9nbERpc2Fi
bGUgZm9yIHRleHR1cmUgdGFyZ2V0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgppbmRleCA1N2Y2ZjdhY2RiZmRlZDkxZmE3OTU5MmU1OTBjYjg4OTI1N2NmYWY4Li5jYjUw
MDY4ZjA0ODVhOTU1YWIwNjlkMjE1ODQ2NjQyOTNkOTc3MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNzA3LDkgKzE3MDcsMTAgQEAKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXF1ZXN0Q2hpbGROb2RlcyIsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2Rl
IHRvIGdldCBjaGlsZHJlbiBmb3IuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9mIHRoZSBub2Rl
IHRvIGdldCBjaGlsZHJlbiBmb3IuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImRlcHRoIiwgInR5cGUiOiAiaW50ZWdlciIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJUaGUgbWF4aW11bSBkZXB0aCBhdCB3aGljaCBjaGlsZHJlbiBzaG91bGQgYmUgcmV0cmll
dmVkLCBkZWZhdWx0cyB0byAxLiBVc2UgLTEgZm9yIHRoZSBlbnRpcmUgc3VidHJlZSBvciBwcm92
aWRlIGFuIGludGVnZXIgbGFyZ2VyIHRoYW4gMC4iIH0KICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxkcmVuIG9mIHRo
ZSBub2RlIHdpdGggZ2l2ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW4gZm9ybSBv
ZiA8Y29kZT5zZXRDaGlsZE5vZGVzPC9jb2RlPiBldmVudHMuIgorICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGNoaWxkcmVuIG9mIHRoZSBub2RlIHdpdGggZ2l2
ZW4gaWQgYXJlIHJldHVybmVkIHRvIHRoZSBjYWxsZXIgaW4gZm9ybSBvZiA8Y29kZT5zZXRDaGls
ZE5vZGVzPC9jb2RlPiBldmVudHMgd2hlcmUgbm90IG9ubHkgaW1tZWRpYXRlIGNoaWxkcmVuIGFy
ZSByZXRyaWV2ZWQsIGJ1dCBhbGwgY2hpbGRyZW4gZG93biB0byB0aGUgc3BlY2lmaWVkIGRlcHRo
LiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUi
OiAicXVlcnlTZWxlY3RvciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCBmZDRmNmU0NGRkYjgwM2IzOTdjZWYwZjhkNjI4YTQzNzkwZTBi
OWQwLi42M2I0N2Q1MWZkYjY4YjRlMWU1NjQ0YTFiZDU1MDI3NjQ5MGNmZjY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXREb2N1bWVudChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcgogICAgIHJvb3QgPSBidWlsZE9iamVjdEZv
ck5vZGUobV9kb2N1bWVudC5nZXQoKSwgMiwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9k
ZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cHVzaENoaWxkTm9kZXNUb0Zyb250ZW5kKGlu
dCBub2RlSWQsIGludCBkZXB0aCkKIHsKICAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCk7CiAgICAgaWYgKCFub2RlIHx8IChub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkVMRU1FTlRf
Tk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX05PREUgJiYgbm9kZS0+
bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFKSkKQEAgLTQ0Miw3ICs0
NDIsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpwdXNoQ2hpbGROb2Rlc1RvRnJvbnRlbmQo
aW50IG5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZVRvSWRNYXAqIG5vZGVNYXAg
PSBtX2lkVG9Ob2Rlc01hcC5nZXQobm9kZUlkKTsKLSAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpET006Ok5vZGU+ID4gY2hpbGRyZW4gPSBidWlsZEFycmF5Rm9yQ29u
dGFpbmVyQ2hpbGRyZW4obm9kZSwgMSwgbm9kZU1hcCk7CisgICAgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPiA+IGNoaWxkcmVuID0gYnVpbGRBcnJheUZv
ckNvbnRhaW5lckNoaWxkcmVuKG5vZGUsIGRlcHRoLCBub2RlTWFwKTsKICAgICBtX2Zyb250ZW5k
LT5zZXRDaGlsZE5vZGVzKG5vZGVJZCwgY2hpbGRyZW4ucmVsZWFzZSgpKTsKIH0KIApAQCAtNDc4
LDkgKzQ3OCwyMiBAQCBOb2RlKiBJbnNwZWN0b3JET01BZ2VudDo6bm9kZUZvcklkKGludCBpZCkK
ICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVxdWVzdENoaWxk
Tm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
cmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBj
b25zdCBpbnQqIGRlcHRoKQogewotICAgIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChub2RlSWQp
OworICAgIGludCBzYW5pdGl6ZWREZXB0aDsKKworICAgIGlmICghZGVwdGgpCisgICAgICAgIHNh
bml0aXplZERlcHRoID0gMTsKKyAgICBlbHNlIGlmICgqZGVwdGggPT0gLTEpCisgICAgICAgIHNh
bml0aXplZERlcHRoID0gSU5UX01BWDsKKyAgICBlbHNlIGlmICgqZGVwdGggPiAwKQorICAgICAg
ICBzYW5pdGl6ZWREZXB0aCA9ICpkZXB0aDsKKyAgICBlbHNlIHsKKyAgICAgICAgKmVycm9yU3Ry
aW5nID0gIlBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgaW50ZWdlciBhcyBhIGRlcHRoIG9yIC0x
IGZvciBlbnRpcmUgc3VidHJlZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwdXNo
Q2hpbGROb2Rlc1RvRnJvbnRlbmQobm9kZUlkLCBzYW5pdGl6ZWREZXB0aCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGUyM2E4
MTgwZjQ5NzBiODk3ZWZhZGM4NzM0MmEwNGZlNDVhMWRkNTcuLjkxOWU4NjkzZTlmMzhmOTJkZGJi
N2YyNjZjYjUwYzI2NTJmMzk0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBxdWVyeVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5n
JiBzZWxlY3RvcnMsIGludCogZWxlbWVudElkKTsKICAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxl
Y3RvckFsbChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3Jz
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PGludD4gPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFs
IHZvaWQgZ2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRPTTo6
Tm9kZT4mIHJvb3QpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhFcnJvclN0
cmluZyosIGludCBub2RlSWQpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0
dHJpYnV0ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7
CkBAIC0yMTgsNyArMjE4LDcgQEAgcHJpdmF0ZToKICAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJs
ZUVsZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKIAogICAgIGludCBwdXNoTm9kZVBh
dGhUb0Zyb250ZW5kKE5vZGUqKTsKLSAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChp
bnQgbm9kZUlkKTsKKyAgICB2b2lkIHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlk
LCBpbnQgZGVwdGggPSAxKTsKIAogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5
cGUpOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIHJvb3QsIHVpbnQz
Ml90IHJvb3RNYXNrLCBib29sIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDE2MWJhMGIzZmFiZTMwMTFhY2JhNWUyNWU0N2Qx
MGRiODM4Zjc4ZTQuLjkxNWI2Y2ZjOWQyMzY3NTJjZTU1MDFlZDk5ZjI1NzQzNGE1YzZlNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwpAQCAt
MzAxLDYgKzMwMSwyNSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAg
fSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAorICAgICAqIEBwYXJh
bSB7ZnVuY3Rpb24oQXJyYXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPik9fSBjYWxsYmFjaworICAg
ICAqLworICAgIGdldFN1YnRyZWU6IGZ1bmN0aW9uKGRlcHRoLCBjYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIC8qKgorICAgICAgICAgKiBAdGhpcyB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9CisgICAg
ICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgorICAgICAgICAgKi8KKyAgICAg
ICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvcikKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yID8gbnVsbCA6IHRoaXMu
Y2hpbGRyZW4pOyAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIERPTUFnZW50
LnJlcXVlc3RDaGlsZE5vZGVzKHRoaXMuaWQsIGRlcHRoLCBteWNhbGxiYWNrLmJpbmQodGhpcykp
OworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90b2NvbC5F
cnJvcik9fSBjYWxsYmFjawogICAgICAqLwogICAgIGdldE91dGVySFRNTDogZnVuY3Rpb24oY2Fs
bGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Vs
ZW1lbnRzVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzVHJlZU91dGxpbmUuanMKaW5kZXggMTAxOTcxMjUwMGQyYTE5OWI2YzNjNTA0NzYw
YWEyY2I2Nzk4OWIxMC4uMDVkNzRmZDk3M2U0ODA5NzZmYmJkZGE4NzY1Y2FiOWYxNWRmNGVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcwpAQCAtMTA0OCw2ICsxMDQ4LDE2IEBAIFdlYkluc3BlY3Rvci5F
bGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5leHBhbmRlZENo
aWxkcmVuTGltaXQgPSBNYXRoLm1heCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9jaGlsZE5vZGVD
b3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3IuRWxlbWVudHNU
cmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCk7CiAgICAgfSwKIAorICAgIGV4cGFuZFJl
Y3Vyc2l2ZWx5OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBjYWxsYmFjaygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1
cnNpdmVseS5jYWxsKHRoaXMsIE51bWJlci5NQVhfVkFMVUUpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldFN1YnRyZWUoLTEsIGNhbGxiYWNr
LmJpbmQodGhpcykpOworICAgIH0sCisKICAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwOTNhM2NkZTVmMDVh
MGJjMzY5YWI3NzAyMTFjNDI3YWMzNGIyNWU5Li4yNDRkODNkODIyN2NiMWFhODc2ZmUzOTgwM2Uw
NWFlNjFhYzZjOThjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDEtMTEgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBPcHRp
b24rQ2xpY2sgb24gTm9kZSBFeHBhbmRlciBEb2Vzbid0IFdvcmsgdGhlIEZpcnN0IFRpbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODY4CisKKyAg
ICAgICAgQWRkaW5nIGEgbmV3IHByb3RvY29sIHRlc3QgdGhhdCBjb3ZlcnMgdGhlIG5ldyBgZGVw
dGhgIHBhcmFtZXRlciBmb3IgdGhlCisgICAgICAgIHJlcXVlc3RDaGlsZE5vZGVzIG1ldGhvZCBh
bmQgYSBuZXcgZnJvbnQtZW5kIG1ldGhvZCB0aGF0IHRlc3RzIGNvcnJlY3QKKyAgICAgICAgYmVo
YXZpb3Igb2YgdGhlIGV4cGFuZFJlY3Vyc2l2ZWx5KCkgbWV0aG9kLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2Rv
bS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZlbHkt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvZWxlbWVudHMvZXhwYW5k
LXJlY3Vyc2l2ZWx5Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAxLTA5ICBNaWtoYWlsIFBvemRueWFr
b3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIEVGTCBwb3J0IGdh
cmRlbmluZyBhZnRlciByMTM5MTQ1LCByMTM5MDAyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0LWNoaWxkLW5vZGVzLWRlcHRoLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1u
b2Rlcy1kZXB0aC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc2Zjc0ZTlmYjM4MGIyZjZlNzE2
MzNkMWE1OWE0YTg3OGNiMDcwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwyMSBAQAorCis9PT0gR2V0IHRoZSBEb2N1bWVudCA9PT0KKworCis9PT0gR2V0
IGltbWVkaWF0ZSBjaGlsZHJlbiBvZiB0aGUgYm9keSA9PT0KKworUEFTUzogRmlyc3QgY2hpbGQg
aXMgYSBkaXYKK1BBU1M6IEZpcnN0IGNoaWxkIGlzIGRpdiNkZXB0aC0xCitQQVNTOiBGaXJzdCBj
aGlsZCBoYXMgb25lIGNoaWxkCitQQVNTOiBGaXJzdCBjaGlsZCBoYXMgbm8gLmNoaWxkcmVuIHBy
b3BlcnR5CisKKz09PSBHZXQgYWxsIGNoaWxkcmVuIG9mIGRpdiNkZXB0aC0xID09PQorCitQQVNT
OiBkaXYjZGVwdGgtMSBoYXMgbm9kZXMgOSBsZXZlbHMgZGVlcAorCis9PT0gUGFzcyBhbiBpbnZh
bGlkIGRlcHRoID09PQorCitCYWNrZW5kIGVycm9yOiBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZl
IGludGVnZXIgYXMgYSBkZXB0aCBvciAtMSBmb3IgZW50aXJlIHN1YnRyZWUgKC0zMjAwMCkKKwor
UEFTUzogRXhwZWN0ZWQgbnVtYmVyIG9mIHNldENoaWxkTm9kZXMgZXZlbnRzCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rl
cy1kZXB0aC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RvbS1yZXF1ZXN0
LWNoaWxkLW5vZGVzLWRlcHRoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGZhMzMzMTg2ODg0NTdjZjEzZWU1
MmU5MmE2YWMxODg4NGMxMTM2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kb20tcmVxdWVzdC1jaGlsZC1ub2Rlcy1kZXB0aC5odG1sCkBAIC0wLDAg
KzEsMTQwIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29s
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKworICAgIHZhciBldmVudHNDb3VudCA9IDA7CisKKyAgICBnZXRE
b2N1bWVudCgpOworCisgICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRPTS5zZXRDaGls
ZE5vZGVzIl0gPSBmdW5jdGlvbiBzZXRDaGlsZE5vZGVzKG1lc3NhZ2VPYmplY3QpCisgICAgewor
ICAgICAgICBldmVudHNDb3VudCsrOworCisgICAgICAgIGlmIChldmVudHNDb3VudCA9PT0gMSkK
KyAgICAgICAgICAgIGdvdEltbWVkaWF0ZUNoaWxkcmVuKG1lc3NhZ2VPYmplY3QpOworICAgICAg
ICBlbHNlIGlmIChldmVudHNDb3VudCA9PT0gMikKKyAgICAgICAgICAgIGdvdEFsbENoaWxkcmVu
KG1lc3NhZ2VPYmplY3QpOworICAgIH07CisgICAgCisgICAgZnVuY3Rpb24gZ2V0RG9jdW1lbnQo
KQorICAgIHsKKyAgICAgICAgLy8gV2UgbXVzdCBmaXJzdCBnZXQgdGhlIGRvY3VtZW50IHNvIHRo
YXQgbGF0ZXIgb24gd2UgbWF5IGdldCBzZW5zaWJsZSBub2RlSWRzLgorICAgICAgICBzdGVwKHsK
KyAgICAgICAgICAgIG5hbWU6ICJHZXQgdGhlIERvY3VtZW50IiwKKyAgICAgICAgICAgIGNvbW1h
bmQ6ICJET00uZ2V0RG9jdW1lbnQiLAorICAgICAgICAgICAgcGFyYW1ldGVyczoge30sCisgICAg
ICAgICAgICBjYWxsYmFjazogZ2V0SW1tZWRpYXRlQ2hpbGRyZW4KKyAgICAgICAgfSk7CisgICAg
fTsKKworICAgIGZ1bmN0aW9uIGdldEltbWVkaWF0ZUNoaWxkcmVuKHJlc3VsdCkKKyAgICB7Cisg
ICAgICAgIHZhciBib2R5SWQgPSByZXN1bHQucm9vdC5jaGlsZHJlblswXS5jaGlsZHJlblsxXS5u
b2RlSWQ7CisgICAgICAgIHN0ZXAoeworICAgICAgICAgICAgbmFtZTogIkdldCBpbW1lZGlhdGUg
Y2hpbGRyZW4gb2YgdGhlIGJvZHkiLAorICAgICAgICAgICAgY29tbWFuZDogIkRPTS5yZXF1ZXN0
Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0ZXJzOiB7Im5vZGVJZCI6IGJvZHlJZH0K
KyAgICAgICAgfSk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGdvdEltbWVkaWF0ZUNoaWxkcmVu
KG1lc3NhZ2VPYmplY3QpCisgICAgeworICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IG1lc3NhZ2VP
YmplY3QucGFyYW1zLm5vZGVzWzBdOworICAgICAgICBhc3NlcnQoIkZpcnN0IGNoaWxkIGlzIGEg
ZGl2IiwgZmlyc3RDaGlsZC5sb2NhbE5hbWUsICJkaXYiKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJz
dCBjaGlsZCBpcyBkaXYjZGVwdGgtMSIsIGZpcnN0Q2hpbGQuYXR0cmlidXRlc1sxXSwgImRlcHRo
LTEiKTsKKyAgICAgICAgYXNzZXJ0KCJGaXJzdCBjaGlsZCBoYXMgb25lIGNoaWxkIiwgZmlyc3RD
aGlsZC5jaGlsZE5vZGVDb3VudCwgMSk7CisgICAgICAgIGFzc2VydCgiRmlyc3QgY2hpbGQgaGFz
IG5vIC5jaGlsZHJlbiBwcm9wZXJ0eSIsIGZpcnN0Q2hpbGQuY2hpbGRyZW4sIHVuZGVmaW5lZCk7
CisKKyAgICAgICAgc3RlcCh7CisgICAgICAgICAgICBuYW1lOiAiR2V0IGFsbCBjaGlsZHJlbiBv
ZiBkaXYjZGVwdGgtMSIsCisgICAgICAgICAgICBjb21tYW5kOiAiRE9NLnJlcXVlc3RDaGlsZE5v
ZGVzIiwKKyAgICAgICAgICAgIHBhcmFtZXRlcnM6IHsibm9kZUlkIjogZmlyc3RDaGlsZC5ub2Rl
SWQsICJkZXB0aCI6IC0xfQorICAgICAgICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gZ290
QWxsQ2hpbGRyZW4obWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIHZhciBkZXB0aCA9IDE7
CisgICAgICAgIHZhciBmaXJzdENoaWxkID0gbWVzc2FnZU9iamVjdC5wYXJhbXMubm9kZXNbMF07
CisgICAgICAgIHZhciBub2RlID0gZmlyc3RDaGlsZDsKKyAgICAgICAgd2hpbGUgKG5vZGUgJiYg
bm9kZS5jaGlsZHJlbikgeworICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAgICAgIG5vZGUg
PSBub2RlLmNoaWxkcmVuWzBdOworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0KCJkaXYjZGVw
dGgtMSBoYXMgbm9kZXMgOSBsZXZlbHMgZGVlcCIsIGRlcHRoLCA5KTsKKworICAgICAgICBzdGVw
KHsKKyAgICAgICAgICAgIG5hbWU6ICJQYXNzIGFuIGludmFsaWQgZGVwdGgiLAorICAgICAgICAg
ICAgY29tbWFuZDogIkRPTS5yZXF1ZXN0Q2hpbGROb2RlcyIsCisgICAgICAgICAgICBwYXJhbWV0
ZXJzOiB7Im5vZGVJZCI6IGZpcnN0Q2hpbGQubm9kZUlkLCAiZGVwdGgiOiAwfSwKKyAgICAgICAg
ICAgIGNhbGxiYWNrOiBmaW5pc2hUZXN0CisgICAgICAgIH0pOworICAgIH07CisgICAgCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpCisgICAgeworICAgICAgICBhc3NlcnQoIkV4cGVjdGVkIG51
bWJlciBvZiBzZXRDaGlsZE5vZGVzIGV2ZW50cyIsIGV2ZW50c0NvdW50LCAyKTsKKyAgICAgICAg
CisgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfTsKKworICAgIGZ1
bmN0aW9uIHN0ZXAodGVzdCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJcbj09
PSAiICsgdGVzdC5uYW1lICsgIiA9PT1cbiIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRD
b21tYW5kKHRlc3QuY29tbWFuZCwgdGVzdC5wYXJhbWV0ZXJzLCBmdW5jdGlvbihtZXNzYWdlT2Jq
ZWN0KSB7CisgICAgICAgICAgICBpZiAobWVzc2FnZU9iamVjdC5oYXNPd25Qcm9wZXJ0eSgiZXJy
b3IiKSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQmFja2VuZCBlcnJvcjog
IiArIG1lc3NhZ2VPYmplY3QuZXJyb3IubWVzc2FnZSArICIgKCIgKyBtZXNzYWdlT2JqZWN0LmVy
cm9yLmNvZGUgKyAiKVxuIik7CisKKyAgICAgICAgICAgIGlmICh0ZXN0LmNhbGxiYWNrKQorICAg
ICAgICAgICAgICAgIHRlc3QuY2FsbGJhY2sobWVzc2FnZU9iamVjdC5yZXN1bHQpOworICAgICAg
ICB9KTsKKyAgICB9OworCisgICAgZnVuY3Rpb24gYXNzZXJ0KG1lc3NhZ2UsIGFjdHVhbCwgZXhw
ZWN0ZWQpCisgICAgeworICAgICAgICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJQQVNTOiAiICsgbWVzc2FnZSk7CisgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6ICIgKyBtZXNzYWdlICsgIiwg
ZXhwZWN0ZWQgXCIiICsgZXhwZWN0ZWQgKyAiXCIgYnV0IGdvdCBcIiIgKyBhY3R1YWwgKyAiXCIi
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0K
KyAgICB9OworCit9OworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRl
ZCIsIGZ1bmN0aW9uICgpIHsKKyAgICBydW5UZXN0KCk7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9ImRlcHRoLTEiPgorICAgIDxkaXYgaWQ9ImRl
cHRoLTIiPgorICAgICAgICA8ZGl2IGlkPSJkZXB0aC0zIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImRlcHRoLTQiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTUiPgorICAgICAgICAg
ICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC02Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxk
aXYgaWQ9ImRlcHRoLTciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRl
cHRoLTgiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC05
Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTEw
Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorCis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMvZXhwYW5kLXJlY3Vyc2l2
ZWx5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9leHBhbmQt
cmVjdXJzaXZlbHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1MTViOTJlNDJhNDU3OTYyNzA3
ZmUxOWNlODRkYmM2YjY2MmJkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZWxlbWVudHMvZXhwYW5kLXJlY3Vyc2l2ZWx5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDI4IEBACitUZXN0cyB0aGF0IGV4cGFuZGluZyBlbGVtZW50cyByZWN1cnNpdmVseSB3b3Jrcy4K
KworPT09PT0gSW5pdGlhbCBzdGF0ZSBvZiB0cmVlIG91dGxpbmUgPT09PT0KKworKyA8ZGl2IGlk
PSJkZXB0aC0xIj7igKY8L2Rpdj4KKworPT09PT0gU3RhdGUgb2YgdHJlZSBvdXRsaW5lIGFmdGVy
IGNhbGxpbmcgLmV4cGFuZFJlY3Vyc2l2ZWx5KCkgPT09PT0KKworLSA8ZGl2IGlkPSJkZXB0aC0x
Ij4KKyAgICAtIDxkaXYgaWQ9ImRlcHRoLTIiPgorICAgICAgICAtIDxkaXYgaWQ9ImRlcHRoLTMi
PgorICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC00Ij4KKyAgICAgICAgICAgICAgICAtIDxk
aXYgaWQ9ImRlcHRoLTUiPgorICAgICAgICAgICAgICAgICAgICAtIDxkaXYgaWQ9ImRlcHRoLTYi
PgorICAgICAgICAgICAgICAgICAgICAgICAgLSA8ZGl2IGlkPSJkZXB0aC03Ij4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAtIDxkaXYgaWQ9ImRlcHRoLTgiPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtIDxkaXYgaWQ9ImRlcHRoLTkiPgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC0xMCI+PC9kaXY+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAg
ICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAg
ICAgPC9kaXY+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgPC9kaXY+CisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZl
bHkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lbGVtZW50cy9leHBhbmQtcmVjdXJzaXZl
bHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMGZjOGI4ZDdmMjYzNTgxOWFmZTAwMDcwM2ZmZDJlOTI0YzI2
MDcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzL2V4
cGFuZC1yZWN1cnNpdmVseS5odG1sCkBAIC0wLDAgKzEsNjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1l
bnRzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKKyAgICB2YXIgdHJlZU91dGxp
bmUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnRyZWVPdXRsaW5lOworICAgIEluc3Bl
Y3RvclRlc3QuZmluZE5vZGUoZnVuY3Rpb24oKSB7IHJldHVybiBmYWxzZTsgfSwgZmlyc3RTdGVw
KTsKKyAgICAgICAgCisgICAgZnVuY3Rpb24gZmlyc3RTdGVwKCkKKyAgICB7CisgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT09PSBJbml0aWFsIHN0YXRlIG9mIHRyZWUgb3V0bGlu
ZSA9PT09PVxuIik7CisgICAgICAgIGR1bXAoKTsKKworICAgICAgICB2YXIgdG9wTm9kZSA9IHRy
ZWVPdXRsaW5lLmNoaWxkcmVuWzBdLmNoaWxkcmVuWzFdLmNoaWxkcmVuWzFdOworICAgICAgICB0
b3BOb2RlLmV4cGFuZFJlY3Vyc2l2ZWx5KCk7CisgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0
ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzZWNvbmRTdGVwKTsKKyAgICB9OworICAgICAgICAKKyAgICBm
dW5jdGlvbiBzZWNvbmRTdGVwKCkKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJcbj09PT09IFN0YXRlIG9mIHRyZWUgb3V0bGluZSBhZnRlciBjYWxsaW5nIC5leHBhbmRS
ZWN1cnNpdmVseSgpID09PT09XG4iKTsKKyAgICAgICAgZHVtcCgpOworCisgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgfTsKKworICAgIGZ1bmN0aW9uIGR1bXAoKQor
ICAgIHsKKyAgICAgICAgdmFyIG5vZGUgPSBJbnNwZWN0b3JUZXN0LmV4cGFuZGVkTm9kZVdpdGhJ
ZCgiZGVwdGgtMSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBFbGVtZW50c1RyZWUobm9k
ZSk7CisgICAgfTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwPgorVGVzdHMgdGhhdCBleHBhbmRpbmcgZWxlbWVudHMgcmVjdXJzaXZlbHkg
d29ya3MuCis8L3A+CisKKzxkaXYgaWQ9ImRlcHRoLTEiPgorICAgIDxkaXYgaWQ9ImRlcHRoLTIi
PgorICAgICAgICA8ZGl2IGlkPSJkZXB0aC0zIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRo
LTQiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTUiPgorICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJkZXB0aC02Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9
ImRlcHRoLTciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTgi
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkZXB0aC05Ij4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRlcHRoLTEwIj48L2Rp
dj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAg
ICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAg
ICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>