<?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>54429</bug_id>
          
          <creation_ts>2011-02-14 19:44:47 -0800</creation_ts>
          <short_desc>Refactor the extend-selection tests to be clearer what they&apos;re doing</short_desc>
          <delta_ts>2011-02-15 08:15:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>53756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin (Ben) Kalman">kalman</reporter>
          <assigned_to name="Benjamin (Ben) Kalman">kalman</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351065</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 19:44:47 -0800</bug_when>
    <thetext>Refactor the extend-selection tests to be clearer what they&apos;re doing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351066</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 19:46:14 -0800</bug_when>
    <thetext>Should this bug block the bug 53756?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351068</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 19:52:03 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Should this bug block the bug 53756?

In the middle of setting this bug up :-) yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351070</commentid>
    <comment_count>3</comment_count>
      <attachid>82410</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 19:54:43 -0800</bug_when>
    <thetext>Created attachment 82410
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351085</commentid>
    <comment_count>4</comment_count>
      <attachid>82410</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 21:28:21 -0800</bug_when>
    <thetext>Comment on attachment 82410
Patch

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

&gt; LayoutTests/editing/selection/extend-selection-home-end-expected.txt:7
&gt; -  Extending forward: &quot;\nabc ABC xyz DEF def\n&quot;[(1,1), (1,20)]
&gt; -  Extending backward:  &quot;\nabc ABC xyz DEF def\n&quot;[(1,20), (1,1)]
&gt; +  Extending forward:  &quot;\nabc ABC xyz DEF def\n&quot;[(1,1), (1,20)]
&gt; +  Extending backward: &quot;\nabc ABC xyz DEF def\n&quot;[(1,20), (1,1)]

Where did this change come from?  We should avoid making these changes especially when we&apos;re refactoring test scripts even if new results are as good as old ones. r- because of this.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:8
&gt; +    var s = window.getSelection();

Let&apos;s not use abbreviation.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:11
&gt; +    var ltrNum = (granularity === &quot;character&quot;) ? 5 : 1;
&gt; +    var rtlNum = (granularity === &quot;character&quot;) ? 15 : 3;

Ditto.  Please spell Number.  But ltrNumber isn&apos;t still descriptive.  This should be renamed such that what this variable stores is self-evident.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:18
&gt; +    var reverse = (direction === &quot;left&quot;) ? &quot;right&quot; : &quot;left&quot;;

I don&apos;t think &quot;reverse&quot; is a good name. reversedDirection?  Also, you could just evaluate this inside s.modify() because I&apos;m almost certain that JSC and V8 are smart enough not to evaluate it multiple times in the loop.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:34
&gt; +    var s = window.getSelection();

