<?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>98390</bug_id>
          
          <creation_ts>2012-10-04 02:44:56 -0700</creation_ts>
          <short_desc>Update some picker tests for input[type=date]</short_desc>
          <delta_ts>2012-10-04 21:45:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98226</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>dbates</cc>
    
    <cc>haraken</cc>
    
    <cc>keishi</cc>
    
    <cc>morrita</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734539</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 02:44:56 -0700</bug_when>
    <thetext>fast/forms/date/calendar-picker-appearance-pre-100.html [ Timeout ] 
  fast/forms/date/calendar-picker-appearance.html [ Timeout ] 
  fast/forms/date/calendar-picker-key-operations.html [ Timeout ] 
  fast/forms/date/calendar-picker-mouse-operations.html [ Timeout ] 
  fast/forms/date/calendar-picker-with-step.html [ Timeout ] 
  platform/chromium/fast/forms/date/date-suggestion-picker-appearance-rtl.html [ Timeout ] 
  platform/chromium/fast/forms/date/date-suggestion-picker-appearance-with-scroll-bar.html [ Timeout ] 
  platform/chromium/fast/forms/date/date-suggestion-picker-appearance.html [ Timeout ] 
  platform/chromium/fast/forms/date/date-suggestion-picker-key-operations.html [ Timeout ] 

This is not a regression.  We need to update these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734589</commentid>
    <comment_count>1</comment_count>
      <attachid>167074</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 04:39:28 -0700</bug_when>
    <thetext>Created attachment 167074
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734688</commentid>
    <comment_count>2</comment_count>
      <attachid>167103</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 07:53:40 -0700</bug_when>
    <thetext>Created attachment 167103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734868</commentid>
    <comment_count>3</comment_count>
      <attachid>167103</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-10-04 11:27:47 -0700</bug_when>
    <thetext>Comment on attachment 167103
Patch

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

This patch looks sane to me.

On another note, I&apos;ve noticed that the original test code seems to alternate between using single and double quotes. We should pick one style and stick with it for consistency. Also, some tests force a layout before calling openPicker() (using dateInput.offsetTop) and some don&apos;t (e.g. LayoutTests/fast/forms/date/calendar-picker-with-step.html). I briefly looked over some of these test files. I take it that it is intentional to force a layout in some tests and not force a layout it others. If I have some time, I&apos;ll look to read through the tests in their entirety.

&gt; LayoutTests/ChangeLog:25
&gt; +        ditto.

Nit: ditto =&gt; Ditto

&gt; LayoutTests/ChangeLog:27
&gt; +        ditto.

Nit: ditto =&gt; Ditto

&gt; LayoutTests/ChangeLog:31
&gt; +        Increase the internal time out becuase it was too short on my machine.

Nit: &quot;time out&quot; =&gt; &quot;timeout&quot;

And

becuase =&gt; because

&gt; LayoutTests/fast/forms/date/calendar-picker-appearance-pre-100.html:28
&gt; +    dateInput.offsetTop;

I know that the original test had this line. You may want to consider adding an inline comment here that explains that this forces a layout. Even better, explain why we need to force a layout.

&gt; LayoutTests/fast/forms/date/calendar-picker-appearance.html:18
&gt; +    dateInput.offsetTop;

Ditto.

&gt; LayoutTests/platform/chromium/fast/forms/date/date-suggestion-picker-appearance-with-scroll-bar.html:61
&gt; +    dateInput.offsetTop;

Ditto.

&gt; LayoutTests/platform/chromium/fast/forms/date/date-suggestion-picker-appearance.html:41
&gt; +    dateInput.offsetTop;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735118</commentid>
    <comment_count>4</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 16:40:57 -0700</bug_when>
    <thetext>Thank you for the comments.

