<?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>19079</bug_id>
          
          <creation_ts>2008-05-15 10:19:20 -0700</creation_ts>
          <short_desc>Send the submissions character encoding in hidden _charset_ field</short_desc>
          <delta_ts>2011-11-07 00:10:35 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Roger Peters">roger.myjunk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>code.vineet</cc>
    
    <cc>darin</cc>
    
    <cc>ian</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>roger.myjunk</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80514</commentid>
    <comment_count>0</comment_count>
    <who name="Roger Peters">roger.myjunk</who>
    <bug_when>2008-05-15 10:19:20 -0700</bug_when>
    <thetext>Most browsers (at least the newest IE, Opera, and Firefox) will send the character encoding that a form was submitted in in a hidden _charset_ field if it exists. It would be useful if webkit also used this, since it seems to be the easiest way to detect the submission character encoding.

Just for reference, the Mozilla bug report about this is at https://bugzilla.mozilla.org/show_bug.cgi?id=18643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80600</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2008-05-15 20:57:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/5940816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491631</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-27 09:05:14 -0700</bug_when>
    <thetext>There hasn&apos;t been much movement on this bug, but this seems like an important feature to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493785</commentid>
    <comment_count>3</comment_count>
      <attachid>113138</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-01 00:33:38 -0700</bug_when>
    <thetext>Created attachment 113138
proposed patch

This initial patch will enable to send the character encoding that a form was submitted in a hidden _charset_ field if it exists.
Please let me know your review comments on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494435</commentid>
    <comment_count>4</comment_count>
      <attachid>113138</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-11-01 22:15:20 -0700</bug_when>
    <thetext>Comment on attachment 113138
proposed patch

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

&gt; Source/WebCore/loader/FormSubmission.cpp:188
&gt; +            if (equalIgnoringCase(input-&gt;name(), &quot;_charset_&quot;) &amp;&amp; input-&gt;isInputTypeHidden())
&gt; +                    input-&gt;setValueForUser(domFormData-&gt;encoding().name());

* Wrong indentation
* According to the specification, we should set the character encoding only if the hidden input has no value attribute.
* I don&apos;t think we should update HTMLInputELement::value.  How does IE work?
* It&apos;s dangerous to use setValueForUser(), which dispatches an event and execute JavaScript code, which might update the associated element list.

&gt; LayoutTests/ChangeLog:14
&gt; +        * http/tests/misc/char_encoding_in_hidden_charset_field_01-expected.txt: Added.
&gt; +        * http/tests/misc/char_encoding_in_hidden_charset_field_01.html: Added. For Default Encoding.

We usually use &apos;-&apos; to concatenate words, not &apos;_&apos;.

Please assign meaningful names instead of numbers.  e.g. char_encoding_in_hidden_charset_field_02.html should be char-encoding-in-hidden-charset-field-with-accept-charset.html

We should have tests for Chinese/Japanese encodings such as Big5, Shift_JIS, EUC-JP, ISO-2022-JP.  This feature is important in these countries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494552</commentid>
    <comment_count>5</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-02 04:41:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 113138 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113138&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FormSubmission.cpp:188
&gt; &gt; +            if (equalIgnoringCase(input-&gt;name(), &quot;_charset_&quot;) &amp;&amp; input-&gt;isInputTypeHidden())
&gt; &gt; +                    input-&gt;setValueForUser(domFormData-&gt;encoding().name());
&gt; 

&gt; * I don&apos;t think we should update HTMLInputELement::value.  How does IE work?
Even IE also modifies the value of input field.

&gt; * It&apos;s dangerous to use setValueForUser(), which dispatches an event and execute JavaScript code, which might update the associated element list.
&gt; * According to the specification, we should set the character encoding only if the hidden input has no value attribute.
I tested with IE, Mozilla and Opera behavior, but none of them respect &quot;value&quot; if inputType is hidden, they all sets respective encoding types here.
Please let me know if we want different behavior from these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494577</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-11-02 06:23:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 113138 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113138&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/FormSubmission.cpp:188
&gt; &gt; &gt; +            if (equalIgnoringCase(input-&gt;name(), &quot;_charset_&quot;) &amp;&amp; input-&gt;isInputTypeHidden())
&gt; &gt; &gt; +                    input-&gt;setValueForUser(domFormData-&gt;encoding().name());
&gt; &gt; 
&gt; 
&gt; &gt; * I don&apos;t think we should update HTMLInputELement::value.  How does IE work?
&gt; Even IE also modifies the value of input field.

Please investigate the behavior of other browsers correctly.
I have just checked the behavior of IE9, Firefox 7, and Opera 11.51. All of them didn&apos;t care about the existence of value attribute, and didn&apos;t update HTMLInputElement::value.
We can check this behavior by a simple HTML like the following, and inspect the form.

&lt;form action=&quot;...&quot; target=&quot;_blank&quot;&gt;
&lt;input type=hidden name=_charset_ value=foo&gt;
&lt;input type=submit&gt;
&lt;/form&gt;


&gt; &gt; * According to the specification, we should set the character encoding only if the hidden input has no value attribute.
&gt; I tested with IE, Mozilla and Opera behavior, but none of them respect &quot;value&quot; if inputType is hidden, they all sets respective encoding types here.
&gt; Please let me know if we want different behavior from these.

We should update the specification first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495177</commentid>
    <comment_count>7</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-02 20:37:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
 
&gt; &gt; &gt; * I don&apos;t think we should update HTMLInputELement::value.  How does IE work?
&gt; &gt; Even IE also modifies the value of input field.
&gt; &gt; I tested with IE, Mozilla and Opera behavior, but none of them respect &quot;value&quot; if inputType is hidden, they all sets respective encoding types here.
Please let me know if we want different behavior from these.

&gt; Please investigate the behavior of other browsers correctly.
&gt; I have just checked the behavior of IE9, Firefox 7, and Opera 11.51. All of them didn&apos;t care about the existence of value attribute, and didn&apos;t update HTMLInputElement::value.