Same comment about one-letter variable.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:38
&gt; +    var nextPosition = {};
&gt; +    while (nextPosition.node !== s.extentNode || nextPosition.end !== s.extentOffset) {
&gt; +        nextPosition = { node: s.extentNode, begin: s.baseOffset, end: s.extentOffset };

Isn&apos;t do-while more appropriate here?

&gt; LayoutTests/editing/selection/resources/extend-selection.js:76
&gt; +function compareInDirection(positions, comparisonPositions, inReverse)

I don&apos;t think this function name is descriptive enough. This function not only compares but also logs errors.  How about compareTwoPositionListsAndLogErrors?

&gt; LayoutTests/editing/selection/resources/extend-selection.js:95
&gt; +        if (pos.begin !== comparison.begin) {
&gt; +            log(&quot;WARNING: positions should be the same, but begin are not the same &quot; + pos.begin + &quot; vs. &quot; + comparison.begin + &quot;\n&quot;);
&gt; +            break;
&gt; +        }
&gt; +        if (pos.end !== comparison.end) {

I&apos;m not sure &quot;break&quot; here is that helpful.  Why don&apos;t you do if (~~) log(~~) else if (~~) so that you don&apos;t need curly brackets.  Here, you&apos;re changing the behavior to print only the first warning.  Is that really a good change?  Don&apos;t we want to see at least a couple of error logs so that we can diagnose the problem even if test failed on some port we don&apos;t have access?

&gt; LayoutTests/editing/selection/resources/extend-selection.js:104
&gt; +    compareInDirection(positions, comparisonPositions, true);

I feel like you can just reverse the order of positions here so that we don&apos;t need that extra parameter in compareInDirection.  I don&apos;t think it&apos;ll add that much overhead.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:114
&gt; +    var positions = extendFn(direction, granularity);

What does Fn stand for?  How about &quot;extender&quot; or functionToExtendSelection?

&gt; LayoutTests/editing/selection/resources/extend-selection.js:130
&gt; +function runSelectionTestsWithGranularity(tests, granularity)

I don&apos;t think &quot;tests&quot; is a good name for this parameter.  It should be testNodes instead.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:199
&gt; +function createNode(innerHTML, style)

I&apos;m not sure if the argument should be named innerHTML because it&apos;s not innerHTML of any node.  IMO, it should be named content.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:266
&gt; +function setupForLayoutTest()
&gt; +{
&gt; +    if (!window.layoutTestController)
&gt; +        throw &quot;Cannot find layoutTestController, running from outside test?&quot;;
&gt; +    layoutTestController.dumpAsText();
&gt; +    document.body.removeChild(getTestNodeContainer());
&gt; +}

Can&apos;t you attach this as an load event listener so that you don&apos;t have to manually call it in all tests?  Also, you&apos;re calling this function only if window.layouTestController is defined so throw statement is useless now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351086</commentid>
    <comment_count>5</comment_count>
      <attachid>82410</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 21:33:41 -0800</bug_when>
    <thetext>Comment on attachment 82410
Patch

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

&gt; LayoutTests/editing/selection/extend-selection-home-end.html:18
&gt; +        log(&quot;  Extending forward:  &quot;);
&gt; +        extendAndLogSelectionToEnd(&quot;forward&quot;, &quot;lineBoundary&quot;);
&gt; +        log(&quot;  Extending backward: &quot;);

Okay, it seems like this is what changed the outputs.  I see that this change aligns the output columns nicely but let&apos;s make this change in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351096</commentid>
    <comment_count>6</comment_count>
      <attachid>82410</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 22:24:23 -0800</bug_when>
    <thetext>Comment on attachment 82410
Patch

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

&gt;&gt; LayoutTests/editing/selection/extend-selection-home-end-expected.txt:7
&gt;&gt; +  Extending backward: &quot;\nabc ABC xyz DEF def\n&quot;[(1,20), (1,1)]
&gt; 
&gt; Where did this change come from?  We should avoid making these changes especially when we&apos;re refactoring test scripts even if new results are as good as old ones. r- because of this.

I will revert this change and add it back later.

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:38
&gt;&gt; +        nextPosition = { node: s.extentNode, begin: s.baseOffset, end: s.extentOffset };
&gt; 
&gt; Isn&apos;t do-while more appropriate here?

perhaps.  I find do-while aesthetically ugly, but I&apos;ve made the change.

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:76
&gt;&gt; +function compareInDirection(positions, comparisonPositions, inReverse)
&gt; 
&gt; I don&apos;t think this function name is descriptive enough. This function not only compares but also logs errors.  How about compareTwoPositionListsAndLogErrors?

Well, the &quot;two&quot; is redundant since it&apos;s implied by the number of arguments, and the &quot;log errors&quot;... well I would have thought that it&apos;s self-evident and not worth making the function name even longer for?

But I&apos;ve removed this method as suggested, and renamed checkSameOrder to checkPositionLists and the other to checkPositionListsInReverse

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:95
&gt;&gt; +        if (pos.end !== comparison.end) {
&gt; 
&gt; I&apos;m not sure &quot;break&quot; here is that helpful.  Why don&apos;t you do if (~~) log(~~) else if (~~) so that you don&apos;t need curly brackets.  Here, you&apos;re changing the behavior to print only the first warning.  Is that really a good change?  Don&apos;t we want to see at least a couple of error logs so that we can diagnose the problem even if test failed on some port we don&apos;t have access?

if (..) else if (..) would actually be even more different to how it currently is.  not &quot;break&quot;ing makes it similar to how it was originally but it now compares all positions rather than early exiting on the first.

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:104
&gt;&gt; +    compareInDirection(positions, comparisonPositions, true);
&gt; 
&gt; I feel like you can just reverse the order of positions here so that we don&apos;t need that extra parameter in compareInDirection.  I don&apos;t think it&apos;ll add that much overhead.

nice

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:266
&gt;&gt; +}
&gt; 
&gt; Can&apos;t you attach this as an load event listener so that you don&apos;t have to manually call it in all tests?  Also, you&apos;re calling this function only if window.layouTestController is defined so throw statement is useless now.

nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351097</commentid>
    <comment_count>7</comment_count>
      <attachid>82414</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 22:25:40 -0800</bug_when>
    <thetext>Created attachment 82414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351104</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 22:40:19 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:76
&gt; &gt;&gt; +function compareInDirection(positions, comparisonPositions, inReverse)
&gt; &gt; 
&gt; &gt; I don&apos;t think this function name is descriptive enough. This function not only compares but also logs errors.  How about compareTwoPositionListsAndLogErrors?
&gt; 
&gt; Well, the &quot;two&quot; is redundant since it&apos;s implied by the number of arguments, and the &quot;log errors&quot;... well I would have thought that it&apos;s self-evident and not worth making the function name even longer for?

When a function is named compareX, I&apos;d think that it compares two Xs and then return 0, 1, or -1.

&gt; &gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:95
&gt; &gt;&gt; +        if (pos.end !== comparison.end) {
&gt; &gt; 
&gt; &gt; I&apos;m not sure &quot;break&quot; here is that helpful.  Why don&apos;t you do if (~~) log(~~) else if (~~) so that you don&apos;t need curly brackets.  Here, you&apos;re changing the behavior to print only the first warning.  Is that really a good change?  Don&apos;t we want to see at least a couple of error logs so that we can diagnose the problem even if test failed on some port we don&apos;t have access?
&gt; 
&gt; if (..) else if (..) would actually be even more different to how it currently is.  not &quot;break&quot;ing makes it similar to how it was originally but it now compares all positions rather than early exiting on the first.

I think printing all warnings is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351106</commentid>
    <comment_count>9</comment_count>
      <attachid>82414</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 22:48:26 -0800</bug_when>
    <thetext>Comment on attachment 82414
Patch

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

This patch is much nicer but still r- because of nits.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:81
&gt; +function comparePositions(positions, comparisonPositions)

I still don&apos;t think comparePositions is a good name.  Of course this function compares two lists of positions but that&apos;s almost implementation detail.  What a caller of this function cares is that it logs error when they mismatch, and the name comparePositions doesn&apos;t convey that behavior.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:124
&gt; +function extendAndLogSelectionWithinBlock(direction, granularity)
&gt; +{
&gt; +    return extendAndLogSelection(extendSelectionWithinBlock, direction, granularity);
&gt; +}
&gt; +
&gt; +function extendAndLogSelectionToEnd(direction, granularity)
&gt;  {
&gt; -    for (var i = 0; i &lt; tests.length; ++i) {
&gt; -        tests[i].style.direction = &quot;ltr&quot;;
&gt; -        log(&quot;Test &quot; + (i + 1) + &quot;, LTR:\n  Extending right: &quot;);
&gt; -        sel.setPosition(tests[i], 0);
&gt; -        var ltrRightPos = extendingSelection(sel, &quot;right&quot;, granularity, 0);
&gt; +    return extendAndLogSelection(extendSelectionToEnd, direction, granularity);
&gt; +}

I&apos;m not if these one line functions are that helpful.

&gt; LayoutTests/editing/selection/resources/extend-selection.js:264
&gt; +        document.body.removeChild(getTestNodeContainer());

It&apos;ll be nice if this code was right next to getTestNodeContainer().  Can we move the definition of getTestNodeContainer right above this if block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351118</commentid>
    <comment_count>10</comment_count>
      <attachid>82421</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 23:37:35 -0800</bug_when>
    <thetext>Created attachment 82421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351119</commentid>
    <comment_count>11</comment_count>
      <attachid>82421</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-14 23:43:45 -0800</bug_when>
    <thetext>Comment on attachment 82421
Patch

r+ but you might want to  consider my other comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351122</commentid>
    <comment_count>12</comment_count>
      <attachid>82414</attachid>
    <who name="Benjamin (Ben) Kalman">kalman</who>
    <bug_when>2011-02-14 23:56:24 -0800</bug_when>
    <thetext>Comment on attachment 82414
Patch

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

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:81
&gt;&gt; +function comparePositions(positions, comparisonPositions)
&gt; 
&gt; I still don&apos;t think comparePositions is a good name.  Of course this function compares two lists of positions but that&apos;s almost implementation detail.  What a caller of this function cares is that it logs error when they mismatch, and the name comparePositions doesn&apos;t convey that behavior.

good point, thanks

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:124
&gt;&gt; +}
&gt; 
&gt; I&apos;m not if these one line functions are that helpful.

They&apos;re actually used in the tests (.html files) which is why I gave them actual names.  I&apos;d probably inline it otherwise.

&gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:264
&gt;&gt; +        document.body.removeChild(getTestNodeContainer());
&gt; 
&gt; It&apos;ll be nice if this code was right next to getTestNodeContainer().  Can we move the definition of getTestNodeContainer right above this if block?

Well, not that I run this through jlint, but if I did this would cause it to fail since create*Nodes relies on createNode relies on getTestNodeContainer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351126</commentid>
    <comment_count>13</comment_count>
      <attachid>82421</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-15 00:00:01 -0800</bug_when>
    <thetext>Comment on attachment 82421
Patch

(In reply to comment #12)
&gt; (From update of attachment 82414 [details])
&gt; &gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:124
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; I&apos;m not if these one line functions are that helpful.
&gt; 
&gt; They&apos;re actually used in the tests (.html files) which is why I gave them actual names.  I&apos;d probably inline it otherwise.
&gt; 
&gt; &gt;&gt; LayoutTests/editing/selection/resources/extend-selection.js:264
&gt; &gt;&gt; +        document.body.removeChild(getTestNodeContainer());
&gt; &gt; 
&gt; &gt; It&apos;ll be nice if this code was right next to getTestNodeContainer().  Can we move the definition of getTestNodeContainer right above this if block?
&gt; 
&gt; Well, not that I run this through jlint, but if I did this would cause it to fail since create*Nodes relies on createNode relies on getTestNodeContainer.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351276</commentid>
    <comment_count>14</comment_count>
      <attachid>82421</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 08:15:03 -0800</bug_when>
    <thetext>Comment on attachment 82421
Patch

Clearing flags on attachment: 82421

Committed r78565: &lt;http://trac.webkit.org/changeset/78565&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351277</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-15 08:15:09 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82410</attachid>
            <date>2011-02-14 19:54:43 -0800</date>
            <delta_ts>2011-02-14 22:25:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54429-20110215145439.patch</filename>
            <type>text/plain</type>
            <size>63756</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzY4NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OGEzMTNmNzJlMGUyNjcxNTNkNjZj
MmE3NmNiMzZkZWNiMzlmNTU3Li44MDQ1YWM1MjRjZjZmODRiMzIyZDQxMTQ0OGFhNDlmNTYyOTcy
YTQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDItMTQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4dGVuZC1zZWxlY3Rpb24gdGVzdHMgdG8gYmUg
Y2xlYXJlciB3aGF0IHRoZXkncmUgZG9pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0NDI5CisKKyAgICAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBh
IGNsZWFudXAgdG8gZXh0ZW5kLXNlbGVjdGlvbi5qcyBhbmQgcHJvcGFnYXRpb24gb2YgdGhvc2Ug
Y2hhbmdlcyB0byB0aGUgYWZmZWN0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWw6CisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVu
ZC5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29y
ZC5odG1sOgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2Vs
ZWN0aW9uLmpzOgorICAgICAgICAoZXh0ZW5kU2VsZWN0aW9uV2l0aGluQmxvY2spOgorICAgICAg
ICAoZXh0ZW5kU2VsZWN0aW9uVG9FbmQpOgorICAgICAgICAoZm9sZCk6CisgICAgICAgIChjb21w
YXJlSW5EaXJlY3Rpb24pOgorICAgICAgICAoY29tcGFyZUluUmV2ZXJzZU9yZGVyKToKKyAgICAg
ICAgKGNvbXBhcmVJblNhbWVPcmRlcik6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb24p
OgorICAgICAgICAoZXh0ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2spOgorICAgICAgICAo
ZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9FbmQpOgorICAgICAgICAocnVuU2VsZWN0aW9uVGVzdHNX
aXRoR3JhbnVsYXJpdHkpOgorICAgICAgICAoZ2V0VGVzdE5vZGVDb250YWluZXIpOgorICAgICAg
ICAoY3JlYXRlTm9kZSk6CisgICAgICAgIChjcmVhdGVDaGFyQW5kV29yZE5vZGVzKToKKyAgICAg
ICAgKGNyZWF0ZUVuY2xvc2luZ0Jsb2NrTm9kZXMpOgorICAgICAgICAoY3JlYXRlSG9tZUVuZE5v
ZGVzKToKKyAgICAgICAgKGNyZWF0ZUFsbE5vZGVzKToKKyAgICAgICAgKHNldHVwRm9yTGF5b3V0
VGVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24taG9tZS1lbmQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9l
ZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dDoK
KwogMjAxMS0wMi0xMSAgSmVyZW15IE9ybG93ICA8am9ybG93QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOYXRlIENoYXBpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sCmlu
ZGV4IDlmMjc3Zjc0YjYzZTQ3YTgxZjcxNDhkMDFiOTgyNzRmYmUzMzRhMzkuLjgyYWM1MWNlMGM1
ZDQ1OWY4YzMyYmJmMjhkYjM5NGUxNjY5Nzk2NTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXIuaHRt
bApAQCAtOCwxNiArOCwxMCBAQAogPGJvZHk+CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxz
Y3JpcHQ+Citsb2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOworcnVuU2VsZWN0
aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkoY3JlYXRlQ2hhckFuZFdvcmROb2RlcygpLCAiY2hhcmFj
dGVyIik7CiAKLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLSAgICB2YXIgdGVzdHMgPSBjcmVhdGVUZXN0
Tm9kZXMoImNoYXItYW5kLXdvcmQiKTsKLSAgICB2YXIgc2VsID0gZ2V0U2VsZWN0aW9uKCk7Ci0K
LSAgICBsb2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOwotICAgIHRlc3RFeHRl
bmRpbmdTZWxlY3Rpb24odGVzdHMsICBzZWwsICJjaGFyYWN0ZXIiLCAwKTsKLX0KLQoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBzZXR1cEZvckxheW91dFRlc3QoKTsKIDwv
c2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3NpbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWwKaW5k
ZXggYWU3MDY1Mzg5MGU5Y2ZjYTI1ZDZjMWM1ZWU5NzFlNTYyYzUxZGI1NC4uYzI1NTc4ODIxMGY3
NDI5NmJhOGYwNmJkYmRhNDA3NzhlNDE1MzVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3NpbmctYmxvY2suaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWVuY2xvc2lu
Zy1ibG9jay5odG1sCkBAIC04LDMwICs4LDI3IEBACiA8Ym9keT4KIDxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgogPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdEV4dGVuZGluZ1NlbGVjdGlvbkZvckVu
Y2xvc2luZ0Jsb2NrKHRlc3RzLCBzZWwsIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gcnVuU2VsZWN0
aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlGb3JFbmNsb3NpbmdCbG9jayh0ZXN0Tm9kZXMsIGdyYW51
bGFyaXR5KQogewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgTFRSOlxuICBFeHRlbmRpbmcgcmln
aHQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2
YXIgbHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAicmlnaHQiLCBncmFudWxh
cml0eSwgMSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0Tm9kZXMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdE5vZGVzW2ldLCAwKTsK
KworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4iKTsKKyAgICAgICAg
bG9nKCIgIEV4dGVuZGluZyByaWdodDogIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlv
bldpdGhpbkJsb2NrKCJyaWdodCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0
ZW5kaW5nIGxlZnQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRpbmdTZWxl
Y3Rpb24oc2VsLCAibGVmdCIsIGdyYW51bGFyaXR5LCAxKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9n
U2VsZWN0aW9uV2l0aGluQmxvY2soImxlZnQiLCBncmFudWxhcml0eSk7CiAgICAgfQogfQogCi1p
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsK
K3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5Rm9yRW5jbG9zaW5nQmxvY2soY3JlYXRl
RW5jbG9zaW5nQmxvY2tOb2RlcygpLCAiY2hhcmFjdGVyIik7CiAKLSAgICB0ZXN0cyA9IGNyZWF0
ZVRlc3ROb2RlcygiZW5jbG9zaW5nLWJsb2NrIik7Ci0gICAgc2VsID0gZ2V0U2VsZWN0aW9uKCk7
Ci0KLSAgICBsb2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOwotICAgIHRlc3RF
eHRlbmRpbmdTZWxlY3Rpb25Gb3JFbmNsb3NpbmdCbG9jayh0ZXN0cywgIHNlbCwgImNoYXJhY3Rl
ciIsIDEpOwotICAgIGxvZygiXG5cblxuXG5cbkV4dGVuZGluZyBieSB3b3JkXG4iKTsKLSAgICB0
ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2sodGVzdHMsICBzZWwsICJ3b3Jk
IiwgMSk7Ci19Citsb2coIlxuXG5cblxuXG5FeHRlbmRpbmcgYnkgd29yZFxuIik7CitydW5TZWxl
Y3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eUZvckVuY2xvc2luZ0Jsb2NrKGNyZWF0ZUVuY2xvc2lu
Z0Jsb2NrTm9kZXMoKSwgIndvcmQiKTsKIAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICBzZXR1cEZvckxheW91dFRlc3QoKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21l
LWVuZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dAppbmRleCBkZjBiZjlmM2VjOGU3NzJkZWQ4
YWYzNTY3NDRiZGRhZWEyOWQ1M2M5Li43NzAyMzI0Y2NhMjlkYjA4Zjg5MTY4MTQ2NmZhMDU4MjFi
N2YzNzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dApAQCAtMywx
MzUgKzMsMTM1IEBACiAKIEV4dGVuZGluZyBieSBsaW5lQm91bmRhcnkKIFRlc3QgMSwgTFRSOgot
ICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEs
MjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygx
LDIwKSwgKDEsMSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuYWJjIEFCQyB4eXogREVGIGRl
ZlxuIlsoMSwxKSwgKDEsMjApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbmFiYyBBQkMgeHl6
IERFRiBkZWZcbiJbKDEsMjApLCAoMSwxKV0KIFRlc3QgMSwgUlRMOgotICBFeHRlbmRpbmcgZm9y
d2FyZDogIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDIwKSwgKDEsMSldCisg
IEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEs
MjApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEs
MjApLCAoMSwxKV0KIFRlc3QgMiwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIHh5
eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi
XG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDIwKSwgKDEsMSldCisgIEV4dGVuZGluZyBmb3J3
YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQorICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApLCAoMSwxKV0KIFRl
c3QgMiwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIHh5eiBERUYgZGVmIEdISVxu
IlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgeHl6IERFRiBk
ZWYgR0hJXG4iWygxLDIwKSwgKDEsMSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIHh5
eiBERUYgZGVmIEdISVxuIlsoMSwxKSwgKDEsMjApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJc
bkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApLCAoMSwxKV0KIFRlc3QgMywgTFRSOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEyKV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMTIpLCAoMSwxKV0KKyAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEsMTIpXQorICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKSwgKDEsMSldCiBUZXN0IDMs
IFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyBERUYgQUJDXG4iWygxLDEpLCAoMSwx
MildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyBERUYgQUJDXG4iWygxLDEyKSwgKDEs
MSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEy
KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMiksICgxLDEp
XQogVGVzdCA0LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4i
WygxLDEpLCAoMSwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBlZmQgZGFiZWJc
biJbKDEsMTQpLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgZWZkIGRhYmVi
XG4iWygxLDEpLCAoMSwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuYWJjIGVmZCBkYWJl
YlxuIlsoMSwxNCksICgxLDEpXQogVGVzdCA0LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
XG5hYmMgZWZkIGRhYmViXG4iWygxLDEpLCAoMSwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMTQpLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDEpLCAoMSwxNCldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCksICgxLDEpXQogVGVzdCA1LCBMVFI6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVu
ZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQogVGVzdCA1LCBSVEw6
Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4
dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQogVGVzdCA2
LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAs
NSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCww
KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSld
CisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQog
VGVzdCA2LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1l
dCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0g
IlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJb
KDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygw
LDApXQogVGVzdCA3LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0s
ICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAi
TG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIg
YW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3Jl
bSAiWygwLDApXQogVGVzdCA3LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlso
MCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAs
NSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCww
KV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0s
ICJMb3JlbSAiWygwLDApXQogVGVzdCA4LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9y
ZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1l
dCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0g
IlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0Ilso
MCw1KV0sICJMb3JlbSAiWygwLDApXQogVGVzdCA4LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBh
bWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQogVGVzdCA5LCBMVFI6Ci0gIEV4dGVuZGluZyBm
b3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJM
b3JlbSAiWygwLDUpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCww
KSwgKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIkxvcmVtICJbKDAsNSksICgwLDApXQog
VGVzdCA5LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSld
Ci0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0KKyAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogIkxvcmVtICJbKDAsNSksICgwLDApXQogVGVzdCAxMCwgTFRSOgotICBFeHRlbmRpbmcgZm9y
d2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KIFRlc3QgMTAsIFJUTDoKLSAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcg
Zm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDExLCBMVFI6Ci0g
IEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEp
XQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiaXBzdW0gZG9sb3IiWygwLDExKV0sICJMb3JlbSAi
WygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgImlwc3VtIGRv
bG9yIlsoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImlwc3VtIGRvbG9yIlsoMCwxMSld
LCAiTG9yZW0gIlsoMCwwKV0KIFRlc3QgMTEsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJM
b3JlbSAiWygwLDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJpcHN1bSBkb2xvciJbKDAsMTEpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiaXBzdW0gZG9sb3IiWygwLDExKV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAiaXBzdW0gZG9sb3IiWygwLDExKV0sICJMb3JlbSAiWygwLDApXQogVGVz
dCAxMiwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQi
WygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJb
KDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygw
LDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCww
KV0KIFRlc3QgMTIsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwg
IiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJM
b3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBh
bWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVt
ICJbKDAsMCldCiBUZXN0IDEzLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlso
MCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCww
KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCisgIEV4dGVu
ZGluZyBiYWNrd2FyZDogIkxvcmVtICJbKDAsNSksICgwLDApXQogVGVzdCAxMywgUlRMOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCksICgwLDUpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiTG9yZW0gIlsoMCw1KSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxv
cmVtICJbKDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJMb3JlbSAiWygwLDUp
LCAoMCwwKV0KIFRlc3QgMTQsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4g
IlsoMiwyKV0sICJcbiBCRkRYXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4g
QkZEWFxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gQkZEWFxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiXG4gQkZEWFxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KIFRlc3QgMTQs
IFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBCRkRY
XG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlsoMiw2KV0sICJc
biBKdXN0XG4gIlsoMiwyKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIs
MildLCAiXG4gQkZEWFxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gQkZEWFxu
IlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KIFRlc3QgMTUsIExUUjoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBldmVyXG4iWygyLDYpXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0K
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gZXZlclxuIlso
Miw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gZXZlclxuIlsoMiw2KV0sICJcbiBKdXN0
XG4gIlsoMiwyKV0KIFRlc3QgMTUsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0
XG4gIlsoMiwyKV0sICJcbiBldmVyXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi
XG4gZXZlclxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAiXG4gZXZlclxuIlsoMiw2KV0sICJcbiBKdXN0XG4gIlsoMiwyKV0KIFRlc3Qg
MTYsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgw
LDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImNhciBtZWFucyBBQkMuIlsoMCwxNCksICgw
LDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgwLDE0
KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCld
CiBUZXN0IDE2LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiY2FyIG1lYW5zIEFCQy4iWygw
LDApLCAoMCwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJjYXIgbWVhbnMgQUJDLiJbKDAs
MTQpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiY2FyIG1lYW5zIEFCQy4iWygwLDAp
LCAoMCwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImNhciBtZWFucyBBQkMuIlsoMCwxNCks
ICgwLDApXQogVGVzdCAxNywgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIuGqnGNhciBERUYg
QUJDLuGqnSJbKDAsMCksICgwLDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIuGqnGNhciBE
RUYgQUJDLuGqnSJbKDAsMTQpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi4aqcY2Fy
IERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICLhqpxj
YXIgREVGIEFCQy7hqp0iWygwLDE0KSwgKDAsMCldCiBUZXN0IDE3LCBSVEw6Ci0gIEV4dGVuZGlu
ZyBmb3J3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCksICgwLDApXQorICBFeHRl
bmRpbmcgZm9yd2FyZDogICLhqpxjYXIgREVGIEFCQy7hqp0iWygwLDApLCAoMCwxNCldCisgIEV4
dGVuZGluZyBiYWNrd2FyZDogIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMTQpLCAoMCwwKV0KIFRl
c3QgMTgsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnS4iIlsoMCwwKSwgKDAsMjQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiaGUgc2FpZCAi
4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMCksICgwLDI0KV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpLCAoMCww
KV0KIFRlc3QgMTgsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJoZSBzYWlkICLhqpxjYXIg
REVGIEFCQ+GqnS4iIlsoMCwwKSwgKDAsMjQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiaGUg
c2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMCksICgwLDI0KV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQp
LCAoMCwwKV0KIFRlc3QgMTksIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJHSEkgSktMIE1O
TyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERF
RiBBQkPhqp0i4aqdJz8iWygwLDQwKSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkdI
SSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsMCksICgw
LDQwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGq
nGNhciBERUYgQUJD4aqdIuGqnSc/IlsoMCw0MCksICgwLDApXQogVGVzdCAxOSwgUlRMOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnSLhqp0nPyJbKDAsMCksICgwLDQwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBK
S0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCww
KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNh
ciBERUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQw
KSwgKDAsMCldCiBUZXN0IDIwLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiQUJDIGFiYyBE
RUYiWygwLDApLCAoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJBQkMgYWJjIERFRiJb
KDAsMTEpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiQUJDIGFiYyBERUYiWygwLDAp
LCAoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIkFCQyBhYmMgREVGIlsoMCwxMSksICgw
LDApXQogVGVzdCAyMCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkFCQyBhYmMgREVGIlso
MCwwKSwgKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiQUJDIGFiYyBERUYiWygwLDEx
KSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkFCQyBhYmMgREVGIlsoMCwwKSwgKDAs
MTEpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJBQkMgYWJjIERFRiJbKDAsMTEpLCAoMCwwKV0K
IFRlc3QgMjEsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGlu
ZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgIlsoMCw4KSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnICJbKDAsOCksICgwLDApXQogVGVzdCAyMSwgUlRMOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KKyAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KSwgKDAsMCld
CiBUZXN0IDIyLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnICJbKDAsOCksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCisg
IEV4dGVuZGluZyBiYWNrd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KIFRlc3QgMjIsIFJUTDoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgIlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KSwgKDAsMCldCisgIEV4
dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCksICgwLDAp
XQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2Vs
ZWN0aW9uLWhvbWUtZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRl
bmQtc2VsZWN0aW9uLWhvbWUtZW5kLmh0bWwKaW5kZXggNzZkMjQ3YTA3N2E3M2EwMzE1ZDViNTgx
ZWI4YjIyMDc0OWQzNGZhYS4uMDM4YTVjNDg5Zjk4N2NlOTUzNDI3NWJkMjlhMWVhNzQ4OGY2N2Mx
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVj
dGlvbi1ob21lLWVuZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4
dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbApAQCAtOCwzNiArOCwzNCBAQAogPGJvZHk+CiA8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3RFeHRlbmRp
bmdMaW5lQm91bmRhcnkodGVzdHMsIHNlbCkKK2Z1bmN0aW9uIHRlc3RFeHRlbmRpbmdMaW5lQm91
bmRhcnkodGVzdE5vZGVzKQogewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0gICAg
ICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIg
bHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsICJsaW5lQm91
bmRhcnkiLCAwKTsKKyAgICBmdW5jdGlvbiBleHRlbmRUb0VuZEFuZEJhY2sobm9kZSkKKyAgICB7
CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKG5vZGUsIDApOworICAgICAgICBs
b2coIiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0
aW9uVG9FbmQoImZvcndhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisgICAgICAgIGxvZygiICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICIpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgi
YmFja3dhcmQiLCAibGluZUJvdW5kYXJ5Iik7CisgICAgfQogCi0gICAgICAgIGxvZygiICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRpbmdT
ZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5IiwgMCk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0ZXN0Tm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG5vZGUg
PSB0ZXN0Tm9kZXNbaV07CiAKLSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gInJ0
bCI7Ci0gICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAg
ICAgICB2YXIgbHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIs
ICJsaW5lQm91bmRhcnkiLCAwKTsKKyAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwg
TFRSOlxuIik7CisgICAgICAgIG5vZGUuc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7CisgICAgICAg
IGV4dGVuZFRvRW5kQW5kQmFjayhub2RlKTsKIAotICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgIik7Ci0gICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9u
KHNlbCwgImJhY2t3YXJkIiwgImxpbmVCb3VuZGFyeSIsIDApOworICAgICAgICBsb2coIlRlc3Qg
IiArIChpICsgMSkgKyAiLCBSVEw6XG4iKTsKKyAgICAgICAgbm9kZS5zdHlsZS5kaXJlY3Rpb24g
PSAicnRsIjsKKyAgICAgICAgZXh0ZW5kVG9FbmRBbmRCYWNrKG5vZGUpOwogICAgIH0KIH0KIAot
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKLQotICAgIHRlc3RzID0gY3JlYXRlVGVzdE5vZGVzKCk7IC8vIGFs
bAotICAgIHZhciBzZWwgPSBnZXRTZWxlY3Rpb24oKTsKLSAgICBsb2coIlxuXG5cbkV4dGVuZGlu
ZyBieSBsaW5lQm91bmRhcnlcbiIpOwotICAgIHRlc3RFeHRlbmRpbmdMaW5lQm91bmRhcnkodGVz
dHMsICBzZWwpOwotfQorbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgbGluZUJvdW5kYXJ5XG4iKTsK
K3Rlc3RFeHRlbmRpbmdMaW5lQm91bmRhcnkoY3JlYXRlQWxsTm9kZXMoKSk7CiAKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgc2V0dXBGb3JMYXlvdXRUZXN0KCk7CiA8L3Nj
cmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2V4dGVuZC1zZWxlY3Rpb24td29yZC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLmh0bWwKaW5kZXggOTU1NDZlMDQ0NjExNTNmODA2Mjg0
NDA2NGUzNmIxNTRiMDlkNmFmOC4uYmQ3ZDAzOTE2ZWExZjI3ZDJkMTJmODhkZDRiOWMzNWJhOGIw
MWY2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNl
bGVjdGlvbi13b3JkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0
ZW5kLXNlbGVjdGlvbi13b3JkLmh0bWwKQEAgLTgsMTYgKzgsMTAgQEAKIDxib2R5PgogPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgorbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5
IHdvcmRcbiIpOworcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkoY3JlYXRlQ2hhckFu
ZFdvcmROb2RlcygpLCAid29yZCIpOwogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdmFyIHRl
c3RzID0gY3JlYXRlVGVzdE5vZGVzKCdjaGFyLWFuZC13b3JkJyk7Ci0gICAgdmFyIHNlbCA9IGdl
dFNlbGVjdGlvbigpOwotCi0gICAgbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIp
OwotICAgIHRlc3RFeHRlbmRpbmdTZWxlY3Rpb24odGVzdHMsICBzZWwsICJ3b3JkIiwgMCk7Ci19
Ci0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgc2V0dXBGb3JMYXlvdXRU
ZXN0KCk7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKaW5kZXggMWRj
Nzg2YWIyYzU5ODQ2MGM2N2QyN2E3OGFmYmRiNzEyNDgwNWNkZS4uNzQ3YTM2YzUxZTZkMmM4MjE2
MGMyZmM3YWQ1ODc4OTgyY2I3ZWQyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKQEAgLTMsNjAg
KzMsNDIgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CiB9CiAKLWZ1bmN0aW9uIHBvc2l0aW9uc0V4dGVuZGluZ0luRGlyZWN0aW9uRm9yRW5jbG9z
aW5nQmxvY2soc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0ZW5kU2Vs
ZWN0aW9uV2l0aGluQmxvY2soZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKKyAgICB2YXIgcyA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0gICAgdmFy
IGx0ck51bTsKLSAgICB2YXIgcnRsTnVtOwotICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFj
dGVyIikgewotICAgICAgICBsdHJOdW0gPSA1OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGx0ck51
bSA9IDE7Ci0gICAgfQotICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVyIikgewotICAg
ICAgICBydGxOdW0gPSAxNTsKLSAgICB9IGVsc2UgewotICAgICAgICBydGxOdW0gPSAzOwotICAg
IH0KLSAgICB2YXIgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8PSBsdHJOdW0pIHsKLSAg
ICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5i
YXNlT2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnko
ImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgICAgICArK2luZGV4OwotICAg
IH0KLSAgICB2YXIgYW50aURpcmVjdGlvbiA9IGRpcmVjdGlvbjsKLSAgICBpZiAoYW50aURpcmVj
dGlvbiA9PSAnbGVmdCcpIHsKLSAgICAgICAgYW50aURpcmVjdGlvbiA9ICJyaWdodCI7Ci0gICAg
fSBlbHNlIGlmIChhbnRpRGlyZWN0aW9uID0gJ3JpZ2h0JykgewotICAgICAgICBhbnRpRGlyZWN0
aW9uID0gImxlZnQiOworICAgIHZhciBsdHJOdW0gPSAoZ3JhbnVsYXJpdHkgPT09ICJjaGFyYWN0
ZXIiKSA/IDUgOiAxOworICAgIHZhciBydGxOdW0gPSAoZ3JhbnVsYXJpdHkgPT09ICJjaGFyYWN0
ZXIiKSA/IDE1IDogMzsKKworICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPD0gbHRyTnVt
OyArK2luZGV4KSB7CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogcy5leHRlbnROb2Rl
LCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0IH0pOworICAgICAgICBz
Lm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICAgfQogCi0gICAg
aW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8PSBydGxOdW0pIHsKLSAgICAgICAgcG9zaXRp
b25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5iYXNlT2Zmc2V0LCBl
bmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnkoImV4dGVuZCIsIGFu
dGlEaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAgKytpbmRleDsKKyAgICB2YXIgcmV2
ZXJzZSA9IChkaXJlY3Rpb24gPT09ICJsZWZ0IikgPyAicmlnaHQiIDogImxlZnQiOworICAgIGZv
ciAodmFyIGluZGV4ID0gMDsgaW5kZXggPD0gcnRsTnVtOyArK2luZGV4KSB7CisgICAgICAgIHBv
c2l0aW9ucy5wdXNoKHsgbm9kZTogcy5leHRlbnROb2RlLCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBl
bmQ6IHMuZXh0ZW50T2Zmc2V0IH0pOworICAgICAgICBzLm1vZGlmeSgiZXh0ZW5kIiwgcmV2ZXJz
ZSwgZ3JhbnVsYXJpdHkpOwogICAgIH0KLSAgICB2YXIgaW5kZXggPSAwOwotICAgIHdoaWxlIChp
bmRleCA8IGx0ck51bSkgewotICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5leHRl
bnROb2RlLCBiZWdpbjogc2VsLmJhc2VPZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNldCB9KTsK
LSAgICAgICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0g
ICAgICAgICsraW5kZXg7CisKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgbHRyTnVt
OyArK2luZGV4KSB7CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogcy5leHRlbnROb2Rl
LCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBlbmQ6IHMuZXh0ZW50T2Zmc2V0IH0pOworICAgICAgICBz
Lm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICAgfQorCiAgICAg
cmV0dXJuIHBvc2l0aW9uczsKIH0KIAotCi1mdW5jdGlvbiBwb3NpdGlvbnNFeHRlbmRpbmdJbkRp
cmVjdGlvbihzZWwsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpCitmdW5jdGlvbiBleHRlbmRTZWxl
Y3Rpb25Ub0VuZChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQogeworICAgIHZhciBzID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwogICAgIHZhciBwb3NpdGlvbnMgPSBbXTsKLSAgICAKLSAgICB3aGls
ZSAodHJ1ZSkgewotICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5leHRlbnROb2Rl
LCBiZWdpbjogc2VsLmJhc2VPZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNldCB9KTsKLSAgICAg
ICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7Ci0gICAgICAg
IGlmIChwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLm5vZGUgPT0gc2VsLmV4dGVudE5v
ZGUgJiYgcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXS5lbmQgPT0gc2VsLmV4dGVudE9m
ZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH07CisgICAgdmFyIG5leHRQb3NpdGlvbiA9
IHt9OworICAgIHdoaWxlIChuZXh0UG9zaXRpb24ubm9kZSAhPT0gcy5leHRlbnROb2RlIHx8IG5l
eHRQb3NpdGlvbi5lbmQgIT09IHMuZXh0ZW50T2Zmc2V0KSB7CisgICAgICAgIG5leHRQb3NpdGlv
biA9IHsgbm9kZTogcy5leHRlbnROb2RlLCBiZWdpbjogcy5iYXNlT2Zmc2V0LCBlbmQ6IHMuZXh0
ZW50T2Zmc2V0IH07CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKG5leHRQb3NpdGlvbik7CisgICAg
ICAgIHMubW9kaWZ5KCJleHRlbmQiLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICB9CiAg
ICAgcmV0dXJuIHBvc2l0aW9uczsKIH0KIApAQCAtNjgsNyArNTAsNyBAQCBmdW5jdGlvbiBmb2xk
KHN0cmluZykKICAgICAgICAgaWYgKGNoYXIgPj0gMHgwNWQwKQogICAgICAgICAgICAgY2hhciAt
PSAweDA1OGY7CiAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gMTApIHsKLSAgICAgICAgICAgIHJl
c3VsdCArPSAiXFxuIjsKKyAgICAgICAgICAgIHJlc3VsdCArPSJcXG4iOwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNv
ZGUoY2hhcik7CkBAIC05MSwxNzcgKzczLDE5NCBAQCBmdW5jdGlvbiBsb2dQb3NpdGlvbnMocG9z
aXRpb25zKQogICAgIGxvZygiXSIpOwogfQogCi1mdW5jdGlvbiBjaGVja1JldmVyc2VPcmRlcihp
bnB1dFBvc2l0aW9ucywgaW5wdXRSZXZlcnNlUG9zaXRpb25zKQorZnVuY3Rpb24gY29tcGFyZUlu
RGlyZWN0aW9uKHBvc2l0aW9ucywgY29tcGFyaXNvblBvc2l0aW9ucywgaW5SZXZlcnNlKQogewot
ICAgIHZhciBwb3NpdGlvbnMgPSBpbnB1dFBvc2l0aW9ucy5zbGljZSgpOwotICAgIHZhciByZXZl
cnNlUG9zaXRpb25zID0gaW5wdXRSZXZlcnNlUG9zaXRpb25zLnNsaWNlKCk7Ci0gICAgdmFyIG1p
c21hdGNoID0gKHBvc2l0aW9ucy5sZW5ndGggIT0gcmV2ZXJzZVBvc2l0aW9ucy5sZW5ndGgpOwot
ICAgIGlmIChtaXNtYXRjaCkKLSAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxk
IGJlIHRoZSBzYW1lLCBidXQgdGhlIGxlbmd0aCBhcmUgbm90IHRoZSBzYW1lICIgKyAgcG9zaXRp
b25zLmxlbmd0aCArICIgdnMuICIgKyByZXZlcnNlUG9zaXRpb25zLmxlbmd0aCArICJcbiIpOwot
ICAgIHdoaWxlICghbWlzbWF0Y2gpIHsKLSAgICAgICAgdmFyIHBvcyA9IHBvc2l0aW9ucy5wb3Ao
KTsKLSAgICAgICAgaWYgKCFwb3MpCisgICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggIT09IGNvbXBh
cmlzb25Qb3NpdGlvbnMubGVuZ3RoKSB7CisgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25z
IHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IHRoZSBsZW5ndGggYXJlIG5vdCB0aGUgc2FtZSAiICsg
IHBvc2l0aW9ucy5sZW5ndGggKyAiIHZzLiAiICsgc2FtZVBvc2l0aW9ucy5sZW5ndGggKyAiXG4i
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9z
aXRpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBwb3MgPSBwb3NpdGlvbnNbaV07Cisg
ICAgICAgIHZhciBjb21wYXJpc29uID0gY29tcGFyaXNvblBvc2l0aW9uc1tpblJldmVyc2UgPyAo
Y29tcGFyaXNvblBvc2l0aW9ucy5sZW5ndGggLSBpIC0gMSkgOiBpXTsKKworICAgICAgICBpZiAo
cG9zLm5vZGUgIT09IGNvbXBhcmlzb24ubm9kZSkgeworICAgICAgICAgICAgbG9nKCJXQVJOSU5H
OiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgbm9kZSBhcmUgbm90IHRoZSBzYW1l
XG4iKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB2YXIgcmV2ZXJzZVBvcyA9IHJldmVy
c2VQb3NpdGlvbnMuc2hpZnQoKTsKLSAgICAgICAgaWYgKHBvcy5ub2RlICE9IHJldmVyc2VQb3Mu
bm9kZSkgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9nKCJX
QVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSByZXZlcnNlLCBidXQgbm9kZSBhcmUgbm90
IHRoZSByZXZlcnNlXG4iKTsKLSAgICAgICAgfSAKLSAgICAgICAgaWYgKHBvcy5iZWdpbiAhPSBy
ZXZlcnNlUG9zLmJlZ2luKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAg
ICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBiZWdp
biBhcmUgbm90ICIgKyBwb3MuYmVnaW4gKyAiIHZzLiAiICsgcmV2ZXJzZVBvcy5iZWdpbiArICJc
biIpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwb3MuZW5kICE9IHJldmVyc2VQb3MuZW5kKSB7
Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldBUk5JTkc6
IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5vdCAiICsgcG9zLmVu
ZCArICIgdnMuICIgKyByZXZlcnNlUG9zLmVuZCArICJcbiIpOworICAgICAgICBpZiAocG9zLmJl
Z2luICE9PSBjb21wYXJpc29uLmJlZ2luKSB7CisgICAgICAgICAgICBsb2coIldBUk5JTkc6IHBv
c2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBiZWdpbiBhcmUgbm90IHRoZSBzYW1lICIg
KyBwb3MuYmVnaW4gKyAiIHZzLiAiICsgY29tcGFyaXNvbi5iZWdpbiArICJcbiIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvcy5lbmQgIT09IGNvbXBhcmlz
b24uZW5kKSB7CisgICAgICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUg
dGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmVuZCArICIgdnMuICIg
KyBjb21wYXJpc29uLmVuZCArICJcbiIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKLQotZnVuY3Rpb24gY2hlY2tTYW1lT3JkZXIoaW5wdXRQb3NpdGlvbnMsIGlu
cHV0U2FtZVBvc2l0aW9ucykKK2Z1bmN0aW9uIGNvbXBhcmVJblJldmVyc2VPcmRlcihwb3NpdGlv
bnMsIGNvbXBhcmlzb25Qb3NpdGlvbnMpCiB7Ci0gICAgdmFyIHBvc2l0aW9ucyA9IGlucHV0UG9z
aXRpb25zLnNsaWNlKCk7Ci0gICAgdmFyIHNhbWVQb3NpdGlvbnMgPSBpbnB1dFNhbWVQb3NpdGlv
bnMuc2xpY2UoKTsKLSAgICB2YXIgbWlzbWF0Y2ggPSBwb3NpdGlvbnMubGVuZ3RoICE9IHNhbWVQ
b3NpdGlvbnMubGVuZ3RoOwotICAgIGlmIChtaXNtYXRjaCkKLSAgICAgICAgbG9nKCJXQVJOSU5H
OiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgdGhlIGxlbmd0aCBhcmUgbm90IHRo
ZSBzYW1lICIgKyAgcG9zaXRpb25zLmxlbmd0aCArICIgdnMuICIgKyBzYW1lUG9zaXRpb25zLmxl
bmd0aCArICJcbiIpOwotICAgIHdoaWxlICghbWlzbWF0Y2gpIHsKLSAgICAgICAgdmFyIHBvcyA9
IHBvc2l0aW9ucy5wb3AoKTsKLSAgICAgICAgaWYgKCFwb3MpCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgdmFyIHNhbWVQb3MgPSBzYW1lUG9zaXRpb25zLnBvcCgpOwotICAgICAgICBpZiAo
cG9zLm5vZGUgIT0gc2FtZVBvcy5ub2RlKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7
Ci0gICAgICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUs
IGJ1dCBub2RlIGFyZSBub3QgdGhlIHNhbWVcbiIpOwotICAgICAgICB9IAotICAgICAgICBpZiAo
cG9zLmJlZ2luICE9IHNhbWVQb3MuYmVnaW4pIHsKLSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1
ZTsKLSAgICAgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2Ft
ZSwgYnV0IGJlZ2luIGFyZSBub3QgdGhlIHNhbWUgIiArIHBvcy5iZWdpbiArICIgdnMuICIgKyBz
YW1lUG9zLmJlZ2luICsgIlxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBvcy5lbmQgIT0g
c2FtZVBvcy5lbmQpIHsKLSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAg
IGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IGVuZCBhcmUg
bm90IHRoZSBzYW1lICIgKyBwb3MuZW5kICsgIiB2cy4gIiArIHNhbWVQb3MuZW5kICsgIlxuIik7
Ci0gICAgICAgIH0KLSAgIH0KKyAgICBjb21wYXJlSW5EaXJlY3Rpb24ocG9zaXRpb25zLCBjb21w
YXJpc29uUG9zaXRpb25zLCB0cnVlKTsKIH0KIAorZnVuY3Rpb24gY29tcGFyZUluU2FtZU9yZGVy
KHBvc2l0aW9ucywgY29tcGFyaXNvblBvc2l0aW9ucykKK3sKKyAgICBjb21wYXJlSW5EaXJlY3Rp
b24ocG9zaXRpb25zLCBjb21wYXJpc29uUG9zaXRpb25zLCBmYWxzZSk7Cit9CiAKLWZ1bmN0aW9u
IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHksIG9wdGlvbikK
K2Z1bmN0aW9uIGV4dGVuZEFuZExvZ1NlbGVjdGlvbihleHRlbmRGbiwgZGlyZWN0aW9uLCBncmFu
dWxhcml0eSkKIHsKLSAgICB2YXIgcG9zaXRpb25zOwotICAgIGlmIChvcHRpb24gPT0gMCkgewot
ICAgICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnNFeHRlbmRpbmdJbkRpcmVjdGlvbihzZWwsIGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9ucyA9
IHBvc2l0aW9uc0V4dGVuZGluZ0luRGlyZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2soc2VsLCBkaXJl
Y3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICB9CisgICAgdmFyIHBvc2l0aW9ucyA9IGV4dGVuZEZu
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnMpOwog
ICAgIGxvZygiXG4iKTsKICAgICByZXR1cm4gcG9zaXRpb25zOwogfQogCi1mdW5jdGlvbiB0ZXN0
RXh0ZW5kaW5nU2VsZWN0aW9uKHRlc3RzLCBzZWwsIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0
ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2soZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK3sK
KyAgICByZXR1cm4gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uKGV4dGVuZFNlbGVjdGlvbldpdGhpbkJs
b2NrLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworZnVuY3Rpb24gZXh0ZW5kQW5kTG9n
U2VsZWN0aW9uVG9FbmQoZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK3sKKyAgICByZXR1cm4gZXh0
ZW5kQW5kTG9nU2VsZWN0aW9uKGV4dGVuZFNlbGVjdGlvblRvRW5kLCBkaXJlY3Rpb24sIGdyYW51
bGFyaXR5KTsKK30KKworZnVuY3Rpb24gcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHko
dGVzdHMsIGdyYW51bGFyaXR5KQogewogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVu
Z3RoOyArK2kpIHsKICAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0g
ICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIHJpZ2h0
OiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAgdmFy
IGx0clJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgInJpZ2h0IiwgZ3JhbnVsYXJp
dHksIDApOworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4iKTsKKyAg
ICAgICAgbG9nKCIgIEV4dGVuZGluZyByaWdodDogIik7CisgICAgICAgIGdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKHRlc3RzW2ldKTsKKyAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5k
QW5kTG9nU2VsZWN0aW9uVG9FbmQoInJpZ2h0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxv
ZygiICBFeHRlbmRpbmcgbGVmdDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVu
ZGluZ1NlbGVjdGlvbihzZWwsICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICB2YXIg
bHRyTGVmdFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJsZWZ0IiwgZ3JhbnVsYXJp
dHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgZm9yd2FyZDogIik7Ci0gICAgICAgIHNl
bC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJGb3J3YXJkUG9zID0g
ZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImZvcndhcmQiLCBncmFudWxhcml0eSwgMCk7CisgICAg
ICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKHRlc3RzW2ldKTsKKyAgICAgICAgdmFyIGx0
ckZvcndhcmRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgiZm9yd2FyZCIsIGdyYW51
bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIik7Ci0gICAg
ICAgIHZhciBsdHJCYWNrd2FyZFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJiYWNrd2Fy
ZCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICAgICAgdmFyIGx0ckJhY2t3YXJkUG9zID0gZXh0ZW5k
QW5kTG9nU2VsZWN0aW9uVG9FbmQoImJhY2t3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAg
IHRlc3RzW2ldLnN0eWxlLmRpcmVjdGlvbiA9ICJydGwiOwogCi0gICAgICAgIGxvZygiVGVzdCAi
ICsgKGkgKyAxKSArICIsIFJUTDpcbiAgRXh0ZW5kaW5nIGxlZnQ6ICIpOwotICAgICAgICBzZWwu
c2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIgcnRsTGVmdFBvcyA9IGV4dGVu
ZGluZ1NlbGVjdGlvbihzZWwsICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBsb2co
IlRlc3QgIiArIChpICsgMSkgKyAiLCBSVEw6XG4iKTsKKyAgICAgICAgbG9nKCIgIEV4dGVuZGlu
ZyBsZWZ0OiAiKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdHNbaV0p
OworICAgICAgICB2YXIgcnRsTGVmdFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJs
ZWZ0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgcmlnaHQ6ICAi
KTsKLSAgICAgICAgdmFyIHJ0bFJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgInJp
Z2h0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICB2YXIgcnRsUmlnaHRQb3MgPSBleHRlbmRB
bmRMb2dTZWxlY3Rpb25Ub0VuZCgicmlnaHQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgbG9n
KCIgIEV4dGVuZGluZyBmb3J3YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3Rz
W2ldLCAwKTsKLSAgICAgICAgdmFyIHJ0bEZvcndhcmRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24o
c2VsLCAiZm9yd2FyZCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCku
c2V0UG9zaXRpb24odGVzdHNbaV0pOworICAgICAgICB2YXIgcnRsRm9yd2FyZFBvcyA9IGV4dGVu
ZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJmb3J3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAg
IGxvZygiICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIpOwotICAgICAgICB2YXIgcnRsQmFja3dhcmRQ
b3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCBncmFudWxhcml0eSwgMCk7
CisgICAgICAgIHZhciBydGxCYWNrd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5k
KCJiYWNrd2FyZCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICAvLyB2YWxpZGF0aW9ucwogICAg
ICAgICBsb2coIlxuXG4gIHZhbGlkYXRpbmcgbHRyUmlnaHQgYW5kIGx0ckxlZnRcbiIpOwogICAg
ICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gImNoYXJhY3RlciIpCi0gICAgICAgICAgICBjaGVja1Jl
dmVyc2VPcmRlcihsdHJSaWdodFBvcywgbHRyTGVmdFBvcyk7CisgICAgICAgICAgICBjb21wYXJl
SW5SZXZlcnNlT3JkZXIobHRyUmlnaHRQb3MsIGx0ckxlZnRQb3MpOwogICAgICAgICAvLyBPcmRl
ciBtaWdodCBub3QgYmUgcmV2ZXJzZWQgZm9yIGV4dGVuZGluZyBieSB3b3JkIGJlY2F1c2UgdGhl
IDEtcG9pbnQgc2hpZnQgYnkgc3BhY2UuCiAKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRy
UmlnaHQgYW5kIGx0ckZvcndhcmRcbiIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJSaWdo
dFBvcywgbHRyRm9yd2FyZFBvcyk7CisgICAgICAgIGNvbXBhcmVJblNhbWVPcmRlcihsdHJSaWdo
dFBvcywgbHRyRm9yd2FyZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckZvcndh
cmQgYW5kIHJ0bEZvcndhcmRcbiIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJGb3J3YXJk
UG9zLCBydGxGb3J3YXJkUG9zKTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckZvcndh
cmRQb3MsIHJ0bEZvcndhcmRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJMZWZ0
IGFuZCBsdHJCYWNrd2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckxlZnRQb3Ms
IGx0ckJhY2t3YXJkUG9zKTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckxlZnRQb3Ms
IGx0ckJhY2t3YXJkUG9zKTsKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRyQmFja3dhcmQg
YW5kIHJ0bEJhY2t3YXJkXG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyQmFja3dhcmRQ
b3MsIHJ0bEJhY2t3YXJkUG9zKTsKKyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckJhY2t3
YXJkUG9zLCBydGxCYWNrd2FyZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0clJp
Z2h0IGFuZCBydGxMZWZ0XG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyUmlnaHRQb3Ms
IHJ0bExlZnRQb3MpOworICAgICAgICBjb21wYXJlSW5TYW1lT3JkZXIobHRyUmlnaHRQb3MsIHJ0
bExlZnRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJMZWZ0IGFuZCBydGxSaWdo
dFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckxlZnRQb3MsIHJ0bFJpZ2h0UG9zKTsK
KyAgICAgICAgY29tcGFyZUluU2FtZU9yZGVyKGx0ckxlZnRQb3MsIHJ0bFJpZ2h0UG9zKTsKICAg
ICAgICAgbG9nKCJcblxuIik7CiAgICAgfQogfQogCi12YXIgZGF0YSA9IFsKLVsnY2hhci1hbmQt
d29yZCcsIG51bGwsICdcbmFiYyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0
OTI7JiMxNDkzOyBkZWZcbiddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuJiMxNDg4OyYj
MTQ4OTsmIzE0OTA7IHh5eiAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgZGVmICYjMTQ5NDsmIzE0OTU7
JiMxNDk2O1xuJ10sCi1bJ2NoYXItYW5kLXdvcmQnLCBudWxsLCAnXG4mIzE0ODg7JiMxNDg5OyYj
MTQ5MDsgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkwO1xuJ10sCi1b
J2NoYXItYW5kLXdvcmQnLCBudWxsLCAnXG5hYmMgZWZkIGRhYmViXG4nXSwKLVsnY2hhci1hbmQt
d29yZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogcnRsIj5pcHN1bSBk
b2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdMb3JlbSA8
c3BhbiAgZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydjaGFyLWFu
ZC13b3JkJywgbnVsbCwgJ0xvcmVtIDxzcGFuICBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3Vt
IGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ0xvcmVt
IDxzcGFuICBkaXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2VuY2xv
c2luZy1ibG9jaycsIG51bGwsICdMb3JlbSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0
PC9kaXY+IGFtZXR0J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ0xvcmVtIDxzcGFuICBzdHlsZT0i
ZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydob21lLWVu
ZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBkb2xv
cjxkaXYgPiBqdXN0IGEgdGVzdDwvZGl2PiBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9tZS1lbmQn
LCBudWxsLCAnTG9yZW0gPHNwYW4gIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFt
ZXQnXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRv
bG9yIHNpdDwvZGl2PiBhbWV0J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ1xuIEp1c3RcbiA8c3Bh
bj50ZXN0aW5nINeo16c8L3NwYW4+XG4g15HXldeT16dcbiddLAotWydob21lLWVuZCcsIG51bGws
ICdcbiBKdXN0XG4gPHNwYW4+dGVzdGluZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbiddLAotWydob21l
LWVuZCcsIG51bGwsICdjYXIgbWVhbnMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LiddLAotWydob21l
LWVuZCcsIG51bGwsICcmI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYj
MTQ4OTsmIzE0OTA7LiYjeDIwMmM7J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ2hlIHNhaWQgIiYj
eDIwMkI7Y2FyICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gy
MDJjOy4iJ10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0
OTc7JiMxNDk4OyYjMTQ5OTsgJiMxNTAwOyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlk
ICImI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7
JiN4MjAyYzsiJiN4MjAyYztcJz8nXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAnJiMxNDg4OyYjMTQ4
OTsmIzE0OTA7IGFiYyAmIzE0OTE7JiMxNDkyOyYjMTQ5Mzs8YnIgLz5lZGYgJiMxNDk0OyYjMTQ5
NTsmIzE0OTY7IGFicmViZyddLAotWydob21lLWVuZCcsICdsaW5lLWJyZWFrOmJlZm9yZS13aGl0
ZS1zcGFjZTsgd2lkdGg6NWVtJywgJ2FiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyAnXSwKLVsnaG9tZS1lbmQnLCAnbGluZS1icmVhazphZnRlci13aGl0ZS1z
cGFjZTsgd2lkdGg6NWVtJywgJ2FiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAnXQotXTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdE5vZGVzKG5hbWUpIHsKLSAg
ICB2YXIgbm9kZXMgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgaWYgKG5hbWUgJiYgZGF0YVtpXVswXSAhPSBuYW1lKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIHZhciBzdHlsZSA9IGRhdGFbaV1bMV07Ci0gICAgICAgIHZh
ciB0ZXh0ID0gZGF0YVtpXVsyXTsKLSAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOwotICAgICAgICBkaXYuY29udGVudEVkaXRhYmxlID0gdHJ1ZTsKLSAgICAg
ICAgaWYgKHN0eWxlKQotICAgICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCBzdHls
ZSk7Ci0gICAgICAgIGRpdi5pbm5lckhUTUwgPSB0ZXh0OwotICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykpOwot
ICAgICAgICBub2Rlcy5wdXNoKGRpdik7CitmdW5jdGlvbiBnZXRUZXN0Tm9kZUNvbnRhaW5lcigp
Cit7CisgICAgdmFyIHRlc3RzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RzIik7Cisg
ICAgaWYgKCF0ZXN0cykgeworICAgICAgICB0ZXN0cyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICB0ZXN0cy5pZCA9ICJ0ZXN0cyI7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuaW5zZXJ0QmVmb3JlKHRlc3RzLCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIp
KTsKICAgICB9CisgICAgcmV0dXJuIHRlc3RzOworfQogCi0gICAgd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsr
KQotICAgICAgICAgICAgbm9kZXNbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2Rlc1tpXSk7
Ci0gICAgfQorZnVuY3Rpb24gY3JlYXRlTm9kZShpbm5lckhUTUwsIHN0eWxlKQoreworICAgIHZh
ciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgbm9kZS5pbm5lckhU
TUwgPSBpbm5lckhUTUw7CisgICAgbm9kZS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworICAgIGlm
IChzdHlsZSkKKyAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAg
IGdldFRlc3ROb2RlQ29udGFpbmVyKCkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgcmV0dXJuIG5v
ZGU7Cit9CiAKLSAgICByZXR1cm4gbm9kZXM7CitmdW5jdGlvbiBjcmVhdGVDaGFyQW5kV29yZE5v
ZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdcbmFiYyAmIzE0ODg7
JiMxNDg5OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBkZWZcbicpLAorICAgICAg
ICBjcmVhdGVOb2RlKCdcbiYjMTQ4ODsmIzE0ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5Mjsm
IzE0OTM7IGRlZiAmIzE0OTQ7JiMxNDk1OyYjMTQ5NjtcbicpLAorICAgICAgICBjcmVhdGVOb2Rl
KCdcbiYjMTQ4ODsmIzE0ODk7JiMxNDkwOyAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYj
MTQ4OTsmIzE0OTA7XG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnXG5hYmMgZWZkIGRhYmViXG4n
KSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogcnRs
Ij5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9y
ZW0gPHNwYW4gZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAg
ICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRv
bG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBk
aXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JykKKyAgICBdOworfQorCitmdW5j
dGlvbiBjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAg
ICBjcmVhdGVOb2RlKCdMb3JlbSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0PC9kaXY+
IGFtZXR0JykKKyAgICBdOworfQorCitmdW5jdGlvbiBjcmVhdGVIb21lRW5kTm9kZXMoKQorewor
ICAgIHJldHVybiBbCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJl
Y3Rpb246IGx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0
ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8ZGl2
ID4ganVzdCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5v
ZGUoJ0xvcmVtIDxzcGFuIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwK
KyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNp
dDwvZGl2PiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ1xuIEp1c3RcbiA8c3Bhbj50ZXN0
aW5nINeo16c8L3NwYW4+XG4g15HXldeT16dcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiBK
dXN0XG4gPHNwYW4+dGVzdGluZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbicpLAorICAgICAgICBjcmVh
dGVOb2RlKCdjYXIgbWVhbnMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LicpLAorICAgICAgICBjcmVh
dGVOb2RlKCcmI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsm
IzE0OTA7LiYjeDIwMmM7JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ2hlIHNhaWQgIiYjeDIwMkI7
Y2FyICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gyMDJjOy4i
JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0OTc7JiMx
NDk4OyYjMTQ5OTsgJiMxNTAwOyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlkICcgKwor
ICAgICAgICAgICAgICAgICAgICciJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYj
MTQ4ODsmIzE0ODk7JiMxNDkwOyYjeDIwMmM7IiYjeDIwMmM7XCc/JyksCisgICAgICAgIGNyZWF0
ZU5vZGUoJyYjMTQ4ODsmIzE0ODk7JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJy
IC8+ZWRmICYjMTQ5NDsmIzE0OTU7JiMxNDk2OyBhYnJlYmcnKSwKKyAgICAgICAgY3JlYXRlTm9k
ZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICcsCisg
ICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YmVmb3JlLXdoaXRlLXNwYWNlOyB3aWR0aDo1
ZW0nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnICcsCisgICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YWZ0
ZXItd2hpdGUtc3BhY2U7IHdpZHRoOjVlbScpCisgICAgXTsKK30KKworZnVuY3Rpb24gY3JlYXRl
QWxsTm9kZXMoKQoreworICAgIHJldHVybiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkuY29uY2F0
KAorICAgICAgICAgICBjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkpLmNvbmNhdCgKKyAgICAg
ICAgICAgY3JlYXRlSG9tZUVuZE5vZGVzKCkpOwogfQogCitmdW5jdGlvbiBzZXR1cEZvckxheW91
dFRlc3QoKQoreworICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICB0aHJvdyAiQ2Fubm90IGZpbmQgbGF5b3V0VGVzdENvbnRyb2xsZXIsIHJ1bm5pbmcgZnJvbSBv
dXRzaWRlIHRlc3Q/IjsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChnZXRUZXN0Tm9kZUNvbnRhaW5lcigpKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9l
eHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVj
dGVkLnR4dAppbmRleCA2ODg1ODRjZWQ0ZDM2Nzc1ODU2YWRmNTIzYTVjMTdlZDA5MWM2NzQ0Li40
OTQwNDRkMmM4NDY4YTc1N2U3OWEyNjdiZjk5YmNmMTA0OTMwMTIyIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1o
b21lLWVuZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRp
bmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQtZXhwZWN0ZWQudHh0CkBAIC0z
LDEzNSArMywxMzUgQEAKIAogRXh0ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeQogVGVzdCAxLCBMVFI6
Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDEpLCAo
MSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJb
KDEsMjApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbmFiYyBBQkMgeHl6IERFRiBkZWZcbiJb
KDEsMSksICgxLDIwKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5hYmMgQUJDIHh5eiBERUYg
ZGVmXG4iWygxLDIwKV0KIFRlc3QgMSwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuYWJj
IEFCQyB4eXogREVGIGRlZlxuIlsoMSwxKSwgKDEsMjApXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDIwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBi
YWNrd2FyZDogIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCldCiBUZXN0IDIsIExUUjoK
LSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMSksICgx
LDIwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlso
MSwyMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlso
MSwxKSwgKDEsMjApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFCQyB4eXogREVGIGRlZiBH
SElcbiJbKDEsMjApXQogVGVzdCAyLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMg
eHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApXQorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMSksICgxLDIwKV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDIwKV0KIFRlc3QgMywgTFRSOgot
ICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuQUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEyKV0KLSAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMTIpXQorICBFeHRlbmRp
bmcgZm9yd2FyZDogICJcbkFCQyBERUYgQUJDXG4iWygxLDEpLCAoMSwxMildCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIlxuQUJDIERFRiBBQkNcbiJbKDEsMTIpXQogVGVzdCAzLCBSVEw6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEsMTIpXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMildCisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgIlxuQUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEyKV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiXG5BQkMgREVGIEFCQ1xuIlsoMSwxMildCiBUZXN0IDQsIExUUjoKLSAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KLSAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCldCisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxKSwgKDEsMTQpXQorICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMTQpXQogVGVzdCA0LCBSVEw6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDEpLCAoMSwxNCldCi0gIEV4
dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMTQpXQorICBFeHRlbmRp
bmcgZm9yd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDE0KV0KIFRlc3QgNSwgTFRSOgot
ICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
IGFtZXQiWygwLDUpXQogVGVzdCA1LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0g
IlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJb
KDAsNSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygw
LDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCiBUZXN0IDYsIExUUjoK
LSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDog
IiBhbWV0IlsoMCw1KV0KIFRlc3QgNiwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVt
ICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQi
WygwLDUpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0Ilso
MCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQogVGVzdCA3LCBMVFI6
Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6
ICIgYW1ldCJbKDAsNSldCiBUZXN0IDcsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3Jl
bSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0
IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJb
KDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KIFRlc3QgOCwgTFRS
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQot
ICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgZm9yd2Fy
ZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAiIGFtZXQiWygwLDUpXQogVGVzdCA4LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9y
ZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1l
dCJbKDAsNSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQi
WygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldCiBUZXN0IDksIExU
UjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KLSAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIkxvcmVtICJbKDAsNSldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxv
cmVtICJbKDAsMCksICgwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJMb3JlbSAiWygwLDUp
XQogVGVzdCA5LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAs
NSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpXQorICBFeHRlbmRpbmcg
Zm9yd2FyZDogICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
TG9yZW0gIlsoMCw1KV0KIFRlc3QgMTAsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3Jl
bSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0
IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJb
KDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0KIFRlc3QgMTAsIFJU
TDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0K
LSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2Fy
ZDogIiBhbWV0IlsoMCw1KV0KIFRlc3QgMTEsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJM
b3JlbSAiWygwLDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJpcHN1bSBkb2xvciJbKDAsMTEpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAi
WygwLDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImlw
c3VtIGRvbG9yIlsoMCwxMSldCiBUZXN0IDExLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
TG9yZW0gIlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiaXBzdW0gZG9sb3IiWygwLDExKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0g
IlsoMCwwKV0sICJpcHN1bSBkb2xvciJbKDAsMTEpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJp
cHN1bSBkb2xvciJbKDAsMTEpXQogVGVzdCAxMiwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDog
IkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi
IGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBh
bWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXQogVGVzdCAx
MiwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygw
LDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcg
Zm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAiIGFtZXQiWygwLDUpXQogVGVzdCAxMywgTFRSOgotICBFeHRlbmRpbmcgZm9yd2Fy
ZDogIkxvcmVtICJbKDAsMCksICgwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiTG9yZW0g
IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCisg
IEV4dGVuZGluZyBiYWNrd2FyZDogIkxvcmVtICJbKDAsNSldCiBUZXN0IDEzLCBSVEw6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNr
d2FyZDogICJMb3JlbSAiWygwLDUpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygw
LDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiTG9yZW0gIlsoMCw1KV0KIFRlc3Qg
MTQsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBC
RkRYXG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlsoMiw2KV0K
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gQkZEWFxuIlso
Miw2KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gQkZEWFxuIlsoMiw2KV0KIFRlc3QgMTQs
IFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBCRkRY
XG4iWygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gQkZEWFxuIlsoMiw2KV0KKyAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gQkZEWFxuIlsoMiw2
KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gQkZEWFxuIlsoMiw2KV0KIFRlc3QgMTUsIExU
UjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBldmVyXG4i
WygyLDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2KV0KKyAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0K
KyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gZXZlclxuIlsoMiw2KV0KIFRlc3QgMTUsIFJUTDoK
LSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBldmVyXG4iWygy
LDYpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG4gZXZlclxuIlsoMiw2KV0KKyAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICAiXG4gSnVzdFxuICJbKDIsMildLCAiXG4gZXZlclxuIlsoMiw2KV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG4gZXZlclxuIlsoMiw2KV0KIFRlc3QgMTYsIExUUjoKLSAg
RXh0ZW5kaW5nIGZvcndhcmQ6ICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgwLDE0KV0KLSAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAgImNhciBtZWFucyBBQkMuIlsoMCwxNCldCisgIEV4dGVuZGluZyBm
b3J3YXJkOiAgImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQorICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICJjYXIgbWVhbnMgQUJDLiJbKDAsMTQpXQogVGVzdCAxNiwgUlRMOgotICBFeHRlbmRp
bmcgZm9yd2FyZDogImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiY2FyIG1lYW5zIEFCQy4iWygwLDApLCAoMCwxNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDog
ImNhciBtZWFucyBBQkMuIlsoMCwxNCldCiBUZXN0IDE3LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3
YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCisgIEV4dGVuZGluZyBmb3J3YXJk
OiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCiBUZXN0IDE3LCBSVEw6Ci0gIEV4dGVu
ZGluZyBmb3J3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCisgIEV4dGVuZGlu
ZyBmb3J3YXJkOiAgIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCldCiBUZXN0IDE4LCBMVFI6
Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAs
MCksICgwLDI0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImhlIHNhaWQgIuGqnGNhciBERUYg
QUJD4aqdLiIiWygwLDI0KV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiaGUgc2FpZCAi4aqcY2Fy
IERFRiBBQkPhqp0uIiJbKDAsMCksICgwLDI0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiaGUg
c2FpZCAi4aqcY2FyIERFRiBBQkPhqp0uIiJbKDAsMjQpXQogVGVzdCAxOCwgUlRMOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDApLCAoMCwy
NCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4i
IlsoMCwyNCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImhlIHNhaWQgIuGqnGNhciBERUYgQUJD
4aqdLiIiWygwLDApLCAoMCwyNCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogImhlIHNhaWQgIuGq
nGNhciBERUYgQUJD4aqdLiIiWygwLDI0KV0KIFRlc3QgMTksIExUUjoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8i
WygwLDApLCAoMCw0MCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJHSEkgSktMIE1OTyAn4aqb
aGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKV0KKyAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/
IlsoMCwwKSwgKDAsNDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJHSEkgSktMIE1OTyAn4aqb
aGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKV0KIFRlc3QgMTksIFJUTDoK
LSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJHSEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERF
RiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0MCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJH
SEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKV0K
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBE
RUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJH
SEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKV0K
IFRlc3QgMjAsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJBQkMgYWJjIERFRiJbKDAsMCks
ICgwLDExKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkFCQyBhYmMgREVGIlsoMCwxMSldCisg
IEV4dGVuZGluZyBmb3J3YXJkOiAgIkFCQyBhYmMgREVGIlsoMCwwKSwgKDAsMTEpXQorICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICJBQkMgYWJjIERFRiJbKDAsMTEpXQogVGVzdCAyMCwgUlRMOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIkFCQyBhYmMgREVGIlsoMCwwKSwgKDAsMTEpXQotICBFeHRlbmRp
bmcgYmFja3dhcmQ6ICAiQUJDIGFiYyBERUYiWygwLDExKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIkFC
QyBhYmMgREVGIlsoMCwxMSldCiBUZXN0IDIxLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAi
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCks
ICgwLDgpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAg
ImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDAp
LCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCiBUZXN0IDIxLCBSVEw6Ci0gIEV4dGVu
ZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnICJbKDAsMCksICgwLDgpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCisgIEV4dGVu
ZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCldCiBUZXN0IDIy
LCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQotICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJb
KDAsOCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJb
KDAsOCldCiBUZXN0IDIyLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQotICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnICJbKDAsOCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnICJbKDAsOCldCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWhvbWUtZW5kLWV4cGVjdGVkLnR4dAppbmRleCBkZjBiZjlmM2VjOGU3NzJkZWQ4
YWYzNTY3NDRiZGRhZWEyOWQ1M2M5Li43NzAyMzI0Y2NhMjlkYjA4Zjg5MTY4MTQ2NmZhMDU4MjFi
N2YzNzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9t
ZS1lbmQtZXhwZWN0ZWQudHh0CkBAIC0zLDEzNSArMywxMzUgQEAKIAogRXh0ZW5kaW5nIGJ5IGxp
bmVCb3VuZGFyeQogVGVzdCAxLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgQUJD
IHh5eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJc
bmFiYyBBQkMgeHl6IERFRiBkZWZcbiJbKDEsMjApLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIlxuYWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCksICgxLDEpXQogVGVz
dCAxLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5hYmMgQUJDIHh5eiBERUYgZGVmXG4i
WygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbmFiYyBBQkMgeHl6IERF
RiBkZWZcbiJbKDEsMjApLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5hYmMgQUJD
IHh5eiBERUYgZGVmXG4iWygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxu
YWJjIEFCQyB4eXogREVGIGRlZlxuIlsoMSwyMCksICgxLDEpXQogVGVzdCAyLCBMVFI6Ci0gIEV4
dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCld
Ci0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjAp
LCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4i
WygxLDEpLCAoMSwyMCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuQUJDIHh5eiBERUYgZGVm
IEdISVxuIlsoMSwyMCksICgxLDEpXQogVGVzdCAyLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCldCi0gIEV4dGVuZGluZyBi
YWNrd2FyZDogICJcbkFCQyB4eXogREVGIGRlZiBHSElcbiJbKDEsMjApLCAoMSwxKV0KKyAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICAiXG5BQkMgeHl6IERFRiBkZWYgR0hJXG4iWygxLDEpLCAoMSwyMCld
CisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuQUJDIHh5eiBERUYgZGVmIEdISVxuIlsoMSwyMCks
ICgxLDEpXQogVGVzdCAzLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiXG5BQkMgREVGIEFC
Q1xuIlsoMSwxKSwgKDEsMTIpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiXG5BQkMgREVGIEFC
Q1xuIlsoMSwxMiksICgxLDEpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbkFCQyBERUYgQUJD
XG4iWygxLDEpLCAoMSwxMildCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIlxuQUJDIERFRiBBQkNc
biJbKDEsMTIpLCAoMSwxKV0KIFRlc3QgMywgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxu
QUJDIERFRiBBQkNcbiJbKDEsMSksICgxLDEyKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxu
QUJDIERFRiBBQkNcbiJbKDEsMTIpLCAoMSwxKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiXG5B
QkMgREVGIEFCQ1xuIlsoMSwxKSwgKDEsMTIpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbkFC
QyBERUYgQUJDXG4iWygxLDEyKSwgKDEsMSldCiBUZXN0IDQsIExUUjoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KLSAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCksICgxLDEpXQorICBFeHRlbmRpbmcg
Zm9yd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0KV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDE0KSwgKDEsMSldCiBUZXN0IDQsIFJU
TDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgxLDE0
KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIlxuYWJjIGVmZCBkYWJlYlxuIlsoMSwxNCksICgx
LDEpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbmFiYyBlZmQgZGFiZWJcbiJbKDEsMSksICgx
LDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiXG5hYmMgZWZkIGRhYmViXG4iWygxLDE0KSwg
KDEsMSldCiBUZXN0IDUsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDAp
XSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0s
ICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwg
IiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxv
cmVtICJbKDAsMCldCiBUZXN0IDUsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAi
WygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0Ilso
MCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygw
LDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUp
XSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDYsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJM
b3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBh
bWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3Jl
bSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQi
WygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDYsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDog
ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi
IGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDcsIExUUjoKLSAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRpbmcgZm9y
d2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDcsIFJUTDoKLSAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAgRXh0ZW5k
aW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBFeHRlbmRp
bmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDgsIExUUjoK
LSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KLSAg
RXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQorICBF
eHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0KKyAgRXh0
ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDgs
IFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1
KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDAp
XQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApXSwgIiBhbWV0IlsoMCw1KV0K
KyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCiBU
ZXN0IDksIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApLCAoMCw1KV0K
LSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkxvcmVtICJbKDAsNSksICgwLDApXQorICBFeHRlbmRp
bmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAiTG9yZW0gIlsoMCw1KSwgKDAsMCldCiBUZXN0IDksIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkxvcmVt
ICJbKDAsNSksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3JlbSAiWygwLDApLCAo
MCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiTG9yZW0gIlsoMCw1KSwgKDAsMCldCiBUZXN0
IDEwLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJb
KDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlso
MCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAs
NSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBhbWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDAp
XQogVGVzdCAxMCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAi
IGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxv
cmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFt
ZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0g
IlsoMCwwKV0KIFRlc3QgMTEsIExUUjoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygw
LDApXSwgImlwc3VtIGRvbG9yIlsoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJpcHN1
bSBkb2xvciJbKDAsMTEpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAg
IkxvcmVtICJbKDAsMCldLCAiaXBzdW0gZG9sb3IiWygwLDExKV0KKyAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAiaXBzdW0gZG9sb3IiWygwLDExKV0sICJMb3JlbSAiWygwLDApXQogVGVzdCAxMSwgUlRM
OgotICBFeHRlbmRpbmcgZm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiaXBzdW0gZG9sb3IiWygw
LDExKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImlwc3VtIGRvbG9yIlsoMCwxMSldLCAiTG9y
ZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKV0sICJpcHN1
bSBkb2xvciJbKDAsMTEpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJpcHN1bSBkb2xvciJbKDAs
MTEpXSwgIkxvcmVtICJbKDAsMCldCiBUZXN0IDEyLCBMVFI6Ci0gIEV4dGVuZGluZyBmb3J3YXJk
OiAiTG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDog
ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAi
TG9yZW0gIlsoMCwwKV0sICIgYW1ldCJbKDAsNSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIiBh
bWV0IlsoMCw1KV0sICJMb3JlbSAiWygwLDApXQogVGVzdCAxMiwgUlRMOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQotICBFeHRlbmRpbmcgYmFj
a3dhcmQ6ICAiIGFtZXQiWygwLDUpXSwgIkxvcmVtICJbKDAsMCldCisgIEV4dGVuZGluZyBmb3J3
YXJkOiAgIkxvcmVtICJbKDAsMCldLCAiIGFtZXQiWygwLDUpXQorICBFeHRlbmRpbmcgYmFja3dh
cmQ6ICIgYW1ldCJbKDAsNSldLCAiTG9yZW0gIlsoMCwwKV0KIFRlc3QgMTMsIExUUjoKLSAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICJMb3JlbSAiWygwLDApLCAoMCw1KV0KLSAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAgIkxvcmVtICJbKDAsNSksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJMb3Jl
bSAiWygwLDApLCAoMCw1KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiTG9yZW0gIlsoMCw1KSwg
KDAsMCldCiBUZXN0IDEzLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiTG9yZW0gIlsoMCww
KSwgKDAsNSldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJMb3JlbSAiWygwLDUpLCAoMCwwKV0K
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiTG9yZW0gIlsoMCwwKSwgKDAsNSldCisgIEV4dGVuZGlu
ZyBiYWNrd2FyZDogIkxvcmVtICJbKDAsNSksICgwLDApXQogVGVzdCAxNCwgTFRSOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIEJGRFhcbiJbKDIsNildCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBCRkRYXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygy
LDIpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBCRkRY
XG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBCRkRYXG4iWygyLDYpXSwgIlxu
IEp1c3RcbiAiWygyLDIpXQogVGVzdCAxNCwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxu
IEp1c3RcbiAiWygyLDIpXSwgIlxuIEJGRFhcbiJbKDIsNildCi0gIEV4dGVuZGluZyBiYWNrd2Fy
ZDogICJcbiBCRkRYXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQorICBFeHRlbmRpbmcg
Zm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBCRkRYXG4iWygyLDYpXQorICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICJcbiBCRkRYXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQog
VGVzdCAxNSwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwg
IlxuIGV2ZXJcbiJbKDIsNildCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBldmVyXG4iWygy
LDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0
XG4gIlsoMiwyKV0sICJcbiBldmVyXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJc
biBldmVyXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAiWygyLDIpXQogVGVzdCAxNSwgUlRMOgotICBF
eHRlbmRpbmcgZm9yd2FyZDogIlxuIEp1c3RcbiAiWygyLDIpXSwgIlxuIGV2ZXJcbiJbKDIsNild
Ci0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJcbiBldmVyXG4iWygyLDYpXSwgIlxuIEp1c3RcbiAi
WygyLDIpXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJcbiBKdXN0XG4gIlsoMiwyKV0sICJcbiBl
dmVyXG4iWygyLDYpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJcbiBldmVyXG4iWygyLDYpXSwg
IlxuIEp1c3RcbiAiWygyLDIpXQogVGVzdCAxNiwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2FyZDog
ImNhciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQotICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAi
Y2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgImNh
ciBtZWFucyBBQkMuIlsoMCwwKSwgKDAsMTQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJjYXIg
bWVhbnMgQUJDLiJbKDAsMTQpLCAoMCwwKV0KIFRlc3QgMTYsIFJUTDoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgwLDE0KV0KLSAgRXh0ZW5kaW5nIGJhY2t3
YXJkOiAgImNhciBtZWFucyBBQkMuIlsoMCwxNCksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2Fy
ZDogICJjYXIgbWVhbnMgQUJDLiJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAiY2FyIG1lYW5zIEFCQy4iWygwLDE0KSwgKDAsMCldCiBUZXN0IDE3LCBMVFI6Ci0gIEV4dGVu
ZGluZyBmb3J3YXJkOiAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwwKSwgKDAsMTQpXQotICBFeHRl
bmRpbmcgYmFja3dhcmQ6ICAi4aqcY2FyIERFRiBBQkMu4aqdIlsoMCwxNCksICgwLDApXQorICBF
eHRlbmRpbmcgZm9yd2FyZDogICLhqpxjYXIgREVGIEFCQy7hqp0iWygwLDApLCAoMCwxNCldCisg
IEV4dGVuZGluZyBiYWNrd2FyZDogIuGqnGNhciBERUYgQUJDLuGqnSJbKDAsMTQpLCAoMCwwKV0K
IFRlc3QgMTcsIFJUTDoKLSAgRXh0ZW5kaW5nIGZvcndhcmQ6ICLhqpxjYXIgREVGIEFCQy7hqp0i
WygwLDApLCAoMCwxNCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICLhqpxjYXIgREVGIEFCQy7h
qp0iWygwLDE0KSwgKDAsMCldCisgIEV4dGVuZGluZyBmb3J3YXJkOiAgIuGqnGNhciBERUYgQUJD
LuGqnSJbKDAsMCksICgwLDE0KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAi4aqcY2FyIERFRiBB
QkMu4aqdIlsoMCwxNCksICgwLDApXQogVGVzdCAxOCwgTFRSOgotICBFeHRlbmRpbmcgZm9yd2Fy
ZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDApLCAoMCwyNCldCi0gIEV4dGVu
ZGluZyBiYWNrd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwyNCksICgw
LDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4i
IlsoMCwwKSwgKDAsMjQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJoZSBzYWlkICLhqpxjYXIg
REVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQogVGVzdCAxOCwgUlRMOgotICBFeHRlbmRpbmcg
Zm9yd2FyZDogImhlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdLiIiWygwLDApLCAoMCwyNCldCi0g
IEV4dGVuZGluZyBiYWNrd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwy
NCksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJoZSBzYWlkICLhqpxjYXIgREVGIEFC
Q+GqnS4iIlsoMCwwKSwgKDAsMjQpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJoZSBzYWlkICLh
qpxjYXIgREVGIEFCQ+GqnS4iIlsoMCwyNCksICgwLDApXQogVGVzdCAxOSwgTFRSOgotICBFeHRl
bmRpbmcgZm9yd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+Gq
nSLhqp0nPyJbKDAsMCksICgwLDQwKV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIkdISSBKS0wg
TU5PICfhqptoZSBzYWlkICLhqpxjYXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCwwKV0K
KyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBE
RUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDApXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJH
SEkgSktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDQwKSwg
KDAsMCldCiBUZXN0IDE5LCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiR0hJIEpLTCBNTk8g
J+Gqm2hlIHNhaWQgIuGqnGNhciBERUYgQUJD4aqdIuGqnSc/IlsoMCwwKSwgKDAsNDApXQotICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICAiR0hJIEpLTCBNTk8gJ+Gqm2hlIHNhaWQgIuGqnGNhciBERUYg
QUJD4aqdIuGqnSc/IlsoMCw0MCksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJHSEkg
SktMIE1OTyAn4aqbaGUgc2FpZCAi4aqcY2FyIERFRiBBQkPhqp0i4aqdJz8iWygwLDApLCAoMCw0
MCldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIkdISSBKS0wgTU5PICfhqptoZSBzYWlkICLhqpxj
YXIgREVGIEFCQ+GqnSLhqp0nPyJbKDAsNDApLCAoMCwwKV0KIFRlc3QgMjAsIExUUjoKLSAgRXh0
ZW5kaW5nIGZvcndhcmQ6ICJBQkMgYWJjIERFRiJbKDAsMCksICgwLDExKV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgIkFCQyBhYmMgREVGIlsoMCwxMSksICgwLDApXQorICBFeHRlbmRpbmcgZm9y
d2FyZDogICJBQkMgYWJjIERFRiJbKDAsMCksICgwLDExKV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJk
OiAiQUJDIGFiYyBERUYiWygwLDExKSwgKDAsMCldCiBUZXN0IDIwLCBSVEw6Ci0gIEV4dGVuZGlu
ZyBmb3J3YXJkOiAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCi0gIEV4dGVuZGluZyBiYWNr
d2FyZDogICJBQkMgYWJjIERFRiJbKDAsMTEpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6
ICAiQUJDIGFiYyBERUYiWygwLDApLCAoMCwxMSldCisgIEV4dGVuZGluZyBiYWNrd2FyZDogIkFC
QyBhYmMgREVGIlsoMCwxMSksICgwLDApXQogVGVzdCAyMSwgTFRSOgotICBFeHRlbmRpbmcgZm9y
d2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAi
WygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KKyAgRXh0ZW5k
aW5nIGZvcndhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnICJbKDAsMCksICgwLDgpXQorICBFeHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KSwgKDAsMCldCiBU
ZXN0IDIxLCBSVEw6Ci0gIEV4dGVuZGluZyBmb3J3YXJkOiAiYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQotICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnICJbKDAsOCksICgwLDApXQorICBFeHRlbmRpbmcgZm9yd2FyZDogICJhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCwwKSwgKDAsOCldCisgIEV4
dGVuZGluZyBiYWNrd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyAiWygwLDgpLCAoMCwwKV0KIFRlc3QgMjIsIExUUjoKLSAgRXh0ZW5kaW5nIGZv
cndhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
IlsoMCwwKSwgKDAsOCldCi0gIEV4dGVuZGluZyBiYWNrd2FyZDogICJhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgIlsoMCw4KSwgKDAsMCldCisgIEV4dGVu
ZGluZyBmb3J3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyAiWygwLDApLCAoMCw4KV0KKyAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAiYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsOCksICgwLDApXQog
VGVzdCAyMiwgUlRMOgotICBFeHRlbmRpbmcgZm9yd2FyZDogImFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyAiWygwLDApLCAoMCw4KV0KLSAgRXh0ZW5kaW5n
IGJhY2t3YXJkOiAgImFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGEgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyAiWygwLDgpLCAoMCwwKV0KKyAgRXh0ZW5kaW5nIGZvcndhcmQ6ICAiYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICJbKDAsMCksICgwLDgpXQorICBF
eHRlbmRpbmcgYmFja3dhcmQ6ICJhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgIlsoMCw4KSwgKDAsMCldCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82414</attachid>
            <date>2011-02-14 22:25:40 -0800</date>
            <delta_ts>2011-02-14 23:56:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54429-20110215172537.patch</filename>
            <type>text/plain</type>
            <size>25622</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzY4NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OGEzMTNmNzJlMGUyNjcxNTNkNjZj
MmE3NmNiMzZkZWNiMzlmNTU3Li5hYThkY2ZiOWUzMzQxNjFlMjc0NWM0OTU4OGE0MWFjZDRiYjBl
YTc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDItMTQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4dGVuZC1zZWxlY3Rpb24gdGVzdHMgdG8gYmUg
Y2xlYXJlciB3aGF0IHRoZXkncmUgZG9pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0NDI5CisKKyAgICAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBh
IGNsZWFudXAgdG8gZXh0ZW5kLXNlbGVjdGlvbi5qcyBhbmQgcHJvcGFnYXRpb24gb2YgdGhvc2Ug
Y2hhbmdlcyB0byB0aGUgYWZmZWN0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWw6CisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29yZC5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzOgor
ICAgICAgICAoZXh0ZW5kU2VsZWN0aW9uV2l0aGluQmxvY2spOgorICAgICAgICAoZXh0ZW5kU2Vs
ZWN0aW9uVG9FbmQpOgorICAgICAgICAoZm9sZCk6CisgICAgICAgIChjb21wYXJlSW5EaXJlY3Rp
b24pOgorICAgICAgICAoY29tcGFyZUluUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKGNvbXBhcmVJ
blNhbWVPcmRlcik6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb24pOgorICAgICAgICAo
ZXh0ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2spOgorICAgICAgICAoZXh0ZW5kQW5kTG9n
U2VsZWN0aW9uVG9FbmQpOgorICAgICAgICAocnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJp
dHkpOgorICAgICAgICAoZ2V0VGVzdE5vZGVDb250YWluZXIpOgorICAgICAgICAoY3JlYXRlTm9k
ZSk6CisgICAgICAgIChjcmVhdGVDaGFyQW5kV29yZE5vZGVzKToKKyAgICAgICAgKGNyZWF0ZUVu
Y2xvc2luZ0Jsb2NrTm9kZXMpOgorICAgICAgICAoY3JlYXRlSG9tZUVuZE5vZGVzKToKKyAgICAg
ICAgKGNyZWF0ZUFsbE5vZGVzKToKKyAgICAgICAgKHNldHVwRm9yTGF5b3V0VGVzdCk6CisKIDIw
MTEtMDItMTEgIEplcmVteSBPcmxvdyAgPGpvcmxvd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTmF0ZSBDaGFwaW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1jaGFyYWN0ZXIuaHRtbAppbmRleCA5
ZjI3N2Y3NGI2M2U0N2E4MWY3MTQ4ZDAxYjk4Mjc0ZmJlMzM0YTM5Li5lYTQyZmI0MzE1NTY1Nzdm
ZDRmNWM4MmMyNDIwZDM1ZWM4NDI4YWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tY2hhcmFjdGVyLmh0bWwKQEAg
LTgsMTYgKzgsNyBAQAogPGJvZHk+CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+
Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0KLSAgICB2YXIgdGVzdHMgPSBjcmVhdGVUZXN0Tm9kZXMo
ImNoYXItYW5kLXdvcmQiKTsKLSAgICB2YXIgc2VsID0gZ2V0U2VsZWN0aW9uKCk7Ci0KLSAgICBs
b2coIlxuXG5cbkV4dGVuZGluZyBieSBjaGFyYWN0ZXJcbiIpOwotICAgIHRlc3RFeHRlbmRpbmdT
ZWxlY3Rpb24odGVzdHMsICBzZWwsICJjaGFyYWN0ZXIiLCAwKTsKLX0KLQorbG9nKCJcblxuXG5F
eHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsKK3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFy
aXR5KGNyZWF0ZUNoYXJBbmRXb3JkTm9kZXMoKSwgImNoYXJhY3RlciIpOwogPC9zY3JpcHQ+CiA8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWVuY2xvc2luZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3NpbmctYmxvY2suaHRtbAppbmRleCBhZTcwNjUz
ODkwZTljZmNhMjVkNmMxYzVlZTk3MWU1NjJjNTFkYjU0Li45MDUzMzAxODJhMWE1MjQyOTM4YWRk
NmUzYjdjNjUyMzFiMTgzN2I4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLWVuY2xvc2luZy1ibG9jay5odG1sCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0
bWwKQEAgLTgsMzAgKzgsMjQgQEAKIDxib2R5PgogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CiA8
c2NyaXB0PgotCi1mdW5jdGlvbiB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uRm9yRW5jbG9zaW5nQmxv
Y2sodGVzdHMsIHNlbCwgZ3JhbnVsYXJpdHkpCitmdW5jdGlvbiBydW5TZWxlY3Rpb25UZXN0c1dp
dGhHcmFudWxhcml0eUZvckVuY2xvc2luZ0Jsb2NrKHRlc3ROb2RlcywgZ3JhbnVsYXJpdHkpCiB7
Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgewotICAgICAgICBs
b2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4gIEV4dGVuZGluZyByaWdodDogIik7Ci0g
ICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJSaWdo
dFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJyaWdodCIsIGdyYW51bGFyaXR5LCAxKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3ROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZXNbaV0sIDApOworCisgICAgICAg
IGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiIpOworICAgICAgICBsb2coIiAgRXh0
ZW5kaW5nIHJpZ2h0OiAiKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxv
Y2soInJpZ2h0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgbGVm
dDogICIpOwotICAgICAgICB2YXIgbHRyTGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWws
ICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDEpOworICAgICAgICBleHRlbmRBbmRMb2dTZWxlY3Rpb25X
aXRoaW5CbG9jaygibGVmdCIsIGdyYW51bGFyaXR5KTsKICAgICB9CiB9CiAKLWlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7Ci0KLSAgICB0ZXN0cyA9IGNyZWF0ZVRlc3ROb2RlcygiZW5jbG9zaW5nLWJsb2NrIik7
Ci0gICAgc2VsID0gZ2V0U2VsZWN0aW9uKCk7Ci0KLSAgICBsb2coIlxuXG5cbkV4dGVuZGluZyBi
eSBjaGFyYWN0ZXJcbiIpOwotICAgIHRlc3RFeHRlbmRpbmdTZWxlY3Rpb25Gb3JFbmNsb3NpbmdC
bG9jayh0ZXN0cywgIHNlbCwgImNoYXJhY3RlciIsIDEpOwotICAgIGxvZygiXG5cblxuXG5cbkV4
dGVuZGluZyBieSB3b3JkXG4iKTsKLSAgICB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uRm9yRW5jbG9z
aW5nQmxvY2sodGVzdHMsICBzZWwsICJ3b3JkIiwgMSk7Ci19Citsb2coIlxuXG5cbkV4dGVuZGlu
ZyBieSBjaGFyYWN0ZXJcbiIpOworcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlGb3JF
bmNsb3NpbmdCbG9jayhjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCksICJjaGFyYWN0ZXIiKTsK
IAorbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIpOworcnVuU2VsZWN0aW9uVGVz
dHNXaXRoR3JhbnVsYXJpdHlGb3JFbmNsb3NpbmdCbG9jayhjcmVhdGVFbmNsb3NpbmdCbG9ja05v
ZGVzKCksICJ3b3JkIik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRt
bAppbmRleCA3NmQyNDdhMDc3YTczYTAzMTVkNWI1ODFlYjhiMjIwNzQ5ZDM0ZmFhLi5hY2NiNTlm
MzEzMjhmYjRkMDViZDhmYjAzMGQ0ZmU5ZGIzYWMzN2NkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5o
dG1sCkBAIC04LDM2ICs4LDMxIEBACiA8Ym9keT4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgog
PHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFyeSh0ZXN0cywgc2Vs
KQorZnVuY3Rpb24gdGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFyeSh0ZXN0Tm9kZXMpCiB7Ci0gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7ICsraSkgewotICAgICAgICB0ZXN0c1tp
XS5zdHlsZS5kaXJlY3Rpb24gPSAibHRyIjsKLSAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEp
ICsgIiwgTFRSOlxuICBFeHRlbmRpbmcgZm9yd2FyZDogIik7Ci0gICAgICAgIHNlbC5zZXRQb3Np
dGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBsdHJSaWdodFBvcyA9IGV4dGVuZGluZ1Nl
bGVjdGlvbihzZWwsICJmb3J3YXJkIiwgImxpbmVCb3VuZGFyeSIsIDApOwotCi0gICAgICAgIGxv
ZygiICBFeHRlbmRpbmcgYmFja3dhcmQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBl
eHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5IiwgMCk7Ci0K
LSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gInJ0bCI7Ci0gICAgICAgIGxvZygi
VGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICIpOwotICAg
ICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIgbHRyUmlnaHRQ
b3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsICJsaW5lQm91bmRhcnkiLCAw
KTsKLQorICAgIGZ1bmN0aW9uIGV4dGVuZFRvRW5kQW5kQmFjayhub2RlKQorICAgIHsKKyAgICAg
ICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24obm9kZSwgMCk7CisgICAgICAgIGxvZygiICBF
eHRlbmRpbmcgZm9yd2FyZDogIik7CisgICAgICAgIGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5k
KCJmb3J3YXJkIiwgImxpbmVCb3VuZGFyeSIpOwogICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGJh
Y2t3YXJkOiAgIik7Ci0gICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9u
KHNlbCwgImJhY2t3YXJkIiwgImxpbmVCb3VuZGFyeSIsIDApOworICAgICAgICBleHRlbmRBbmRM
b2dTZWxlY3Rpb25Ub0VuZCgiYmFja3dhcmQiLCAibGluZUJvdW5kYXJ5Iik7CiAgICAgfQotfQog
Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdE5vZGVzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciBub2RlID0gdGVzdE5vZGVzW2ldOwogCi0gICAgdGVz
dHMgPSBjcmVhdGVUZXN0Tm9kZXMoKTsgLy8gYWxsCi0gICAgdmFyIHNlbCA9IGdldFNlbGVjdGlv
bigpOwotICAgIGxvZygiXG5cblxuRXh0ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeVxuIik7Ci0gICAg
dGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFyeSh0ZXN0cywgIHNlbCk7CisgICAgICAgIGxvZygiVGVz
dCAiICsgKGkgKyAxKSArICIsIExUUjpcbiIpOworICAgICAgICBub2RlLnN0eWxlLmRpcmVjdGlv
biA9ICJsdHIiOworICAgICAgICBleHRlbmRUb0VuZEFuZEJhY2sobm9kZSk7CisKKyAgICAgICAg
bG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgUlRMOlxuIik7CisgICAgICAgIG5vZGUuc3R5bGUu
ZGlyZWN0aW9uID0gInJ0bCI7CisgICAgICAgIGV4dGVuZFRvRW5kQW5kQmFjayhub2RlKTsKKyAg
ICB9CiB9CiAKK2xvZygiXG5cblxuRXh0ZW5kaW5nIGJ5IGxpbmVCb3VuZGFyeVxuIik7Cit0ZXN0
RXh0ZW5kaW5nTGluZUJvdW5kYXJ5KGNyZWF0ZUFsbE5vZGVzKCkpOwogPC9zY3JpcHQ+CiA8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2Vs
ZWN0aW9uLXdvcmQuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1z
ZWxlY3Rpb24td29yZC5odG1sCmluZGV4IDk1NTQ2ZTA0NDYxMTUzZjgwNjI4NDQwNjRlMzZiMTU0
YjA5ZDZhZjguLjAxZDk1MGZmNzBiZjMzMzlhZDMwMzFiM2MzNjI4MzZhYjY4MmFjNGEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29y
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rp
b24td29yZC5odG1sCkBAIC04LDE2ICs4LDcgQEAKIDxib2R5PgogPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CiA8c2NyaXB0PgotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0g
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdmFyIHRlc3RzID0g
Y3JlYXRlVGVzdE5vZGVzKCdjaGFyLWFuZC13b3JkJyk7Ci0gICAgdmFyIHNlbCA9IGdldFNlbGVj
dGlvbigpOwotCi0gICAgbG9nKCJcblxuXG5cblxuRXh0ZW5kaW5nIGJ5IHdvcmRcbiIpOwotICAg
IHRlc3RFeHRlbmRpbmdTZWxlY3Rpb24odGVzdHMsICBzZWwsICJ3b3JkIiwgMCk7Ci19Ci0KK2xv
ZygiXG5cblxuXG5cbkV4dGVuZGluZyBieSB3b3JkXG4iKTsKK3J1blNlbGVjdGlvblRlc3RzV2l0
aEdyYW51bGFyaXR5KGNyZWF0ZUNoYXJBbmRXb3JkTm9kZXMoKSwgIndvcmQiKTsKIDwvc2NyaXB0
PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVz
b3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcwppbmRleCAxZGM3ODZhYjJjNTk4NDYwYzY3
ZDI3YTc4YWZiZGI3MTI0ODA1Y2RlLi4xNWM4MGM0OTJiZmM3MTQ1ZTU2ZjQ0MDUwMzExMGY4ZmZj
YjdhYmM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJj
ZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcworKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvZXh0ZW5kLXNlbGVjdGlvbi5qcwpAQCAtMyw2MCArMyw0NyBAQCBmdW5jdGlv
biBsb2cobWVzc2FnZSkKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKIH0KIAotZnVuY3Rp
b24gcG9zaXRpb25zRXh0ZW5kaW5nSW5EaXJlY3Rpb25Gb3JFbmNsb3NpbmdCbG9jayhzZWwsIGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpCitmdW5jdGlvbiBnZXRTZXJpYWxpemVkU2VsZWN0aW9uKCkK
K3sKKyAgICByZXR1cm4geworICAgICAgICBub2RlOiBnZXRTZWxlY3Rpb24oKS5leHRlbnROb2Rl
LAorICAgICAgICBiZWdpbjogZ2V0U2VsZWN0aW9uKCkuYmFzZU9mZnNldCwKKyAgICAgICAgZW5k
OiBnZXRTZWxlY3Rpb24oKS5leHRlbnRPZmZzZXQKKyAgICB9OworfQorCitmdW5jdGlvbiBleHRl
bmRTZWxlY3Rpb25XaXRoaW5CbG9jayhkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQogewogICAgIHZh
ciBwb3NpdGlvbnMgPSBbXTsKLSAgICB2YXIgbHRyTnVtOwotICAgIHZhciBydGxOdW07Ci0gICAg
aWYgKGdyYW51bGFyaXR5ID09ICJjaGFyYWN0ZXIiKSB7Ci0gICAgICAgIGx0ck51bSA9IDU7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgbHRyTnVtID0gMTsKLSAgICB9Ci0gICAgaWYgKGdyYW51bGFy
aXR5ID09ICJjaGFyYWN0ZXIiKSB7Ci0gICAgICAgIHJ0bE51bSA9IDE1OwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHJ0bE51bSA9IDM7Ci0gICAgfQotICAgIHZhciBpbmRleCA9IDA7Ci0gICAgd2hp
bGUgKGluZGV4IDw9IGx0ck51bSkgewotICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNl
bC5leHRlbnROb2RlLCBiZWdpbjogc2VsLmJhc2VPZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNl
dCB9KTsKLSAgICAgICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7Ci0gICAgICAgICsraW5kZXg7Ci0gICAgfQotICAgIHZhciBhbnRpRGlyZWN0aW9uID0gZGly
ZWN0aW9uOwotICAgIGlmIChhbnRpRGlyZWN0aW9uID09ICdsZWZ0JykgewotICAgICAgICBhbnRp
RGlyZWN0aW9uID0gInJpZ2h0IjsKLSAgICB9IGVsc2UgaWYgKGFudGlEaXJlY3Rpb24gPSAncmln
aHQnKSB7Ci0gICAgICAgIGFudGlEaXJlY3Rpb24gPSAibGVmdCI7CisgICAgdmFyIGxlZnRJdGVy
YXRpb25zID0gKGdyYW51bGFyaXR5ID09PSAiY2hhcmFjdGVyIikgPyA1IDogMTsKKyAgICB2YXIg
cmlnaHRJdGVyYXRpb25zID0gKGdyYW51bGFyaXR5ID09PSAiY2hhcmFjdGVyIikgPyAxNSA6IDM7
CisKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDw9IGxlZnRJdGVyYXRpb25zOyArK2lu
ZGV4KSB7CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKGdldFNlcmlhbGl6ZWRTZWxlY3Rpb24oKSk7
CisgICAgICAgIGdldFNlbGVjdGlvbigpLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFu
dWxhcml0eSk7CiAgICAgfQogCi0gICAgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8PSBy
dGxOdW0pIHsKLSAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwg
YmVnaW46IHNlbC5iYXNlT2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAg
IHNlbC5tb2RpZnkoImV4dGVuZCIsIGFudGlEaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAg
ICAgKytpbmRleDsKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDw9IHJpZ2h0SXRlcmF0
aW9uczsgKytpbmRleCkgeworICAgICAgICBwb3NpdGlvbnMucHVzaChnZXRTZXJpYWxpemVkU2Vs
ZWN0aW9uKCkpOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5tb2RpZnkoImV4dGVuZCIsIChkaXJl
Y3Rpb24gPT09ICJsZWZ0IikgPyAicmlnaHQiIDogImxlZnQiLCBncmFudWxhcml0eSk7CiAgICAg
fQotICAgIHZhciBpbmRleCA9IDA7Ci0gICAgd2hpbGUgKGluZGV4IDwgbHRyTnVtKSB7Ci0gICAg
ICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmV4dGVudE5vZGUsIGJlZ2luOiBzZWwuYmFz
ZU9mZnNldCwgZW5kOiBzZWwuZXh0ZW50T2Zmc2V0IH0pOwotICAgICAgICBzZWwubW9kaWZ5KCJl
eHRlbmQiLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKLSAgICAgICAgKytpbmRleDsKKworICAg
IGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBsZWZ0SXRlcmF0aW9uczsgKytpbmRleCkgewor
ICAgICAgICBwb3NpdGlvbnMucHVzaChnZXRTZXJpYWxpemVkU2VsZWN0aW9uKCkpOworICAgICAg
ICBnZXRTZWxlY3Rpb24oKS5tb2RpZnkoImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkp
OwogICAgIH0KKwogICAgIHJldHVybiBwb3NpdGlvbnM7CiB9CiAKLQotZnVuY3Rpb24gcG9zaXRp
b25zRXh0ZW5kaW5nSW5EaXJlY3Rpb24oc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQorZnVu
Y3Rpb24gZXh0ZW5kU2VsZWN0aW9uVG9FbmQoZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKICAg
ICB2YXIgcG9zaXRpb25zID0gW107Ci0gICAgCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
cG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5iYXNlT2Zm
c2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnkoImV4dGVu
ZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgICAgICBpZiAocG9zaXRpb25zW3Bvc2l0
aW9ucy5sZW5ndGggLSAxXS5ub2RlID09IHNlbC5leHRlbnROb2RlICYmIHBvc2l0aW9uc1twb3Np
dGlvbnMubGVuZ3RoIC0gMV0uZW5kID09IHNlbC5leHRlbnRPZmZzZXQpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICB9OworICAgIGRvIHsKKyAgICAgICAgdmFyIHBvc2l0aW9uID0gZ2V0U2VyaWFs
aXplZFNlbGVjdGlvbigpOworICAgICAgICBwb3NpdGlvbnMucHVzaChwb3NpdGlvbik7CisgICAg
ICAgIGdldFNlbGVjdGlvbigpLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7CisgICAgfSB3aGlsZSAocG9zaXRpb24ubm9kZSAhPT0gZ2V0U2VyaWFsaXplZFNlbGVjdGlv
bigpLm5vZGUgfHwgcG9zaXRpb24uZW5kICE9PSBnZXRTZXJpYWxpemVkU2VsZWN0aW9uKCkuZW5k
KTsKICAgICByZXR1cm4gcG9zaXRpb25zOwogfQogCkBAIC02OCw3ICs1NSw3IEBAIGZ1bmN0aW9u
IGZvbGQoc3RyaW5nKQogICAgICAgICBpZiAoY2hhciA+PSAweDA1ZDApCiAgICAgICAgICAgICBj
aGFyIC09IDB4MDU4ZjsKICAgICAgICAgZWxzZSBpZiAoY2hhciA9PSAxMCkgewotICAgICAgICAg
ICAgcmVzdWx0ICs9ICJcXG4iOworICAgICAgICAgICAgcmVzdWx0ICs9IlxcbiI7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21D
aGFyQ29kZShjaGFyKTsKQEAgLTkxLDE3NyArNzgsMTg5IEBAIGZ1bmN0aW9uIGxvZ1Bvc2l0aW9u
cyhwb3NpdGlvbnMpCiAgICAgbG9nKCJdIik7CiB9CiAKLWZ1bmN0aW9uIGNoZWNrUmV2ZXJzZU9y
ZGVyKGlucHV0UG9zaXRpb25zLCBpbnB1dFJldmVyc2VQb3NpdGlvbnMpCitmdW5jdGlvbiBjb21w
YXJlUG9zaXRpb25zKHBvc2l0aW9ucywgY29tcGFyaXNvblBvc2l0aW9ucykKIHsKLSAgICB2YXIg
cG9zaXRpb25zID0gaW5wdXRQb3NpdGlvbnMuc2xpY2UoKTsKLSAgICB2YXIgcmV2ZXJzZVBvc2l0
aW9ucyA9IGlucHV0UmV2ZXJzZVBvc2l0aW9ucy5zbGljZSgpOwotICAgIHZhciBtaXNtYXRjaCA9
IChwb3NpdGlvbnMubGVuZ3RoICE9IHJldmVyc2VQb3NpdGlvbnMubGVuZ3RoKTsKLSAgICBpZiAo
bWlzbWF0Y2gpCi0gICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUg
c2FtZSwgYnV0IHRoZSBsZW5ndGggYXJlIG5vdCB0aGUgc2FtZSAiICsgIHBvc2l0aW9ucy5sZW5n
dGggKyAiIHZzLiAiICsgcmV2ZXJzZVBvc2l0aW9ucy5sZW5ndGggKyAiXG4iKTsKLSAgICB3aGls
ZSAoIW1pc21hdGNoKSB7Ci0gICAgICAgIHZhciBwb3MgPSBwb3NpdGlvbnMucG9wKCk7Ci0gICAg
ICAgIGlmICghcG9zKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHZhciByZXZlcnNlUG9z
ID0gcmV2ZXJzZVBvc2l0aW9ucy5zaGlmdCgpOwotICAgICAgICBpZiAocG9zLm5vZGUgIT0gcmV2
ZXJzZVBvcy5ub2RlKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAg
ICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHJldmVyc2UsIGJ1dCBub2Rl
IGFyZSBub3QgdGhlIHJldmVyc2VcbiIpOwotICAgICAgICB9IAotICAgICAgICBpZiAocG9zLmJl
Z2luICE9IHJldmVyc2VQb3MuYmVnaW4pIHsKLSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsK
LSAgICAgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwg
YnV0IGJlZ2luIGFyZSBub3QgIiArIHBvcy5iZWdpbiArICIgdnMuICIgKyByZXZlcnNlUG9zLmJl
Z2luICsgIlxuIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHBvcy5lbmQgIT0gcmV2ZXJzZVBv
cy5lbmQpIHsKLSAgICAgICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvZygi
V0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IGVuZCBhcmUgbm90ICIg
KyBwb3MuZW5kICsgIiB2cy4gIiArIHJldmVyc2VQb3MuZW5kICsgIlxuIik7Ci0gICAgICAgIH0K
KyAgICBpZiAocG9zaXRpb25zLmxlbmd0aCAhPT0gY29tcGFyaXNvblBvc2l0aW9ucy5sZW5ndGgp
IHsKKyAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBi
dXQgdGhlIGxlbmd0aCBhcmUgbm90IHRoZSBzYW1lICIgKyAgcG9zaXRpb25zLmxlbmd0aCArICIg
dnMuICIgKyBzYW1lUG9zaXRpb25zLmxlbmd0aCArICJcbiIpOworICAgICAgICByZXR1cm47CiAg
ICAgfQotfQogCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3NpdGlvbnMubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgdmFyIHBvcyA9IHBvc2l0aW9uc1tpXTsKKyAgICAgICAgdmFyIGNvbXBhcmlz
b24gPSBjb21wYXJpc29uUG9zaXRpb25zW2ldOwogCi1mdW5jdGlvbiBjaGVja1NhbWVPcmRlcihp
bnB1dFBvc2l0aW9ucywgaW5wdXRTYW1lUG9zaXRpb25zKQotewotICAgIHZhciBwb3NpdGlvbnMg
PSBpbnB1dFBvc2l0aW9ucy5zbGljZSgpOwotICAgIHZhciBzYW1lUG9zaXRpb25zID0gaW5wdXRT
YW1lUG9zaXRpb25zLnNsaWNlKCk7Ci0gICAgdmFyIG1pc21hdGNoID0gcG9zaXRpb25zLmxlbmd0
aCAhPSBzYW1lUG9zaXRpb25zLmxlbmd0aDsKLSAgICBpZiAobWlzbWF0Y2gpCi0gICAgICAgIGxv
ZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0IHRoZSBsZW5ndGgg
YXJlIG5vdCB0aGUgc2FtZSAiICsgIHBvc2l0aW9ucy5sZW5ndGggKyAiIHZzLiAiICsgc2FtZVBv
c2l0aW9ucy5sZW5ndGggKyAiXG4iKTsKLSAgICB3aGlsZSAoIW1pc21hdGNoKSB7Ci0gICAgICAg
IHZhciBwb3MgPSBwb3NpdGlvbnMucG9wKCk7Ci0gICAgICAgIGlmICghcG9zKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIHZhciBzYW1lUG9zID0gc2FtZVBvc2l0aW9ucy5wb3AoKTsKLSAg
ICAgICAgaWYgKHBvcy5ub2RlICE9IHNhbWVQb3Mubm9kZSkgewotICAgICAgICAgICAgbWlzbWF0
Y2ggPSB0cnVlOworICAgICAgICBpZiAocG9zLm5vZGUgIT09IGNvbXBhcmlzb24ubm9kZSkKICAg
ICAgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRpb25zIHNob3VsZCBiZSB0aGUgc2FtZSwgYnV0
IG5vZGUgYXJlIG5vdCB0aGUgc2FtZVxuIik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChwb3Mu
YmVnaW4gIT0gc2FtZVBvcy5iZWdpbikgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwot
ICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBi
dXQgYmVnaW4gYXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmJlZ2luICsgIiB2cy4gIiArIHNhbWVQ
b3MuYmVnaW4gKyAiXG4iKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocG9zLmVuZCAhPSBzYW1l
UG9zLmVuZCkgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9n
KCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgZW5kIGFyZSBub3Qg
dGhlIHNhbWUgIiArIHBvcy5lbmQgKyAiIHZzLiAiICsgc2FtZVBvcy5lbmQgKyAiXG4iKTsKLSAg
ICAgICAgfQotICAgfQorICAgICAgICBpZiAocG9zLmJlZ2luICE9PSBjb21wYXJpc29uLmJlZ2lu
KQorICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1l
LCBidXQgYmVnaW4gYXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmJlZ2luICsgIiB2cy4gIiArIGNv
bXBhcmlzb24uYmVnaW4gKyAiXG4iKTsKKyAgICAgICAgaWYgKHBvcy5lbmQgIT09IGNvbXBhcmlz
b24uZW5kKQorICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRo
ZSBzYW1lLCBidXQgZW5kIGFyZSBub3QgdGhlIHNhbWUgIiArIHBvcy5lbmQgKyAiIHZzLiAiICsg
Y29tcGFyaXNvbi5lbmQgKyAiXG4iKTsKKyAgICB9CiB9CiAKK2Z1bmN0aW9uIGNvbXBhcmVQb3Np
dGlvbnNJblJldmVyc2UocG9zaXRpb25zLCBjb21wYXJpc29uUG9zaXRpb25zKQoreworICAgIGNv
bXBhcmlzb25Qb3NpdGlvbnMucmV2ZXJzZSgpOworICAgIGNvbXBhcmVQb3NpdGlvbnMocG9zaXRp
b25zLCBjb21wYXJpc29uUG9zaXRpb25zKTsKKyAgICBjb21wYXJpc29uUG9zaXRpb25zLnJldmVy
c2UoKTsKK30KIAotZnVuY3Rpb24gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgZGlyZWN0aW9uLCBn
cmFudWxhcml0eSwgb3B0aW9uKQorZnVuY3Rpb24gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uKGZ1bmN0
aW9uVG9FeHRlbmRTZWxlY3Rpb24sIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpCiB7Ci0gICAgdmFy
IHBvc2l0aW9uczsKLSAgICBpZiAob3B0aW9uID09IDApIHsKLSAgICAgICAgcG9zaXRpb25zID0g
cG9zaXRpb25zRXh0ZW5kaW5nSW5EaXJlY3Rpb24oc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBwb3NpdGlvbnMgPSBwb3NpdGlvbnNFeHRlbmRpbmdJ
bkRpcmVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHNlbCwgZGlyZWN0aW9uLCBncmFudWxhcml0eSk7
Ci0gICAgfQorICAgIHZhciBwb3NpdGlvbnMgPSBmdW5jdGlvblRvRXh0ZW5kU2VsZWN0aW9uKGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnMpOwogICAg
IGxvZygiXG4iKTsKICAgICByZXR1cm4gcG9zaXRpb25zOwogfQogCi1mdW5jdGlvbiB0ZXN0RXh0
ZW5kaW5nU2VsZWN0aW9uKHRlc3RzLCBzZWwsIGdyYW51bGFyaXR5KQorZnVuY3Rpb24gZXh0ZW5k
QW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2soZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK3sKKyAg
ICByZXR1cm4gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uKGV4dGVuZFNlbGVjdGlvbldpdGhpbkJsb2Nr
LCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworZnVuY3Rpb24gZXh0ZW5kQW5kTG9nU2Vs
ZWN0aW9uVG9FbmQoZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRlc3RzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVj
dGlvbiA9ICJsdHIiOwotICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4g
IEV4dGVuZGluZyByaWdodDogIik7Ci0gICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwg
MCk7Ci0gICAgICAgIHZhciBsdHJSaWdodFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJy
aWdodCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICByZXR1cm4gZXh0ZW5kQW5kTG9nU2VsZWN0aW9u
KGV4dGVuZFNlbGVjdGlvblRvRW5kLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKK30KKworZnVu
Y3Rpb24gcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHkodGVzdE5vZGVzLCBncmFudWxh
cml0eSkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlc3ROb2Rlcy5sZW5ndGg7ICsraSkg
eworICAgICAgICB2YXIgdGVzdE5vZGUgPSB0ZXN0Tm9kZXNbaV07CisKKyAgICAgICAgdGVzdE5v
ZGUuc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7CisgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAx
KSArICIsIExUUjpcbiIpOworICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIHJpZ2h0OiAiKTsKKyAg
ICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdE5vZGUpOworICAgICAgICB2YXIg
bHRyUmlnaHRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgicmlnaHQiLCBncmFudWxh
cml0eSk7CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBsZWZ0OiAgIik7Ci0gICAgICAgIHZh
ciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImxlZnQiLCBncmFudWxhcml0
eSwgMCk7CisgICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9F
bmQoImxlZnQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBmb3J3
YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAg
dmFyIGx0ckZvcndhcmRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsIGdy
YW51bGFyaXR5LCAwKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVzdE5v
ZGUpOworICAgICAgICB2YXIgbHRyRm9yd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRv
RW5kKCJmb3J3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcg
YmFja3dhcmQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckJhY2t3YXJkUG9zID0gZXh0ZW5kaW5nU2Vs
ZWN0aW9uKHNlbCwgImJhY2t3YXJkIiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICB2YXIgbHRy
QmFja3dhcmRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgiYmFja3dhcmQiLCBncmFu
dWxhcml0eSk7CiAKLSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gInJ0bCI7Cisg
ICAgICAgIHRlc3ROb2RlLnN0eWxlLmRpcmVjdGlvbiA9ICJydGwiOwogCi0gICAgICAgIGxvZygi
VGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiAgRXh0ZW5kaW5nIGxlZnQ6ICIpOwotICAgICAg
ICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIgcnRsTGVmdFBvcyA9
IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJsZWZ0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAg
ICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBSVEw6XG4iKTsKKyAgICAgICAgbG9nKCIgIEV4
dGVuZGluZyBsZWZ0OiAiKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24odGVz
dE5vZGUpOworICAgICAgICB2YXIgcnRsTGVmdFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRv
RW5kKCJsZWZ0IiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIGxvZygiICBFeHRlbmRpbmcgcmln
aHQ6ICAiKTsKLSAgICAgICAgdmFyIHJ0bFJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNl
bCwgInJpZ2h0IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICB2YXIgcnRsUmlnaHRQb3MgPSBl
eHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgicmlnaHQiLCBncmFudWxhcml0eSk7CiAKICAgICAg
ICAgbG9nKCIgIEV4dGVuZGluZyBmb3J3YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9u
KHRlc3RzW2ldLCAwKTsKLSAgICAgICAgdmFyIHJ0bEZvcndhcmRQb3MgPSBleHRlbmRpbmdTZWxl
Y3Rpb24oc2VsLCAiZm9yd2FyZCIsIGdyYW51bGFyaXR5LCAwKTsKKyAgICAgICAgZ2V0U2VsZWN0
aW9uKCkuc2V0UG9zaXRpb24odGVzdE5vZGUpOworICAgICAgICB2YXIgcnRsRm9yd2FyZFBvcyA9
IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJmb3J3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAg
ICAgICAgIGxvZygiICBFeHRlbmRpbmcgYmFja3dhcmQ6ICIpOwotICAgICAgICB2YXIgcnRsQmFj
a3dhcmRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCBncmFudWxhcml0
eSwgMCk7CisgICAgICAgIHZhciBydGxCYWNrd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlv
blRvRW5kKCJiYWNrd2FyZCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICAvLyB2YWxpZGF0aW9u
cwogICAgICAgICBsb2coIlxuXG4gIHZhbGlkYXRpbmcgbHRyUmlnaHQgYW5kIGx0ckxlZnRcbiIp
OwogICAgICAgICBpZiAoZ3JhbnVsYXJpdHkgPT0gImNoYXJhY3RlciIpCi0gICAgICAgICAgICBj
aGVja1JldmVyc2VPcmRlcihsdHJSaWdodFBvcywgbHRyTGVmdFBvcyk7CisgICAgICAgICAgICBj
b21wYXJlUG9zaXRpb25zSW5SZXZlcnNlKGx0clJpZ2h0UG9zLCBsdHJMZWZ0UG9zKTsKICAgICAg
ICAgLy8gT3JkZXIgbWlnaHQgbm90IGJlIHJldmVyc2VkIGZvciBleHRlbmRpbmcgYnkgd29yZCBi
ZWNhdXNlIHRoZSAxLXBvaW50IHNoaWZ0IGJ5IHNwYWNlLgogCiAgICAgICAgIGxvZygiICB2YWxp
ZGF0aW5nIGx0clJpZ2h0IGFuZCBsdHJGb3J3YXJkXG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3Jk
ZXIobHRyUmlnaHRQb3MsIGx0ckZvcndhcmRQb3MpOworICAgICAgICBjb21wYXJlUG9zaXRpb25z
KGx0clJpZ2h0UG9zLCBsdHJGb3J3YXJkUG9zKTsKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcg
bHRyRm9yd2FyZCBhbmQgcnRsRm9yd2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0
ckZvcndhcmRQb3MsIHJ0bEZvcndhcmRQb3MpOworICAgICAgICBjb21wYXJlUG9zaXRpb25zKGx0
ckZvcndhcmRQb3MsIHJ0bEZvcndhcmRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBs
dHJMZWZ0IGFuZCBsdHJCYWNrd2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckxl
ZnRQb3MsIGx0ckJhY2t3YXJkUG9zKTsKKyAgICAgICAgY29tcGFyZVBvc2l0aW9ucyhsdHJMZWZ0
UG9zLCBsdHJCYWNrd2FyZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckJhY2t3
YXJkIGFuZCBydGxCYWNrd2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckJhY2t3
YXJkUG9zLCBydGxCYWNrd2FyZFBvcyk7CisgICAgICAgIGNvbXBhcmVQb3NpdGlvbnMobHRyQmFj
a3dhcmRQb3MsIHJ0bEJhY2t3YXJkUG9zKTsKICAgICAgICAgbG9nKCIgIHZhbGlkYXRpbmcgbHRy
UmlnaHQgYW5kIHJ0bExlZnRcbiIpOwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJSaWdodFBv
cywgcnRsTGVmdFBvcyk7CisgICAgICAgIGNvbXBhcmVQb3NpdGlvbnMobHRyUmlnaHRQb3MsIHJ0
bExlZnRQb3MpOwogICAgICAgICBsb2coIiAgdmFsaWRhdGluZyBsdHJMZWZ0IGFuZCBydGxSaWdo
dFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckxlZnRQb3MsIHJ0bFJpZ2h0UG9zKTsK
KyAgICAgICAgY29tcGFyZVBvc2l0aW9ucyhsdHJMZWZ0UG9zLCBydGxSaWdodFBvcyk7CiAgICAg
ICAgIGxvZygiXG5cbiIpOwogICAgIH0KIH0KIAotdmFyIGRhdGEgPSBbCi1bJ2NoYXItYW5kLXdv
cmQnLCBudWxsLCAnXG5hYmMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7IHh5eiAmIzE0OTE7JiMxNDky
OyYjMTQ5MzsgZGVmXG4nXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdcbiYjMTQ4ODsmIzE0
ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5MjsmIzE0OTM7IGRlZiAmIzE0OTQ7JiMxNDk1OyYj
MTQ5NjtcbiddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuJiMxNDg4OyYjMTQ4OTsmIzE0
OTA7ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDtcbiddLAotWydj
aGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuYWJjIGVmZCBkYWJlYlxuJ10sCi1bJ2NoYXItYW5kLXdv
cmQnLCBudWxsLCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+aXBzdW0gZG9s
b3Igc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2NoYXItYW5kLXdvcmQnLCBudWxsLCAnTG9yZW0gPHNw
YW4gIGRpcj0icnRsIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQt
d29yZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBk
b2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdMb3JlbSA8
c3BhbiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydlbmNsb3Np
bmctYmxvY2snLCBudWxsLCAnTG9yZW0gPGRpdiAgZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwv
ZGl2PiBhbWV0dCddLAotWydob21lLWVuZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRp
cmVjdGlvbjogbHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9tZS1lbmQn
LCBudWxsLCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8
ZGl2ID4ganVzdCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2hvbWUtZW5kJywg
bnVsbCwgJ0xvcmVtIDxzcGFuICBkaXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0
J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ0xvcmVtIDxkaXYgIGRpcj0ibHRyIj5pcHN1bSBkb2xv
ciBzaXQ8L2Rpdj4gYW1ldCddLAotWydob21lLWVuZCcsIG51bGwsICdcbiBKdXN0XG4gPHNwYW4+
dGVzdGluZyDXqNenPC9zcGFuPlxuINeR15XXk9enXG4nXSwKLVsnaG9tZS1lbmQnLCBudWxsLCAn
XG4gSnVzdFxuIDxzcGFuPnRlc3Rpbmcgd2hhdDwvc3Bhbj5cbiBldmVyXG4nXSwKLVsnaG9tZS1l
bmQnLCBudWxsLCAnY2FyIG1lYW5zICYjMTQ4ODsmIzE0ODk7JiMxNDkwOy4nXSwKLVsnaG9tZS1l
bmQnLCBudWxsLCAnJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0
ODk7JiMxNDkwOy4mI3gyMDJjOyddLAotWydob21lLWVuZCcsIG51bGwsICdoZSBzYWlkICImI3gy
MDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7JiN4MjAy
YzsuIiddLAotWydob21lLWVuZCcsIG51bGwsICcmIzE0OTQ7JiMxNDk1OyYjMTQ5NjsgJiMxNDk3
OyYjMTQ5ODsmIzE0OTk7ICYjMTUwMDsmIzE1MDE7JiMxNTAyOyBcJyYjeDIwMmE7aGUgc2FpZCAi
JiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMxNDkwOyYj
eDIwMmM7IiYjeDIwMmM7XCc/J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJyYjMTQ4ODsmIzE0ODk7
JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJyIC8+ZWRmICYjMTQ5NDsmIzE0OTU7
JiMxNDk2OyBhYnJlYmcnXSwKLVsnaG9tZS1lbmQnLCAnbGluZS1icmVhazpiZWZvcmUtd2hpdGUt
c3BhY2U7IHdpZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgJ10sCi1bJ2hvbWUtZW5kJywgJ2xpbmUtYnJlYWs6YWZ0ZXItd2hpdGUtc3Bh
Y2U7IHdpZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZn
IGFiY2RlZmcgJ10KLV07Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3ROb2RlcyhuYW1lKSB7Ci0gICAg
dmFyIG5vZGVzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIGlmIChuYW1lICYmIGRhdGFbaV1bMF0gIT0gbmFtZSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB2YXIgc3R5bGUgPSBkYXRhW2ldWzFdOwotICAgICAgICB2YXIg
dGV4dCA9IGRhdGFbaV1bMl07Ci0gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7Ci0gICAgICAg
IGlmIChzdHlsZSkKLSAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgc3R5bGUp
OwotICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dDsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5p
bnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpKTsKLSAg
ICAgICAgbm9kZXMucHVzaChkaXYpOworZnVuY3Rpb24gZ2V0VGVzdE5vZGVDb250YWluZXIoKQor
eworICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0cyIpOworICAg
IGlmICghdGVzdHMpIHsKKyAgICAgICAgdGVzdHMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgdGVzdHMuaWQgPSAidGVzdHMiOworICAgICAgICBkb2N1bWVudC5ib2R5
Lmluc2VydEJlZm9yZSh0ZXN0cywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKSk7
CiAgICAgfQorICAgIHJldHVybiB0ZXN0czsKK30KIAotICAgIHdpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykK
LSAgICAgICAgICAgIG5vZGVzW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZXNbaV0pOwot
ICAgIH0KK2Z1bmN0aW9uIGNyZWF0ZU5vZGUoY29udGVudCwgc3R5bGUpCit7CisgICAgdmFyIG5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBub2RlLmlubmVySFRNTCA9
IGNvbnRlbnQ7CisgICAgbm9kZS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworICAgIGlmIChzdHls
ZSkKKyAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAgIGdldFRl
c3ROb2RlQ29udGFpbmVyKCkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgcmV0dXJuIG5vZGU7Cit9
CiAKLSAgICByZXR1cm4gbm9kZXM7CitmdW5jdGlvbiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkK
K3sKKyAgICByZXR1cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdcbmFiYyAmIzE0ODg7JiMxNDg5
OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBkZWZcbicpLAorICAgICAgICBjcmVh
dGVOb2RlKCdcbiYjMTQ4ODsmIzE0ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5MjsmIzE0OTM7
IGRlZiAmIzE0OTQ7JiMxNDk1OyYjMTQ5NjtcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiYj
MTQ4ODsmIzE0ODk7JiMxNDkwOyAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsm
IzE0OTA7XG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnXG5hYmMgZWZkIGRhYmViXG4nKSwKKyAg
ICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogcnRsIj5pcHN1
bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNw
YW4gZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVh
dGVOb2RlKCdMb3JlbSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRvbG9yIHNp
dDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBkaXI9Imx0
ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JykKKyAgICBdOworfQorCitmdW5jdGlvbiBj
cmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAgICBjcmVh
dGVOb2RlKCdMb3JlbSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0PC9kaXY+IGFtZXR0
JykKKyAgICBdOworfQorCitmdW5jdGlvbiBjcmVhdGVIb21lRW5kTm9kZXMoKQoreworICAgIHJl
dHVybiBbCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246
IGx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUo
J0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8ZGl2ID4ganVz
dCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xv
cmVtIDxzcGFuIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAg
ICAgY3JlYXRlTm9kZSgnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvZGl2
PiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ1xuIEp1c3RcbiA8c3Bhbj50ZXN0aW5nINeo
16c8L3NwYW4+XG4g15HXldeT16dcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiBKdXN0XG4g
PHNwYW4+dGVzdGluZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbicpLAorICAgICAgICBjcmVhdGVOb2Rl
KCdjYXIgbWVhbnMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LicpLAorICAgICAgICBjcmVhdGVOb2Rl
KCcmI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7
LiYjeDIwMmM7JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ2hlIHNhaWQgIiYjeDIwMkI7Y2FyICYj
MTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gyMDJjOy4iJyksCisg
ICAgICAgIGNyZWF0ZU5vZGUoJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0OTc7JiMxNDk4OyYj
MTQ5OTsgJiMxNTAwOyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlkICcgKworICAgICAg
ICAgICAgICAgICAgICciJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsm
IzE0ODk7JiMxNDkwOyYjeDIwMmM7IiYjeDIwMmM7XCc/JyksCisgICAgICAgIGNyZWF0ZU5vZGUo
JyYjMTQ4ODsmIzE0ODk7JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJyIC8+ZWRm
ICYjMTQ5NDsmIzE0OTU7JiMxNDk2OyBhYnJlYmcnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnYWJj
ZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICcsCisgICAgICAg
ICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YmVmb3JlLXdoaXRlLXNwYWNlOyB3aWR0aDo1ZW0nKSwK
KyAgICAgICAgY3JlYXRlTm9kZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFi
Y2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJj
ZGVmZyBhYmNkZWZnICcsCisgICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YWZ0ZXItd2hp
dGUtc3BhY2U7IHdpZHRoOjVlbScpCisgICAgXTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlQWxsTm9k
ZXMoKQoreworICAgIHJldHVybiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkuY29uY2F0KAorICAg
ICAgICAgICBjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkpLmNvbmNhdCgKKyAgICAgICAgICAg
Y3JlYXRlSG9tZUVuZE5vZGVzKCkpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgdmFyIG9yaWdpbmFsT25sb2FkID0gd2luZG93Lm9ubG9hZDsKKyAgICB3aW5k
b3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvcmlnaW5hbE9ubG9hZCkKKyAg
ICAgICAgICAgIG9yaWdpbmFsT25sb2FkKCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChnZXRUZXN0
Tm9kZUNvbnRhaW5lcigpKTsKKyAgICB9OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82421</attachid>
            <date>2011-02-14 23:37:35 -0800</date>
            <delta_ts>2011-02-15 08:15:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54429-20110215183732.patch</filename>
            <type>text/plain</type>
            <size>25457</size>
            <attacher name="Benjamin (Ben) Kalman">kalman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzY4NjYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2OGEzMTNmNzJlMGUyNjcxNTNkNjZj
MmE3NmNiMzZkZWNiMzlmNTU3Li42Njk3MzhiMmEwZjdjMWRlMmQ3YmVmODNlMTAzN2ZlNmM0YjMw
OTQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDItMTQgIEJlbmphbWluIEthbG1hbiAg
PGthbG1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWN0b3IgdGhlIGV4dGVuZC1zZWxlY3Rpb24gdGVzdHMgdG8gYmUg
Y2xlYXJlciB3aGF0IHRoZXkncmUgZG9pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0NDI5CisKKyAgICAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBh
IGNsZWFudXAgdG8gZXh0ZW5kLXNlbGVjdGlvbi5qcyBhbmQgcHJvcGFnYXRpb24gb2YgdGhvc2Ug
Y2hhbmdlcyB0byB0aGUgYWZmZWN0ZWQgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9leHRlbmQtc2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sOgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9zaW5nLWJsb2NrLmh0bWw6CisgICAgICAg
ICogZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1ob21lLWVuZC5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24td29yZC5odG1sOgorICAg
ICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzOgor
ICAgICAgICAoZ2V0U2VyaWFsaXplZFNlbGVjdGlvbik6CisgICAgICAgIChleHRlbmRTZWxlY3Rp
b25XaXRoaW5CbG9jayk6CisgICAgICAgIChleHRlbmRTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAg
IChmb2xkKToKKyAgICAgICAgKGxvZ01pc21hdGNoaW5nUG9zaXRpb25zKToKKyAgICAgICAgKGV4
dGVuZEFuZExvZ1NlbGVjdGlvbik6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRo
aW5CbG9jayk6CisgICAgICAgIChleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCk6CisgICAgICAg
IChydW5TZWxlY3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eSk6CisgICAgICAgIChnZXRUZXN0Tm9k
ZUNvbnRhaW5lcik6CisgICAgICAgIChjcmVhdGVOb2RlKToKKyAgICAgICAgKGNyZWF0ZUNoYXJB
bmRXb3JkTm9kZXMpOgorICAgICAgICAoY3JlYXRlRW5jbG9zaW5nQmxvY2tOb2Rlcyk6CisgICAg
ICAgIChjcmVhdGVIb21lRW5kTm9kZXMpOgorICAgICAgICAoY3JlYXRlQWxsTm9kZXMpOgorICAg
ICAgICAoLndpbmRvdy5vbmxvYWQpOgorCiAyMDExLTAyLTExICBKZXJlbXkgT3Jsb3cgIDxqb3Js
b3dAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1j
aGFyYWN0ZXIuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxl
Y3Rpb24tY2hhcmFjdGVyLmh0bWwKaW5kZXggOWYyNzdmNzRiNjNlNDdhODFmNzE0OGQwMWI5ODI3
NGZiZTMzNGEzOS4uZWE0MmZiNDMxNTU2NTc3ZmQ0ZjVjODJjMjQyMGQzNWVjODQyOGFlYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1j
aGFyYWN0ZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWNoYXJhY3Rlci5odG1sCkBAIC04LDE2ICs4LDcgQEAKIDxib2R5PgogPHByZSBp
ZD0iY29uc29sZSI+PC9wcmU+CiA8c2NyaXB0PgotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7Ci0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAg
dmFyIHRlc3RzID0gY3JlYXRlVGVzdE5vZGVzKCJjaGFyLWFuZC13b3JkIik7Ci0gICAgdmFyIHNl
bCA9IGdldFNlbGVjdGlvbigpOwotCi0gICAgbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFj
dGVyXG4iKTsKLSAgICB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uKHRlc3RzLCAgc2VsLCAiY2hhcmFj
dGVyIiwgMCk7Ci19Ci0KK2xvZygiXG5cblxuRXh0ZW5kaW5nIGJ5IGNoYXJhY3RlclxuIik7City
dW5TZWxlY3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eShjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCks
ICJjaGFyYWN0ZXIiKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3NpbmctYmxvY2suaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2V4dGVuZC1zZWxlY3Rpb24tZW5jbG9z
aW5nLWJsb2NrLmh0bWwKaW5kZXggYWU3MDY1Mzg5MGU5Y2ZjYTI1ZDZjMWM1ZWU5NzFlNTYyYzUx
ZGI1NC4uOTA1MzMwMTgyYTFhNTI0MjkzOGFkZDZlM2I3YzY1MjMxYjE4MzdiOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi1lbmNsb3Np
bmctYmxvY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWVuY2xvc2luZy1ibG9jay5odG1sCkBAIC04LDMwICs4LDI0IEBACiA8Ym9keT4K
IDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLQotZnVuY3Rpb24gdGVzdEV4dGVu
ZGluZ1NlbGVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHRlc3RzLCBzZWwsIGdyYW51bGFyaXR5KQor
ZnVuY3Rpb24gcnVuU2VsZWN0aW9uVGVzdHNXaXRoR3JhbnVsYXJpdHlGb3JFbmNsb3NpbmdCbG9j
ayh0ZXN0Tm9kZXMsIGdyYW51bGFyaXR5KQogewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVz
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgbG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgTFRS
OlxuICBFeHRlbmRpbmcgcmlnaHQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNb
aV0sIDApOwotICAgICAgICB2YXIgbHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2Vs
LCAicmlnaHQiLCBncmFudWxhcml0eSwgMSk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXN0
Tm9kZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
dGVzdE5vZGVzW2ldLCAwKTsKKworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBM
VFI6XG4iKTsKKyAgICAgICAgbG9nKCIgIEV4dGVuZGluZyByaWdodDogIik7CisgICAgICAgIGV4
dGVuZEFuZExvZ1NlbGVjdGlvbldpdGhpbkJsb2NrKCJyaWdodCIsIGdyYW51bGFyaXR5KTsKIAog
ICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGxlZnQ6ICAiKTsKLSAgICAgICAgdmFyIGx0ckxlZnRQ
b3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAibGVmdCIsIGdyYW51bGFyaXR5LCAxKTsKKyAg
ICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0aW9uV2l0aGluQmxvY2soImxlZnQiLCBncmFudWxhcml0
eSk7CiAgICAgfQogfQogCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgdGVzdHMgPSBjcmVhdGVU
ZXN0Tm9kZXMoImVuY2xvc2luZy1ibG9jayIpOwotICAgIHNlbCA9IGdldFNlbGVjdGlvbigpOwot
Ci0gICAgbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsKLSAgICB0ZXN0RXh0
ZW5kaW5nU2VsZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2sodGVzdHMsICBzZWwsICJjaGFyYWN0ZXIi
LCAxKTsKLSAgICBsb2coIlxuXG5cblxuXG5FeHRlbmRpbmcgYnkgd29yZFxuIik7Ci0gICAgdGVz
dEV4dGVuZGluZ1NlbGVjdGlvbkZvckVuY2xvc2luZ0Jsb2NrKHRlc3RzLCAgc2VsLCAid29yZCIs
IDEpOwotfQorbG9nKCJcblxuXG5FeHRlbmRpbmcgYnkgY2hhcmFjdGVyXG4iKTsKK3J1blNlbGVj
dGlvblRlc3RzV2l0aEdyYW51bGFyaXR5Rm9yRW5jbG9zaW5nQmxvY2soY3JlYXRlRW5jbG9zaW5n
QmxvY2tOb2RlcygpLCAiY2hhcmFjdGVyIik7CiAKK2xvZygiXG5cblxuXG5cbkV4dGVuZGluZyBi
eSB3b3JkXG4iKTsKK3J1blNlbGVjdGlvblRlc3RzV2l0aEdyYW51bGFyaXR5Rm9yRW5jbG9zaW5n
QmxvY2soY3JlYXRlRW5jbG9zaW5nQmxvY2tOb2RlcygpLCAid29yZCIpOwogPC9zY3JpcHQ+CiA8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
c2VsZWN0aW9uLWhvbWUtZW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9l
eHRlbmQtc2VsZWN0aW9uLWhvbWUtZW5kLmh0bWwKaW5kZXggNzZkMjQ3YTA3N2E3M2EwMzE1ZDVi
NTgxZWI4YjIyMDc0OWQzNGZhYS4uYWNjYjU5ZjMxMzI4ZmI0ZDA1YmQ4ZmIwMzBkNGZlOWRiM2Fj
MzdjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNl
bGVjdGlvbi1ob21lLWVuZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2V4dGVuZC1zZWxlY3Rpb24taG9tZS1lbmQuaHRtbApAQCAtOCwzNiArOCwzMSBAQAogPGJvZHk+
CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KIDxzY3JpcHQ+Ci0KLWZ1bmN0aW9uIHRlc3RFeHRl
bmRpbmdMaW5lQm91bmRhcnkodGVzdHMsIHNlbCkKK2Z1bmN0aW9uIHRlc3RFeHRlbmRpbmdMaW5l
Qm91bmRhcnkodGVzdE5vZGVzKQogewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgdGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0g
ICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIGZvcndh
cmQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2
YXIgbHRyUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAiZm9yd2FyZCIsICJsaW5l
Qm91bmRhcnkiLCAwKTsKLQotICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGJhY2t3YXJkOiAgIik7
Ci0gICAgICAgIHZhciBsdHJMZWZ0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImJhY2t3
YXJkIiwgImxpbmVCb3VuZGFyeSIsIDApOwotCi0gICAgICAgIHRlc3RzW2ldLnN0eWxlLmRpcmVj
dGlvbiA9ICJydGwiOwotICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBSVEw6XG4g
IEV4dGVuZGluZyBmb3J3YXJkOiAiKTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKHRlc3RzW2ld
LCAwKTsKLSAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwg
ImZvcndhcmQiLCAibGluZUJvdW5kYXJ5IiwgMCk7Ci0KKyAgICBmdW5jdGlvbiBleHRlbmRUb0Vu
ZEFuZEJhY2sobm9kZSkKKyAgICB7CisgICAgICAgIGdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9u
KG5vZGUsIDApOworICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICIpOworICAgICAg
ICBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0VuZCgiZm9yd2FyZCIsICJsaW5lQm91bmRhcnkiKTsK
ICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBiYWNrd2FyZDogICIpOwotICAgICAgICB2YXIgbHRy
TGVmdFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJiYWNrd2FyZCIsICJsaW5lQm91bmRh
cnkiLCAwKTsKKyAgICAgICAgZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9FbmQoImJhY2t3YXJkIiwg
ImxpbmVCb3VuZGFyeSIpOwogICAgIH0KLX0KIAotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRlc3ROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbm9k
ZSA9IHRlc3ROb2Rlc1tpXTsKIAotICAgIHRlc3RzID0gY3JlYXRlVGVzdE5vZGVzKCk7IC8vIGFs
bAotICAgIHZhciBzZWwgPSBnZXRTZWxlY3Rpb24oKTsKLSAgICBsb2coIlxuXG5cbkV4dGVuZGlu
ZyBieSBsaW5lQm91bmRhcnlcbiIpOwotICAgIHRlc3RFeHRlbmRpbmdMaW5lQm91bmRhcnkodGVz
dHMsICBzZWwpOworICAgICAgICBsb2coIlRlc3QgIiArIChpICsgMSkgKyAiLCBMVFI6XG4iKTsK
KyAgICAgICAgbm9kZS5zdHlsZS5kaXJlY3Rpb24gPSAibHRyIjsKKyAgICAgICAgZXh0ZW5kVG9F
bmRBbmRCYWNrKG5vZGUpOworCisgICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJU
TDpcbiIpOworICAgICAgICBub2RlLnN0eWxlLmRpcmVjdGlvbiA9ICJydGwiOworICAgICAgICBl
eHRlbmRUb0VuZEFuZEJhY2sobm9kZSk7CisgICAgfQogfQogCitsb2coIlxuXG5cbkV4dGVuZGlu
ZyBieSBsaW5lQm91bmRhcnlcbiIpOwordGVzdEV4dGVuZGluZ0xpbmVCb3VuZGFyeShjcmVhdGVB
bGxOb2RlcygpKTsKIDwvc2NyaXB0PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vZXh0ZW5kLXNlbGVjdGlvbi13b3JkLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQuaHRtbAppbmRleCA5NTU0
NmUwNDQ2MTE1M2Y4MDYyODQ0MDY0ZTM2YjE1NGIwOWQ2YWY4Li4wMWQ5NTBmZjcwYmYzMzM5YWQz
MDMxYjNjMzYyODM2YWI2ODJhYzRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9leHRlbmQtc2VsZWN0aW9uLXdvcmQuaHRtbApAQCAtOCwxNiArOCw3IEBA
CiA8Ym9keT4KIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgogPHNjcmlwdD4KLQotaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKLQotICAgIHZhciB0ZXN0cyA9IGNyZWF0ZVRlc3ROb2RlcygnY2hhci1hbmQtd29y
ZCcpOwotICAgIHZhciBzZWwgPSBnZXRTZWxlY3Rpb24oKTsKLQotICAgIGxvZygiXG5cblxuXG5c
bkV4dGVuZGluZyBieSB3b3JkXG4iKTsKLSAgICB0ZXN0RXh0ZW5kaW5nU2VsZWN0aW9uKHRlc3Rz
LCAgc2VsLCAid29yZCIsIDApOwotfQotCitsb2coIlxuXG5cblxuXG5FeHRlbmRpbmcgYnkgd29y
ZFxuIik7CitydW5TZWxlY3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eShjcmVhdGVDaGFyQW5kV29y
ZE5vZGVzKCksICJ3b3JkIik7CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9leHRlbmQtc2VsZWN0aW9uLmpzIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24u
anMKaW5kZXggMWRjNzg2YWIyYzU5ODQ2MGM2N2QyN2E3OGFmYmRiNzEyNDgwNWNkZS4uZmMwNzRh
OWRjOTZjYjU4MmM2NDVlOGM2YTk0MzNlM2Q4MWIwN2ZiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24uanMKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2V4dGVuZC1zZWxlY3Rpb24u
anMKQEAgLTMsNjAgKzMsNDcgQEAgZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShtZXNzYWdlKSk7CiB9CiAKLWZ1bmN0aW9uIHBvc2l0aW9uc0V4dGVuZGluZ0luRGlyZWN0
aW9uRm9yRW5jbG9zaW5nQmxvY2soc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQorZnVuY3Rp
b24gZ2V0U2VyaWFsaXplZFNlbGVjdGlvbigpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbm9k
ZTogZ2V0U2VsZWN0aW9uKCkuZXh0ZW50Tm9kZSwKKyAgICAgICAgYmVnaW46IGdldFNlbGVjdGlv
bigpLmJhc2VPZmZzZXQsCisgICAgICAgIGVuZDogZ2V0U2VsZWN0aW9uKCkuZXh0ZW50T2Zmc2V0
CisgICAgfTsKK30KKworZnVuY3Rpb24gZXh0ZW5kU2VsZWN0aW9uV2l0aGluQmxvY2soZGlyZWN0
aW9uLCBncmFudWxhcml0eSkKIHsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0gICAgdmFyIGx0
ck51bTsKLSAgICB2YXIgcnRsTnVtOwotICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVy
IikgewotICAgICAgICBsdHJOdW0gPSA1OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGx0ck51bSA9
IDE7Ci0gICAgfQotICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVyIikgewotICAgICAg
ICBydGxOdW0gPSAxNTsKLSAgICB9IGVsc2UgewotICAgICAgICBydGxOdW0gPSAzOwotICAgIH0K
LSAgICB2YXIgaW5kZXggPSAwOwotICAgIHdoaWxlIChpbmRleCA8PSBsdHJOdW0pIHsKLSAgICAg
ICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuZXh0ZW50Tm9kZSwgYmVnaW46IHNlbC5iYXNl
T2Zmc2V0LCBlbmQ6IHNlbC5leHRlbnRPZmZzZXQgfSk7Ci0gICAgICAgIHNlbC5tb2RpZnkoImV4
dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwotICAgICAgICArK2luZGV4OwotICAgIH0K
LSAgICB2YXIgYW50aURpcmVjdGlvbiA9IGRpcmVjdGlvbjsKLSAgICBpZiAoYW50aURpcmVjdGlv
biA9PSAnbGVmdCcpIHsKLSAgICAgICAgYW50aURpcmVjdGlvbiA9ICJyaWdodCI7Ci0gICAgfSBl
bHNlIGlmIChhbnRpRGlyZWN0aW9uID0gJ3JpZ2h0JykgewotICAgICAgICBhbnRpRGlyZWN0aW9u
ID0gImxlZnQiOworICAgIHZhciBsZWZ0SXRlcmF0aW9ucyA9IChncmFudWxhcml0eSA9PT0gImNo
YXJhY3RlciIpID8gNSA6IDE7CisgICAgdmFyIHJpZ2h0SXRlcmF0aW9ucyA9IChncmFudWxhcml0
eSA9PT0gImNoYXJhY3RlciIpID8gMTUgOiAzOworCisgICAgZm9yICh2YXIgaW5kZXggPSAwOyBp
bmRleCA8PSBsZWZ0SXRlcmF0aW9uczsgKytpbmRleCkgeworICAgICAgICBwb3NpdGlvbnMucHVz
aChnZXRTZXJpYWxpemVkU2VsZWN0aW9uKCkpOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5tb2Rp
ZnkoImV4dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0KIAotICAgIGluZGV4
ID0gMDsKLSAgICB3aGlsZSAoaW5kZXggPD0gcnRsTnVtKSB7Ci0gICAgICAgIHBvc2l0aW9ucy5w
dXNoKHsgbm9kZTogc2VsLmV4dGVudE5vZGUsIGJlZ2luOiBzZWwuYmFzZU9mZnNldCwgZW5kOiBz
ZWwuZXh0ZW50T2Zmc2V0IH0pOwotICAgICAgICBzZWwubW9kaWZ5KCJleHRlbmQiLCBhbnRpRGly
ZWN0aW9uLCBncmFudWxhcml0eSk7Ci0gICAgICAgICsraW5kZXg7CisgICAgZm9yICh2YXIgaW5k
ZXggPSAwOyBpbmRleCA8PSByaWdodEl0ZXJhdGlvbnM7ICsraW5kZXgpIHsKKyAgICAgICAgcG9z
aXRpb25zLnB1c2goZ2V0U2VyaWFsaXplZFNlbGVjdGlvbigpKTsKKyAgICAgICAgZ2V0U2VsZWN0
aW9uKCkubW9kaWZ5KCJleHRlbmQiLCAoZGlyZWN0aW9uID09PSAibGVmdCIpID8gInJpZ2h0IiA6
ICJsZWZ0IiwgZ3JhbnVsYXJpdHkpOwogICAgIH0KLSAgICB2YXIgaW5kZXggPSAwOwotICAgIHdo
aWxlIChpbmRleCA8IGx0ck51bSkgewotICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNl
bC5leHRlbnROb2RlLCBiZWdpbjogc2VsLmJhc2VPZmZzZXQsIGVuZDogc2VsLmV4dGVudE9mZnNl
dCB9KTsKLSAgICAgICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgZGlyZWN0aW9uLCBncmFudWxhcml0
eSk7Ci0gICAgICAgICsraW5kZXg7CisKKyAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwg
bGVmdEl0ZXJhdGlvbnM7ICsraW5kZXgpIHsKKyAgICAgICAgcG9zaXRpb25zLnB1c2goZ2V0U2Vy
aWFsaXplZFNlbGVjdGlvbigpKTsKKyAgICAgICAgZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCJleHRl
bmQiLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKICAgICB9CisKICAgICByZXR1cm4gcG9zaXRp
b25zOwogfQogCi0KLWZ1bmN0aW9uIHBvc2l0aW9uc0V4dGVuZGluZ0luRGlyZWN0aW9uKHNlbCwg
ZGlyZWN0aW9uLCBncmFudWxhcml0eSkKK2Z1bmN0aW9uIGV4dGVuZFNlbGVjdGlvblRvRW5kKGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpCiB7CiAgICAgdmFyIHBvc2l0aW9ucyA9IFtdOwotICAgIAot
ICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmV4
dGVudE5vZGUsIGJlZ2luOiBzZWwuYmFzZU9mZnNldCwgZW5kOiBzZWwuZXh0ZW50T2Zmc2V0IH0p
OwotICAgICAgICBzZWwubW9kaWZ5KCJleHRlbmQiLCBkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsK
LSAgICAgICAgaWYgKHBvc2l0aW9uc1twb3NpdGlvbnMubGVuZ3RoIC0gMV0ubm9kZSA9PSBzZWwu
ZXh0ZW50Tm9kZSAmJiBwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdLmVuZCA9PSBzZWwu
ZXh0ZW50T2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfTsKKyAgICBkbyB7CisgICAg
ICAgIHZhciBwb3NpdGlvbiA9IGdldFNlcmlhbGl6ZWRTZWxlY3Rpb24oKTsKKyAgICAgICAgcG9z
aXRpb25zLnB1c2gocG9zaXRpb24pOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5tb2RpZnkoImV4
dGVuZCIsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgIH0gd2hpbGUgKHBvc2l0aW9uLm5v
ZGUgIT09IGdldFNlcmlhbGl6ZWRTZWxlY3Rpb24oKS5ub2RlIHx8IHBvc2l0aW9uLmVuZCAhPT0g
Z2V0U2VyaWFsaXplZFNlbGVjdGlvbigpLmVuZCk7CiAgICAgcmV0dXJuIHBvc2l0aW9uczsKIH0K
IApAQCAtNjgsNyArNTUsNyBAQCBmdW5jdGlvbiBmb2xkKHN0cmluZykKICAgICAgICAgaWYgKGNo
YXIgPj0gMHgwNWQwKQogICAgICAgICAgICAgY2hhciAtPSAweDA1OGY7CiAgICAgICAgIGVsc2Ug
aWYgKGNoYXIgPT0gMTApIHsKLSAgICAgICAgICAgIHJlc3VsdCArPSAiXFxuIjsKKyAgICAgICAg
ICAgIHJlc3VsdCArPSJcXG4iOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhcik7CkBAIC05MSwxNzcgKzc4
LDE4MiBAQCBmdW5jdGlvbiBsb2dQb3NpdGlvbnMocG9zaXRpb25zKQogICAgIGxvZygiXSIpOwog
fQogCi1mdW5jdGlvbiBjaGVja1JldmVyc2VPcmRlcihpbnB1dFBvc2l0aW9ucywgaW5wdXRSZXZl
cnNlUG9zaXRpb25zKQorZnVuY3Rpb24gbG9nTWlzbWF0Y2hpbmdQb3NpdGlvbnMocG9zaXRpb25z
LCBjb21wYXJpc29uUG9zaXRpb25zKQogewotICAgIHZhciBwb3NpdGlvbnMgPSBpbnB1dFBvc2l0
aW9ucy5zbGljZSgpOwotICAgIHZhciByZXZlcnNlUG9zaXRpb25zID0gaW5wdXRSZXZlcnNlUG9z
aXRpb25zLnNsaWNlKCk7Ci0gICAgdmFyIG1pc21hdGNoID0gKHBvc2l0aW9ucy5sZW5ndGggIT0g
cmV2ZXJzZVBvc2l0aW9ucy5sZW5ndGgpOwotICAgIGlmIChtaXNtYXRjaCkKLSAgICAgICAgbG9n
KCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgdGhlIGxlbmd0aCBh
cmUgbm90IHRoZSBzYW1lICIgKyAgcG9zaXRpb25zLmxlbmd0aCArICIgdnMuICIgKyByZXZlcnNl
UG9zaXRpb25zLmxlbmd0aCArICJcbiIpOwotICAgIHdoaWxlICghbWlzbWF0Y2gpIHsKLSAgICAg
ICAgdmFyIHBvcyA9IHBvc2l0aW9ucy5wb3AoKTsKLSAgICAgICAgaWYgKCFwb3MpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgdmFyIHJldmVyc2VQb3MgPSByZXZlcnNlUG9zaXRpb25zLnNo
aWZ0KCk7Ci0gICAgICAgIGlmIChwb3Mubm9kZSAhPSByZXZlcnNlUG9zLm5vZGUpIHsKLSAgICAg
ICAgICAgIG1pc21hdGNoID0gdHJ1ZTsKLSAgICAgICAgICAgIGxvZygiV0FSTklORzogcG9zaXRp
b25zIHNob3VsZCBiZSB0aGUgcmV2ZXJzZSwgYnV0IG5vZGUgYXJlIG5vdCB0aGUgcmV2ZXJzZVxu
Iik7Ci0gICAgICAgIH0gCi0gICAgICAgIGlmIChwb3MuYmVnaW4gIT0gcmV2ZXJzZVBvcy5iZWdp
bikgewotICAgICAgICAgICAgbWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9nKCJXQVJO
SU5HOiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgYmVnaW4gYXJlIG5vdCAiICsg
cG9zLmJlZ2luICsgIiB2cy4gIiArIHJldmVyc2VQb3MuYmVnaW4gKyAiXG4iKTsKLSAgICAgICAg
fQotICAgICAgICBpZiAocG9zLmVuZCAhPSByZXZlcnNlUG9zLmVuZCkgewotICAgICAgICAgICAg
bWlzbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMgc2hv
dWxkIGJlIHRoZSBzYW1lLCBidXQgZW5kIGFyZSBub3QgIiArIHBvcy5lbmQgKyAiIHZzLiAiICsg
cmV2ZXJzZVBvcy5lbmQgKyAiXG4iKTsKLSAgICAgICAgfQorICAgIGlmIChwb3NpdGlvbnMubGVu
Z3RoICE9PSBjb21wYXJpc29uUG9zaXRpb25zLmxlbmd0aCkgeworICAgICAgICBsb2coIldBUk5J
Tkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCB0aGUgbGVuZ3RoIGFyZSBub3Qg
dGhlIHNhbWUgIiArICBwb3NpdGlvbnMubGVuZ3RoICsgIiB2cy4gIiArIHNhbWVQb3NpdGlvbnMu
bGVuZ3RoICsgIlxuIik7CisgICAgICAgIHJldHVybjsKICAgICB9Ci19CiAKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHBvc2l0aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgcG9zID0g
cG9zaXRpb25zW2ldOworICAgICAgICB2YXIgY29tcGFyaXNvbiA9IGNvbXBhcmlzb25Qb3NpdGlv
bnNbaV07CiAKLWZ1bmN0aW9uIGNoZWNrU2FtZU9yZGVyKGlucHV0UG9zaXRpb25zLCBpbnB1dFNh
bWVQb3NpdGlvbnMpCi17Ci0gICAgdmFyIHBvc2l0aW9ucyA9IGlucHV0UG9zaXRpb25zLnNsaWNl
KCk7Ci0gICAgdmFyIHNhbWVQb3NpdGlvbnMgPSBpbnB1dFNhbWVQb3NpdGlvbnMuc2xpY2UoKTsK
LSAgICB2YXIgbWlzbWF0Y2ggPSBwb3NpdGlvbnMubGVuZ3RoICE9IHNhbWVQb3NpdGlvbnMubGVu
Z3RoOwotICAgIGlmIChtaXNtYXRjaCkKLSAgICAgICAgbG9nKCJXQVJOSU5HOiBwb3NpdGlvbnMg
c2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgdGhlIGxlbmd0aCBhcmUgbm90IHRoZSBzYW1lICIgKyAg
cG9zaXRpb25zLmxlbmd0aCArICIgdnMuICIgKyBzYW1lUG9zaXRpb25zLmxlbmd0aCArICJcbiIp
OwotICAgIHdoaWxlICghbWlzbWF0Y2gpIHsKLSAgICAgICAgdmFyIHBvcyA9IHBvc2l0aW9ucy5w
b3AoKTsKLSAgICAgICAgaWYgKCFwb3MpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdmFy
IHNhbWVQb3MgPSBzYW1lUG9zaXRpb25zLnBvcCgpOwotICAgICAgICBpZiAocG9zLm5vZGUgIT0g
c2FtZVBvcy5ub2RlKSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7CisgICAgICAgIGlm
IChwb3Mubm9kZSAhPT0gY29tcGFyaXNvbi5ub2RlKQogICAgICAgICAgICAgbG9nKCJXQVJOSU5H
OiBwb3NpdGlvbnMgc2hvdWxkIGJlIHRoZSBzYW1lLCBidXQgbm9kZSBhcmUgbm90IHRoZSBzYW1l
XG4iKTsKLSAgICAgICAgfSAKLSAgICAgICAgaWYgKHBvcy5iZWdpbiAhPSBzYW1lUG9zLmJlZ2lu
KSB7Ci0gICAgICAgICAgICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldBUk5J
Tkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBiZWdpbiBhcmUgbm90IHRoZSBz
YW1lICIgKyBwb3MuYmVnaW4gKyAiIHZzLiAiICsgc2FtZVBvcy5iZWdpbiArICJcbiIpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmIChwb3MuZW5kICE9IHNhbWVQb3MuZW5kKSB7Ci0gICAgICAgICAg
ICBtaXNtYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBsb2coIldBUk5JTkc6IHBvc2l0aW9ucyBz
aG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5vdCB0aGUgc2FtZSAiICsgcG9zLmVuZCAr
ICIgdnMuICIgKyBzYW1lUG9zLmVuZCArICJcbiIpOwotICAgICAgICB9Ci0gICB9CisgICAgICAg
IGlmIChwb3MuYmVnaW4gIT09IGNvbXBhcmlzb24uYmVnaW4pCisgICAgICAgICAgICBsb2coIldB
Uk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBiZWdpbiBhcmUgbm90IHRo
ZSBzYW1lICIgKyBwb3MuYmVnaW4gKyAiIHZzLiAiICsgY29tcGFyaXNvbi5iZWdpbiArICJcbiIp
OworICAgICAgICBpZiAocG9zLmVuZCAhPT0gY29tcGFyaXNvbi5lbmQpCisgICAgICAgICAgICBs
b2coIldBUk5JTkc6IHBvc2l0aW9ucyBzaG91bGQgYmUgdGhlIHNhbWUsIGJ1dCBlbmQgYXJlIG5v
dCB0aGUgc2FtZSAiICsgcG9zLmVuZCArICIgdnMuICIgKyBjb21wYXJpc29uLmVuZCArICJcbiIp
OworICAgIH0KIH0KIAotCi1mdW5jdGlvbiBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCBkaXJlY3Rp
b24sIGdyYW51bGFyaXR5LCBvcHRpb24pCitmdW5jdGlvbiBleHRlbmRBbmRMb2dTZWxlY3Rpb24o
ZnVuY3Rpb25Ub0V4dGVuZFNlbGVjdGlvbiwgZGlyZWN0aW9uLCBncmFudWxhcml0eSkKIHsKLSAg
ICB2YXIgcG9zaXRpb25zOwotICAgIGlmIChvcHRpb24gPT0gMCkgewotICAgICAgICBwb3NpdGlv
bnMgPSBwb3NpdGlvbnNFeHRlbmRpbmdJbkRpcmVjdGlvbihzZWwsIGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHBvc2l0aW9ucyA9IHBvc2l0aW9uc0V4dGVu
ZGluZ0luRGlyZWN0aW9uRm9yRW5jbG9zaW5nQmxvY2soc2VsLCBkaXJlY3Rpb24sIGdyYW51bGFy
aXR5KTsKLSAgICB9CisgICAgdmFyIHBvc2l0aW9ucyA9IGZ1bmN0aW9uVG9FeHRlbmRTZWxlY3Rp
b24oZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiAgICAgbG9nUG9zaXRpb25zKHBvc2l0aW9ucyk7
CiAgICAgbG9nKCJcbiIpOwogICAgIHJldHVybiBwb3NpdGlvbnM7CiB9CiAKLWZ1bmN0aW9uIHRl
c3RFeHRlbmRpbmdTZWxlY3Rpb24odGVzdHMsIHNlbCwgZ3JhbnVsYXJpdHkpCitmdW5jdGlvbiBl
eHRlbmRBbmRMb2dTZWxlY3Rpb25XaXRoaW5CbG9jayhkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQog
ewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
dGVzdHNbaV0uc3R5bGUuZGlyZWN0aW9uID0gImx0ciI7Ci0gICAgICAgIGxvZygiVGVzdCAiICsg
KGkgKyAxKSArICIsIExUUjpcbiAgRXh0ZW5kaW5nIHJpZ2h0OiAiKTsKLSAgICAgICAgc2VsLnNl
dFBvc2l0aW9uKHRlc3RzW2ldLCAwKTsKLSAgICAgICAgdmFyIGx0clJpZ2h0UG9zID0gZXh0ZW5k
aW5nU2VsZWN0aW9uKHNlbCwgInJpZ2h0IiwgZ3JhbnVsYXJpdHksIDApOworICAgIHJldHVybiBl
eHRlbmRBbmRMb2dTZWxlY3Rpb24oZXh0ZW5kU2VsZWN0aW9uV2l0aGluQmxvY2ssIGRpcmVjdGlv
biwgZ3JhbnVsYXJpdHkpOworfQorCitmdW5jdGlvbiBleHRlbmRBbmRMb2dTZWxlY3Rpb25Ub0Vu
ZChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KQoreworICAgIHJldHVybiBleHRlbmRBbmRMb2dTZWxl
Y3Rpb24oZXh0ZW5kU2VsZWN0aW9uVG9FbmQsIGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworfQor
CitmdW5jdGlvbiBydW5TZWxlY3Rpb25UZXN0c1dpdGhHcmFudWxhcml0eSh0ZXN0Tm9kZXMsIGdy
YW51bGFyaXR5KQoreworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdE5vZGVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHZhciB0ZXN0Tm9kZSA9IHRlc3ROb2Rlc1tpXTsKKworICAgICAgICB0
ZXN0Tm9kZS5zdHlsZS5kaXJlY3Rpb24gPSAibHRyIjsKKyAgICAgICAgbG9nKCJUZXN0ICIgKyAo
aSArIDEpICsgIiwgTFRSOlxuIik7CisgICAgICAgIGxvZygiICBFeHRlbmRpbmcgcmlnaHQ6ICIp
OworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZSk7CisgICAgICAg
IHZhciBsdHJSaWdodFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJyaWdodCIsIGdy
YW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGxlZnQ6ICAiKTsKLSAgICAg
ICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRpbmdTZWxlY3Rpb24oc2VsLCAibGVmdCIsIGdyYW51
bGFyaXR5LCAwKTsKKyAgICAgICAgdmFyIGx0ckxlZnRQb3MgPSBleHRlbmRBbmRMb2dTZWxlY3Rp
b25Ub0VuZCgibGVmdCIsIGdyYW51bGFyaXR5KTsKIAogICAgICAgICBsb2coIiAgRXh0ZW5kaW5n
IGZvcndhcmQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24odGVzdHNbaV0sIDApOwotICAg
ICAgICB2YXIgbHRyRm9yd2FyZFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJmb3J3YXJk
IiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0
ZXN0Tm9kZSk7CisgICAgICAgIHZhciBsdHJGb3J3YXJkUG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0
aW9uVG9FbmQoImZvcndhcmQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgbG9nKCIgIEV4dGVu
ZGluZyBiYWNrd2FyZDogICIpOwotICAgICAgICB2YXIgbHRyQmFja3dhcmRQb3MgPSBleHRlbmRp
bmdTZWxlY3Rpb24oc2VsLCAiYmFja3dhcmQiLCBncmFudWxhcml0eSwgMCk7CisgICAgICAgIHZh
ciBsdHJCYWNrd2FyZFBvcyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJiYWNrd2FyZCIs
IGdyYW51bGFyaXR5KTsKIAotICAgICAgICB0ZXN0c1tpXS5zdHlsZS5kaXJlY3Rpb24gPSAicnRs
IjsKKyAgICAgICAgdGVzdE5vZGUuc3R5bGUuZGlyZWN0aW9uID0gInJ0bCI7CiAKLSAgICAgICAg
bG9nKCJUZXN0ICIgKyAoaSArIDEpICsgIiwgUlRMOlxuICBFeHRlbmRpbmcgbGVmdDogIik7Ci0g
ICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXSwgMCk7Ci0gICAgICAgIHZhciBydGxMZWZ0
UG9zID0gZXh0ZW5kaW5nU2VsZWN0aW9uKHNlbCwgImxlZnQiLCBncmFudWxhcml0eSwgMCk7Cisg
ICAgICAgIGxvZygiVGVzdCAiICsgKGkgKyAxKSArICIsIFJUTDpcbiIpOworICAgICAgICBsb2co
IiAgRXh0ZW5kaW5nIGxlZnQ6ICIpOworICAgICAgICBnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlv
bih0ZXN0Tm9kZSk7CisgICAgICAgIHZhciBydGxMZWZ0UG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0
aW9uVG9FbmQoImxlZnQiLCBncmFudWxhcml0eSk7CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGlu
ZyByaWdodDogICIpOwotICAgICAgICB2YXIgcnRsUmlnaHRQb3MgPSBleHRlbmRpbmdTZWxlY3Rp
b24oc2VsLCAicmlnaHQiLCBncmFudWxhcml0eSwgMCk7CisgICAgICAgIHZhciBydGxSaWdodFBv
cyA9IGV4dGVuZEFuZExvZ1NlbGVjdGlvblRvRW5kKCJyaWdodCIsIGdyYW51bGFyaXR5KTsKIAog
ICAgICAgICBsb2coIiAgRXh0ZW5kaW5nIGZvcndhcmQ6ICIpOwotICAgICAgICBzZWwuc2V0UG9z
aXRpb24odGVzdHNbaV0sIDApOwotICAgICAgICB2YXIgcnRsRm9yd2FyZFBvcyA9IGV4dGVuZGlu
Z1NlbGVjdGlvbihzZWwsICJmb3J3YXJkIiwgZ3JhbnVsYXJpdHksIDApOworICAgICAgICBnZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbih0ZXN0Tm9kZSk7CisgICAgICAgIHZhciBydGxGb3J3YXJk
UG9zID0gZXh0ZW5kQW5kTG9nU2VsZWN0aW9uVG9FbmQoImZvcndhcmQiLCBncmFudWxhcml0eSk7
CiAKICAgICAgICAgbG9nKCIgIEV4dGVuZGluZyBiYWNrd2FyZDogIik7Ci0gICAgICAgIHZhciBy
dGxCYWNrd2FyZFBvcyA9IGV4dGVuZGluZ1NlbGVjdGlvbihzZWwsICJiYWNrd2FyZCIsIGdyYW51
bGFyaXR5LCAwKTsKKyAgICAgICAgdmFyIHJ0bEJhY2t3YXJkUG9zID0gZXh0ZW5kQW5kTG9nU2Vs
ZWN0aW9uVG9FbmQoImJhY2t3YXJkIiwgZ3JhbnVsYXJpdHkpOwogCiAgICAgICAgIC8vIHZhbGlk
YXRpb25zCiAgICAgICAgIGxvZygiXG5cbiAgdmFsaWRhdGluZyBsdHJSaWdodCBhbmQgbHRyTGVm
dFxuIik7CiAgICAgICAgIGlmIChncmFudWxhcml0eSA9PSAiY2hhcmFjdGVyIikKLSAgICAgICAg
ICAgIGNoZWNrUmV2ZXJzZU9yZGVyKGx0clJpZ2h0UG9zLCBsdHJMZWZ0UG9zKTsKKyAgICAgICAg
ICAgIGxvZ01pc21hdGNoaW5nUG9zaXRpb25zKGx0clJpZ2h0UG9zLCBsdHJMZWZ0UG9zLnNsaWNl
KCkucmV2ZXJzZSgpKTsKICAgICAgICAgLy8gT3JkZXIgbWlnaHQgbm90IGJlIHJldmVyc2VkIGZv
ciBleHRlbmRpbmcgYnkgd29yZCBiZWNhdXNlIHRoZSAxLXBvaW50IHNoaWZ0IGJ5IHNwYWNlLgog
CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0clJpZ2h0IGFuZCBsdHJGb3J3YXJkXG4iKTsK
LSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyUmlnaHRQb3MsIGx0ckZvcndhcmRQb3MpOworICAg
ICAgICBsb2dNaXNtYXRjaGluZ1Bvc2l0aW9ucyhsdHJSaWdodFBvcywgbHRyRm9yd2FyZFBvcyk7
CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckZvcndhcmQgYW5kIHJ0bEZvcndhcmRcbiIp
OwotICAgICAgICBjaGVja1NhbWVPcmRlcihsdHJGb3J3YXJkUG9zLCBydGxGb3J3YXJkUG9zKTsK
KyAgICAgICAgbG9nTWlzbWF0Y2hpbmdQb3NpdGlvbnMobHRyRm9yd2FyZFBvcywgcnRsRm9yd2Fy
ZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckxlZnQgYW5kIGx0ckJhY2t3YXJk
XG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyTGVmdFBvcywgbHRyQmFja3dhcmRQb3Mp
OworICAgICAgICBsb2dNaXNtYXRjaGluZ1Bvc2l0aW9ucyhsdHJMZWZ0UG9zLCBsdHJCYWNrd2Fy
ZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckJhY2t3YXJkIGFuZCBydGxCYWNr
d2FyZFxuIik7Ci0gICAgICAgIGNoZWNrU2FtZU9yZGVyKGx0ckJhY2t3YXJkUG9zLCBydGxCYWNr
d2FyZFBvcyk7CisgICAgICAgIGxvZ01pc21hdGNoaW5nUG9zaXRpb25zKGx0ckJhY2t3YXJkUG9z
LCBydGxCYWNrd2FyZFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0clJpZ2h0IGFu
ZCBydGxMZWZ0XG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyUmlnaHRQb3MsIHJ0bExl
ZnRQb3MpOworICAgICAgICBsb2dNaXNtYXRjaGluZ1Bvc2l0aW9ucyhsdHJSaWdodFBvcywgcnRs
TGVmdFBvcyk7CiAgICAgICAgIGxvZygiICB2YWxpZGF0aW5nIGx0ckxlZnQgYW5kIHJ0bFJpZ2h0
XG4iKTsKLSAgICAgICAgY2hlY2tTYW1lT3JkZXIobHRyTGVmdFBvcywgcnRsUmlnaHRQb3MpOwor
ICAgICAgICBsb2dNaXNtYXRjaGluZ1Bvc2l0aW9ucyhsdHJMZWZ0UG9zLCBydGxSaWdodFBvcyk7
CiAgICAgICAgIGxvZygiXG5cbiIpOwogICAgIH0KIH0KIAotdmFyIGRhdGEgPSBbCi1bJ2NoYXIt
YW5kLXdvcmQnLCBudWxsLCAnXG5hYmMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7IHh5eiAmIzE0OTE7
JiMxNDkyOyYjMTQ5MzsgZGVmXG4nXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdcbiYjMTQ4
ODsmIzE0ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5MjsmIzE0OTM7IGRlZiAmIzE0OTQ7JiMx
NDk1OyYjMTQ5NjtcbiddLAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuJiMxNDg4OyYjMTQ4
OTsmIzE0OTA7ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDtcbidd
LAotWydjaGFyLWFuZC13b3JkJywgbnVsbCwgJ1xuYWJjIGVmZCBkYWJlYlxuJ10sCi1bJ2NoYXIt
YW5kLXdvcmQnLCBudWxsLCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+aXBz
dW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2NoYXItYW5kLXdvcmQnLCBudWxsLCAnTG9y
ZW0gPHNwYW4gIGRpcj0icnRsIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hh
ci1hbmQtd29yZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj5p
cHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnY2hhci1hbmQtd29yZCcsIG51bGwsICdM
b3JlbSA8c3BhbiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCddLAotWydl
bmNsb3NpbmctYmxvY2snLCBudWxsLCAnTG9yZW0gPGRpdiAgZGlyPSJydGwiPmlwc3VtIGRvbG9y
IHNpdDwvZGl2PiBhbWV0dCddLAotWydob21lLWVuZCcsIG51bGwsICdMb3JlbSA8c3BhbiAgc3R5
bGU9ImRpcmVjdGlvbjogbHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnXSwKLVsnaG9t
ZS1lbmQnLCBudWxsLCAnTG9yZW0gPHNwYW4gIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0g
ZG9sb3I8ZGl2ID4ganVzdCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0J10sCi1bJ2hvbWUt
ZW5kJywgbnVsbCwgJ0xvcmVtIDxzcGFuICBkaXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFu
PiBhbWV0J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJ0xvcmVtIDxkaXYgIGRpcj0ibHRyIj5pcHN1
bSBkb2xvciBzaXQ8L2Rpdj4gYW1ldCddLAotWydob21lLWVuZCcsIG51bGwsICdcbiBKdXN0XG4g
PHNwYW4+dGVzdGluZyDXqNenPC9zcGFuPlxuINeR15XXk9enXG4nXSwKLVsnaG9tZS1lbmQnLCBu
dWxsLCAnXG4gSnVzdFxuIDxzcGFuPnRlc3Rpbmcgd2hhdDwvc3Bhbj5cbiBldmVyXG4nXSwKLVsn
aG9tZS1lbmQnLCBudWxsLCAnY2FyIG1lYW5zICYjMTQ4ODsmIzE0ODk7JiMxNDkwOy4nXSwKLVsn
aG9tZS1lbmQnLCBudWxsLCAnJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4
ODsmIzE0ODk7JiMxNDkwOy4mI3gyMDJjOyddLAotWydob21lLWVuZCcsIG51bGwsICdoZSBzYWlk
ICImI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7
JiN4MjAyYzsuIiddLAotWydob21lLWVuZCcsIG51bGwsICcmIzE0OTQ7JiMxNDk1OyYjMTQ5Njsg
JiMxNDk3OyYjMTQ5ODsmIzE0OTk7ICYjMTUwMDsmIzE1MDE7JiMxNTAyOyBcJyYjeDIwMmE7aGUg
c2FpZCAiJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYjMTQ4ODsmIzE0ODk7JiMx
NDkwOyYjeDIwMmM7IiYjeDIwMmM7XCc/J10sCi1bJ2hvbWUtZW5kJywgbnVsbCwgJyYjMTQ4ODsm
IzE0ODk7JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJyIC8+ZWRmICYjMTQ5NDsm
IzE0OTU7JiMxNDk2OyBhYnJlYmcnXSwKLVsnaG9tZS1lbmQnLCAnbGluZS1icmVhazpiZWZvcmUt
d2hpdGUtc3BhY2U7IHdpZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVm
ZyBhYmNkZWZnIGFiY2RlZmcgJ10sCi1bJ2hvbWUtZW5kJywgJ2xpbmUtYnJlYWs6YWZ0ZXItd2hp
dGUtc3BhY2U7IHdpZHRoOjVlbScsICdhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhIGFiY2RlZmcg
YWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBh
YmNkZWZnIGFiY2RlZmcgJ10KLV07Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3ROb2RlcyhuYW1lKSB7
Ci0gICAgdmFyIG5vZGVzID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIGlmIChuYW1lICYmIGRhdGFbaV1bMF0gIT0gbmFtZSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB2YXIgc3R5bGUgPSBkYXRhW2ldWzFdOwotICAgICAg
ICB2YXIgdGV4dCA9IGRhdGFbaV1bMl07Ci0gICAgICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgZGl2LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7Ci0g
ICAgICAgIGlmIChzdHlsZSkKLSAgICAgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywg
c3R5bGUpOwotICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dDsKLSAgICAgICAgZG9jdW1lbnQu
Ym9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScp
KTsKLSAgICAgICAgbm9kZXMucHVzaChkaXYpOworZnVuY3Rpb24gZ2V0VGVzdE5vZGVDb250YWlu
ZXIoKQoreworICAgIHZhciB0ZXN0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0cyIp
OworICAgIGlmICghdGVzdHMpIHsKKyAgICAgICAgdGVzdHMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGVzdHMuaWQgPSAidGVzdHMiOworICAgICAgICBkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZSh0ZXN0cywgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNv
bGUiKSk7CiAgICAgfQorICAgIHJldHVybiB0ZXN0czsKK30KIAotICAgIHdpbmRvdy5vbmxvYWQg
PSBmdW5jdGlvbigpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7
IGkrKykKLSAgICAgICAgICAgIG5vZGVzW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZXNb
aV0pOwotICAgIH0KK2Z1bmN0aW9uIGNyZWF0ZU5vZGUoY29udGVudCwgc3R5bGUpCit7CisgICAg
dmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICBub2RlLmlubmVy
SFRNTCA9IGNvbnRlbnQ7CisgICAgbm9kZS5jb250ZW50RWRpdGFibGUgPSB0cnVlOworICAgIGlm
IChzdHlsZSkKKyAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgc3R5bGUpOworICAg
IGdldFRlc3ROb2RlQ29udGFpbmVyKCkuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgcmV0dXJuIG5v
ZGU7Cit9CiAKLSAgICByZXR1cm4gbm9kZXM7CitmdW5jdGlvbiBjcmVhdGVDaGFyQW5kV29yZE5v
ZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAgICBjcmVhdGVOb2RlKCdcbmFiYyAmIzE0ODg7
JiMxNDg5OyYjMTQ5MDsgeHl6ICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyBkZWZcbicpLAorICAgICAg
ICBjcmVhdGVOb2RlKCdcbiYjMTQ4ODsmIzE0ODk7JiMxNDkwOyB4eXogJiMxNDkxOyYjMTQ5Mjsm
IzE0OTM7IGRlZiAmIzE0OTQ7JiMxNDk1OyYjMTQ5NjtcbicpLAorICAgICAgICBjcmVhdGVOb2Rl
KCdcbiYjMTQ4ODsmIzE0ODk7JiMxNDkwOyAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYj
MTQ4OTsmIzE0OTA7XG4nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnXG5hYmMgZWZkIGRhYmViXG4n
KSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogcnRs
Ij5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnTG9y
ZW0gPHNwYW4gZGlyPSJydGwiPmlwc3VtIGRvbG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAg
ICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPmlwc3VtIGRv
bG9yIHNpdDwvc3Bhbj4gYW1ldCcpLAorICAgICAgICBjcmVhdGVOb2RlKCdMb3JlbSA8c3BhbiBk
aXI9Imx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JykKKyAgICBdOwogfQogCitmdW5j
dGlvbiBjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkKK3sKKyAgICByZXR1cm4gWworICAgICAg
ICBjcmVhdGVOb2RlKCdMb3JlbSA8ZGl2ICBkaXI9InJ0bCI+aXBzdW0gZG9sb3Igc2l0PC9kaXY+
IGFtZXR0JykKKyAgICBdOworfQorCitmdW5jdGlvbiBjcmVhdGVIb21lRW5kTm9kZXMoKQorewor
ICAgIHJldHVybiBbCisgICAgICAgIGNyZWF0ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJl
Y3Rpb246IGx0ciI+aXBzdW0gZG9sb3Igc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0
ZU5vZGUoJ0xvcmVtIDxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+aXBzdW0gZG9sb3I8ZGl2
ID4ganVzdCBhIHRlc3Q8L2Rpdj4gc2l0PC9zcGFuPiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5v
ZGUoJ0xvcmVtIDxzcGFuIGRpcj0ibHRyIj5pcHN1bSBkb2xvciBzaXQ8L3NwYW4+IGFtZXQnKSwK
KyAgICAgICAgY3JlYXRlTm9kZSgnTG9yZW0gPGRpdiAgZGlyPSJsdHIiPmlwc3VtIGRvbG9yIHNp
dDwvZGl2PiBhbWV0JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ1xuIEp1c3RcbiA8c3Bhbj50ZXN0
aW5nINeo16c8L3NwYW4+XG4g15HXldeT16dcbicpLAorICAgICAgICBjcmVhdGVOb2RlKCdcbiBK
dXN0XG4gPHNwYW4+dGVzdGluZyB3aGF0PC9zcGFuPlxuIGV2ZXJcbicpLAorICAgICAgICBjcmVh
dGVOb2RlKCdjYXIgbWVhbnMgJiMxNDg4OyYjMTQ4OTsmIzE0OTA7LicpLAorICAgICAgICBjcmVh
dGVOb2RlKCcmI3gyMDJCO2NhciAmIzE0OTE7JiMxNDkyOyYjMTQ5MzsgJiMxNDg4OyYjMTQ4OTsm
IzE0OTA7LiYjeDIwMmM7JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJ2hlIHNhaWQgIiYjeDIwMkI7
Y2FyICYjMTQ5MTsmIzE0OTI7JiMxNDkzOyAmIzE0ODg7JiMxNDg5OyYjMTQ5MDsmI3gyMDJjOy4i
JyksCisgICAgICAgIGNyZWF0ZU5vZGUoJyYjMTQ5NDsmIzE0OTU7JiMxNDk2OyAmIzE0OTc7JiMx
NDk4OyYjMTQ5OTsgJiMxNTAwOyYjMTUwMTsmIzE1MDI7IFwnJiN4MjAyYTtoZSBzYWlkICcgKwor
ICAgICAgICAgICAgICAgICAgICciJiN4MjAyQjtjYXIgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7ICYj
MTQ4ODsmIzE0ODk7JiMxNDkwOyYjeDIwMmM7IiYjeDIwMmM7XCc/JyksCisgICAgICAgIGNyZWF0
ZU5vZGUoJyYjMTQ4ODsmIzE0ODk7JiMxNDkwOyBhYmMgJiMxNDkxOyYjMTQ5MjsmIzE0OTM7PGJy
IC8+ZWRmICYjMTQ5NDsmIzE0OTU7JiMxNDk2OyBhYnJlYmcnKSwKKyAgICAgICAgY3JlYXRlTm9k
ZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnICcsCisg
ICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YmVmb3JlLXdoaXRlLXNwYWNlOyB3aWR0aDo1
ZW0nKSwKKyAgICAgICAgY3JlYXRlTm9kZSgnYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYSBhYmNk
ZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2RlZmcgYWJjZGVmZyBhYmNkZWZnIGFiY2Rl
ZmcgYWJjZGVmZyBhYmNkZWZnICcsCisgICAgICAgICAgICAgICAgICAgJ2xpbmUtYnJlYWs6YWZ0
ZXItd2hpdGUtc3BhY2U7IHdpZHRoOjVlbScpCisgICAgXTsKK30KKworZnVuY3Rpb24gY3JlYXRl
QWxsTm9kZXMoKQoreworICAgIHJldHVybiBjcmVhdGVDaGFyQW5kV29yZE5vZGVzKCkuY29uY2F0
KAorICAgICAgICAgICBjcmVhdGVFbmNsb3NpbmdCbG9ja05vZGVzKCkpLmNvbmNhdCgKKyAgICAg
ICAgICAgY3JlYXRlSG9tZUVuZE5vZGVzKCkpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgdmFyIG9yaWdpbmFsT25sb2FkID0gd2luZG93Lm9ubG9hZDsKKyAg
ICB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGlmIChvcmlnaW5hbE9ubG9h
ZCkKKyAgICAgICAgICAgIG9yaWdpbmFsT25sb2FkKCk7CisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChn
ZXRUZXN0Tm9kZUNvbnRhaW5lcigpKTsKKyAgICB9OworfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>