(In reply to comment #3)
&gt; On another note, I&apos;ve noticed that the original test code seems to alternate between using single and double quotes. We should pick one style and stick with it for consistency. Also, some tests force a layout before calling openPicker() (using dateInput.offsetTop) and some don&apos;t (e.g. LayoutTests/fast/forms/date/calendar-picker-with-step.html). I briefly looked over some of these test files. I take it that it is intentional to force a layout in some tests and not force a layout it others. If I have some time, I&apos;ll look to read through the tests in their entirety.

Yeah, I also had a concern about single/double quotes.  We had better improve it.
I guess offsetTop hacks were needed for tests which opened a picker before &apos;load&apos; event, and the hack is not needed because all of tests has been changed so that they open pickers on onload handler.  I&apos;m removing offsetTop in this patch, and will watch bots status.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735126</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 16:50:07 -0700</bug_when>
    <thetext>Committed r130433: &lt;http://trac.webkit.org/changeset/130433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735317</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-10-04 21:45:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I&apos;m removing offsetTop in this patch, and will watch bots status.

It failed. I added offsetTop again in http://trac.webkit.org/changeset/130458.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167074</attachid>
            <date>2012-10-04 04:39:28 -0700</date>
            <delta_ts>2012-10-04 07:53:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-98390-20121004203837.patch</filename>
            <type>text/plain</type>
            <size>24647</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzc5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTFhNGY5ODExZmMyM2I0NjU2ZTYy
OWJiNzQyY2Y1MTdhMDZjNTM4NS4uMGNmNmU1MzE2ZWViNzU5YjAxYzM2MzFhZTFiZTYyOWY2YWFl
YzYzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMyw2ICszLDI5IEBACiAgICAgICAgIFNvbWUgcGlja2VyIHRlc3QgZm9y
IGlucHV0W3R5cGU9ZGF0ZV0gYXJlIGZhaWxpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzkwCiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdl
IHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVz
Y3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGUvY2Fs
ZW5kYXItcGlja2VyLWFwcGVhcmFuY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZm9y
bXMvZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS1wcmUtMTAwLmh0bWw6CisgICAgICAg
ICogZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLmh0bWw6CisgICAg
ICAgICogZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1jb21tb24uanM6CisgICAgICAg
IChvcGVuUGlja2VyKToKKyAgICAgICAgKHNlbmRLZXkpOgorICAgICAgICAqIGZhc3QvZm9ybXMv
ZGF0ZS9jYWxlbmRhci1waWNrZXItd2l0aC1zdGVwLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXJ0bC5odG1s
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dl
c3Rpb24tcGlja2VyLWFwcGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFyLmh0bWw6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXIt
YXBwZWFyYW5jZS5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
ZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0
aW9uLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sOgorCisyMDEyLTEwLTA0ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBTb21lIHBpY2tlciB0ZXN0IGZvciBp
bnB1dFt0eXBlPWRhdGVdIGFyZSBmYWlsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05ODM5MAorCiAgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9uczoKIAogMjAxMi0xMC0wNCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2FsZW5k
YXItcGlja2VyLWFwcGVhcmFuY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLWV4cGVjdGVkLnR4dAppbmRleCBlMTdi
ODgwYWVhYWI4ZmY3N2FhYTFkZDcyM2MxMDlhODljNDcwZTZiLi42MGI3MTA1NDUxYmFlNjQ0YTg5
MGM5ZGU3MDIyNWE1NjA4MTk3Y2JlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTc6IENoZWNrIGlm
IHdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyIGV4aXN0cyBmb3IgYSBwYWdlLXBvcHVwIHdpbmRv
dy4KLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVy
XQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEyOiBDaGVjayBpZiB3aW5kb3cucGFnZVBvcHVwQ29u
dHJvbGxlciBleGlzdHMgZm9yIGEgcGFnZS1wb3B1cCB3aW5kb3cuCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgNzogW29iamVjdCBQYWdlUG9wdXBDb250cm9sbGVyXQogIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLXByZS0x
MDAuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItYXBw
ZWFyYW5jZS1wcmUtMTAwLmh0bWwKaW5kZXggODJkNGUyNmRkMzZmYjk4NTliODI1NmQxMjdmMmRj
ZjI5YWNlMzJhMS4uOGUxYzQ4YWU1NzQ5ZjFiMzE5YTE2OWU4OTdkNzhlNTQwZDAzYjEwYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBl
YXJhbmNlLXByZS0xMDAuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2Fs
ZW5kYXItcGlja2VyLWFwcGVhcmFuY2UtcHJlLTEwMC5odG1sCkBAIC0yLDIxICsyLDE2IEBACiA8
aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgogPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CiA8aW5wdXQgdHlwZT1kYXRlIGlkPWRhdGUgdmFsdWU9IjAw
MDItMDItMDIiPgogPHNjcmlwdD4KLWZ1bmN0aW9uIHNlbmRLZXkoZWxlbWVudCwga2V5TmFtZSkg
ewotICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50Jyk7
Ci0gICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1
bWVudC5kZWZhdWx0Vmlldywga2V5TmFtZSk7Ci0gICAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KGV2
ZW50KTsKLX0KLQogZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICBwaWNrZXJXaW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7Ci0gICAgdmFyIGRheXNDb250
YWluZXIgPSBwaWNrZXJXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZGF5
cy1hcmVhIilbMF07CisgICAgcG9wdXBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXpl
JywgZmluaXNoVGVzdCk7CisgICAgdmFyIGRheXNDb250YWluZXIgPSBwb3B1cFdpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJkYXlzLWFyZWEiKVswXTsKICAgICBzZW5kS2V5
KGRheXNDb250YWluZXIsICdSaWdodCcpOwogICAgIHNlbmRLZXkoZGF5c0NvbnRhaW5lciwgJ0Vu
dGVyJyk7CiAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRlIikudmFs
dWUnLCAnIjAwMDItMDItMDMiJyk7CkBAIC0yOCwxNiArMjMsMTIgQEAgZGVzY3JpcHRpb24oJ0No
ZWNrIGlmIHllYXIgYmVmb3JlIDEwMCBjYW4gYmUgc2V0LicpOwogaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogCi13aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7Ci0KLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRFbmFibGVNb2NrUGFnZVBvcHVwKHRydWUpOwotCi12YXIgZGF0ZUlucHV0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKTsKLWRhdGVJbnB1dC5vZmZzZXRUb3A7Ci1zZW5k
S2V5KGRhdGVJbnB1dCwgJ0Rvd24nKTsKLXZhciBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnbW9jay1wYWdlLXBvcHVwJykuY29udGVudFdpbmRvdzsKLXBpY2tlcldpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaW5pc2hUZXN0LCBmYWxzZSk7Cit3aW5kb3cu
b25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkYXRlJyk7CisgICAgZGF0ZUlucHV0Lm9mZnNldFRvcDsKKyAgICBvcGVuUGlj
a2VyKGRhdGVJbnB1dCk7CisgICAgcG9wdXBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXpl
JywgZmluaXNoVGVzdCwgZmFsc2UpOworfTsKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUv
Y2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS5odG1sCmluZGV4IDQ1ZWEyNjFhODU5ODc4
ODk4ZjUzNmY3ZTVmYzg2YzI3OTU4YjYwOTYuLmVjODdmODJiMmE0YmZlMWFhYzY2OTkwMWUxMTEx
MGIxZDNkNGQzODcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxl
bmRhci1waWNrZXItYXBwZWFyYW5jZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
ZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS5odG1sCkBAIC0xLDMwICsxLDI0IEBACiA8
IURPQ1RZUEUgaHRtbD4KIDxib2R5PgorPHNjcmlwdCBzcmM9ImNhbGVuZGFyLXBpY2tlci1jb21t
b24uanMiPjwvc2NyaXB0PgogPGlucHV0IHR5cGU9ZGF0ZSBpZD1kYXRlIHZhbHVlPSIxMDAwMC0x
Mi0zMSI+CiA8c2NyaXB0PgotZnVuY3Rpb24gc2VuZEtleShpbnB1dCwga2V5TmFtZSkgewotICAg
IHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2FyZEV2ZW50Jyk7Ci0gICAg
ZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5k
ZWZhdWx0Vmlldywga2V5TmFtZSk7Ci0gICAgaW5wdXQuZGlzcGF0Y2hFdmVudChldmVudCk7Ci19
Ci0KIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAgY29uc29sZS5sb2cocGlja2VyV2luZG93
LnBhZ2VQb3B1cENvbnRyb2xsZXIpOwotICAgIHBpY2tlcldpbmRvdy5yZW1vdmVFdmVudExpc3Rl
bmVyKCdyZXNpemUnLCBmaW5pc2hUZXN0KTsKKyAgICBjb25zb2xlLmxvZyhwb3B1cFdpbmRvdy5w
YWdlUG9wdXBDb250cm9sbGVyKTsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCdyZXNpemUnLCBmaW5pc2hUZXN0KTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Rlc3RS
dW5uZXIubm90aWZ5RG9uZSgpO30sIDApOwogfQogCiBjb25zb2xlLmxvZygnQ2hlY2sgaWYgd2lu
ZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIgZXhpc3RzIGZvciBhIHBhZ2UtcG9wdXAgd2luZG93Licp
OwogdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5h
YmxlTW9ja1BhZ2VQb3B1cCh0cnVlKTsKIAotdmFyIGRhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkYXRlJyk7Ci1kYXRlSW5wdXQub2Zmc2V0VG9wOwotc2VuZEtleShkYXRlSW5w
dXQsICdEb3duJyk7Ci12YXIgcGlja2VyV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J21vY2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5kb3c7Ci1waWNrZXJXaW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCwgZmFsc2UpOword2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBkYXRlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZGF0ZScpOworICAgIGRhdGVJbnB1dC5vZmZzZXRUb3A7CisgICAgb3BlblBpY2tlcihkYXRlSW5w
dXQpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRl
c3QsIGZhbHNlKTsKK307CiA8L3NjcmlwdD4KIDwvYm9keT4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1jb21tb24uanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcwppbmRleCBlYmJm
MGYzMTdjOGM3MDA2Y2I5YzU0MTM0NThjYzA2M2MxMTM3MWE4Li5iOGJlMTI4N2YyYTg2NmY0ODE1
NzJhMzUyNWYyYWU1YjE1ZDNiOWNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RhdGUvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWNvbW1vbi5qcwpAQCAtMzEsMTIgKzMxLDEyIEBAIGZ1
bmN0aW9uIHNlbGVjdGVkRGF0ZXMoKSB7CiB9CiAKIGZ1bmN0aW9uIG9wZW5QaWNrZXIoaW5wdXQp
IHsKLSAgICBzZW5kS2V5KGlucHV0LCAiRG93biIpOworICAgIHNlbmRLZXkoaW5wdXQsICJEb3du
IiwgZmFsc2UsIHRydWUpOwogICAgIHBvcHVwV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ21vY2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5kb3c7CiB9CiAKLWZ1bmN0aW9uIHNlbmRL
ZXkoaW5wdXQsIGtleU5hbWUpIHsKK2Z1bmN0aW9uIHNlbmRLZXkoaW5wdXQsIGtleU5hbWUsIGN0
cmxLZXksIGFsdEtleSkgewogICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdL
ZXlib2FyZEV2ZW50Jyk7Ci0gICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0
cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmlldywga2V5TmFtZSk7CisgICAgZXZlbnQuaW5p
dEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmll
dywga2V5TmFtZSwgMCwgY3RybEtleSwgYWx0S2V5KTsKICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50
KGV2ZW50KTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxl
bmRhci1waWNrZXItd2l0aC1zdGVwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUv
Y2FsZW5kYXItcGlja2VyLXdpdGgtc3RlcC5odG1sCmluZGV4IDE2NWY3YzM2NjM5M2I4OTM5MjY4
NzdjMDg1YTEzM2E3NGI4YTkzZGMuLjdjZDI1MmNkM2Y2MzQ1MWRmMDUyYmQ5ODY0NjAzYjMxODc4
NTllZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1w
aWNrZXItd2l0aC1zdGVwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2Nh
bGVuZGFyLXBpY2tlci13aXRoLXN0ZXAuaHRtbApAQCAtMiw2ICsyLDcgQEAKIDxodG1sPgogPGhl
YWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJjYWxlbmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KIDxib2R5PgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0xMiwyNSArMTMs
MTYgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbignVGVzdCBpZiBzdGVwIGxpbWl0cyBhdmFpbGFi
bGUgZGF0ZXMgaW4gY2FsZW5kYXIgcGlja2VyLicpOwogCi13aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
RW5hYmxlTW9ja1BhZ2VQb3B1cCh0cnVlKTsKLQogdmFyIGRhdGVJbnB1dCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdkYXRlJyk7Ci1zZW5kS2V5KGRhdGVJbnB1dCwgJ0Rvd24nKTsKLXZhciBw
aWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdlLXBvcHVwJyku
Y29udGVudFdpbmRvdzsKLXBpY2tlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0
ZXN0MSwgZmFsc2UpOwotCi1mdW5jdGlvbiBzZW5kS2V5KGlucHV0LCBrZXlOYW1lKSB7Ci0gICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnQnKTsKLSAgICBl
dmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUsIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LCBrZXlOYW1lKTsKLSAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLX0K
K3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBvcGVuUGlja2VyKGRhdGVJbnB1dCk7
CisgICAgcG9wdXBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGVzdDEsIGZhbHNl
KTsKK307CiAKIGZ1bmN0aW9uIHRlc3QxKCkgewogICAgIGRlYnVnKCJTdGVwIHdpdGhvdXQgbWlu
LiIpOwogICAgIHNob3VsZEJlKCdhdmFpbGFibGVEYXRlc0luQ3VycmVudE1vbnRoKCkuam9pbigi
LCIpJywgJ1siMjAxMS0wNS0wOCIsICIyMDExLTA1LTE3IiwgIjIwMTEtMDUtMjYiXS5qb2luKCIs
IiknKTsKLSAgICBwaWNrZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGVz
dDEpOworICAgIHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRlc3Qx
KTsKIAogICAgIC8vIENsb3NlIHBvcHVwCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bignXHgxQicp
OwpAQCAtMzgsMjEgKzMwLDE5IEBAIGZ1bmN0aW9uIHRlc3QxKCkgewogICAgIGRhdGVJbnB1dC5t
aW4gPSAiMjAxMS0wNS0wMSI7CiAgICAgCiAgICAgLy8gUmVvcGVuIHBvcHVwCi0gICAgc2VuZEtl
eShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpLCAnRG93bicpOwotICAgIHBpY2tlcldp
bmRvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50
V2luZG93OwotCi0gICAgcGlja2VyV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRl
c3QyLCBmYWxzZSk7CisgICAgb3BlblBpY2tlcihkYXRlSW5wdXQpOworICAgIHBvcHVwV2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QyLCBmYWxzZSk7CiB9CiAKIGZ1bmN0aW9u
IHRlc3QyKCkgewogICAgIGRlYnVnKCJTdGVwIHdoZW4gbWluIGlzIHNldC4iKTsKICAgICBzaG91
bGRCZSgnYXZhaWxhYmxlRGF0ZXNJbkN1cnJlbnRNb250aCgpLmpvaW4oIiwiKScsICdbIjIwMTEt
MDUtMDEiLCAiMjAxMS0wNS0xMCIsICIyMDExLTA1LTE5IiwgIjIwMTEtMDUtMjgiXS5qb2luKCIs
IiknKTsKLSAgICBwaWNrZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGVz
dDIpOworICAgIHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRlc3Qy
KTsKICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIAogZnVuY3Rpb24gYXZhaWxhYmxl
RGF0ZXNJbkN1cnJlbnRNb250aCgpIHsKLSAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5j
YWxsKHBpY2tlcldpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuZGF5LmF2YWlsYWJs
ZTpub3QoLm5vdC10aGlzLW1vbnRoKSIpLCBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgcmV0dXJu
IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChwb3B1cFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCIuZGF5LmF2YWlsYWJsZTpub3QoLm5vdC10aGlzLW1vbnRoKSIpLCBmdW5jdGlvbihl
bGVtZW50KSB7CiAgICAgICAgIHJldHVybiBlbGVtZW50LmRhdGFzZXQuc3VibWl0VmFsdWU7CiAg
ICAgfSkuc29ydCgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggZDM3NDYzN2FjMGExZWE2M2M4ZjA2ZWU3Yzg3NTE5YWFlOWQxZjQ4
Ni4uMWMyYjkzZWQxODMzYWQwZWNhZTVjMWZmMTA4NDA2MzliNjU1MjJjMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNDQxLDcgKzI0
NDEsNyBAQCBjcmJ1Zy5jb20vODM1MDQgWyBNYWMgXSBmYXN0L2Nzcy9jdXN0b20tZm9udC14aGVp
Z2h0Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzYxMTY5IFsgQW5kcm9pZCBM
aW51eCBXaW4gXSBjc3MzL2ltYWdlcy9vcHRpbWl6ZS1jb250cmFzdC1jYW52YXMuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzYxMTY5IFsgQW5kcm9pZCBMaW51eCBXaW4g
XSBjc3MzL2ltYWdlcy9vcHRpbWl6ZS1jb250cmFzdC1pbWFnZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKLXdlYmtpdC5vcmcvYi85MjcxMCBmYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlj
a2VyLWFwcGVhcmFuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBUaW1lb3V0IF0KK3dl
YmtpdC5vcmcvYi85MjcxMCBmYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFu
Y2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFzcyBdCiAKICMgTmV3IHRlc3QgYWRkZWQgaW4g
cjg3MzI0CiBjcmJ1Zy5jb20vODM5OTQgWyBXaW4gXSBwbGF0Zm9ybS93aW4vcGx1Z2lucy9jYWxs
LWphdmFzY3JpcHQtdGhhdC1kZXN0cm95cy1wbHVnaW4uaHRtbCBbIEZhaWx1cmUgXQpAQCAtMzY1
NSwxNCArMzY1NSwxMCBAQCB3ZWJraXQub3JnL2IvOTgwOTQgcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9mb3Jtcy90aW1lL3RpbWUtc3VnZ2VzdGlvbi1waWNrZXItYXBwZQogd2Via2l0Lm9yZy9iLzk4
MDk0IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvdGltZS90aW1lLXN1Z2dlc3Rpb24tcGlj
a2VyLWFwcGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBh
c3MgXQogd2Via2l0Lm9yZy9iLzk4MDk0IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvdGlt
ZS90aW1lLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UtcnRsLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIFBhc3MgXQogCi13ZWJraXQub3JnL2IvOTgzOTAgZmFzdC9mb3Jtcy9kYXRlL2NhbGVu
ZGFyLXBpY2tlci1hcHBlYXJhbmNlLXByZS0xMDAuaHRtbCBbIFRpbWVvdXQgXSAKLXdlYmtpdC5v
cmcvYi85ODM5MCBmYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWtleS1vcGVyYXRpb25z
Lmh0bWwgWyBUaW1lb3V0IF0gCi13ZWJraXQub3JnL2IvOTgzOTAgZmFzdC9mb3Jtcy9kYXRlL2Nh
bGVuZGFyLXBpY2tlci1tb3VzZS1vcGVyYXRpb25zLmh0bWwgWyBUaW1lb3V0IF0gCi13ZWJraXQu
b3JnL2IvOTgzOTAgZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci13aXRoLXN0ZXAuaHRt
bCBbIFRpbWVvdXQgXSAKLXdlYmtpdC5vcmcvYi85ODM5MCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXJ0bC5odG1sIFsg
VGltZW91dCBdIAotd2Via2l0Lm9yZy9iLzk4MzkwIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFy
Lmh0bWwgWyBUaW1lb3V0IF0gCi13ZWJraXQub3JnL2IvOTgzOTAgcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXItYXBwZWFyYW5jZS5odG1sIFsg
VGltZW91dCBdIAotd2Via2l0Lm9yZy9iLzk4MzkwIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9y
bXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwgWyBUaW1l
b3V0IF0gCisjIE5lZWQgcmViYXNlbGluZQord2Via2l0Lm9yZy9iLzk4MzkwIHBsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2Ut
cnRsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQord2Via2l0Lm9yZy9iLzk4MzkwIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFw
cGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQor
d2Via2l0Lm9yZy9iLzk4MzkwIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRl
LXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgUGFz
cyBdCiAKIAogIyBOdW1lcm91cyBmYWlsdXJlcyBpbiBzb2Z0d2FyZSBjb21wb3NpdGluZy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9k
YXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UtcnRsLmh0bWwgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1h
cHBlYXJhbmNlLXJ0bC5odG1sCmluZGV4IDgwYjQxMDAzNTJhY2FiY2NhZTFlOTJmYWViMTk0YWI4
YWRiNTM1NzYuLmIxYzEwMzIzNzczOGE3MDJhMjkwNmNkNTJkNzkwYzQzOTU2MmYxZmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRl
LXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UtcnRsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXIt
YXBwZWFyYW5jZS1ydGwuaHRtbApAQCAtMSw1ICsxLDYgQEAKIDwhRE9DVFlQRSBodG1sPgogPGJv
ZHkgZGlyPSJydGwiIHN0eWxlPSJwYWRkaW5nOiAwIDUwcHg7Ij4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9zdWdnZXN0aW9uLXBpY2tlci1jb21tb24u
anMiPjwvc2NyaXB0PgogPGlucHV0IHR5cGU9ZGF0ZSBpZD1kYXRlIGxpc3Q9c3VnZ2VzdGlvbnMg
c3R5bGU9IndpZHRoOiAxMDBweDsiPgogPGRhdGFsaXN0IGlkPXN1Z2dlc3Rpb25zPgogICAgIDxv
cHRpb24gbGFiZWw9IlRvZGF5Ij4yMDEyLTAxLTAxPC9vcHRpb24+CkBAIC0yNiwxNSArMjcsMTcg
QEAKIDxzY3JpcHQ+CiB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRFbmFibGVNb2NrUGFnZVBvcHVwKHRydWUpOwogCi1kb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZGF0ZScpLmZvY3VzKCk7Ci1pZiAod2luZG93LmV2ZW50U2VuZGVyKQotICAgIGV2ZW50
U2VuZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOwotdmFyIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50V2luZG93OwotcGlja2Vy
V2luZG93Lm9ucmVzaXplID0gZnVuY3Rpb24oKSB7Ci0gICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRhdGVJbnB1dCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyk7CisgICAgZGF0ZUlucHV0Lm9mZnNldFRvcDsK
KyAgICBvcGVuUGlja2VyKGRhdGVJbnB1dCk7CisgICAgcG9wdXBXaW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCwgZmFsc2UpOworfTsKKworZnVuY3Rpb24gZmluaXNo
VGVzdCgpIHsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBm
aW5pc2hUZXN0KTsKKyAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsgfSwgMCk7CiB9CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24t
cGlja2VyLWFwcGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFyLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBl
YXJhbmNlLXdpdGgtc2Nyb2xsLWJhci5odG1sCmluZGV4IGIyNzRmMmMxODNlM2Y0NzU0ZGQ3Y2E1
Y2JlZjA0N2VjNGQyMzliZjQuLmIxMjlhNDlhNGVkNzYyMzM1N2M1Y2I1ZGJmZjZkZGQzYjg0ZmIy
YzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
ZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2Utd2l0aC1zY3JvbGwtYmFyLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2Rh
dGUtc3VnZ2VzdGlvbi1waWNrZXItYXBwZWFyYW5jZS13aXRoLXNjcm9sbC1iYXIuaHRtbApAQCAt
MSw1ICsxLDYgQEAKIDwhRE9DVFlQRSBodG1sPgogPGJvZHkgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6ICNlZWZmZmY7Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zvcm1zL3Jl
c291cmNlcy9zdWdnZXN0aW9uLXBpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgogPGlucHV0IHR5
cGU9ZGF0ZSBpZD1kYXRlIHZhbHVlPSIxMDAwMC0xMi0zMSIgbGlzdD0ic3VnZ2VzdGlvbnMiIHN0
eWxlPSJ3aWR0aDogMTAwcHg7Ij4KIDxkYXRhbGlzdCBpZD1zdWdnZXN0aW9ucz4KICAgICA8b3B0
aW9uIGxhYmVsPSJUb2RheSI+MjAxMi0wMS0wMTwvb3B0aW9uPgpAQCAtNDUsMjggKzQ2LDIxIEBA
CiAgICAgPG9wdGlvbj4yMDEyLTAyLTEwPC9vcHRpb24+CiA8L2RhdGFsaXN0PgogPHNjcmlwdD4K
LWZ1bmN0aW9uIHNlbmRLZXkoaW5wdXQsIGtleU5hbWUpIHsKLSAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2Fy
ZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5h
bWUpOwotICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotfQotCiBmdW5jdGlvbiBmaW5p
c2hUZXN0KCkgewotICAgIHBpY2tlcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUn
LCBmaW5pc2hUZXN0KTsKLSAgICBwaWNrZXJXaW5kb3cuZm9jdXMoKTsKKyAgICBwb3B1cFdpbmRv
dy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaW5pc2hUZXN0KTsKKyAgICBwb3B1cFdp
bmRvdy5mb2N1cygpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ3BhZ2VEb3duJyk7CiAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHt0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTt9LCAwKTsKIH0K
IAogdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUpOwogdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7Ci1pZiAod2luZG93LmludGVybmFscykKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5h
YmxlTW9ja1BhZ2VQb3B1cCh0cnVlKTsKIAotdmFyIGRhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdkYXRlJyk7Ci1kYXRlSW5wdXQub2Zmc2V0VG9wOwotc2VuZEtleShkYXRlSW5w
dXQsICdEb3duJyk7Ci12YXIgcGlja2VyV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J21vY2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5kb3c7Ci1waWNrZXJXaW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCwgZmFsc2UpOword2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgeworICAgIHZhciBkYXRlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZGF0ZScpOworICAgIGRhdGVJbnB1dC5vZmZzZXRUb3A7CisgICAgb3BlblBpY2tlcihkYXRlSW5w
dXQpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRl
c3QsIGZhbHNlKTsKK307CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlj
a2VyLWFwcGVhcmFuY2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UuaHRtbAppbmRleCA0
ZGFlMDJlMGFkNTE0YTRlNGYyMzA3NDhiMjQ4NmI0MGIxNjI0MTg5Li5hNjNiMmViNGNjMTJmZWNj
NzNlYTA4NTg0MjA0ZTU5YzBmNDNjZGViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJh
bmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9k
YXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXItYXBwZWFyYW5jZS5odG1sCkBAIC0xLDUgKzEsNiBA
QAogPCFET0NUWVBFIGh0bWw+CiA8Ym9keSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2VlZmZm
ZjsiPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3N1
Z2dlc3Rpb24tcGlja2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+CiA8aW5wdXQgdHlwZT1kYXRlIGlk
PWRhdGUgdmFsdWU9IjEwMDAwLTEyLTMxIiBsaXN0PSJzdWdnZXN0aW9ucyIgc3R5bGU9IndpZHRo
OiAyMDBweDsiPgogPGRhdGFsaXN0IGlkPXN1Z2dlc3Rpb25zPgogICAgIDxvcHRpb24+MjAxMi0w
MS0wMDwvb3B0aW9uPiA8IS0taW52YWxpZC0tPgpAQCAtMjUsMjggKzI2LDIxIEBACiAgICAgPG9w
dGlvbj4yMDEyLTAxLTE5PC9vcHRpb24+CiA8L2RhdGFsaXN0PgogPHNjcmlwdD4KLWZ1bmN0aW9u
IHNlbmRLZXkoaW5wdXQsIGtleU5hbWUpIHsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVh
dGVFdmVudCgnS2V5Ym9hcmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCdr
ZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5hbWUpOwotICAg
IGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotfQotCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkg
ewotICAgIHBpY2tlcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaW5pc2hU
ZXN0KTsKLSAgICBwaWNrZXJXaW5kb3cuZm9jdXMoKTsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVF
dmVudExpc3RlbmVyKCdyZXNpemUnLCBmaW5pc2hUZXN0KTsKKyAgICBwb3B1cFdpbmRvdy5mb2N1
cygpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ2Rvd25BcnJvdycpOwogICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7fSwgMCk7CiB9CiAKIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZU1vY2tQ
YWdlUG9wdXAodHJ1ZSk7CiAKLXZhciBkYXRlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZGF0ZScpOwotZGF0ZUlucHV0Lm9mZnNldFRvcDsKLXNlbmRLZXkoZGF0ZUlucHV0LCAnRG93
bicpOwotdmFyIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBh
Z2UtcG9wdXAnKS5jb250ZW50V2luZG93OwotcGlja2VyV2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J3Jlc2l6ZScsIGZpbmlzaFRlc3QsIGZhbHNlKTsKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigp
IHsKKyAgICB2YXIgZGF0ZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKTsK
KyAgICBkYXRlSW5wdXQub2Zmc2V0VG9wOworICAgIG9wZW5QaWNrZXIoZGF0ZUlucHV0LCAnRG93
bicpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRl
c3QsIGZhbHNlKTsKK307CiA8L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlj
a2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRp
b25zLWV4cGVjdGVkLnR4dAppbmRleCAxZmVmZDE3Y2UwMGFhMWQ0ZWQ0NjA0MzlhMTE3NTk0ODhl
YjkzMWM4Li45NjkxNjFmNGM3NDcyOTI0MmQ2ZWM2NmI3MGI3OTgwZTNlZDY1MGEyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1z
dWdnZXN0aW9uLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1w
aWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDkxOiBudWxsCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgODk6IG51bGwK
IFRlc3RzIHRoYXQga2V5IGJpbmRpbmdzIHdvcmsgYXMgZXhwZWN0ZWQuCiAKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KQEAgLTcsNyArNyw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBD
aGVjayB0aGF0IHBhZ2UgcG9wdXAgZG9lc24ndCBleGlzdCBhdCBmaXJzdC4KIFBBU1MgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1wb3B1cCIpIGlzIG51bGwKIENoZWNrIHRoYXQg
cGFnZSBwb3B1cCBleGlzdHMuCi1QQVNTIHBpY2tlcldpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVy
LnRvU3RyaW5nKCkgaXMgIltvYmplY3QgUGFnZVBvcHVwQ29udHJvbGxlcl0iCitQQVNTIHBvcHVw
V2luZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmcoKSBpcyAiW29iamVjdCBQYWdlUG9w
dXBDb250cm9sbGVyXSIKIENoZWNrIHRoYXQgdXAvZG93biBhcnJvdyBrZXlzIHdvcmsuCiBQQVNT
IGhpZ2hsaWdodGVkRW50cnkoKSBpcyBudWxsCiBQQVNTIGhpZ2hsaWdodGVkRW50cnkoKSBpcyAi
MjAxMi0wMS0wMSIKQEAgLTM2LDcgKzM2LDcgQEAgUmVvcGVuIHBvcHVwLgogUEFTUyBoaWdobGln
aHRlZEVudHJ5KCkgaXMgIkBvcGVuQ2FsZW5kYXJQaWNrZXIiCiBPcGVuIGNhbGVuZGFyIHBpY2tl
ci4KIENvbmZpcm0gY2FsZW5kYXIgcGlja2VyIGRpZCBvcGVuLgotUEFTUyBwaWNrZXJXaW5kb3cu
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4iKS5jbGFzc0xpc3QuY29udGFpbnMoImNhbGVu
ZGFyLXBpY2tlciIpIGlzIHRydWUKK1BBU1MgcG9wdXBXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm1haW4iKS5jbGFzc0xpc3QuY29udGFpbnMoImNhbGVuZGFyLXBpY2tlciIpIGlzIHRy
dWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2Rh
dGUtc3VnZ2VzdGlvbi1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtl
eS1vcGVyYXRpb25zLmh0bWwKaW5kZXggZGMwNGI3ZTZlNGU2N2YzOTkwYjY2YzIyOTI5YWFjZTBl
NjIwZWYxYS4uZTEyNGM2MzRjYjY2MTVjNDE0YjVjNjc1MjQ0NjNkMzE4MGUyYzExZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUt
c3VnZ2VzdGlvbi1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1r
ZXktb3BlcmF0aW9ucy5odG1sCkBAIC0yLDYgKzIsNyBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvc3VnZ2VzdGlvbi1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjYmJiYmJiOyI+CiA8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KQEAgLTgxLDMwICs4MiwyOCBAQAogPC9kYXRhbGlzdD4KIDxzY3JpcHQ+CiBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCBrZXkgYmluZGluZ3Mgd29yayBhcyBleHBlY3RlZC4iKTsKLXdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRFbmFibGVNb2NrUGFnZVBvcHVwKHRydWUpOwogCiBkZWJ1ZygnQ2hl
Y2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuXCd0IGV4aXN0IGF0IGZpcnN0LicpOwogc2hvdWxkQmVO
dWxsKCdkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9jay1wYWdlLXBvcHVwIiknKTsKIAotICAg
IGNvbnNvbGUubG9nKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKSk7
Ci1zZW5kS2V5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksICdEb3duJyk7Citjb25z
b2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdlLXBvcHVwJykpOwogCi12
YXIgcGlja2VyV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vY2stcGFnZS1wb3B1
cCcpLmNvbnRlbnRXaW5kb3c7Ci1waWNrZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXpl
IiwgdGVzdDEsIGZhbHNlKTsKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBvcGVu
UGlja2VyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyksICdEb3duJyk7CisgICAgcG9w
dXBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDEsIGZhbHNlKTsKK30KIAog
dmFyIHRpbWVvdXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgdGVzdEZhaWxl
ZCgiVGVzdCB0aW1lZCBvdXQuIik7CiAgICAgZmluaXNoSlNUZXN0KCk7Ci19LCA1MDAwKTsKK30s
IDEwMDAwKTsKIAogZnVuY3Rpb24gdGVzdDEoKSB7CiAgICAgZGVidWcoJ0NoZWNrIHRoYXQgcGFn
ZSBwb3B1cCBleGlzdHMuJyk7Ci0gICAgc2hvdWxkQmUoJ3BpY2tlcldpbmRvdy5wYWdlUG9wdXBD
b250cm9sbGVyLnRvU3RyaW5nKCknLCAnIltvYmplY3QgUGFnZVBvcHVwQ29udHJvbGxlcl0iJyk7
Ci0gICAgcGlja2VyV2luZG93LmZvY3VzKCk7CisgICAgc2hvdWxkQmUoJ3BvcHVwV2luZG93LnBh
Z2VQb3B1cENvbnRyb2xsZXIudG9TdHJpbmcoKScsICciW29iamVjdCBQYWdlUG9wdXBDb250cm9s
bGVyXSInKTsKKyAgICBwb3B1cFdpbmRvdy5mb2N1cygpOwogCi0gICAgcGlja2VyV2luZG93LnJl
bW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QxLCBmYWxzZSk7CisgICAgcG9wdXBXaW5k
b3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDEsIGZhbHNlKTsKIAogICAgIGRl
YnVnKCdDaGVjayB0aGF0IHVwL2Rvd24gYXJyb3cga2V5cyB3b3JrLicpOwogICAgIHNob3VsZEJl
TnVsbCgnaGlnaGxpZ2h0ZWRFbnRyeSgpJyk7CkBAIC0xNDUsMTUgKzE0NCwxNCBAQCBmdW5jdGlv
biB0ZXN0MSgpIHsKICAgICBzaG91bGRCZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGUi
KS52YWx1ZScsICciMjAxMi0wMy0wOCInKTsKIAogICAgIGRlYnVnKCdSZW9wZW4gcG9wdXAuJyk7
Ci0gICAgc2VuZEtleShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpLCAnRG93bicpOwot
ICAgIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9w
dXAnKS5jb250ZW50V2luZG93OwotICAgIHBpY2tlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJy
ZXNpemUiLCB0ZXN0MiwgZmFsc2UpOworICAgIG9wZW5QaWNrZXIoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RhdGUnKSk7CisgICAgcG9wdXBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXpl
IiwgdGVzdDIsIGZhbHNlKTsKIH0KIAogZnVuY3Rpb24gdGVzdDIoKSB7Ci0gICAgcGlja2VyV2lu
ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QyLCBmYWxzZSk7CisgICAgcG9w
dXBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDIsIGZhbHNlKTsKIAot
ICAgIHBpY2tlcldpbmRvdy5mb2N1cygpOworICAgIHBvcHVwV2luZG93LmZvY3VzKCk7CiAKICAg
ICBkZWJ1ZygnQ2hlY2sgdGhhdCBlc2NhcGUga2V5IGNsb3NlcyB0aGUgcG9wdXAuJyk7CiAgICAg
ZXZlbnRTZW5kZXIua2V5RG93bignXHgxQicpOwpAQCAtMTYxLDE2ICsxNTksMTUgQEAgZnVuY3Rp
b24gdGVzdDIoKSB7CiAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRl
IikudmFsdWUnLCAnIjIwMTItMDMtMDgiJyk7CiAKICAgICBkZWJ1ZygnUmVvcGVuIHBvcHVwLicp
OwotICAgIHNlbmRLZXkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKSwgJ0Rvd24nKTsK
LSAgICBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdlLXBv
cHVwJykuY29udGVudFdpbmRvdzsKLSAgICBwaWNrZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
cmVzaXplIiwgdGVzdDMsIGZhbHNlKTsKKyAgICBvcGVuUGlja2VyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkYXRlJykpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIHRlc3QzLCBmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QzKCkgewotICAgIHBpY2tlcldp
bmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0MywgZmFsc2UpOwotICAgIHBp
Y2tlcldpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0NCwgZmFsc2UpOworICAg
IHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QzLCBmYWxzZSk7
CisgICAgcG9wdXBXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDQsIGZhbHNl
KTsKIAotICAgIHBpY2tlcldpbmRvdy5mb2N1cygpOworICAgIHBvcHVwV2luZG93LmZvY3VzKCk7
CiAKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdwYWdlRG93bicpOwogICAgIGV2ZW50U2VuZGVy
LmtleURvd24oJ3BhZ2VEb3duJyk7CkBAIC0xODIsMTcgKzE3OSwxNyBAQCBmdW5jdGlvbiB0ZXN0
MygpIHsKIH0KIAogZnVuY3Rpb24gdGVzdDQoKSB7Ci0gICAgcGlja2VyV2luZG93LnJlbW92ZUV2
ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3Q0LCBmYWxzZSk7CisgICAgcG9wdXBXaW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDQsIGZhbHNlKTsKIAogICAgIGRlYnVnKCdD
b25maXJtIGNhbGVuZGFyIHBpY2tlciBkaWQgb3Blbi4nKTsKLSAgICBzaG91bGRCZVRydWUoJ3Bp
Y2tlcldpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbiIpLmNsYXNzTGlzdC5jb250
YWlucygiY2FsZW5kYXItcGlja2VyIiknKTsKKyAgICBzaG91bGRCZVRydWUoJ3BvcHVwV2luZG93
LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluIikuY2xhc3NMaXN0LmNvbnRhaW5zKCJjYWxl
bmRhci1waWNrZXIiKScpOwogCiAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRUaW1lcik7CiAgICAg
ZmluaXNoSlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIGhpZ2hsaWdodGVkRW50cnkoKSB7Ci0gICAg
dmFyIGFjdGl2ZUVsZW1lbnQgPSBwaWNrZXJXaW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsK
KyAgICB2YXIgYWN0aXZlRWxlbWVudCA9IHBvcHVwV2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQ7CiAgICAgaWYgKCFhY3RpdmVFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB2
YXIgdmFsdWUgPSBhY3RpdmVFbGVtZW50LmRhdGFzZXQudmFsdWU7CkBAIC0yMDQsMTIgKzIwMSw2
IEBAIGZ1bmN0aW9uIGhpZ2hsaWdodGVkRW50cnkoKSB7CiAgICAgcmV0dXJuIG51bGw7CiB9CiAK
LWZ1bmN0aW9uIHNlbmRLZXkoaW5wdXQsIGtleU5hbWUpIHsKLSAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2Fy
ZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5h
bWUpOwotICAgIGlucHV0LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwotfQotCiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167103</attachid>
            <date>2012-10-04 07:53:40 -0700</date>
            <delta_ts>2012-10-04 11:27:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98390-20121004235250.patch</filename>
            <type>text/plain</type>
            <size>25062</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzg5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzIxZGE4MzUyYzNlZDkwNzkyZTUz
YTY4MzM5ZmIwZGJjYzBmYzdkYi4uNzM1MTZiZTUxMDEwNmZlOGRlOGRlMzViNTEyZWFhNTAyZjQ2
MjgyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTEwLTA0ICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgc29tZSBwaWNrZXIgdGVzdHMgZm9y
IGlucHV0W3R5cGU9ZGF0ZV0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk4MzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgcjEzMDM3NSBjaGFuZ2VkIGEgYmVoYXZpb3IuIEEga2V5IGJpbmQgdG8gb3BlbiBh
IGNhbGVuZGFyIHBpY2tlcgorICAgICAgICBvciBhIHN1Z2dlc3Rpb24gcGlja2VyIHdhcyBjaGFu
Z2VkIGZyb20gIkRvd24iIHRvICJBbHQgKyBEb3duIi4gV2UKKyAgICAgICAgbmVlZCB0byB1cGRh
dGUgdGVzdHMgd2hpY2ggb3BlbiBwaWNrZXJzIGZvciBpbnB1dFt0eXBlPWRhdGVdLgorCisgICAg
ICAgICogZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFu
Y2UtcHJlLTEwMC5odG1sOgorICAgICAgICBVc2Ugb3BlblBpY2tlcigpIGluIGNhbGVuZGFyLXBp
Y2tlci1jb21tb24uanMuCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tl
ci1hcHBlYXJhbmNlLmh0bWw6IGRpdHRvLgorICAgICAgICAqIGZhc3QvZm9ybXMvZGF0ZS9jYWxl
bmRhci1waWNrZXItY29tbW9uLmpzOgorICAgICAgICAob3BlblBpY2tlcik6IFNwZWNpZnkgQWx0
IG1vZGlmaWVyLgorICAgICAgICAoc2VuZEtleSk6IEFkZCBjdHJsS2V5IGFuZCBhbHRLZXkgZmxh
Z3MuCisgICAgICAgICogZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci13aXRoLXN0ZXAu
aHRtbDoKKyAgICAgICAgVXNlIG9wZW5QaWNrZXIoKSBpbiBjYWxlbmRhci1waWNrZXItY29tbW9u
LmpzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1w
aWNrZXItYXBwZWFyYW5jZS1ydGwuaHRtbDoKKyAgICAgICAgVXNlIG9wZW5QaWNrZXIoKSBpbiBz
dWdnZXN0aW9uLXBpY2tlci1jb21tb24uanMKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXdpdGgtc2Ny
b2xsLWJhci5odG1sOgorICAgICAgICBkaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLmh0bWw6
CisgICAgICAgIGRpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMv
ZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0
aW9uLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sOgorICAgICAgICBVc2Ugb3BlblBpY2tlcigp
IGFuZCBzZW5kS2V5KCkgaW4gc3VnZ2VzdGlvbi1waWNrZXItY29tbW9uLmpzLgorICAgICAgICBJ
bmNyZWFzZSB0aGUgaW50ZXJuYWwgdGltZSBvdXQgYmVjdWFzZSBpdCB3YXMgdG9vIHNob3J0IG9u
IG15IG1hY2hpbmUuCisKIDIwMTItMTAtMDQgIMOBZMOhbSBLYWxsYWkgIDxrYWRhbUBpbmYudS1z
emVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZyBhZnRlciByMTMw
Mzg1LiBTa2lwIGEgZmFpbGluZyB0ZXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS1leHBlY3Rl
ZC50eHQKaW5kZXggZTE3Yjg4MGFlYWFiOGZmNzdhYWExZGQ3MjNjMTA5YTg5YzQ3MGU2Yi4uNjBi
NzEwNTQ1MWJhZTY0NGE4OTBjOWRlNzAyMjVhNTYwODE5N2NiZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFw
cGVhcmFuY2UtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE3OiBDaGVjayBpZiB3aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlciBleGlzdHMgZm9yIGEg
cGFnZS1wb3B1cCB3aW5kb3cuCi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTI6IFtvYmplY3QgUGFn
ZVBvcHVwQ29udHJvbGxlcl0KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMjogQ2hlY2sgaWYgd2lu
ZG93LnBhZ2VQb3B1cENvbnRyb2xsZXIgZXhpc3RzIGZvciBhIHBhZ2UtcG9wdXAgd2luZG93Lgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDc6IFtvYmplY3QgUGFnZVBvcHVwQ29udHJvbGxlcl0KICAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXIt
YXBwZWFyYW5jZS1wcmUtMTAwLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2Fs
ZW5kYXItcGlja2VyLWFwcGVhcmFuY2UtcHJlLTEwMC5odG1sCmluZGV4IDgyZDRlMjZkZDM2ZmI5
ODU5YjgyNTZkMTI3ZjJkY2YyOWFjZTMyYTEuLjhlMWM0OGFlNTc0OWYxYjMxOWExNjllODk3ZDc4
ZTU0MGQwM2IxMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxl
bmRhci1waWNrZXItYXBwZWFyYW5jZS1wcmUtMTAwLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLXByZS0xMDAuaHRtbApAQCAt
MiwyMSArMiwxNiBAQAogPGh0bWw+CiA8aGVhZD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9ImNhbGVuZGFyLXBp
Y2tlci1jb21tb24uanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CiA8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogPGlucHV0IHR5cGU9ZGF0ZSBp
ZD1kYXRlIHZhbHVlPSIwMDAyLTAyLTAyIj4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBzZW5kS2V5KGVs
ZW1lbnQsIGtleU5hbWUpIHsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgn
S2V5Ym9hcmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCdrZXlkb3duJywg
dHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5hbWUpOwotICAgIGVsZW1lbnQu
ZGlzcGF0Y2hFdmVudChldmVudCk7Ci19Ci0KIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7Ci0gICAg
cGlja2VyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QpOwot
ICAgIHZhciBkYXlzQ29udGFpbmVyID0gcGlja2VyV2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoImRheXMtYXJlYSIpWzBdOworICAgIHBvcHVwV2luZG93LnJlbW92ZUV2ZW50
TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QpOworICAgIHZhciBkYXlzQ29udGFpbmVyID0g
cG9wdXBXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZGF5cy1hcmVhIilb
MF07CiAgICAgc2VuZEtleShkYXlzQ29udGFpbmVyLCAnUmlnaHQnKTsKICAgICBzZW5kS2V5KGRh
eXNDb250YWluZXIsICdFbnRlcicpOwogICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZGF0ZSIpLnZhbHVlJywgJyIwMDAyLTAyLTAzIicpOwpAQCAtMjgsMTYgKzIzLDEyIEBA
IGRlc2NyaXB0aW9uKCdDaGVjayBpZiB5ZWFyIGJlZm9yZSAxMDAgY2FuIGJlIHNldC4nKTsKIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAot
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi1pZiAod2luZG93LmludGVybmFscykKLSAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlTW9ja1BhZ2VQb3B1cCh0cnVlKTsKLQotdmFy
IGRhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJyk7Ci1kYXRlSW5wdXQu
b2Zmc2V0VG9wOwotc2VuZEtleShkYXRlSW5wdXQsICdEb3duJyk7Ci12YXIgcGlja2VyV2luZG93
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vY2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5k
b3c7Ci1waWNrZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCwg
ZmFsc2UpOword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBkYXRlSW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpOworICAgIGRhdGVJbnB1dC5vZmZzZXRU
b3A7CisgICAgb3BlblBpY2tlcihkYXRlSW5wdXQpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QsIGZhbHNlKTsKK307CiB2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2UuaHRtbAppbmRl
eCA0NWVhMjYxYTg1OTg3ODg5OGY1MzZmN2U1ZmM4NmMyNzk1OGI2MDk2Li5lYzg3ZjgyYjJhNGJm
ZTFhYWM2Njk5MDFlMTExMTBiMWQzZDRkMzg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2UuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLWFwcGVhcmFuY2UuaHRtbApAQCAt
MSwzMCArMSwyNCBAQAogPCFET0NUWVBFIGh0bWw+CiA8Ym9keT4KKzxzY3JpcHQgc3JjPSJjYWxl
bmRhci1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KIDxpbnB1dCB0eXBlPWRhdGUgaWQ9ZGF0
ZSB2YWx1ZT0iMTAwMDAtMTItMzEiPgogPHNjcmlwdD4KLWZ1bmN0aW9uIHNlbmRLZXkoaW5wdXQs
IGtleU5hbWUpIHsKLSAgICB2YXIgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnS2V5Ym9h
cmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwg
dHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5hbWUpOwotICAgIGlucHV0LmRpc3BhdGNo
RXZlbnQoZXZlbnQpOwotfQotCiBmdW5jdGlvbiBmaW5pc2hUZXN0KCkgewotICAgIGNvbnNvbGUu
bG9nKHBpY2tlcldpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyKTsKLSAgICBwaWNrZXJXaW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7CisgICAgY29uc29sZS5s
b2cocG9wdXBXaW5kb3cucGFnZVBvcHVwQ29udHJvbGxlcik7CisgICAgcG9wdXBXaW5kb3cucmVt
b3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7CiAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHt0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTt9LCAwKTsKIH0KIAogY29uc29sZS5s
b2coJ0NoZWNrIGlmIHdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyIGV4aXN0cyBmb3IgYSBwYWdl
LXBvcHVwIHdpbmRvdy4nKTsKIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEVuYWJsZU1vY2tQYWdlUG9wdXAodHJ1ZSk7CiAKLXZhciBkYXRlSW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpOwotZGF0ZUlucHV0Lm9mZnNldFRvcDsK
LXNlbmRLZXkoZGF0ZUlucHV0LCAnRG93bicpOwotdmFyIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50V2luZG93OwotcGlja2Vy
V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QsIGZhbHNlKTsKK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZGF0ZUlucHV0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RhdGUnKTsKKyAgICBkYXRlSW5wdXQub2Zmc2V0VG9wOworICAgIG9w
ZW5QaWNrZXIoZGF0ZUlucHV0KTsKKyAgICBwb3B1cFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdy
ZXNpemUnLCBmaW5pc2hUZXN0LCBmYWxzZSk7Cit9OwogPC9zY3JpcHQ+CiA8L2JvZHk+CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItY29t
bW9uLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1jb21t
b24uanMKaW5kZXggZWJiZjBmMzE3YzhjNzAwNmNiOWM1NDEzNDU4Y2MwNjNjMTEzNzFhOC4uYjhi
ZTEyODdmMmE4NjZmNDgxNTcyYTM1MjVmMmFlNWIxNWQzYjljZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1jb21tb24uanMKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci1jb21tb24uanMKQEAgLTMx
LDEyICszMSwxMiBAQCBmdW5jdGlvbiBzZWxlY3RlZERhdGVzKCkgewogfQogCiBmdW5jdGlvbiBv
cGVuUGlja2VyKGlucHV0KSB7Ci0gICAgc2VuZEtleShpbnB1dCwgIkRvd24iKTsKKyAgICBzZW5k
S2V5KGlucHV0LCAiRG93biIsIGZhbHNlLCB0cnVlKTsKICAgICBwb3B1cFdpbmRvdyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50V2luZG93OwogfQog
Ci1mdW5jdGlvbiBzZW5kS2V5KGlucHV0LCBrZXlOYW1lKSB7CitmdW5jdGlvbiBzZW5kS2V5KGlu
cHV0LCBrZXlOYW1lLCBjdHJsS2V5LCBhbHRLZXkpIHsKICAgICB2YXIgZXZlbnQgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgnS2V5Ym9hcmRFdmVudCcpOwotICAgIGV2ZW50LmluaXRLZXlib2FyZEV2
ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9jdW1lbnQuZGVmYXVsdFZpZXcsIGtleU5hbWUp
OworICAgIGV2ZW50LmluaXRLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSwgZG9j
dW1lbnQuZGVmYXVsdFZpZXcsIGtleU5hbWUsIDAsIGN0cmxLZXksIGFsdEtleSk7CiAgICAgaW5w
dXQuZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2RhdGUvY2FsZW5kYXItcGlja2VyLXdpdGgtc3RlcC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tlci13aXRoLXN0ZXAuaHRtbAppbmRleCAxNjVm
N2MzNjYzOTNiODkzOTI2ODc3YzA4NWExMzNhNzRiOGE5M2RjLi43Y2QyNTJjZDNmNjM0NTFkZjA1
MmJkOTg2NDYwM2IzMTg3ODU5ZWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2RhdGUvY2FsZW5kYXItcGlja2VyLXdpdGgtc3RlcC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItd2l0aC1zdGVwLmh0bWwKQEAgLTIsNiArMiw3
IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iY2FsZW5kYXItcGlja2VyLWNvbW1v
bi5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgpAQCAtMTIsMjUgKzEzLDE2IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oJ1Rlc3QgaWYgc3Rl
cCBsaW1pdHMgYXZhaWxhYmxlIGRhdGVzIGluIGNhbGVuZGFyIHBpY2tlci4nKTsKIAotd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEVuYWJsZU1vY2tQYWdlUG9wdXAodHJ1ZSk7Ci0KIHZhciBkYXRlSW5w
dXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpOwotc2VuZEtleShkYXRlSW5wdXQs
ICdEb3duJyk7Ci12YXIgcGlja2VyV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21v
Y2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5kb3c7Ci1waWNrZXJXaW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcigncmVzaXplJywgdGVzdDEsIGZhbHNlKTsKLQotZnVuY3Rpb24gc2VuZEtleShpbnB1dCwg
a2V5TmFtZSkgewotICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdLZXlib2Fy
ZEV2ZW50Jyk7Ci0gICAgZXZlbnQuaW5pdEtleWJvYXJkRXZlbnQoJ2tleWRvd24nLCB0cnVlLCB0
cnVlLCBkb2N1bWVudC5kZWZhdWx0Vmlldywga2V5TmFtZSk7Ci0gICAgaW5wdXQuZGlzcGF0Y2hF
dmVudChldmVudCk7Ci19Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgb3BlblBp
Y2tlcihkYXRlSW5wdXQpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6
ZScsIHRlc3QxLCBmYWxzZSk7Cit9OwogCiBmdW5jdGlvbiB0ZXN0MSgpIHsKICAgICBkZWJ1Zygi
U3RlcCB3aXRob3V0IG1pbi4iKTsKICAgICBzaG91bGRCZSgnYXZhaWxhYmxlRGF0ZXNJbkN1cnJl
bnRNb250aCgpLmpvaW4oIiwiKScsICdbIjIwMTEtMDUtMDgiLCAiMjAxMS0wNS0xNyIsICIyMDEx
LTA1LTI2Il0uam9pbigiLCIpJyk7Ci0gICAgcGlja2VyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3Jlc2l6ZScsIHRlc3QxKTsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCdyZXNpemUnLCB0ZXN0MSk7CiAKICAgICAvLyBDbG9zZSBwb3B1cAogICAgIGV2ZW50U2VuZGVy
LmtleURvd24oJ1x4MUInKTsKQEAgLTM4LDIxICszMCwxOSBAQCBmdW5jdGlvbiB0ZXN0MSgpIHsK
ICAgICBkYXRlSW5wdXQubWluID0gIjIwMTEtMDUtMDEiOwogICAgIAogICAgIC8vIFJlb3BlbiBw
b3B1cAotICAgIHNlbmRLZXkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKSwgJ0Rvd24n
KTsKLSAgICBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdl
LXBvcHVwJykuY29udGVudFdpbmRvdzsKLQotICAgIHBpY2tlcldpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJyZXNpemUiLCB0ZXN0MiwgZmFsc2UpOworICAgIG9wZW5QaWNrZXIoZGF0ZUlucHV0KTsK
KyAgICBwb3B1cFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0MiwgZmFsc2Up
OwogfQogCiBmdW5jdGlvbiB0ZXN0MigpIHsKICAgICBkZWJ1ZygiU3RlcCB3aGVuIG1pbiBpcyBz
ZXQuIik7CiAgICAgc2hvdWxkQmUoJ2F2YWlsYWJsZURhdGVzSW5DdXJyZW50TW9udGgoKS5qb2lu
KCIsIiknLCAnWyIyMDExLTA1LTAxIiwgIjIwMTEtMDUtMTAiLCAiMjAxMS0wNS0xOSIsICIyMDEx
LTA1LTI4Il0uam9pbigiLCIpJyk7Ci0gICAgcGlja2VyV2luZG93LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoJ3Jlc2l6ZScsIHRlc3QyKTsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVy
KCdyZXNpemUnLCB0ZXN0Mik7CiAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiAKIGZ1
bmN0aW9uIGF2YWlsYWJsZURhdGVzSW5DdXJyZW50TW9udGgoKSB7Ci0gICAgcmV0dXJuIEFycmF5
LnByb3RvdHlwZS5tYXAuY2FsbChwaWNrZXJXaW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFs
bCgiLmRheS5hdmFpbGFibGU6bm90KC5ub3QtdGhpcy1tb250aCkiKSwgZnVuY3Rpb24oZWxlbWVu
dCkgeworICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwocG9wdXBXaW5kb3cuZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRheS5hdmFpbGFibGU6bm90KC5ub3QtdGhpcy1tb250
aCkiKSwgZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICByZXR1cm4gZWxlbWVudC5kYXRhc2V0
LnN1Ym1pdFZhbHVlOwogICAgIH0pLnNvcnQoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFlM2U0NTE3MTliNjA2NGFlYTM1MjE3
OTRkODk1OTAwMTBmNjkwOTEuLjhhZjkzZjBiODEwZjM5NTVkNzIwMmY0MGRiODExZGY1NmE3NDZi
YmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cwpAQCAtMjQ0MSw3ICsyNDQxLDcgQEAgY3JidWcuY29tLzgzNTA0IFsgTWFjIF0gZmFzdC9jc3Mv
Y3VzdG9tLWZvbnQteGhlaWdodC5odG1sIFsgRmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi82
MTE2OSBbIEFuZHJvaWQgTGludXggV2luIF0gY3NzMy9pbWFnZXMvb3B0aW1pemUtY29udHJhc3Qt
Y2FudmFzLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi82MTE2OSBbIEFu
ZHJvaWQgTGludXggV2luIF0gY3NzMy9pbWFnZXMvb3B0aW1pemUtY29udHJhc3QtaW1hZ2UuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvOTI3MTAgZmFzdC9mb3Jtcy9k
YXRlL2NhbGVuZGFyLXBpY2tlci1hcHBlYXJhbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBh
c3MgVGltZW91dCBdCit3ZWJraXQub3JnL2IvOTI3MTAgZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFy
LXBpY2tlci1hcHBlYXJhbmNlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIFBhc3MgXQogCiAjIE5l
dyB0ZXN0IGFkZGVkIGluIHI4NzMyNAogY3JidWcuY29tLzgzOTk0IFsgV2luIF0gcGxhdGZvcm0v
d2luL3BsdWdpbnMvY2FsbC1qYXZhc2NyaXB0LXRoYXQtZGVzdHJveXMtcGx1Z2luLmh0bWwgWyBG
YWlsdXJlIF0KQEAgLTM2NTUsMTQgKzM2NTUsMTAgQEAgd2Via2l0Lm9yZy9iLzk4MDk0IHBsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvdGltZS90aW1lLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGUK
IHdlYmtpdC5vcmcvYi85ODA5NCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL3RpbWUvdGlt
ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXdpdGgtc2Nyb2xsLWJhci5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBQYXNzIF0KIHdlYmtpdC5vcmcvYi85ODA5NCBwbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L2Zvcm1zL3RpbWUvdGltZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXJ0bC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KIAotd2Via2l0Lm9yZy9iLzk4MzkwIGZhc3Qv
Zm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItYXBwZWFyYW5jZS1wcmUtMTAwLmh0bWwgWyBUaW1l
b3V0IF0gCi13ZWJraXQub3JnL2IvOTgzOTAgZmFzdC9mb3Jtcy9kYXRlL2NhbGVuZGFyLXBpY2tl
ci1rZXktb3BlcmF0aW9ucy5odG1sIFsgVGltZW91dCBdIAotd2Via2l0Lm9yZy9iLzk4MzkwIGZh
c3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNrZXItbW91c2Utb3BlcmF0aW9ucy5odG1sIFsgVGlt
ZW91dCBdIAotd2Via2l0Lm9yZy9iLzk4MzkwIGZhc3QvZm9ybXMvZGF0ZS9jYWxlbmRhci1waWNr
ZXItd2l0aC1zdGVwLmh0bWwgWyBUaW1lb3V0IF0gCi13ZWJraXQub3JnL2IvOTgzOTAgcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXItYXBwZWFy
YW5jZS1ydGwuaHRtbCBbIFRpbWVvdXQgXSAKLXdlYmtpdC5vcmcvYi85ODM5MCBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNl
LXdpdGgtc2Nyb2xsLWJhci5odG1sIFsgVGltZW91dCBdIAotd2Via2l0Lm9yZy9iLzk4MzkwIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFw
cGVhcmFuY2UuaHRtbCBbIFRpbWVvdXQgXSAKLXdlYmtpdC5vcmcvYi85ODM5MCBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1rZXktb3BlcmF0
aW9ucy5odG1sIFsgVGltZW91dCBdIAorIyBOZWVkIHJlYmFzZWxpbmUKK3dlYmtpdC5vcmcvYi85
ODM5MCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBp
Y2tlci1hcHBlYXJhbmNlLXJ0bC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQYXNzIF0KK3dlYmtp
dC5vcmcvYi85ODM5MCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdn
ZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXdpdGgtc2Nyb2xsLWJhci5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBQYXNzIF0KK3dlYmtpdC5vcmcvYi85ODM5MCBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIFBhc3MgXQogCiAKICMgTnVtZXJvdXMgZmFpbHVyZXMgaW4gc29mdHdhcmUg
Y29tcG9zaXRpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXJ0bC5odG1s
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3Vn
Z2VzdGlvbi1waWNrZXItYXBwZWFyYW5jZS1ydGwuaHRtbAppbmRleCA4MGI0MTAwMzUyYWNhYmNj
YWUxZTkyZmFlYjE5NGFiOGFkYjUzNTc2Li5iMWMxMDMyMzc3MzhhNzAyYTI5MDZjZDUyZDc5MGM0
Mzk1NjJmMWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXJ0bC5odG1sCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1
Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UtcnRsLmh0bWwKQEAgLTEsNSArMSw2IEBACiA8IURP
Q1RZUEUgaHRtbD4KIDxib2R5IGRpcj0icnRsIiBzdHlsZT0icGFkZGluZzogMCA1MHB4OyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc3VnZ2VzdGlv
bi1waWNrZXItY29tbW9uLmpzIj48L3NjcmlwdD4KIDxpbnB1dCB0eXBlPWRhdGUgaWQ9ZGF0ZSBs
aXN0PXN1Z2dlc3Rpb25zIHN0eWxlPSJ3aWR0aDogMTAwcHg7Ij4KIDxkYXRhbGlzdCBpZD1zdWdn
ZXN0aW9ucz4KICAgICA8b3B0aW9uIGxhYmVsPSJUb2RheSI+MjAxMi0wMS0wMTwvb3B0aW9uPgpA
QCAtMjYsMTUgKzI3LDE3IEBACiA8c2NyaXB0PgogdGVzdFJ1bm5lci5kdW1wQXNUZXh0KHRydWUp
OwogdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci1pZiAod2luZG93LmludGVybmFscykKLSAg
ICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlTW9ja1BhZ2VQb3B1cCh0cnVlKTsKIAotZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKS5mb2N1cygpOwotaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikKLSAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cnKTsKLXZhciBwaWNrZXJX
aW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9jay1wYWdlLXBvcHVwJykuY29udGVu
dFdpbmRvdzsKLXBpY2tlcldpbmRvdy5vbnJlc2l6ZSA9IGZ1bmN0aW9uKCkgewotICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZh
ciBkYXRlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpOworICAgIGRhdGVJ
bnB1dC5vZmZzZXRUb3A7CisgICAgb3BlblBpY2tlcihkYXRlSW5wdXQpOworICAgIHBvcHVwV2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QsIGZhbHNlKTsKK307CisK
K2Z1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAgcG9wdXBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7CisgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDApOwogfQogPC9zY3JpcHQ+CiA8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUv
ZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXdpdGgtc2Nyb2xsLWJhci5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2Vz
dGlvbi1waWNrZXItYXBwZWFyYW5jZS13aXRoLXNjcm9sbC1iYXIuaHRtbAppbmRleCBiMjc0ZjJj
MTgzZTNmNDc1NGRkN2NhNWNiZWYwNDdlYzRkMjM5YmY0Li5iMTI5YTQ5YTRlZDc2MjMzNTdjNWNi
NWRiZmY2ZGRkM2I4NGZiMmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLXdp
dGgtc2Nyb2xsLWJhci5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2Utd2l0aC1zY3Jv
bGwtYmFyLmh0bWwKQEAgLTEsNSArMSw2IEBACiA8IURPQ1RZUEUgaHRtbD4KIDxib2R5IHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmZmZmOyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4v
Li4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvc3VnZ2VzdGlvbi1waWNrZXItY29tbW9uLmpzIj48L3Nj
cmlwdD4KIDxpbnB1dCB0eXBlPWRhdGUgaWQ9ZGF0ZSB2YWx1ZT0iMTAwMDAtMTItMzEiIGxpc3Q9
InN1Z2dlc3Rpb25zIiBzdHlsZT0id2lkdGg6IDEwMHB4OyI+CiA8ZGF0YWxpc3QgaWQ9c3VnZ2Vz
dGlvbnM+CiAgICAgPG9wdGlvbiBsYWJlbD0iVG9kYXkiPjIwMTItMDEtMDE8L29wdGlvbj4KQEAg
LTQ1LDI4ICs0NiwyMSBAQAogICAgIDxvcHRpb24+MjAxMi0wMi0xMDwvb3B0aW9uPgogPC9kYXRh
bGlzdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBzZW5kS2V5KGlucHV0LCBrZXlOYW1lKSB7Ci0gICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnQnKTsKLSAgICBl
dmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUsIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LCBrZXlOYW1lKTsKLSAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLX0K
LQogZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKLSAgICBwaWNrZXJXaW5kb3cucmVtb3ZlRXZlbnRM
aXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7Ci0gICAgcGlja2VyV2luZG93LmZvY3VzKCk7
CisgICAgcG9wdXBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVz
dCk7CisgICAgcG9wdXBXaW5kb3cuZm9jdXMoKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdw
YWdlRG93bicpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7dGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7fSwgMCk7CiB9CiAKIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCh0cnVlKTsKIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOwotaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldEVuYWJsZU1vY2tQYWdlUG9wdXAodHJ1ZSk7CiAKLXZhciBkYXRlSW5wdXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpOwotZGF0ZUlucHV0Lm9mZnNldFRvcDsK
LXNlbmRLZXkoZGF0ZUlucHV0LCAnRG93bicpOwotdmFyIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50V2luZG93OwotcGlja2Vy
V2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZpbmlzaFRlc3QsIGZhbHNlKTsKK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgZGF0ZUlucHV0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2RhdGUnKTsKKyAgICBkYXRlSW5wdXQub2Zmc2V0VG9wOworICAgIG9w
ZW5QaWNrZXIoZGF0ZUlucHV0KTsKKyAgICBwb3B1cFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdy
ZXNpemUnLCBmaW5pc2hUZXN0LCBmYWxzZSk7Cit9OwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0
ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJhbmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBpY2tlci1hcHBlYXJh
bmNlLmh0bWwKaW5kZXggNGRhZTAyZTBhZDUxNGE0ZTRmMjMwNzQ4YjI0ODZiNDBiMTYyNDE4OS4u
YTYzYjJlYjRjYzEyZmVjYzczZWEwODU4NDIwNGU1OWMwZjQzY2RlYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlv
bi1waWNrZXItYXBwZWFyYW5jZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWFwcGVhcmFuY2UuaHRt
bApAQCAtMSw1ICsxLDYgQEAKIDwhRE9DVFlQRSBodG1sPgogPGJvZHkgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6ICNlZWZmZmY7Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2Zv
cm1zL3Jlc291cmNlcy9zdWdnZXN0aW9uLXBpY2tlci1jb21tb24uanMiPjwvc2NyaXB0PgogPGlu
cHV0IHR5cGU9ZGF0ZSBpZD1kYXRlIHZhbHVlPSIxMDAwMC0xMi0zMSIgbGlzdD0ic3VnZ2VzdGlv
bnMiIHN0eWxlPSJ3aWR0aDogMjAwcHg7Ij4KIDxkYXRhbGlzdCBpZD1zdWdnZXN0aW9ucz4KICAg
ICA8b3B0aW9uPjIwMTItMDEtMDA8L29wdGlvbj4gPCEtLWludmFsaWQtLT4KQEAgLTI1LDI4ICsy
NiwyMSBAQAogICAgIDxvcHRpb24+MjAxMi0wMS0xOTwvb3B0aW9uPgogPC9kYXRhbGlzdD4KIDxz
Y3JpcHQ+Ci1mdW5jdGlvbiBzZW5kS2V5KGlucHV0LCBrZXlOYW1lKSB7Ci0gICAgdmFyIGV2ZW50
ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnQnKTsKLSAgICBldmVudC5pbml0
S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUsIGRvY3VtZW50LmRlZmF1bHRWaWV3
LCBrZXlOYW1lKTsKLSAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLX0KLQogZnVuY3Rp
b24gZmluaXNoVGVzdCgpIHsKLSAgICBwaWNrZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcign
cmVzaXplJywgZmluaXNoVGVzdCk7Ci0gICAgcGlja2VyV2luZG93LmZvY3VzKCk7CisgICAgcG9w
dXBXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgZmluaXNoVGVzdCk7CisgICAg
cG9wdXBXaW5kb3cuZm9jdXMoKTsKICAgICBldmVudFNlbmRlci5rZXlEb3duKCdkb3duQXJyb3cn
KTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge3Rlc3RSdW5uZXIubm90aWZ5RG9uZSgpO30s
IDApOwogfQogCiB0ZXN0UnVubmVyLmR1bXBBc1RleHQodHJ1ZSk7CiB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKLWlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRFbmFibGVNb2NrUGFnZVBvcHVwKHRydWUpOwogCi12YXIgZGF0ZUlucHV0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2RhdGUnKTsKLWRhdGVJbnB1dC5vZmZzZXRUb3A7Ci1zZW5kS2V5
KGRhdGVJbnB1dCwgJ0Rvd24nKTsKLXZhciBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbW9jay1wYWdlLXBvcHVwJykuY29udGVudFdpbmRvdzsKLXBpY2tlcldpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmaW5pc2hUZXN0LCBmYWxzZSk7Cit3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIGRhdGVJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdkYXRlJyk7CisgICAgZGF0ZUlucHV0Lm9mZnNldFRvcDsKKyAgICBvcGVuUGlja2Vy
KGRhdGVJbnB1dCwgJ0Rvd24nKTsKKyAgICBwb3B1cFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdy
ZXNpemUnLCBmaW5pc2hUZXN0LCBmYWxzZSk7Cit9OwogPC9zY3JpcHQ+CiA8L2JvZHk+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0
ZS1zdWdnZXN0aW9uLXBpY2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdnZXN0aW9uLXBp
Y2tlci1rZXktb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKaW5kZXggMWZlZmQxN2NlMDBhYTFkNGVk
NDYwNDM5YTExNzU5NDg4ZWI5MzFjOC4uOTY5MTYxZjRjNzQ3MjkyNDJkNmVjNjZiNzBiNzk4MGUz
ZWQ2NTBhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9m
b3Jtcy9kYXRlL2RhdGUtc3VnZ2VzdGlvbi1waWNrZXIta2V5LW9wZXJhdGlvbnMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZm9ybXMvZGF0ZS9k
YXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSA5MTogbnVsbAorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDg5OiBudWxsCiBUZXN0cyB0aGF0IGtleSBiaW5kaW5ncyB3b3JrIGFzIGV4cGVjdGVk
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkBAIC03LDcgKzcsNyBAQCBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURQogQ2hlY2sgdGhhdCBwYWdlIHBvcHVwIGRvZXNuJ3QgZXhpc3QgYXQgZmly
c3QuCiBQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtb2NrLXBhZ2UtcG9wdXAiKSBpcyBu
dWxsCiBDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZXhpc3RzLgotUEFTUyBwaWNrZXJXaW5kb3cucGFn
ZVBvcHVwQ29udHJvbGxlci50b1N0cmluZygpIGlzICJbb2JqZWN0IFBhZ2VQb3B1cENvbnRyb2xs
ZXJdIgorUEFTUyBwb3B1cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRvU3RyaW5nKCkgaXMg
IltvYmplY3QgUGFnZVBvcHVwQ29udHJvbGxlcl0iCiBDaGVjayB0aGF0IHVwL2Rvd24gYXJyb3cg
a2V5cyB3b3JrLgogUEFTUyBoaWdobGlnaHRlZEVudHJ5KCkgaXMgbnVsbAogUEFTUyBoaWdobGln
aHRlZEVudHJ5KCkgaXMgIjIwMTItMDEtMDEiCkBAIC0zNiw3ICszNiw3IEBAIFJlb3BlbiBwb3B1
cC4KIFBBU1MgaGlnaGxpZ2h0ZWRFbnRyeSgpIGlzICJAb3BlbkNhbGVuZGFyUGlja2VyIgogT3Bl
biBjYWxlbmRhciBwaWNrZXIuCiBDb25maXJtIGNhbGVuZGFyIHBpY2tlciBkaWQgb3Blbi4KLVBB
U1MgcGlja2VyV2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluIikuY2xhc3NMaXN0
LmNvbnRhaW5zKCJjYWxlbmRhci1waWNrZXIiKSBpcyB0cnVlCitQQVNTIHBvcHVwV2luZG93LmRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluIikuY2xhc3NMaXN0LmNvbnRhaW5zKCJjYWxlbmRh
ci1waWNrZXIiKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2Zvcm1zL2RhdGUvZGF0ZS1zdWdn
ZXN0aW9uLXBpY2tlci1rZXktb3BlcmF0aW9ucy5odG1sCmluZGV4IGRjMDRiN2U2ZTRlNjdmMzk5
MGI2NmMyMjkyOWFhY2UwZTYyMGVmMWEuLmUxMjRjNjM0Y2I2NjE1YzQxNGI1YzY3NTI0NDYzZDMx
ODBlMmMxMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
Zm9ybXMvZGF0ZS9kYXRlLXN1Z2dlc3Rpb24tcGlja2VyLWtleS1vcGVyYXRpb25zLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9mb3Jtcy9kYXRlL2RhdGUtc3Vn
Z2VzdGlvbi1waWNrZXIta2V5LW9wZXJhdGlvbnMuaHRtbApAQCAtMiw2ICsyLDcgQEAKIDxodG1s
PgogPGhlYWQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uLy4uL2Zh
c3QvZm9ybXMvcmVzb3VyY2VzL3N1Z2dlc3Rpb24tcGlja2VyLWNvbW1vbi5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI2JiYmJiYjsiPgogPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC04MSwzMCArODIsMjggQEAKIDwvZGF0YWxpc3Q+CiA8
c2NyaXB0PgogZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQga2V5IGJpbmRpbmdzIHdvcmsgYXMgZXhw
ZWN0ZWQuIik7Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci1pZiAod2luZG93LmludGVy
bmFscykKLSAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RW5hYmxlTW9ja1BhZ2VQb3B1cCh0cnVl
KTsKIAogZGVidWcoJ0NoZWNrIHRoYXQgcGFnZSBwb3B1cCBkb2VzblwndCBleGlzdCBhdCBmaXJz
dC4nKTsKIHNob3VsZEJlTnVsbCgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1vY2stcGFnZS1w
b3B1cCIpJyk7CiAKLSAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9j
ay1wYWdlLXBvcHVwJykpOwotc2VuZEtleShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScp
LCAnRG93bicpOworY29uc29sZS5sb2coZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vY2stcGFn
ZS1wb3B1cCcpKTsKIAotdmFyIHBpY2tlcldpbmRvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdtb2NrLXBhZ2UtcG9wdXAnKS5jb250ZW50V2luZG93OwotcGlja2VyV2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QxLCBmYWxzZSk7Cit3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24oKSB7CisgICAgb3BlblBpY2tlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpLCAn
RG93bicpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3Qx
LCBmYWxzZSk7Cit9CiAKIHZhciB0aW1lb3V0VGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
ewogICAgIHRlc3RGYWlsZWQoIlRlc3QgdGltZWQgb3V0LiIpOwogICAgIGZpbmlzaEpTVGVzdCgp
OwotfSwgNTAwMCk7Cit9LCAxMDAwMCk7CiAKIGZ1bmN0aW9uIHRlc3QxKCkgewogICAgIGRlYnVn
KCdDaGVjayB0aGF0IHBhZ2UgcG9wdXAgZXhpc3RzLicpOwotICAgIHNob3VsZEJlKCdwaWNrZXJX
aW5kb3cucGFnZVBvcHVwQ29udHJvbGxlci50b1N0cmluZygpJywgJyJbb2JqZWN0IFBhZ2VQb3B1
cENvbnRyb2xsZXJdIicpOwotICAgIHBpY2tlcldpbmRvdy5mb2N1cygpOworICAgIHNob3VsZEJl
KCdwb3B1cFdpbmRvdy5wYWdlUG9wdXBDb250cm9sbGVyLnRvU3RyaW5nKCknLCAnIltvYmplY3Qg
UGFnZVBvcHVwQ29udHJvbGxlcl0iJyk7CisgICAgcG9wdXBXaW5kb3cuZm9jdXMoKTsKIAotICAg
IHBpY2tlcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0MSwgZmFsc2Up
OworICAgIHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QxLCBm
YWxzZSk7CiAKICAgICBkZWJ1ZygnQ2hlY2sgdGhhdCB1cC9kb3duIGFycm93IGtleXMgd29yay4n
KTsKICAgICBzaG91bGRCZU51bGwoJ2hpZ2hsaWdodGVkRW50cnkoKScpOwpAQCAtMTQ1LDE1ICsx
NDQsMTQgQEAgZnVuY3Rpb24gdGVzdDEoKSB7CiAgICAgc2hvdWxkQmUoJ2RvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkYXRlIikudmFsdWUnLCAnIjIwMTItMDMtMDgiJyk7CiAKICAgICBkZWJ1Zygn
UmVvcGVuIHBvcHVwLicpOwotICAgIHNlbmRLZXkoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rh
dGUnKSwgJ0Rvd24nKTsKLSAgICBwaWNrZXJXaW5kb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbW9jay1wYWdlLXBvcHVwJykuY29udGVudFdpbmRvdzsKLSAgICBwaWNrZXJXaW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDIsIGZhbHNlKTsKKyAgICBvcGVuUGlja2VyKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkYXRlJykpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QyLCBmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QyKCkg
ewotICAgIHBpY2tlcldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0Miwg
ZmFsc2UpOworICAgIHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRl
c3QyLCBmYWxzZSk7CiAKLSAgICBwaWNrZXJXaW5kb3cuZm9jdXMoKTsKKyAgICBwb3B1cFdpbmRv
dy5mb2N1cygpOwogCiAgICAgZGVidWcoJ0NoZWNrIHRoYXQgZXNjYXBlIGtleSBjbG9zZXMgdGhl
IHBvcHVwLicpOwogICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1x4MUInKTsKQEAgLTE2MSwxNiAr
MTU5LDE1IEBAIGZ1bmN0aW9uIHRlc3QyKCkgewogICAgIHNob3VsZEJlKCdkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGF0ZSIpLnZhbHVlJywgJyIyMDEyLTAzLTA4IicpOwogCiAgICAgZGVidWco
J1Jlb3BlbiBwb3B1cC4nKTsKLSAgICBzZW5kS2V5KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdk
YXRlJyksICdEb3duJyk7Ci0gICAgcGlja2VyV2luZG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ21vY2stcGFnZS1wb3B1cCcpLmNvbnRlbnRXaW5kb3c7Ci0gICAgcGlja2VyV2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3QzLCBmYWxzZSk7CisgICAgb3BlblBpY2tlcihk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGF0ZScpKTsKKyAgICBwb3B1cFdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0MywgZmFsc2UpOwogfQogCiBmdW5jdGlvbiB0ZXN0Mygp
IHsKLSAgICBwaWNrZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVzdDMs
IGZhbHNlKTsKLSAgICBwaWNrZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwgdGVz
dDQsIGZhbHNlKTsKKyAgICBwb3B1cFdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUi
LCB0ZXN0MywgZmFsc2UpOworICAgIHBvcHVwV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIHRlc3Q0LCBmYWxzZSk7CiAKLSAgICBwaWNrZXJXaW5kb3cuZm9jdXMoKTsKKyAgICBwb3B1
cFdpbmRvdy5mb2N1cygpOwogCiAgICAgZXZlbnRTZW5kZXIua2V5RG93bigncGFnZURvd24nKTsK
ICAgICBldmVudFNlbmRlci5rZXlEb3duKCdwYWdlRG93bicpOwpAQCAtMTgyLDE3ICsxNzksMTcg
QEAgZnVuY3Rpb24gdGVzdDMoKSB7CiB9CiAKIGZ1bmN0aW9uIHRlc3Q0KCkgewotICAgIHBpY2tl
cldpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0ZXN0NCwgZmFsc2UpOworICAg
IHBvcHVwV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRlc3Q0LCBmYWxzZSk7
CiAKICAgICBkZWJ1ZygnQ29uZmlybSBjYWxlbmRhciBwaWNrZXIgZGlkIG9wZW4uJyk7Ci0gICAg
c2hvdWxkQmVUcnVlKCdwaWNrZXJXaW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4i
KS5jbGFzc0xpc3QuY29udGFpbnMoImNhbGVuZGFyLXBpY2tlciIpJyk7CisgICAgc2hvdWxkQmVU
cnVlKCdwb3B1cFdpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFpbiIpLmNsYXNzTGlz
dC5jb250YWlucygiY2FsZW5kYXItcGlja2VyIiknKTsKIAogICAgIGNsZWFyVGltZW91dCh0aW1l
b3V0VGltZXIpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCiBmdW5jdGlvbiBoaWdobGlnaHRl
ZEVudHJ5KCkgewotICAgIHZhciBhY3RpdmVFbGVtZW50ID0gcGlja2VyV2luZG93LmRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQ7CisgICAgdmFyIGFjdGl2ZUVsZW1lbnQgPSBwb3B1cFdpbmRvdy5kb2N1
bWVudC5hY3RpdmVFbGVtZW50OwogICAgIGlmICghYWN0aXZlRWxlbWVudCkKICAgICAgICAgcmV0
dXJuIG51bGw7CiAgICAgdmFyIHZhbHVlID0gYWN0aXZlRWxlbWVudC5kYXRhc2V0LnZhbHVlOwpA
QCAtMjA0LDEyICsyMDEsNiBAQCBmdW5jdGlvbiBoaWdobGlnaHRlZEVudHJ5KCkgewogICAgIHJl
dHVybiBudWxsOwogfQogCi1mdW5jdGlvbiBzZW5kS2V5KGlucHV0LCBrZXlOYW1lKSB7Ci0gICAg
dmFyIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0tleWJvYXJkRXZlbnQnKTsKLSAgICBl
dmVudC5pbml0S2V5Ym9hcmRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUsIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LCBrZXlOYW1lKTsKLSAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKLX0K
LQogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
</data>
<flag name="review"
          id="179668"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>