Sorry my mistake :( I meant &quot;IE also modifies the value of input field&quot; as even if you have given value attribute it doesn&apos;t respect it and send current encoding type.

&gt; We should update the specification first.

So shall I file a bug on w3c if you haven&apos;t already..?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495229</commentid>
    <comment_count>8</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-03 00:08:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I have just checked the behavior of IE9, Firefox 7, and Opera 11.51. All of them didn&apos;t care about the existence of value attribute, and didn&apos;t update HTMLInputElement::value.
&gt; We can check this behavior by a simple HTML like the following, and inspect the form.
&gt; We should update the specification first.

Hello Ian,

Can you please give us feedback on this, because even If value attribute is given  IE9, Firefox 7, and Opera 11.51 none of these respect it. Is it that we should modify spec? or browser behavior?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496130</commentid>
    <comment_count>9</comment_count>
      <attachid>113639</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-04 02:42:08 -0700</bug_when>
    <thetext>Created attachment 113639
Updated Patch

Updated patch

&gt; * According to the specification, we should set the character encoding only if the hidden input has no value attribute.
As the behavior of IE9, Firefox 7, and Opera 11.51. All of them didn&apos;t care about the existence of value attribute I think we can also have same behavior. 
// Let me know if we want different behavior.

&gt; * I don&apos;t think we should update HTMLInputELement::value.  How does IE work?
&gt; * It&apos;s dangerous to use setValueForUser(), which dispatches an event and execute JavaScript code, which might update the associated element list.

Done : As none of the browser changes the HTMLInputELement::value. Thanks for pointing out!
 
&gt; &gt; LayoutTests/ChangeLog:14
&gt; &gt; +        * http/tests/misc/char_encoding_in_hidden_charset_field_01-expected.txt: Added.
&gt; &gt; +        * http/tests/misc/char_encoding_in_hidden_charset_field_01.html: Added. For Default Encoding.
&gt; 
&gt; We usually use &apos;-&apos; to concatenate words, not &apos;_&apos;.
Done:

&gt; We should have tests for Chinese/Japanese encodings such as Big5, Shift_JIS, EUC-JP, ISO-2022-JP.  This feature is important in these countries.
Done: Added few more test cases for encodings Big5, Shift_JIS, EUC-JP, ISO-2022-JP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496227</commentid>
    <comment_count>10</comment_count>
      <attachid>113639</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-04 09:36:38 -0700</bug_when>
    <thetext>Comment on attachment 113639
Updated Patch

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

Seems fine, but implementation is not quite right.

&gt; Source/WebCore/html/InputType.cpp:178
&gt; +    if (equalIgnoringCase(element()-&gt;name(), &quot;_charset_&quot;) &amp;&amp; element()-&gt;isInputTypeHidden())

This is the wrong way to code something that’s type specific in InputType objects. Instead, HiddenInputType should override the appendFormData function.

The InputType objects were created to avoid having type-specific code mixed in with type-independent code, making use of isXXX checks like the one here.

&gt; Source/WebCore/html/InputType.cpp:179
&gt; +        encoding.appendData(element()-&gt;name(), String(encoding.encoding().name()));

Why is an explicit String() needed here? Did you try compiling without it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496230</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-04 09:37:46 -0700</bug_when>
    <thetext>HiddenInputType::appendFormData should check for the special case, and if it’s not the special case call through to InputType::appendFormData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496365</commentid>
    <comment_count>12</comment_count>
      <attachid>113692</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-04 11:51:53 -0700</bug_when>
    <thetext>Created attachment 113692
Updated patch as per review comments

Thanks Darin for review.

(In reply to comment #10)
&gt; &gt; Source/WebCore/html/InputType.cpp:178
&gt; &gt; +    if (equalIgnoringCase(element()-&gt;name(), &quot;_charset_&quot;) &amp;&amp; element()-&gt;isInputTypeHidden())
&gt; 
&gt; This is the wrong way to code something that’s type specific in InputType objects. Instead, HiddenInputType should override the appendFormData function.
&gt; 
&gt; The InputType objects were created to avoid having type-specific code mixed in with type-independent code, making use of isXXX checks like the one here.

Done.
 
&gt; &gt; Source/WebCore/html/InputType.cpp:179
&gt; &gt; +        encoding.appendData(element()-&gt;name(), String(encoding.encoding().name()));
&gt; Why is an explicit String() needed here? Did you try compiling without it?

Yes I tried compiling it without String but it gives compile error as encoding().name() returns char*.

&gt; HiddenInputType::appendFormData should check for the special case, and if it’s not the special case call through to InputType::appendFormData.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496371</commentid>
    <comment_count>13</comment_count>
      <attachid>113692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-04 11:58:27 -0700</bug_when>
    <thetext>Comment on attachment 113692
Updated patch as per review comments

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

&gt; Source/WebCore/html/HiddenInputType.h:38
&gt; +class FormDataList;

This forward declaration is not needed. Not sure why you added it.

&gt; Source/WebCore/html/HiddenInputType.h:55
&gt; +    virtual bool appendFormData(FormDataList&amp; encoding, bool isMultipartForm) const;

Here in the header, the argument name &quot;encoding&quot; is neither helpful nor desirable. Please omit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496379</commentid>
    <comment_count>14</comment_count>
      <attachid>113696</attachid>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2011-11-04 12:09:35 -0700</bug_when>
    <thetext>Created attachment 113696
Updated patch as per review comments

Sorry for previous patch :(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496395</commentid>
    <comment_count>15</comment_count>
      <attachid>113696</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 12:53:37 -0700</bug_when>
    <thetext>Comment on attachment 113696
Updated patch as per review comments

Clearing flags on attachment: 113696

Committed r99310: &lt;http://trac.webkit.org/changeset/99310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>496396</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-04 12:53:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497003</commentid>
    <comment_count>17</comment_count>
      <attachid>113696</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-11-07 00:10:35 -0800</bug_when>
    <thetext>Comment on attachment 113696
Updated patch as per review comments

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

&gt; LayoutTests/http/tests/misc/char-encoding-in-hidden-charset-field-with-Big5.html:11
&gt; +&lt;form id=&quot;testForm&quot; action=&quot;resources/char-encoding-in-hidden-charset-field.php&quot; method=&quot;post&quot; accept-charset=&quot;Big5&quot;&gt;

Specifying accept-charset is not an interesting test.
I wanted to test that _charset_ had an auto-detected encoding. But it&apos;s hard because encoding detector is off by default.

I checked the behavior of _charset_ in Chromium browser, and confirmed it had an auto-detected encoding correctly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113138</attachid>
            <date>2011-11-01 00:33:38 -0700</date>
            <delta_ts>2011-11-04 02:42:08 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>vineet_form_enctype_charset_002.diff</filename>
            <type>text/plain</type>
            <size>15519</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTM4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMTEtMDEgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZW5k
IHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBm
aWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Bl
YyByZWZlcmVuY2UgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2F0
dHItZmUtbmFtZS1jaGFyc2V0CisgICAgICAgIElmIF9jaGFyc2V0XyB1c2VkIGFzIHRoZSBuYW1l
IG9mIGEgaGlkZGVuIGNvbnRyb2wgaXQgc2hvdWxkIHNlbmQgY2hhcmFjdGVyIGVuY29kaW5nCisg
ICAgICAgIGFzIHZhbHVlIHdoaWxlIHN1Ym1pc3Npb25zLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wMS5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5f
Y2hhcnNldF9maWVsZF8wMi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hh
cl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wMy5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8w
NC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9o
aWRkZW5fY2hhcnNldF9maWVsZF8wNS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21p
c2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNi5odG1sCisKKyAgICAg
ICAgKiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybVN1
Ym1pc3Npb246OmNyZWF0ZSk6CisKIDIwMTEtMTAtMzAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBUaGUgR0Mgc2hvdWxkIGJlIHBhcmFsbGVsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDk4OTM2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgwLDE2ICsxODAsMjIgQEAgUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gRm9ybVN1Ym1p
c3NpbwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtLT5hc3NvY2lhdGVkRWxlbWVu
dHMoKS5zaXplKCk7ICsraSkgewogICAgICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRy
b2wgPSBmb3JtLT5hc3NvY2lhdGVkRWxlbWVudHMoKVtpXTsKICAgICAgICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNvbnRyb2wpOwotICAgICAgICBpZiAoIWVsZW1lbnQt
PmRpc2FibGVkKCkpCi0gICAgICAgICAgICBjb250cm9sLT5hcHBlbmRGb3JtRGF0YSgqZG9tRm9y
bURhdGEsIGlzTXVsdGlQYXJ0Rm9ybSk7CisKICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc0xvY2Fs
TmFtZShpbnB1dFRhZykpIHsKICAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGNvbnRyb2wpOworCisgICAgICAgICAgICBp
ZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaW5wdXQtPm5hbWUoKSwgIl9jaGFyc2V0XyIpICYmIGlucHV0
LT5pc0lucHV0VHlwZUhpZGRlbigpKQorICAgICAgICAgICAgICAgICAgICBpbnB1dC0+c2V0VmFs
dWVGb3JVc2VyKGRvbUZvcm1EYXRhLT5lbmNvZGluZygpLm5hbWUoKSk7CisKICAgICAgICAgICAg
IGlmIChpbnB1dC0+aXNUZXh0RmllbGQoKSkgewogICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXMu
YXBwZW5kKHBhaXI8U3RyaW5nLCBTdHJpbmc+KGlucHV0LT5uYW1lKCkuc3RyaW5nKCksIGlucHV0
LT52YWx1ZSgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKGlucHV0LT5pc1NlYXJjaEZpZWxkKCkp
CiAgICAgICAgICAgICAgICAgICAgIGlucHV0LT5hZGRTZWFyY2hSZXN1bHQoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmICghZWxlbWVudC0+ZGlzYWJsZWQoKSkKKyAg
ICAgICAgICAgIGNvbnRyb2wtPmFwcGVuZEZvcm1EYXRhKCpkb21Gb3JtRGF0YSwgaXNNdWx0aVBh
cnRGb3JtKTsKICAgICB9CiAKICAgICBSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTg5MzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0xMS0wMSAgVmluZWV0IENoYXVkaGFyeSAgPHZpbmVl
dC5jaGF1ZGhhcnlAbW90b3JvbGEuY29tPgorCisgICAgICAgIFNlbmQgdGhlIHN1Ym1pc3Npb25z
IGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVjIHJlZmVyZW5jZSBodHRw
Oi8vZGV2LnczLm9yZy9odG1sNS9zcGVjL092ZXJ2aWV3Lmh0bWwjYXR0ci1mZS1uYW1lLWNoYXJz
ZXQKKyAgICAgICAgSWYgX2NoYXJzZXRfIHVzZWQgYXMgdGhlIG5hbWUgb2YgYSBoaWRkZW4gY29u
dHJvbCBpdCBzaG91bGQgc2VuZCBjaGFyYWN0ZXIgZW5jb2RpbmcKKyAgICAgICAgYXMgdmFsdWUg
d2hpbGUgc3VibWlzc2lvbnMuCisgICAgICAgIEFkZGVkIHRlc3QgY2FzZXMgdG8gY2hlY2sgdGhp
cyBiZWhhdmlvci4KKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2lu
X2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDEu
aHRtbDogQWRkZWQuIEZvciBEZWZhdWx0IEVuY29kaW5nLgorICAgICAgICAqIGh0dHAvdGVzdHMv
bWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzAyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlk
ZGVuX2NoYXJzZXRfZmllbGRfMDIuaHRtbDogQWRkZWQuIEZvciB0d28gaW5wdXQgZmllbGRzLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0
X2ZpZWxkXzAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNj
L2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDMuaHRtbDogQWRkZWQuIElm
IG5vIGhpZGRlbiBpbnB1dCBmaWVsZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhcl9l
bmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0
X2ZpZWxkXzA0Lmh0bWw6IEFkZGVkLiBJZiBpbnB1dCB0eXBlIGlzIHRleHQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNv
ZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNS5odG1sOiBBZGRlZC4gRm9yIFBPU1QgbWV0
aG9kLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9j
aGFyc2V0X2ZpZWxkXzA2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDYuaHRtbDogQWRk
ZWQuIEZvciBHRVQgbWV0aG9kLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMv
Y2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZC5waHA6IEFkZGVkLgorCiAyMDEx
LTEwLTMxICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICBV
bnJldmlld2VkIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
aGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzAxLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9o
aWRkZW5fY2hhcnNldF9maWVsZF8wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9m
aWVsZF8wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBp
cyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3
OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBf
Y2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPUlTTy04ODU5LTEKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0
X2ZpZWxkXzAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDEuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRl
bl9jaGFyc2V0X2ZpZWxkXzAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBl
bmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+CitUaGlzIHNob3Vs
ZCBzdWJtaXQgX2NoYXJzZXRfPWlzbzg1NTktMS4gIE5vdGUgdGhhdCB0aGlzIF9jaGFyc2V0XyBp
bnB1dCBoYXMgYSB2YWx1ZSBiZWZvcmUgaXQgc3VibWl0cywgd2hpY2ggaXMgb3ZlcndyaXR0ZW4u
IElFNiBzdWJtaXRzIHdpbmRvd3MxMjUyLCBiZWNhdXNlIGFsbCBwYWdlcyBhcmUgZXZpZGVudGx5
IFVuaWNvZGUgaW4gSUU2LiAgVGhlIHBvaW50IGlzIHRoYXQgaXQgc3VibWl0cyB0aGUgY2hhcnNl
dCB3ZSdyZSB1c2luZywgbm90IHdoYXQgZXhhY3RseSBpdCBzdWJtaXRzLjwvcD4KKworPGZvcm0g
bmFtZT0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVu
X2NoYXJzZXRfZmllbGQucGhwIiBtZXRob2Q9InBvc3QiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5h
bWU9Il9jaGFyc2V0XyIgdmFsdWU9IlRoaXMgdmFsdWUgc2hvdWxkIGNoYW5nZSI+Cis8aW5wdXQg
dHlwZT1zdWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZG9jdW1lbnQudGVz
dEZvcm0uc3VibWl0KCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0
X2ZpZWxkXzAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9l
bmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hh
cmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2No
YXJzZXRfPVVURi04Jl9jaGFyc2V0Xz1VVEYtOApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9o
aWRkZW5fY2hhcnNldF9maWVsZF8wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDIu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlz
IGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5
LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBf
Y2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlzIHNob3VsZCBzdWJtaXQgdHdvIF9jaGFyc2V0
Xz1VVEYtOC4gIElFNiBzdWJtaXRzIHdpbmRvd3MxMjUyLjwvcD4KKworPGZvcm0gaWQ9InRlc3RG
b3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2Zp
ZWxkLnBocCIgbWV0aG9kPSJwb3N0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiPgorPGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2No
YXJzZXRfIj4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9y
bS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVs
ZF8wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2Rp
bmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3Rl
ciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IE5vIF9jaGFy
c2V0XyBmaWVsZApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2Rp
bmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVs
ZF8wMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDMuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkw
Nzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJt
aXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8
L3A+Cis8cD5UaGlzIHNob3VsZCBzdWJtaXQgbm90aGluZyBleGNlcHQgdGhlIGhlYWRlcjwvcD4K
KworPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyX2VuY29kaW5nX2lu
X2hpZGRlbl9jaGFyc2V0X2ZpZWxkLnBocCIgbWV0aG9kPSJwb3N0IiBhY2NlcHQtY2hhcnNldD0i
VVRGLTgiPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
Cit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5z
dWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8w
NC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2Rpbmdf
aW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBl
bmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1J
JTI3bSthK2xpdHRsZStpbnB1dCUyQytzaG9ydCthbmQrc3RvdXQKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzA0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5j
b2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0
X2ZpZWxkXzA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBp
biBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IF9j
aGFyc2V0Xz1JXCdtIGEgbGl0dGxlIGlucHV0LCBzaG9ydCBhbmQgc3RvdXQ8L3A+CisKKzxmb3Jt
IGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5f
Y2hhcnNldF9maWVsZC5waHAiIG1ldGhvZD0icG9zdCI+Cis8aW5wdXQgdHlwZT10ZXh0IG5hbWU9
Il9jaGFyc2V0XyIgdmFsdWU9IkknbSBhIGxpdHRsZSBpbnB1dCwgc2hvcnQgYW5kIHN0b3V0Ij4K
KzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIg
Zm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQo
KTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJf
ZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlk
ZGVuX2NoYXJzZXRfZmllbGRfMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGlu
ZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1VVEYtOApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVu
X2NoYXJzZXRfZmllbGRfMDUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2Rpbmdf
aW5faGlkZGVuX2NoYXJzZXRfZmllbGRfMDUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hh
cmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlz
IHNob3VsZCBzdWJtaXQgb25lIF9jaGFyc2V0Xz1VVEYtOCwgZm9yIHBvc3QgbWV0aG9kIGFuZCBl
bmN0eXBlIHRleHQvcGxhaW48L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNv
dXJjZXMvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZC5waHAiIG1ldGhvZD0i
cG9zdCIgZW5jdHlwZT0idGV4dC9wbGFpbiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KKzxpbnB1
dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9m
b3JtPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyX2VuY29kaW5n
X2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNl
dF9maWVsZF8wNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvY2hhcl9lbmNvZGluZ19pbl9oaWRkZW5fY2hhcnNldF9maWVsZF8wNi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0
aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmll
bGQuCisKK1BBU1NFRDogVVRGLTgKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
aGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzA2Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2No
YXJzZXRfZmllbGRfMDYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9jaGFyX2VuY29kaW5nX2luX2hpZGRlbl9jaGFyc2V0X2ZpZWxkXzA2Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBm
b3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2Vu
ZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRf
IGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9uZSBfY2hhcnNldF89VVRGLTg8
L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhcl9lbmNvZGlu
Z19pbl9oaWRkZW5fY2hhcnNldF9maWVsZC5waHAiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCI+Cis8
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4K
KzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmllbGQucGhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2hhcl9lbmNvZGluZ19pbl9o
aWRkZW5fY2hhcnNldF9maWVsZC5waHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvcmVzb3VyY2VzL2NoYXJfZW5jb2RpbmdfaW5faGlkZGVuX2NoYXJzZXRfZmll
bGQucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8P3BocAoraGVhZGVyKCJDb250
ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIpOworPz4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+
CitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGlu
IGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+CisKKzw/cGhwCitpZiAoJF9TRVJWRVJbJ1JF
UVVFU1RfTUVUSE9EJ10gPT0gJ1BPU1QnKSB7CiskZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCJw
aHA6Ly9pbnB1dCIpOworaWYgKCRkYXRhICE9ICIiKQorZWNobyAiPHA+UEFTU0VEOiAkZGF0YSA8
L3A+IjsKK2Vsc2UKK2VjaG8gIjxwPlBBU1NFRDogTm8gX2NoYXJzZXRfIGZpZWxkIDwvcD4iOwor
fQoraWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdHRVQnKSB7CiskZGF0YSA9IGh0
bWxlbnRpdGllcygkX0dFVFsnX2NoYXJzZXRfJ10pOworZWNobyAiPHA+UEFTU0VEOiAkZGF0YSA8
L3A+IjsKK30KKz8+CisKKzxzY3JpcHQ+CitpZih3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+CisKKzwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="111395"
          type_id="1"
          status="-"
          setter="tkent"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113639</attachid>
            <date>2011-11-04 02:42:08 -0700</date>
            <delta_ts>2011-11-04 11:51:53 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>send_charset.diff</filename>
            <type>text/plain</type>
            <size>23258</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MjcwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTEtMDQgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZW5k
IHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBm
aWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Bl
YyByZWZlcmVuY2UgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2F0
dHItZmUtbmFtZS1jaGFyc2V0CisgICAgICAgIElmIF9jaGFyc2V0XyB1c2VkIGFzIHRoZSBuYW1l
IG9mIGEgaGlkZGVuIGNvbnRyb2wgaXQgc2hvdWxkIHNlbmQgY2hhcmFjdGVyIGVuY29kaW5nCisg
ICAgICAgIGFzIHZhbHVlIHdoaWxlIHN1Ym1pc3Npb25zLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhp
ZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1K
UC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtU2hpZnRfSklTLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNo
YXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25lLWZp
ZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5odG1sCisKKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6IEZvciBfY2hhcnNldF8gc2VuZCB2YWx1ZSBhcyBy
ZXNwZWN0aXZlIGVuY29kaW5nVHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6YXBw
ZW5kRm9ybURhdGEpOgorCiAyMDExLTExLTA0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ01ha2UgYnVpbGQgZml4IGZvciAhRU5B
QkxFKFNRTF9EQVRBQkFTRSkuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZp
c2lvbiA5OTAzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSwxMCBAQCBib29sIElucHV0VHlwZTo6aXNGb3JtRGF0YUFw
cGVuZGFibGUoKSBjCiBib29sIElucHV0VHlwZTo6YXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0
JiBlbmNvZGluZywgYm9vbCkgY29uc3QKIHsKICAgICAvLyBBbHdheXMgc3VjY2Vzc2Z1bC4KLSAg
ICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQoKS0+bmFtZSgpLCBlbGVtZW50KCktPnZhbHVl
KCkpOworICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlbGVtZW50KCktPm5hbWUoKSwgIl9jaGFy
c2V0XyIpICYmIGVsZW1lbnQoKS0+aXNJbnB1dFR5cGVIaWRkZW4oKSkKKyAgICAgICAgZW5jb2Rp
bmcuYXBwZW5kRGF0YShlbGVtZW50KCktPm5hbWUoKSwgU3RyaW5nKGVuY29kaW5nLmVuY29kaW5n
KCkubmFtZSgpKSk7CisgICAgZWxzZQorICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1l
bnQoKS0+bmFtZSgpLCBlbGVtZW50KCktPnZhbHVlKCkpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5OTI3MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDExLTExLTA0ICBWaW5lZXQgQ2hhdWRoYXJ5
ICA8dmluZWV0LmNoYXVkaGFyeUBtb3Rvcm9sYS5jb20+CisKKyAgICAgICAgU2VuZCB0aGUgc3Vi
bWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWMgcmVmZXJl
bmNlIGh0dHA6Ly9kZXYudzMub3JnL2h0bWw1L3NwZWMvT3ZlcnZpZXcuaHRtbCNhdHRyLWZlLW5h
bWUtY2hhcnNldAorICAgICAgICBJZiBfY2hhcnNldF8gdXNlZCBhcyB0aGUgbmFtZSBvZiBhIGhp
ZGRlbiBjb250cm9sIGl0IHNob3VsZCBzZW5kIGNoYXJhY3RlciBlbmNvZGluZworICAgICAgICBh
cyB2YWx1ZSB3aGlsZSBzdWJtaXNzaW9ucy4KKyAgICAgICAgQWRkZWQgdGVzdCBjYXNlcyB0byBj
aGVjayB0aGlzIGJlaGF2aW9yLgorCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFy
c2V0LWZpZWxkLWRlZmF1bHQuaHRtbDogQWRkZWQuIEZvciBEZWZhdWx0IEVuY29kaW5nLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtQmlnNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
bWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1s
OiBBZGRlZC4gRm9yIEJpZzUgRW5jb2RpbmcuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1FVUMtSlAtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1KUC5odG1sOiBBZGRlZC4gRm9yIEVVQy1KUCBF
bmNvZGluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRk
ZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQt
ZmllbGQtd2l0aC1JU08tMjAyMi1KUC5odG1sOiBBZGRlZC4gRm9yIElTTy0yMDIyLUpQIEVuY29k
aW5nLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1j
aGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRfSklTLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQt
d2l0aC1TaGlmdF9KSVMuaHRtbDogQWRkZWQuIEZvciBTaGlmdF9KSVMgRW5jb2RpbmcuCisgICAg
ICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmll
bGQtd2l0aC1hY2NlcHQtY2hhcnNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgt
YWNjZXB0LWNoYXJzZXQuaHRtbDogQWRkZWQuIEZvciB0d28gaW5wdXQgZmllbGRzLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxk
LXdpdGgtZ2V0LW1ldGhvZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtZ2V0LW1l
dGhvZC5odG1sOiBBZGRlZC4gRm9yIEdFVCBtZXRob2QuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1maWVsZC5odG1sOiBBZGRlZC4g
Rm9yIG9uZSBpbnB1dCBmaWVsZHMuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdpdGgtdmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJz
ZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sOiBBZGRlZC4gSWYgaW5wdXQgdHlwZSBpcyB0ZXh0Lgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1m
aWVsZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFy
LWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5odG1sOiBBZGRlZC4gSWYgbm8gaGlkZGVu
IGlucHV0IGZpZWxkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHA6IEFkZGVkLgorCiAyMDExLTExLTA0
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCBza2lwIHNvbWUgZmFzdC92aWV3cG9ydCBmYWlsaW5nIHRlc3RzIG9uIEdUSyBhZnRl
ciByOTkxOTUuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC1kZWZhdWx0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLWRlZmF1bHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1Ro
aXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRk
ZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1JU08tODg1OS0xCkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC1kZWZhdWx0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3
OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1p
c3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwv
cD4KKzxwPgorVGhpcyBzaG91bGQgc3VibWl0IF9jaGFyc2V0Xz1pc284NTU5LTEuICBOb3RlIHRo
YXQgdGhpcyBfY2hhcnNldF8gaW5wdXQgaGFzIGEgdmFsdWUgYmVmb3JlIGl0IHN1Ym1pdHMsIHdo
aWNoIGlzIG92ZXJ3cml0dGVuLiBJRTYgc3VibWl0cyB3aW5kb3dzMTI1MiwgYmVjYXVzZSBhbGwg
cGFnZXMgYXJlIGV2aWRlbnRseSBVbmljb2RlIGluIElFNi4gIFRoZSBwb2ludCBpcyB0aGF0IGl0
IHN1Ym1pdHMgdGhlIGNoYXJzZXQgd2UncmUgdXNpbmcsIG5vdCB3aGF0IGV4YWN0bHkgaXQgc3Vi
bWl0cy48L3A+CisKKzxmb3JtIG5hbWU9InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFy
LWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocCIgbWV0aG9kPSJwb3N0Ij4KKzxp
bnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iIHZhbHVlPSJUaGlzIHZhbHVlIHNob3Vs
ZCBjaGFuZ2UiPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2RvY3VtZW50LnRlc3RGb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRl
bi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNl
dC1maWVsZC13aXRoLUJpZzUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBp
biBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1CaWc1CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC13aXRoLUJpZzUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJp
ZzUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFy
LWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1
ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhl
IHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVs
ZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBvbmUgX2NoYXJzZXRfPUJpZzU8L3A+CisK
Kzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIgYWNjZXB0LWNoYXJzZXQ9IkJp
ZzUiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlwZT1z
dWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7Cis8L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1FVUMtSlAtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29k
aW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucyBjaGFy
YWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKworUEFTU0VEOiBfY2hh
cnNldF89RVVDLUpQCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1KUC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1j
aGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13
aXRoLUVVQy1KUC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2Rpbmcg
aW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBv
bmUgX2NoYXJzZXRfPUVVQy1KUDwvcD4KKworPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rpb249InJl
c291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocCIgbWV0aG9k
PSJwb3N0IiBhY2NlcHQtY2hhcnNldD0iRVVDLUpQIj4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1l
PSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7
Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0
LWZpZWxkLXdpdGgtSVNPLTIwMjItSlAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtSVNPLTIwMjItSlAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmll
bGQtd2l0aC1JU08tMjAyMi1KUC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5n
IGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPUlTTy0yMDIy
LUpQCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJz
ZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQt
d2l0aC1JU08tMjAyMi1KUC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5j
b2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1
Ym1pdCBvbmUgX2NoYXJzZXRfPUlTTy0yMDIyLUpQPC9wPgorCis8Zm9ybSBpZD0idGVzdEZvcm0i
IGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQu
cGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJJU08tMjAyMi1KUCI+Cis8aW5wdXQg
dHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9y
bT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1p
bi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNoaWZ0X0pJUy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVu
LWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3Rl
ciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0
Xz1TaGlmdF9KSVMKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29k
aW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRfSklTLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVu
LWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtU2hpZnRfSklTLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBl
bmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQg
c3VibWl0IG9uZSBfY2hhcnNldF89U2hpZnRfSklTPC9wPgorCis8Zm9ybSBpZD0idGVzdEZvcm0i
IGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQu
cGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJTaGlmdF9KSVMiPgorPGlucHV0IHR5
cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlwZT1zdWJtaXQ+Cis8L2Zvcm0+
CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNldC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNldC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1p
bi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNz
aW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKworUEFT
U0VEOiBfY2hhcnNldF89VVRGLTgmX2NoYXJzZXRfPVVURi04CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRo
LWFjY2VwdC1jaGFyc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQt
Y2hhcnNldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNl
dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
NzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVu
IF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCB0d28gX2NoYXJz
ZXRfPVVURi04LiAgSUU2IHN1Ym1pdHMgd2luZG93czEyNTIuPC9wPgorCis8Zm9ybSBpZD0idGVz
dEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQt
ZmllbGQucGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCI+Cis8aW5wdXQg
dHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJf
Y2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citm
b3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtZ2V0LW1ldGhvZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQt
d2l0aC1nZXQtbWV0aG9kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtZ2V0LW1ldGhvZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAor
VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhp
ZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogVVRGLTgKSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtZ2V0LW1ldGhvZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtZ2V0LW1ldGhv
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXIt
ZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBm
b3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2Vu
ZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRf
IGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9uZSBfY2hhcnNldF89VVRGLTg8
L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCI+Cis8
aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4K
KzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1maWVsZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNo
YXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9j
aGFyc2V0Xz1VVEYtOApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRk
ZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1maWVsZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQt
ZmllbGQtd2l0aC1vbmUtZmllbGQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAor
PGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFjdGVy
IGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlzIHNob3Vs
ZCBzdWJtaXQgb25lIF9jaGFyc2V0Xz1VVEYtOCwgZm9yIHBvc3QgbWV0aG9kIGFuZCBlbmN0eXBl
IHRleHQvcGxhaW48L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIg
ZW5jdHlwZT0idGV4dC9wbGFpbiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KKzxpbnB1dCB0eXBl
PWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgor
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLXRl
eHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQt
ZmllbGQtd2l0aC12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0
aC12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBp
cyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3
OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBf
Y2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPUklMjdtK2ErbGl0dGxlK2lucHV0
JTJDK3Nob3J0K2FuZCtzdG91dApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdpdGgtdmFsdWUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0
LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdp
dGgtdmFsdWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGlu
IGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlzIHNob3VsZCBzdWJtaXQgX2No
YXJzZXRfPUlcJ20gYSBsaXR0bGUgaW5wdXQsIHNob3J0IGFuZCBzdG91dDwvcD4KKworPGZvcm0g
aWQ9InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1j
aGFyc2V0LWZpZWxkLnBocCIgbWV0aG9kPSJwb3N0Ij4KKzxpbnB1dCB0eXBlPXRleHQgbmFtZT0i
X2NoYXJzZXRfIiB2YWx1ZT0iSSdtIGEgbGl0dGxlIGlucHV0LCBzaG9ydCBhbmQgc3RvdXQiPgor
PGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBm
b3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgp
OworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rp
bmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1m
aWVsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBh
IHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwg
aXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hh
cnNldF8gZmllbGQuCisKK1BBU1NFRDogTm8gX2NoYXJzZXRfIGZpZWxkCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMg
YSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzks
IGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9j
aGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBub3RoaW5nIGV4Y2Vw
dCB0aGUgaGVhZGVyPC9wPgorCis8Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2Vz
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3Qi
IGFjY2VwdC1jaGFyc2V0PSJVVEYtOCI+Cis8aW5wdXQgdHlwZT1zdWJtaXQ+Cis8L2Zvcm0+CisK
KzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKK30KK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
c3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0
LWZpZWxkLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9y
ZXNvdXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzw/cGhwCitoZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4
dC9odG1sOyBjaGFyc2V0PVVURi04Iik7Cis/PgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0
IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4KK1RoaXMgaXMgYSB0
ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0
IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFy
c2V0XyBmaWVsZC4KKzwvcD4KKworPD9waHAKK2lmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0Qn
XSA9PSAnUE9TVCcpIHsKKyRkYXRhID0gZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0Iik7
CitpZiAoJGRhdGEgIT0gIiIpCitlY2hvICI8cD5QQVNTRUQ6ICRkYXRhIDwvcD4iOworZWxzZQor
ZWNobyAiPHA+UEFTU0VEOiBObyBfY2hhcnNldF8gZmllbGQgPC9wPiI7Cit9CitpZiAoJF9TRVJW
RVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ0dFVCcpIHsKKyRkYXRhID0gaHRtbGVudGl0aWVzKCRf
R0VUWydfY2hhcnNldF8nXSk7CitlY2hvICI8cD5QQVNTRUQ6ICRkYXRhIDwvcD4iOworfQorPz4K
KworPHNjcmlwdD4KK2lmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1s
Pgo=
</data>
<flag name="review"
          id="112070"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113692</attachid>
            <date>2011-11-04 11:51:53 -0700</date>
            <delta_ts>2011-11-04 12:09:35 -0700</delta_ts>
            <desc>Updated patch as per review comments</desc>
            <filename>send_carset_001.diff</filename>
            <type>text/plain</type>
            <size>24316</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MzA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMDQgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZW5k
IHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBm
aWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Bl
YyByZWZlcmVuY2UgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2F0
dHItZmUtbmFtZS1jaGFyc2V0CisgICAgICAgIElmIF9jaGFyc2V0XyB1c2VkIGFzIHRoZSBuYW1l
IG9mIGEgaGlkZGVuIGNvbnRyb2wgaXQgc2hvdWxkIHNlbmQgY2hhcmFjdGVyIGVuY29kaW5nCisg
ICAgICAgIGFzIHZhbHVlIHdoaWxlIHN1Ym1pc3Npb25zLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhp
ZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1K
UC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtU2hpZnRfSklTLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNo
YXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25lLWZp
ZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5odG1sCisKKyAg
ICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRk
ZW5JbnB1dFR5cGU6OmlzSGlkZGVuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1
dFR5cGU6OmFwcGVuZEZvcm1EYXRhKTogRm9yIF9jaGFyc2V0XyBzZW5kIHZhbHVlIGFzIHJlc3Bl
Y3RpdmUgZW5jb2RpbmdUeXBlLgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmg6IE92
ZXJyaWRlIGFwcGVuZEZvcm1EYXRhIGZvciBoaWRkZW4gY29udHJvbCB0eXBlcy4KKwogMjAxMS0x
MS0wNCAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBDb3Jy
ZWN0IHBhcnNpbmcgb2YgaW5jb21wbGV0ZSBALXdlYmtpdC1yZWdpb24gcnVsZXMuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiA5OTI3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhpZGRlbklu
cHV0VHlwZS5oIgogCisjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTElu
cHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CkBAIC04NCw2ICs4NSwxNSBAQCBib29sIEhpZGRlbklucHV0VHlwZTo6aXNIaWRk
ZW5UeXBlKCkgY29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgSGlkZGVuSW5wdXRUeXBl
OjphcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmIGVuY29kaW5nLCBib29sIGlzTXVsdGlwYXJ0
Rm9ybSkgY29uc3QKK3sKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZWxlbWVudCgpLT5uYW1l
KCksICJfY2hhcnNldF8iKSkgeworICAgICAgICBlbmNvZGluZy5hcHBlbmREYXRhKGVsZW1lbnQo
KS0+bmFtZSgpLCBTdHJpbmcoZW5jb2RpbmcuZW5jb2RpbmcoKS5uYW1lKCkpKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBJbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRh
KGVuY29kaW5nLCBpc011bHRpcGFydEZvcm0pOworfQorCiBib29sIEhpZGRlbklucHV0VHlwZTo6
c2hvdWxkUmVzcGVjdEhlaWdodEFuZFdpZHRoQXR0cmlidXRlcygpCiB7CiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmgJKHJldmlzaW9uIDk5
Mjc4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEZv
cm1EYXRhTGlzdDsKKwogY2xhc3MgSGlkZGVuSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8SW5wdXRUeXBlPiBjcmVhdGUoSFRNTElu
cHV0RWxlbWVudCopOwpAQCAtNTAsNiArNTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBpc0hpZGRlblR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdEhl
aWdodEFuZFdpZHRoQXR0cmlidXRlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25z
dCBTdHJpbmcmLCBib29sLCBib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEo
Rm9ybURhdGFMaXN0JiBlbmNvZGluZywgYm9vbCBpc011bHRpcGFydEZvcm0pIGNvbnN0OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTkzMDYpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAx
MS0xMS0wNCAgVmluZWV0IENoYXVkaGFyeSAgPHZpbmVldC5jaGF1ZGhhcnlAbW90b3JvbGEuY29t
PgorCisgICAgICAgIFNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBpbiBo
aWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBTcGVjIHJlZmVyZW5jZSBodHRwOi8vZGV2LnczLm9yZy9odG1sNS9zcGVj
L092ZXJ2aWV3Lmh0bWwjYXR0ci1mZS1uYW1lLWNoYXJzZXQKKyAgICAgICAgSWYgX2NoYXJzZXRf
IHVzZWQgYXMgdGhlIG5hbWUgb2YgYSBoaWRkZW4gY29udHJvbCBpdCBzaG91bGQgc2VuZCBjaGFy
YWN0ZXIgZW5jb2RpbmcKKyAgICAgICAgYXMgdmFsdWUgd2hpbGUgc3VibWlzc2lvbnMuCisgICAg
ICAgIEFkZGVkIHRlc3QgY2FzZXMgdG8gY2hlY2sgdGhpcyBiZWhhdmlvci4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRl
ZmF1bHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hh
ci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0Lmh0bWw6IEFkZGVkLiBG
b3IgRGVmYXVsdCBFbmNvZGluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC13aXRoLUJpZzUuaHRtbDogQWRkZWQuIEZvciBCaWc1IEVuY29kaW5nLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtRVVDLUpQLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1FVUMtSlAu
aHRtbDogQWRkZWQuIEZvciBFVUMtSlAgRW5jb2RpbmcuCisgICAgICAgICogaHR0cC90ZXN0cy9t
aXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1K
UC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtSVNPLTIwMjItSlAuaHRtbDogQWRk
ZWQuIEZvciBJU08tMjAyMi1KUCBFbmNvZGluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2Mv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNoaWZ0X0pJUy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5n
LWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRfSklTLmh0bWw6IEFkZGVkLiBGb3Ig
U2hpZnRfSklTIEVuY29kaW5nLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29k
aW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0Lmh0bWw6IEFkZGVkLiBGb3Ig
dHdvIGlucHV0IGZpZWxkcy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWdldC1tZXRob2QtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC13aXRoLWdldC1tZXRob2QuaHRtbDogQWRkZWQuIEZvciBHRVQgbWV0aG9k
LgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFy
c2V0LWZpZWxkLXdpdGgtb25lLWZpZWxkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0
aC1vbmUtZmllbGQuaHRtbDogQWRkZWQuIEZvciBvbmUgaW5wdXQgZmllbGRzLgorICAgICAgICAq
IGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLXRleHQtY2hhcnNldC1maWVsZC13aXRo
LXZhbHVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdpdGgtdmFsdWUuaHRtbDogQWRkZWQu
IElmIGlucHV0IHR5cGUgaXMgdGV4dC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1l
bmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQu
aHRtbDogQWRkZWQuIElmIG5vIGhpZGRlbiBpbnB1dCBmaWVsZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQu
cGhwOiBBZGRlZC4gU2VydmVyIHNpZGUgc2NyaXB0IGZvciB0ZXN0LgorCiAyMDExLTExLTA0ICBN
aWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgogCiAgICAgICAgIENvcnJlY3QgcGFy
c2luZyBvZiBpbmNvbXBsZXRlIEAtd2Via2l0LXJlZ2lvbiBydWxlcy4KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxk
LWRlZmF1bHQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRlZmF1bHQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlz
c2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BB
U1NFRDogX2NoYXJzZXRfPUlTTy04ODU5LTEKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRlZmF1bHQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1p
bi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1m
aWVsZC1kZWZhdWx0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGlu
ZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+CitUaGlzIHNob3VsZCBzdWJt
aXQgX2NoYXJzZXRfPWlzbzg1NTktMS4gIE5vdGUgdGhhdCB0aGlzIF9jaGFyc2V0XyBpbnB1dCBo
YXMgYSB2YWx1ZSBiZWZvcmUgaXQgc3VibWl0cywgd2hpY2ggaXMgb3ZlcndyaXR0ZW4uIElFNiBz
dWJtaXRzIHdpbmRvd3MxMjUyLCBiZWNhdXNlIGFsbCBwYWdlcyBhcmUgZXZpZGVudGx5IFVuaWNv
ZGUgaW4gSUU2LiAgVGhlIHBvaW50IGlzIHRoYXQgaXQgc3VibWl0cyB0aGUgY2hhcnNldCB3ZSdy
ZSB1c2luZywgbm90IHdoYXQgZXhhY3RseSBpdCBzdWJtaXRzLjwvcD4KKworPGZvcm0gbmFtZT0i
dGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJz
ZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3QiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9j
aGFyc2V0XyIgdmFsdWU9IlRoaXMgdmFsdWUgc2hvdWxkIGNoYW5nZSI+Cis8aW5wdXQgdHlwZT1z
dWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZG9jdW1lbnQudGVzdEZvcm0u
c3VibWl0KCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPiAKSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxk
LXdpdGgtQmlnNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1CaWc1
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUg
c3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQu
CisKK1BBU1NFRDogX2NoYXJzZXRfPUJpZzUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
bWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5n
LWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJz
ZXQtZmllbGQtd2l0aC1CaWc1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBl
bmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQg
c3VibWl0IG9uZSBfY2hhcnNldF89QmlnNTwvcD4KKworPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rp
b249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocCIg
bWV0aG9kPSJwb3N0IiBhY2NlcHQtY2hhcnNldD0iQmlnNSI+Cis8aW5wdXQgdHlwZT1oaWRkZW4g
bmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlw
dD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCit2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9y
bSIpOworZm9ybS5zdWJtaXQoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC13aXRoLUVVQy1KUC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmll
bGQtd2l0aC1FVUMtSlAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0
aC1FVUMtSlAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMg
aXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkw
NzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4g
X2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1FVUMtSlAKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtRVVDLUpQLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1FVUMtSlAu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVn
IDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUg
c3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxk
LgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9uZSBfY2hhcnNldF89RVVDLUpQPC9wPgor
Cis8Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJF
VUMtSlAiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlw
ZT1zdWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7Cis8L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hh
ci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRo
ZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVs
ZC4KKworUEFTU0VEOiBfY2hhcnNldF89SVNPLTIwMjItSlAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgt
SVNPLTIwMjItSlAuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQ
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBm
b3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3Qg
Zm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2Vu
ZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRf
IGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9uZSBfY2hhcnNldF89SVNPLTIw
MjItSlA8L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIgYWNjZXB0
LWNoYXJzZXQ9IklTTy0yMDIyLUpQIj4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNl
dF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1
Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtU2hpZnRfSklTLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNo
aWZ0X0pJUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNoaWZ0
X0pJUy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBh
IHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwg
aXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hh
cnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPVNoaWZ0X0pJUwpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmll
bGQtd2l0aC1TaGlmdF9KSVMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNoaWZ0
X0pJUy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0
IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVz
dCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBz
ZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNl
dF8gZmllbGQuCis8L3A+Cis8cD5UaGlzIHNob3VsZCBzdWJtaXQgb25lIF9jaGFyc2V0Xz1TaGlm
dF9KSVM8L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIgYWNjZXB0
LWNoYXJzZXQ9IlNoaWZ0X0pJUyI+Cis8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRf
Ij4KKzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2
YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJt
aXQoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRo
LWFjY2VwdC1jaGFyc2V0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRo
LWFjY2VwdC1jaGFyc2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtYWNjZXB0LWNoYXJzZXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMg
QEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBp
biBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1VVEYtOCZfY2hh
cnNldF89VVRGLTgKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29k
aW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0Lmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90
aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lv
bnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgor
PHA+VGhpcyBzaG91bGQgc3VibWl0IHR3byBfY2hhcnNldF89VVRGLTguICBJRTYgc3VibWl0cyB3
aW5kb3dzMTI1Mi48L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIg
YWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNl
dF8iPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlwZT1z
dWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7Cis8L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWdldC1tZXRob2QtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJt
aXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKwor
UEFTU0VEOiBVVEYtOApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5j
b2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNl
dC1maWVsZC13aXRoLWdldC1tZXRob2QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hhcmFj
dGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlzIHNo
b3VsZCBzdWJtaXQgb25lIF9jaGFyc2V0Xz1VVEYtODwvcD4KKworPGZvcm0gaWQ9InRlc3RGb3Jt
IiBhY3Rpb249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxk
LnBocCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJf
Y2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citm
b3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtb25lLWZpZWxkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13
aXRoLW9uZS1maWVsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRo
LW9uZS1maWVsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhp
cyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRl
biBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPVVURi04CkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1m
aWVsZC13aXRoLW9uZS1maWVsZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25l
LWZpZWxkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1maWVsZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRl
c3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0
ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0
IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFy
c2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBvbmUgX2NoYXJzZXRfPVVU
Ri04LCBmb3IgcG9zdCBtZXRob2QgYW5kIGVuY3R5cGUgdGV4dC9wbGFpbjwvcD4KKworPGZvcm0g
aWQ9InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1j
aGFyc2V0LWZpZWxkLnBocCIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJ0ZXh0L3BsYWluIiBhY2Nl
cHQtY2hhcnNldD0iVVRGLTgiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+
Cis8aW5wdXQgdHlwZT1zdWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFy
IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0
KCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdpdGgtdmFs
dWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9jaGFyLWVuY29kaW5nLWluLXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9u
cyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKworUEFTU0VE
OiBfY2hhcnNldF89SSUyN20rYStsaXR0bGUraW5wdXQlMkMrc2hvcnQrYW5kK3N0b3V0CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJz
ZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1l
bmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAx
OTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1
Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4K
KzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBfY2hhcnNldF89SVwnbSBhIGxpdHRsZSBpbnB1
dCwgc2hvcnQgYW5kIHN0b3V0PC9wPgorCis8Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVz
b3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9
InBvc3QiPgorPGlucHV0IHR5cGU9dGV4dCBuYW1lPSJfY2hhcnNldF8iIHZhbHVlPSJJJ20gYSBs
aXR0bGUgaW5wdXQsIHNob3J0IGFuZCBzdG91dCI+Cis8aW5wdXQgdHlwZT1zdWJtaXQ+Cis8L2Zv
cm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
d2l0aG91dC1jaGFyc2V0LWZpZWxkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2Rpbmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucyBj
aGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKworUEFTU0VEOiBO
byBfY2hhcnNldF8gZmllbGQKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFy
LWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVs
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXIt
ZW5jb2Rpbmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRs
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMK
K2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+
VGhpcyBzaG91bGQgc3VibWl0IG5vdGhpbmcgZXhjZXB0IHRoZSBoZWFkZXI8L3A+CisKKzxmb3Jt
IGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04Ij4K
KzxpbnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQordmFyIGZv
cm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7
Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3Jlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxk
LnBocAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2Vz
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQucGhwCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAor
PD9waHAKK2hlYWRlcigiQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiKTsK
Kz8+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPgorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2No
YXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorCis8P3Bo
cAoraWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09ICdQT1NUJykgeworJGRhdGEgPSBm
aWxlX2dldF9jb250ZW50cygicGhwOi8vaW5wdXQiKTsKK2lmICgkZGF0YSAhPSAiIikKK2VjaG8g
IjxwPlBBU1NFRDogJGRhdGEgPC9wPiI7CitlbHNlCitlY2hvICI8cD5QQVNTRUQ6IE5vIF9jaGFy
c2V0XyBmaWVsZCA8L3A+IjsKK30KK2lmICgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAn
R0VUJykgeworJGRhdGEgPSBodG1sZW50aXRpZXMoJF9HRVRbJ19jaGFyc2V0XyddKTsKK2VjaG8g
IjxwPlBBU1NFRDogJGRhdGEgPC9wPiI7Cit9Cis/PgorCis8c2NyaXB0PgoraWYod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="112138"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113696</attachid>
            <date>2011-11-04 12:09:35 -0700</date>
            <delta_ts>2011-11-07 00:10:35 -0800</delta_ts>
            <desc>Updated patch as per review comments</desc>
            <filename>send_carset_002.diff</filename>
            <type>text/plain</type>
            <size>24131</size>
            <attacher name="Vineet Chaudhary (vineetc)">code.vineet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MzA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMTEtMDQgIFZpbmVldCBD
aGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBTZW5k
IHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBm
aWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3Bl
YyByZWZlcmVuY2UgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1sI2F0
dHItZmUtbmFtZS1jaGFyc2V0CisgICAgICAgIElmIF9jaGFyc2V0XyB1c2VkIGFzIHRoZSBuYW1l
IG9mIGEgaGlkZGVuIGNvbnRyb2wgaXQgc2hvdWxkIHNlbmQgY2hhcmFjdGVyIGVuY29kaW5nCisg
ICAgICAgIGFzIHZhbHVlIHdoaWxlIHN1Ym1pc3Npb25zLgorCisgICAgICAgIFRlc3RzOiBodHRw
L3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhp
ZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1K
UC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1o
aWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdp
dGgtU2hpZnRfSklTLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtYWNjZXB0LWNoYXJzZXQuaHRtbAor
ICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNo
YXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25lLWZp
ZWxkLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNldC1maWVsZC5odG1sCisKKyAg
ICAgICAgKiBodG1sL0hpZGRlbklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaWRk
ZW5JbnB1dFR5cGU6OmlzSGlkZGVuVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIaWRkZW5JbnB1
dFR5cGU6OmFwcGVuZEZvcm1EYXRhKTogRm9yIF9jaGFyc2V0XyBzZW5kIHZhbHVlIGFzIHJlc3Bl
Y3RpdmUgZW5jb2RpbmdUeXBlLgorICAgICAgICAqIGh0bWwvSGlkZGVuSW5wdXRUeXBlLmg6IE92
ZXJyaWRlIGFwcGVuZEZvcm1EYXRhIGZvciBoaWRkZW4gY29udHJvbCB0eXBlcy4KKwogMjAxMS0x
MS0wNCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkIGludmFsaWRhdGVzIHRoZSBHcmFwaGljc0xheWVy
IG5lZWRsZXNzbHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5jcHAJ
KHJldmlzaW9uIDk5Mjc4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSGlkZGVuSW5wdXRUeXBlLmgiCiAKKyNpbmNsdWRlICJGb3JtRGF0YUxpc3Qu
aCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTg0LDYgKzg1LDE1IEBAIGJvb2wgSGlk
ZGVuSW5wdXRUeXBlOjppc0hpZGRlblR5cGUoKSBjb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ym9vbCBIaWRkZW5JbnB1dFR5cGU6OmFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYgZW5jb2Rp
bmcsIGJvb2wgaXNNdWx0aXBhcnRGb3JtKSBjb25zdAoreworICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShlbGVtZW50KCktPm5hbWUoKSwgIl9jaGFyc2V0XyIpKSB7CisgICAgICAgIGVuY29kaW5n
LmFwcGVuZERhdGEoZWxlbWVudCgpLT5uYW1lKCksIFN0cmluZyhlbmNvZGluZy5lbmNvZGluZygp
Lm5hbWUoKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIElucHV0
VHlwZTo6YXBwZW5kRm9ybURhdGEoZW5jb2RpbmcsIGlzTXVsdGlwYXJ0Rm9ybSk7Cit9CisKIGJv
b2wgSGlkZGVuSW5wdXRUeXBlOjpzaG91bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVz
KCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVu
SW5wdXRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1
dFR5cGUuaAkocmV2aXNpb24gOTkyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklu
cHV0VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzSGlkZGVuVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRSZXNwZWN0SGVpZ2h0QW5kV2lkdGhBdHRyaWJ1dGVzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBhcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MzA3KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMTEtMDQgIFZpbmVl
dCBDaGF1ZGhhcnkgIDx2aW5lZXQuY2hhdWRoYXJ5QG1vdG9yb2xhLmNvbT4KKworICAgICAgICBT
ZW5kIHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0
XyBmaWVsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MDc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3BlYyByZWZlcmVuY2UgaHR0cDovL2Rldi53My5vcmcvaHRtbDUvc3BlYy9PdmVydmlldy5odG1s
I2F0dHItZmUtbmFtZS1jaGFyc2V0CisgICAgICAgIElmIF9jaGFyc2V0XyB1c2VkIGFzIHRoZSBu
YW1lIG9mIGEgaGlkZGVuIGNvbnRyb2wgaXQgc2hvdWxkIHNlbmQgY2hhcmFjdGVyIGVuY29kaW5n
CisgICAgICAgIGFzIHZhbHVlIHdoaWxlIHN1Ym1pc3Npb25zLgorICAgICAgICBBZGRlZCB0ZXN0
IGNhc2VzIHRvIGNoZWNrIHRoaXMgYmVoYXZpb3IuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC5odG1sOiBBZGRlZC4gRm9yIERlZmF1bHQgRW5j
b2RpbmcuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVu
LWNoYXJzZXQtZmllbGQtd2l0aC1CaWc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0
aC1CaWc1Lmh0bWw6IEFkZGVkLiBGb3IgQmlnNSBFbmNvZGluZy4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1K
UC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLmh0bWw6IEFkZGVkLiBG
b3IgRVVDLUpQIEVuY29kaW5nLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29k
aW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtSVNPLTIwMjItSlAtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRk
ZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0bWw6IEFkZGVkLiBGb3IgSVNPLTIw
MjItSlAgRW5jb2RpbmcuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC13aXRoLVNoaWZ0X0pJUy5odG1sOiBBZGRlZC4gRm9yIFNoaWZ0X0pJUyBFbmNv
ZGluZy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQt
ZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNldC5odG1sOiBBZGRlZC4gRm9yIHR3byBpbnB1dCBmaWVs
ZHMuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNo
YXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQt
d2l0aC1nZXQtbWV0aG9kLmh0bWw6IEFkZGVkLiBGb3IgR0VUIG1ldGhvZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRo
LW9uZS1maWVsZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlz
Yy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtb25lLWZpZWxkLmh0
bWw6IEFkZGVkLiBGb3Igb25lIGlucHV0IGZpZWxkcy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLmh0bWw6IEFkZGVkLiBJZiBpbnB1dCB0eXBl
IGlzIHRleHQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmctd2l0aG91
dC1jaGFyc2V0LWZpZWxkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2Rpbmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLmh0bWw6IEFkZGVkLiBJ
ZiBubyBoaWRkZW4gaW5wdXQgZmllbGQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3Jlc291
cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocDogQWRkZWQuIFNl
cnZlciBzaWRlIHNjcmlwdCBmb3IgdGVzdC4KKwogMjAxMS0xMS0wNCAgTWlobmVhIE92aWRlbmll
ICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBDb3JyZWN0IHBhcnNpbmcgb2YgaW5jb21w
bGV0ZSBALXdlYmtpdC1yZWdpb24gcnVsZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1l
bmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLWRlZmF1bHQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNoYXJhY3Rl
ciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0
Xz1JU08tODg1OS0xCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC1kZWZhdWx0Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJz
ZXQtZmllbGQtZGVmYXVsdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtZGVmYXVsdC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMg
YSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzks
IGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9j
aGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPgorVGhpcyBzaG91bGQgc3VibWl0IF9jaGFyc2V0Xz1p
c284NTU5LTEuICBOb3RlIHRoYXQgdGhpcyBfY2hhcnNldF8gaW5wdXQgaGFzIGEgdmFsdWUgYmVm
b3JlIGl0IHN1Ym1pdHMsIHdoaWNoIGlzIG92ZXJ3cml0dGVuLiBJRTYgc3VibWl0cyB3aW5kb3dz
MTI1MiwgYmVjYXVzZSBhbGwgcGFnZXMgYXJlIGV2aWRlbnRseSBVbmljb2RlIGluIElFNi4gIFRo
ZSBwb2ludCBpcyB0aGF0IGl0IHN1Ym1pdHMgdGhlIGNoYXJzZXQgd2UncmUgdXNpbmcsIG5vdCB3
aGF0IGV4YWN0bHkgaXQgc3VibWl0cy48L3A+CisKKzxmb3JtIG5hbWU9InRlc3RGb3JtIiBhY3Rp
b249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocCIg
bWV0aG9kPSJwb3N0Ij4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iIHZhbHVl
PSJUaGlzIHZhbHVlIHNob3VsZCBjaGFuZ2UiPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3Jt
PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2RvY3VtZW50LnRlc3RGb3JtLnN1Ym1pdCgpOworPC9z
Y3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4gCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFy
LWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtQmlnNS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zIGNo
YXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorCitQQVNTRUQ6IF9j
aGFyc2V0Xz1CaWc1CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNv
ZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUJpZzUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hh
cnNldC1maWVsZC13aXRoLUJpZzUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgt
QmlnNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRo
aXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlk
ZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBvbmUgX2No
YXJzZXRfPUJpZzU8L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNvdXJjZXMv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIG1ldGhvZD0icG9zdCIg
YWNjZXB0LWNoYXJzZXQ9IkJpZzUiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0
XyI+Cis8aW5wdXQgdHlwZT1zdWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFz
VGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
dmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3Vi
bWl0KCk7Cis8L3NjcmlwdD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0
aC1FVUMtSlAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQ
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEgdGVzdCBmb3Ig
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRo
ZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVs
ZC4KKworUEFTU0VEOiBfY2hhcnNldF89RVVDLUpQCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1K
UC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtRVVDLUpQLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRk
ZW4tY2hhcnNldC1maWVsZC13aXRoLUVVQy1KUC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitj
aGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRo
aXMgc2hvdWxkIHN1Ym1pdCBvbmUgX2NoYXJzZXRfPUVVQy1KUDwvcD4KKworPGZvcm0gaWQ9InRl
c3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0
LWZpZWxkLnBocCIgbWV0aG9kPSJwb3N0IiBhY2NlcHQtY2hhcnNldD0iRVVDLUpQIj4KKzxpbnB1
dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9m
b3JtPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5n
LWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtSVNPLTIwMjItSlAtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtSVNPLTIwMjItSlAtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4t
aGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMg
Y2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDog
X2NoYXJzZXRfPUlTTy0yMDIyLUpQCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
Y2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLUlTTy0yMDIyLUpQLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rp
bmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1JU08tMjAyMi1KUC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwv
dGl0bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Np
b25zCitjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4K
KzxwPlRoaXMgc2hvdWxkIHN1Ym1pdCBvbmUgX2NoYXJzZXRfPUlTTy0yMDIyLUpQPC9wPgorCis8
Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJJU08t
MjAyMi1KUCI+Cis8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0
eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9ybSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQoKTsKKzwvc2Ny
aXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLVNoaWZ0X0pJUy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2No
YXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXIt
ZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1
Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgor
CitQQVNTRUQ6IF9jaGFyc2V0Xz1TaGlmdF9KSVMKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRf
SklTLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXIt
ZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1TaGlmdF9KSVMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtU2hpZnRfSklTLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5
PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlz
c2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9w
PgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9uZSBfY2hhcnNldF89U2hpZnRfSklTPC9wPgorCis8
Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJTaGlm
dF9KSVMiPgorPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Il9jaGFyc2V0XyI+Cis8aW5wdXQgdHlw
ZT1zdWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGZvcm0gPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdEZvcm0iKTsKK2Zvcm0uc3VibWl0KCk7Cis8L3Njcmlw
dD4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNl
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNl
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21p
c2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFy
c2V0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUaGlzIGlzIGEg
dGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBp
dCBzZW5kIHRoZSBzdWJtaXNzaW9ucyBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFy
c2V0XyBmaWVsZC4KKworUEFTU0VEOiBfY2hhcnNldF89VVRGLTgmX2NoYXJzZXRfPVVURi04Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4t
Y2hhcnNldC1maWVsZC13aXRoLWFjY2VwdC1jaGFyc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQt
ZmllbGQtd2l0aC1hY2NlcHQtY2hhcnNldC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQt
d2l0aC1hY2NlcHQtY2hhcnNldC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIg
ZW5jb2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxk
IHN1Ym1pdCB0d28gX2NoYXJzZXRfPVVURi04LiAgSUU2IHN1Ym1pdHMgd2luZG93czEyNTIuPC9w
PgorCis8Zm9ybSBpZD0idGVzdEZvcm0iIGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQucGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0
PSJVVEYtOCI+Cis8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxpbnB1dCB0
eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3Jt
PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWlu
LWhpZGRlbi1jaGFyc2V0LWZpZWxkLXdpdGgtZ2V0LW1ldGhvZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlk
ZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1nZXQtbWV0aG9kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRl
bi1jaGFyc2V0LWZpZWxkLXdpdGgtZ2V0LW1ldGhvZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFj
dGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogVVRGLTgK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRl
bi1jaGFyc2V0LWZpZWxkLXdpdGgtZ2V0LW1ldGhvZC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZp
ZWxkLXdpdGgtZ2V0LW1ldGhvZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1n
ZXQtbWV0aG9kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+VGVzdCBmb3IgYnVnIDE5MDc5PC90aXRsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMKK2NoYXJhY3RlciBlbmNvZGluZyBp
biBoaWRkZW4gX2NoYXJzZXRfIGZpZWxkLgorPC9wPgorPHA+VGhpcyBzaG91bGQgc3VibWl0IG9u
ZSBfY2hhcnNldF89VVRGLTg8L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIgYWN0aW9uPSJyZXNv
dXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAiIGFjY2VwdC1j
aGFyc2V0PSJVVEYtOCI+Cis8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iX2NoYXJzZXRfIj4KKzxp
bnB1dCB0eXBlPXN1Ym1pdD4KKzwvZm9ybT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZm9y
bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Rm9ybSIpOworZm9ybS5zdWJtaXQoKTsK
Kzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1m
aWVsZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1RoaXMgaXMgYSB0ZXN0IGZv
ciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQg
dGhlIHN1Ym1pc3Npb25zIGNoYXJhY3RlciBlbmNvZGluZyBpbiBoaWRkZW4gX2NoYXJzZXRfIGZp
ZWxkLgorCitQQVNTRUQ6IF9jaGFyc2V0Xz1VVEYtOApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUt
ZmllbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hh
ci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC13aXRoLW9uZS1maWVsZC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2Rpbmct
aW4taGlkZGVuLWNoYXJzZXQtZmllbGQtd2l0aC1vbmUtZmllbGQuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkw
Nzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJt
aXNzaW9ucworY2hhcmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8
L3A+Cis8cD5UaGlzIHNob3VsZCBzdWJtaXQgb25lIF9jaGFyc2V0Xz1VVEYtOCwgZm9yIHBvc3Qg
bWV0aG9kIGFuZCBlbmN0eXBlIHRleHQvcGxhaW48L3A+CisKKzxmb3JtIGlkPSJ0ZXN0Rm9ybSIg
YWN0aW9uPSJyZXNvdXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5w
aHAiIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0idGV4dC9wbGFpbiIgYWNjZXB0LWNoYXJzZXQ9IlVU
Ri04Ij4KKzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJfY2hhcnNldF8iPgorPGlucHV0IHR5cGU9
c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+
CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9j
aGFyLWVuY29kaW5nLWluLXRleHQtY2hhcnNldC1maWVsZC13aXRoLXZhbHVlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGlu
Zy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy1pbi10ZXh0
LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVu
Y29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogX2NoYXJzZXRfPUkl
MjdtK2ErbGl0dGxlK2lucHV0JTJDK3Nob3J0K2FuZCtzdG91dApJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4tdGV4dC1jaGFyc2V0LWZpZWxkLXdpdGgt
dmFsdWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hh
ci1lbmNvZGluZy1pbi10ZXh0LWNoYXJzZXQtZmllbGQtd2l0aC12YWx1ZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2NoYXItZW5jb2RpbmctaW4tdGV4
dC1jaGFyc2V0LWZpZWxkLXdpdGgtdmFsdWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlzIGEgdGVzdCBmb3IgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDc5LCBpdCBzZW5kIHRoZSBzdWJtaXNzaW9ucworY2hh
cmFjdGVyIGVuY29kaW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCis8L3A+Cis8cD5UaGlz
IHNob3VsZCBzdWJtaXQgX2NoYXJzZXRfPUlcJ20gYSBsaXR0bGUgaW5wdXQsIHNob3J0IGFuZCBz
dG91dDwvcD4KKworPGZvcm0gaWQ9InRlc3RGb3JtIiBhY3Rpb249InJlc291cmNlcy9jaGFyLWVu
Y29kaW5nLWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocCIgbWV0aG9kPSJwb3N0Ij4KKzxpbnB1
dCB0eXBlPXRleHQgbmFtZT0iX2NoYXJzZXRfIiB2YWx1ZT0iSSdtIGEgbGl0dGxlIGlucHV0LCBz
aG9ydCBhbmQgc3RvdXQiPgorPGlucHV0IHR5cGU9c3VibWl0PgorPC9mb3JtPgorCis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7Cit9CisKK3ZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3RGb3Jt
Iik7Citmb3JtLnN1Ym1pdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhvdXQtY2hhcnNl
dC1maWVsZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9taXNjL2NoYXItZW5jb2Rpbmctd2l0aG91dC1jaGFyc2V0LWZpZWxkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5n
LXdpdGhvdXQtY2hhcnNldC1maWVsZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMyBAQAorVGhpcyBpcyBhIHRlc3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTA3OSwgaXQgc2VuZCB0aGUgc3VibWlzc2lvbnMgY2hhcmFjdGVyIGVuY29k
aW5nIGluIGhpZGRlbiBfY2hhcnNldF8gZmllbGQuCisKK1BBU1NFRDogTm8gX2NoYXJzZXRfIGZp
ZWxkCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRo
b3V0LWNoYXJzZXQtZmllbGQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvY2hhci1lbmNvZGluZy13aXRob3V0LWNoYXJzZXQtZmllbGQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9jaGFyLWVuY29kaW5nLXdpdGhv
dXQtY2hhcnNldC1maWVsZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPlRlc3QgZm9yIGJ1ZyAxOTA3OTwvdGl0bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPlRoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5j
b2RpbmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKzxwPlRoaXMgc2hvdWxkIHN1
Ym1pdCBub3RoaW5nIGV4Y2VwdCB0aGUgaGVhZGVyPC9wPgorCis8Zm9ybSBpZD0idGVzdEZvcm0i
IGFjdGlvbj0icmVzb3VyY2VzL2NoYXItZW5jb2RpbmctaW4taGlkZGVuLWNoYXJzZXQtZmllbGQu
cGhwIiBtZXRob2Q9InBvc3QiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCI+Cis8aW5wdXQgdHlwZT1z
dWJtaXQ+Cis8L2Zvcm0+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KK3ZhciBmb3JtID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3RGb3JtIik7Citmb3JtLnN1Ym1pdCgpOworPC9zY3JpcHQ+CisK
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNv
dXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNldC1maWVsZC5waHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9jaGFyLWVuY29kaW5n
LWluLWhpZGRlbi1jaGFyc2V0LWZpZWxkLnBocAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvY2hhci1lbmNvZGluZy1pbi1oaWRkZW4tY2hhcnNl
dC1maWVsZC5waHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzw/cGhwCitoZWFkZXIo
IkNvbnRlbnQtdHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PVVURi04Iik7Cis/PgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBidWcgMTkwNzk8L3RpdGxlPgorPC9oZWFkPgorPGJvZHk+
Cis8cD4KK1RoaXMgaXMgYSB0ZXN0IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwNzksIGl0IHNlbmQgdGhlIHN1Ym1pc3Npb25zCitjaGFyYWN0ZXIgZW5jb2Rp
bmcgaW4gaGlkZGVuIF9jaGFyc2V0XyBmaWVsZC4KKzwvcD4KKworPD9waHAKK2lmICgkX1NFUlZF
UlsnUkVRVUVTVF9NRVRIT0QnXSA9PSAnUE9TVCcpIHsKKyRkYXRhID0gZmlsZV9nZXRfY29udGVu
dHMoInBocDovL2lucHV0Iik7CitpZiAoJGRhdGEgIT0gIiIpCitlY2hvICI8cD5QQVNTRUQ6ICRk
YXRhIDwvcD4iOworZWxzZQorZWNobyAiPHA+UEFTU0VEOiBObyBfY2hhcnNldF8gZmllbGQgPC9w
PiI7Cit9CitpZiAoJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPT0gJ0dFVCcpIHsKKyRkYXRh
ID0gaHRtbGVudGl0aWVzKCRfR0VUWydfY2hhcnNldF8nXSk7CitlY2hvICI8cD5QQVNTRUQ6ICRk
YXRhIDwvcD4iOworfQorPz4KKworPHNjcmlwdD4KK2lmKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cis8L3NjcmlwdD4K
KworPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>