<?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>27357</bug_id>
          
          <creation_ts>2009-07-16 16:18:04 -0700</creation_ts>
          <short_desc>Support :valid/:invalid CSS selectors</short_desc>
          <delta_ts>2010-02-09 22:02:11 -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>CSS</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>http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#interactive-elements</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19264</blocked>
    
    <blocked>34733</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michelangelo De Simone">michelangelo</reporter>
          <assigned_to name="Michelangelo De Simone">michelangelo</assigned_to>
          <cc>darin</cc>
    
    <cc>pkasting</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>132391</commentid>
    <comment_count>0</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-16 16:18:04 -0700</bug_when>
    <thetext>Support for new CSS pseudoclasses from HTML5 specs should be added. Among them, &quot;:valid&quot; and &quot;:invalid&quot; have priority.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132398</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-16 16:32:56 -0700</bug_when>
    <thetext>Can you list all the selectors that need to be added?  This bug is kind of vague.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>132406</commentid>
    <comment_count>2</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-07-16 16:48:55 -0700</bug_when>
    <thetext>(In reply to comment #1)

&gt; Can you list all the selectors that need to be added?  This bug is kind of
&gt; vague.

:out-of-range
:in-range
:valid
:invalid
:default

(:required and :optional are waiting for review).

As far as I can say it&apos;s not extremely ctitical at this time but for :valid and :invalid it&apos;s possibile to rely on validity.valid and willvalidate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133181</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-20 11:43:08 -0700</bug_when>
    <thetext>:required and :optional have now landed on bug 25551.

:in-range and :out-of-range are covered by bug 27450.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133198</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-07-20 12:33:02 -0700</bug_when>
    <thetext>Bug 27458 now covers :default.

Narrowing the scope of this to just cover the selectors not covered elsewhere.

:valid/:invalid should be pretty easy to support given the existing validity machinery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140636</commentid>
    <comment_count>5</comment_count>
      <attachid>34943</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-16 18:21:34 -0700</bug_when>
    <thetext>Created attachment 34943
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140637</commentid>
    <comment_count>6</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-16 18:26:04 -0700</bug_when>
    <thetext>A note worth to be mentioned is that &quot;willValidate&quot; is missing from official Object&apos;s idl, Hixie and I discussed about it in #webkit and it&apos;s gonna be added soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140953</commentid>
    <comment_count>7</comment_count>
      <attachid>34943</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-08-17 18:17:46 -0700</bug_when>
    <thetext>Comment on attachment 34943
Patch v1

r=me.  A few comments about the log.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index da90953..e7dbea2 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,44 @@
&gt; +2009-08-16  Michelangelo De Simone  &lt;micdesim@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=27357
&gt; +        Support for :valid and :invalid CSS selectors, from HTML5 specs.
&gt; +        http://www.whatwg.org/specs/web-apps/current-work/#selector-valid
&gt; +
&gt; +        Tests: fast/css/pseudo-invalid-001.html
&gt; +               fast/css/pseudo-invalid-002.html
&gt; +               fast/css/pseudo-valid-001.html
&gt; +               fast/css/pseudo-valid-002.html
&gt; +               fast/css/pseudo-valid-003.html
&gt; +               fast/css/pseudo-valid-004.html
&gt; +               fast/css/pseudo-valid-005.html
&gt; +               fast/css/pseudo-valid-006.html
&gt; +               fast/css/pseudo-valid-007.html
&gt; +
&gt; +        * css/CSSSelector.cpp:
&gt; +        (WebCore::CSSSelector::extractPseudoType): extracts new pseudos

should say &quot;pseudo-classes&quot; instead of &quot;pseudos&quot; throughout the log

&gt; +        * css/CSSSelector.h:
&gt; +        (WebCore::CSSSelector::):
&gt; +        * css/CSSStyleSelector.cpp:
&gt; +        (WebCore::CSSStyleSelector::canShareStyleWithElement): style sharing
&gt; +        mechanism rests for valid/invalid form control elements

I think you want to say something like &quot;Make sure we don&apos;t share style between form controls that have different validity states&quot; 

&gt; +        (WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector): applies
&gt; +        style associated to new pseudos
&gt; +        * dom/Element.h:
&gt; +        (WebCore::Element::willValidate): pushed up in hiearchy

typo.

&gt; +        (WebCore::Element::isValidFormControlElement): checks for valid form
&gt; +        control elements (wraps ValidityState::valid())
&gt; +        * html/HTMLFormControlElement.cpp:
&gt; +        (WebCore::HTMLFormControlElement::willValidate): minor clean up
&gt; +        (WebCore::HTMLFormControlElement::isValidFormControlElement): ditto
&gt; +        * html/HTMLFormControlElement.h:
&gt; +        * html/HTMLKeygenElement.h:
&gt; +        (WebCore::HTMLKeygenElement::willValidate): added
&gt; +        * html/HTMLObjectElement.h:
&gt; +        (WebCore::HTMLObjectElement::willValidate): added
&gt; +        * html/HTMLObjectElement.idl:
&gt; +
&gt;  2009-08-16  Nikolas Zimmermann  &lt;nikolas.zimmermann@torchmobile.com&gt;
&gt;  
&gt;          Reviewed by George Staikos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141077</commentid>
    <comment_count>8</comment_count>
      <attachid>35039</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-18 05:59:36 -0700</bug_when>
    <thetext>Created attachment 35039
Same as v1: revised changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141173</commentid>
    <comment_count>9</comment_count>
      <attachid>35039</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-18 12:49:41 -0700</bug_when>
    <thetext>Comment on attachment 35039
Same as v1: revised changelog

Because adele r+ed the original patch with a couple of comments, I&apos;m going to land this patch, since it only differs from that one in terms of addressing those comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141174</commentid>
    <comment_count>10</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-18 12:50:17 -0700</bug_when>
    <thetext>Fixed in r47444.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141416</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-18 23:44:23 -0700</bug_when>
    <thetext>Why did you add willValidate overrides to HTMLKeygenElement and HTMLObjectElement that always return false, just like the willValidate function in the Element base class? These have no effect and just clutter up the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141501</commentid>
    <comment_count>12</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-19 09:50:59 -0700</bug_when>
    <thetext>Reopening until Darin&apos;s comment is addressed.  I can write a quick patch to rip these two out when I get in today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141505</commentid>
    <comment_count>13</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-19 10:09:53 -0700</bug_when>
    <thetext>(In reply to comment #11)

&gt; Why did you add willValidate overrides to HTMLKeygenElement and
&gt; HTMLObjectElement that always return false, just like the willValidate function
&gt; in the Element base class? These have no effect and just clutter up the code.

A correction is underway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141512</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-08-19 10:17:07 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; A correction is underway.

Great! Note that it may not be just those two classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141513</commentid>
    <comment_count>15</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-19 10:25:14 -0700</bug_when>
    <thetext>(In reply to comment #14)

&gt; Great! Note that it may not be just those two classes.

Uhmmm, as far as I can see the unnecessary overridden methods are just those two; willValidate() should be true only when FormControlElements are validable and most of the stuff was already there (I addressed it in #20101 last year).

Adding those two method has been a mistake due to rush.:) It&apos;ll be solved in minutes, just the time to double check layouttests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141520</commentid>
    <comment_count>16</comment_count>
      <attachid>35129</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2009-08-19 10:35:29 -0700</bug_when>
    <thetext>Created attachment 35129
Correction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>141535</commentid>
    <comment_count>17</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2009-08-19 10:58:35 -0700</bug_when>
    <thetext>Fixed in r47514.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34943</attachid>
            <date>2009-08-16 18:21:34 -0700</date>
            <delta_ts>2009-08-18 05:57:51 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27357-20090817032130.patch</filename>
            <type>text/plain</type>
            <size>28227</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzBhY2MwLi44YzhmZmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDktMDgt
MTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MzU3CisgICAgICAgIFRlc3RzIGZvciA6dmFsaWQg
YW5kIDppbnZhbGlkIENTUyBzZWxlY3RvcnMsIGZyb20gSFRNTDUgc3BlY3MuCisgICAgICAgIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3NlbGVjdG9y
LXZhbGlkCisKKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9wc2V1ZG8tdmFsaWQtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1
ZG8tdmFsaWQtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxp
ZC0wMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFs
aWQtMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1dGVz
LWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOC0xNiAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQuIEFkZCBtaXNzaW5nIFdNTCBzcGVjaWZpYyBsYXlvdXQgdGVzdCByZXN1bHQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAxLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjYyZTkwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAxLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3Ig
dGhlIDppbnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVsZW1lbnRzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworIAorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3Vu
ZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8taW52YWxpZC0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1p
bnZhbGlkLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZGI2
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOmlu
dmFsaWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idGV4dCIgdmFsdWU9IkxvcmVtaXBzdW0iIHBhdHRlcm49IkxvcmVtIGlwc3VtIi8+Cis8
L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6aW52YWxpZCBDU1Mgc2VsZWN0b3Ig
b24gdmFyaW91cyBpbnB1dCBlbGVtZW50cy4iKTsKKwordiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlOYW1lKCJ2aWN0aW0iKTsKKworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAg
c2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAw
KSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1pbnZh
bGlkLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJk
OWI1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52
YWxpZC0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBwZXJmb3Jt
cyBhIGNoZWNrIGZvciB0aGUgOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9uIGEgcmVxdWlyZWQgdGV4
dGFyZWEgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zYTIwZDVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorIDppbnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDp2YWxpZCB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1l
dGhvZD0iZ2V0Ij4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4dGFyZWE+
Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6aW52YWxpZCBDU1Mgc2VsZWN0
b3Igb24gYSByZXF1aXJlZCB0ZXh0YXJlYSBlbGVtZW50LiIpOworCit2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKysp
CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltp
XSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwg
MjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZh
bGlkLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjNkOGMwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12
YWxpZC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3Jt
cyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVs
ZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTEzOTJkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CisgOnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDppbnZhbGlkIHsgYmFja2dyb3VuZDog
cmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlu
cHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgdmFsdWU9IkxvcmVtIGlwc3VtIi8+Cis8aW5w
dXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iTG9yZW0gaXBzdW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHZhbHVlPSJMb3JlbSBpcHN1bSIg
cGF0dGVybj0iTG9yZW0gaXBzdW0iLz4KKzwvZm9ybT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3Ig
dGhlIDp2YWxpZCBDU1Mgc2VsZWN0b3Igb24gdmFyaW91cyBpbnB1dCBlbGVtZW50cy4iKTsKKwor
diA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKK2ZvciAoaSA9IDA7IGkg
PCB2Lmxlbmd0aDsgaSsrKQorICAgIHNob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29s
b3InKSIsICIncmdiKDAsIDI1NSwgMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjRiNzljZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitU
aGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZCBDU1Mgc2VsZWN0b3Igb24g
dGV4dGFyZWEgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisgCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jMzQ3NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwMi5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyA6dmFsaWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgOmludmFsaWQgeyBi
YWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8Zm9ybSBtZXRo
b2Q9ImdldCI+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIj5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+
Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZXF1aXJlZD5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+
Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQgQ1NTIHNlbGVjdG9y
IG9uIHRleHRhcmVhIGVsZW1lbnRzLiIpOworCit2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5h
bWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxk
QmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwMy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhZmNmNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZv
ciB0aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVsZW1l
bnRzIHdoZXJlIGl0IHNob3VsZG4ndCBiZSBhcHBsaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworICAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3Jn
YigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdi
KDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
dltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2Io
MCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwOGMwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IGxp
bWU7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIg
dmFsdWU9IkxvcmVtIGlwc3VtIiByZWFkb25seS8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiB2YWx1ZT0iTG9yZW0gaXBzdW0iIGRpc2FibGVkLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvcmVtIGlwc3VtIj4KKzwvZm9ybT4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0b3Igb24gdmFyaW91
cyBpbnB1dCBlbGVtZW50cyB3aGVyZSBpdCBzaG91bGRuJ3QgYmUgYXBwbGllZC4iKTsKKwordiA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKK2ZvciAoaSA9IDA7IGkgPCB2
Lmxlbmd0aDsgaSsrKQorICAgIHNob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3In
KSIsICIncmdiKDAsIDI1NSwgMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU0NjVhODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlz
IHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0
b3Igb24gdGV4dGFyZWEgZWxlbWVudHMgd2hlcmUgaXQgc2hvdWxkbid0IGJlIGFwcGxpZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisgCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dy
b3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3Jv
dW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12
YWxpZC0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDg0OGY0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAw
NC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyA6dmFsaWQg
eyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyA6aW52YWxpZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRl
eHRhcmVhIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8Zm9ybSBtZXRob2Q9ImdldCI+Cis8dGV4dGFyZWEg
bmFtZT0idmljdGltIiByZWFkb25seT5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+Cis8dGV4dGFyZWEg
bmFtZT0idmljdGltIiBkaXNhYmxlZD5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+Cis8L2Zvcm0+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQvOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9u
IHRleHRhcmVhIGVsZW1lbnRzIHdoZXJlIGl0IHNob3VsZG4ndCBiZSBhcHBsaWVkLiIpOworCit2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8
IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjVhMzBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxl
Y3RvciBvbiBlbGVtZW50cyB3aGVyZSBpdCBzaG91bGRuJ3QgYmUgYXBwbGllZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29s
b3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tdmFsaWQtMDA1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA1
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiYzQ0YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDUuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dy
b3VuZDogcmVkOyB9CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBmaWVsZHNldCB7
IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBvYmplY3QgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1l
dGhvZD0iZ2V0Ij4KKzxmaWVsZHNldCBuYW1lPSJ2aWN0aW0iPjwvZmllbGRzZXQ+Cis8b2JqZWN0
IG5hbWU9InZpY3RpbSI+PC9vYmplY3Q+Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9y
IHRoZSA6dmFsaWQvOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9uIGVsZW1lbnRzIHdoZXJlIGl0IHNo
b3VsZG4ndCBiZSBhcHBsaWVkLiIpOworCit2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwNi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ2MTY4YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0
aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxlY3RvciBvbiBlbGVtZW50cyB3aGVyZSBpdCBzaG91
bGRuJ3QgYmUgYXBwbGllZCwgcGFydCB0d28uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitMb3JlbSBpcHN1bSAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMg
J3JnYigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAn
cmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdy
Z2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQt
MDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2NjZhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBidXR0b24geyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1ldGhvZD0iZ2V0Ij4K
KzxidXR0b24gbmFtZT0idmljdGltIj5Mb3JlbSBpcHN1bTwvYnV0dG9uPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdHlwZT0icmVzZXQiIHZhbHVlPSJMb3JlbSBpcHN1bSIvPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTG9yZW0gaXBzdW0iLz4KKzwvZm9ybT4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
cGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0b3Igb24g
ZWxlbWVudHMgd2hlcmUgaXQgc2hvdWxkbid0IGJlIGFwcGxpZWQsIHBhcnQgdHdvLiIpOworCit2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8
IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTA2ZTlkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkIENTUyBzZWxlY3RvciBvbiBh
IHNlbGVjdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNT
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA3Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRkNDU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDcuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDppbnZhbGlkIHsgYmFj
a2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0IHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1ldGhvZD0i
Z2V0Ij4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48b3B0aW9uPkxvcmVtIGlwc3VtPC9vcHRpb24+
PC9zZWxlY3Q+Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQgQ1NT
IHNlbGVjdG9yIG9uIGEgc2VsZWN0IGVsZW1lbnQuIik7CisKK3YgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7Citmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAg
ICBzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAiJ3JnYigwLCAyNTUs
IDApJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcGx1Z2luLWF0
dHJpYnV0ZXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cGx1Z2luLWF0dHJpYnV0ZXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDNlZDc4OTQu
LjhlMGIyYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1
dGVzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9w
bHVnaW4tYXR0cmlidXRlcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTE5LDYgKzE5LDcg
QEAgc3RhbmRieQogdHlwZQogdXNlTWFwCiB2c3BhY2UKK3dpbGxWYWxpZGF0ZQogLS0tLS0tLS0t
LQogRU1CRUQgYWxzbyBoYXM6CiBzcmMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE5MDk1My4uZTdkYmVhMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAor
MjAwOS0wOC0xNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjczNTcKKyAgICAgICAgU3VwcG9ydCBm
b3IgOnZhbGlkIGFuZCA6aW52YWxpZCBDU1Mgc2VsZWN0b3JzLCBmcm9tIEhUTUw1IHNwZWNzLgor
ICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyNzZWxlY3Rvci12YWxpZAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3Bz
ZXVkby12YWxpZC0wMDQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXZhbGlk
LTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA2Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDcuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSk6IGV4dHJhY3RzIG5ldyBwc2V1ZG9zCisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQpOiBzdHlsZSBzaGFyaW5nCisgICAgICAg
IG1lY2hhbmlzbSByZXN0cyBmb3IgdmFsaWQvaW52YWxpZCBmb3JtIGNvbnRyb2wgZWxlbWVudHMK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6IGFwcGxpZXMKKyAgICAgICAgc3R5bGUgYXNzb2NpYXRlZCB0byBuZXcg
cHNldWRvcworICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50Ojp3aWxsVmFsaWRhdGUpOiBwdXNoZWQgdXAgaW4gaGllYXJjaHkKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQpOiBjaGVja3MgZm9yIHZhbGlk
IGZvcm0KKyAgICAgICAgY29udHJvbCBlbGVtZW50cyAod3JhcHMgVmFsaWRpdHlTdGF0ZTo6dmFs
aWQoKSkKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6d2lsbFZhbGlkYXRlKTogbWlub3Ig
Y2xlYW4gdXAKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFs
aWRGb3JtQ29udHJvbEVsZW1lbnQpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250
cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50Ojp3aWxsVmFsaWRhdGUpOiBhZGRlZAorICAg
ICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxP
YmplY3RFbGVtZW50Ojp3aWxsVmFsaWRhdGUpOiBhZGRlZAorICAgICAgICAqIGh0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaWRsOgorCiAyMDA5LTA4LTE2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtv
bGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdl
b3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IDI1ZGJkODcuLmE3ZjcwMzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAKQEAgLTgxLDYgKzgxLDggQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBz
ZXVkb1R5cGUoKSBjb25zdAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBk
aXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCByZWFkV3JpdGUsICgicmVhZC13cml0ZSIpKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKEF0b21pY1N0cmluZywgdmFsaWQsICgidmFsaWQiKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGludmFsaWQsICgiaW52YWxpZCIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZHJhZywgKCItd2Via2l0LWRyYWciKSk7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGRyYWdBbGlhcywgKCIta2h0bWwt
ZHJhZyIpKTsgLy8gd2FzIGRvY3VtZW50ZWQgd2l0aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1l
bnRhdGlvbiwgc28ga2VlcCBhbiBhbGlhCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGVtcHR5LCAoImVtcHR5IikpOwpAQCAtMTc5LDYgKzE4MSwxMCBAQCB2b2lkIENTU1Nl
bGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb1JlYWRPbmx5OwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gcmVhZFdyaXRlKQogICAg
ICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9SZWFkV3JpdGU7CisgICAgZWxzZSBpZiAobV92YWx1
ZSA9PSB2YWxpZCkKKyAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVmFsaWQ7CisgICAgZWxz
ZSBpZiAobV92YWx1ZSA9PSBpbnZhbGlkKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9J
bnZhbGlkOwogICAgIGVsc2UgaWYgKG1fdmFsdWUgPT0gZHJhZyB8fCBtX3ZhbHVlID09IGRyYWdB
bGlhcykKICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvRHJhZzsKICAgICBlbHNlIGlmICht
X3ZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5o
IGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA1M2RlNTBkLi5hZmQwYTZmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKQEAgLTEzMyw2ICsxMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBQc2V1ZG9SZXF1aXJlZCwKICAgICAgICAgICAgIFBzZXVkb1JlYWRPbmx5LAogICAgICAg
ICAgICAgUHNldWRvUmVhZFdyaXRlLAorICAgICAgICAgICAgUHNldWRvVmFsaWQsCisgICAgICAg
ICAgICBQc2V1ZG9JbnZhbGlkLAogICAgICAgICAgICAgUHNldWRvSW5kZXRlcm1pbmF0ZSwKICAg
ICAgICAgICAgIFBzZXVkb1RhcmdldCwKICAgICAgICAgICAgIFBzZXVkb0JlZm9yZSwKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMGI4MGExYi4uMDI2NmJiYSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKQEAgLTk5OCw2ICs5OTgsMTAgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpj
YW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoTm9kZSogbikKIAogICAgICAgICAgICAgICAgIGlmIChz
LT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgIT0gbV9lbGVtZW50LT5pc0RlZmF1bHRCdXR0b25G
b3JGb3JtKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgICAgIGlmICgocy0+d2lsbFZhbGlkYXRlKCkgJiYgcy0+aXNWYWxpZEZvcm1Db250cm9sRWxl
bWVudCgpKSAhPQorICAgICAgICAgICAgICAgICAgICAobV9lbGVtZW50LT53aWxsVmFsaWRhdGUo
KSAmJiBtX2VsZW1lbnQtPmlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KHN0eWxlLT50cmFuc2l0aW9ucygpIHx8IHN0eWxlLT5hbmltYXRpb25zKCkpCkBAIC0yMzg5LDYg
KzIzOTMsMTAgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgICAgICByZXR1
cm4gZSAmJiBlLT5pc09wdGlvbmFsRm9ybUNvbnRyb2woKTsKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb1JlcXVpcmVkOgogICAgICAgICAgICAgICAgIHJldHVybiBlICYmIGUt
PmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvVmFsaWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGUgJiYgZS0+d2lsbFZhbGlkYXRl
KCkgJiYgZS0+aXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpOworICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvSW52YWxpZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBl
LT53aWxsVmFsaWRhdGUoKSAmJiAhZS0+aXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2hlY2tlZDogewogICAgICAgICAgICAg
ICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKaW5kZXggMjgxZGU0My4uNTUzZTg4YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMTkzLDYgKzE5
Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1D
b250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZh
dWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
dmlydHVhbCBib29sIGZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGJvb2wpIHsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CmluZGV4IDNkOGJjNzguLjk5YTg0YjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OndpbGxWYWxpZGF0ZSgpIGNvbnN0CiAgICAgLy8gICAgICBUaGUgY29udHJvbCBkb2VzIG5vdCBo
YXZlIGEgcmVwZXRpdGlvbiB0ZW1wbGF0ZSBhcyBhbiBhbmNlc3Rvci4KICAgICAvLyAgICAgIFRo
ZSBjb250cm9sIGRvZXMgbm90IGhhdmUgYSBkYXRhbGlzdCBlbGVtZW50IGFzIGFuIGFuY2VzdG9y
LgogICAgIC8vICAgICAgVGhlIGNvbnRyb2wgaXMgbm90IGFuIG91dHB1dCBlbGVtZW50LgotICAg
IHJldHVybiBmb3JtKCkgJiYgbmFtZSgpLmxlbmd0aCgpICYmICFkaXNhYmxlZCgpICYmICFpc1Jl
YWRPbmx5Rm9ybUNvbnRyb2woKTsKKyAgICByZXR1cm4gZm9ybSgpICYmICFuYW1lKCkuaXNFbXB0
eSgpICYmICFkaXNhYmxlZCgpICYmICFpc1JlYWRPbmx5Rm9ybUNvbnRyb2woKTsKIH0KIAogdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcm
IGVycm9yKQpAQCAtMjk5LDYgKzI5OSwxMSBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OmlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdAogICAgIHJldHVybiBpc1N1Y2Nlc3NmdWxT
dWJtaXRCdXR0b24oKSAmJiBtX2Zvcm0gJiYgbV9mb3JtLT5kZWZhdWx0QnV0dG9uKCkgPT0gdGhp
czsKIH0KIAorYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1ZhbGlkRm9ybUNvbnRyb2xF
bGVtZW50KCkKK3sKKyAgICByZXR1cm4gdmFsaWRpdHkoKS0+dmFsaWQoKTsKK30KKwogdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVGcm9tRm9ybSgpCiB7CiAgICAgaWYgKCFtX2Zv
cm0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA5MDJiYmYzLi4wMjQz
MGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTExOCw2ICsxMTgs
NyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2
aXJ0dWFsRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JG
b3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQo
KTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIFJlZlB0cjxWYWxpZGl0eVN0
YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEtleWdl
bkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCmluZGV4IGIyYTBj
MjYuLmM1ZDgzMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCkBAIC0zOCw2ICszOCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYs
IGJvb2wpOwogCisgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgQXRvbWljU3RyaW5nIG1fY2hhbGxlbmdlOwogICAg
IEF0b21pY1N0cmluZyBtX2tleVR5cGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDhm
MzFiZGEuLjQ4NjA1MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC0xMDQsNiArMTA0
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHdpbGxW
YWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVEb2NOYW1lZEl0ZW0oKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5pZGwKaW5kZXgg
MTg4MDgzNi4uOWMzOWY5MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVt
ZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsCkBAIC00Niw2
ICs0Niw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtDb252
ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nICAgICAgIHVzZU1hcDsKICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICB2c3BhY2U7CiAgICAgICAgICAgICAgICAg
IGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmluZyAgICAgICB3aWR0
aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICB3aWxsVmFsaWRh
dGU7CiAKICAgICAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtDaGVja0ZyYW1lU2VjdXJpdHldIERvY3VtZW50ICAgICAgICBjb250
ZW50RG9jdW1lbnQ7
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35039</attachid>
            <date>2009-08-18 05:59:36 -0700</date>
            <delta_ts>2009-08-18 12:49:40 -0700</delta_ts>
            <desc>Same as v1: revised changelog</desc>
            <filename>27357-1a.patch</filename>
            <type>text/plain</type>
            <size>28255</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMzBhY2MwLi44YzhmZmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMDktMDgt
MTYgIE1pY2hlbGFuZ2VsbyBEZSBTaW1vbmUgIDxtaWNkZXNpbUBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3MzU3CisgICAgICAgIFRlc3RzIGZvciA6dmFsaWQg
YW5kIDppbnZhbGlkIENTUyBzZWxlY3RvcnMsIGZyb20gSFRNTDUgc3BlY3MuCisgICAgICAgIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3NlbGVjdG9y
LXZhbGlkCisKKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Nz
L3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nz
cy9wc2V1ZG8tdmFsaWQtMDA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1
ZG8tdmFsaWQtMDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3BzZXVkby12YWxp
ZC0wMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9wc2V1ZG8tdmFs
aWQtMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1dGVz
LWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0wOC0xNiAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBOb3Qg
cmV2aWV3ZWQuIEFkZCBtaXNzaW5nIFdNTCBzcGVjaWZpYyBsYXlvdXQgdGVzdCByZXN1bHQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDEtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAxLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjYyZTkwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAxLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3Ig
dGhlIDppbnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVsZW1lbnRzLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworIAorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3Vu
ZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8taW52YWxpZC0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1p
bnZhbGlkLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZGI2
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOmlu
dmFsaWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlucHV0IG5h
bWU9InZpY3RpbSIgdHlwZT0idGV4dCIgcmVxdWlyZWQvPgorPGlucHV0IG5hbWU9InZpY3RpbSIg
dHlwZT0idGV4dCIgdmFsdWU9IkxvcmVtaXBzdW0iIHBhdHRlcm49IkxvcmVtIGlwc3VtIi8+Cis8
L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6aW52YWxpZCBDU1Mgc2VsZWN0b3Ig
b24gdmFyaW91cyBpbnB1dCBlbGVtZW50cy4iKTsKKwordiA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlOYW1lKCJ2aWN0aW0iKTsKKworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAg
c2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAw
KSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby1pbnZh
bGlkLTAwMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJk
OWI1MDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8taW52
YWxpZC0wMDItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1RoaXMgdGVzdCBwZXJmb3Jt
cyBhIGNoZWNrIGZvciB0aGUgOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9uIGEgcmVxdWlyZWQgdGV4
dGFyZWEgZWxlbWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8taW52YWxpZC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zYTIwZDVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorIDppbnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDp2YWxpZCB7
IGJhY2tncm91bmQ6IHJlZDsgfQorIHRleHRhcmVhIHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1l
dGhvZD0iZ2V0Ij4KKzx0ZXh0YXJlYSBuYW1lPSJ2aWN0aW0iIHJlcXVpcmVkPjwvdGV4dGFyZWE+
Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6aW52YWxpZCBDU1Mgc2VsZWN0
b3Igb24gYSByZXF1aXJlZCB0ZXh0YXJlYSBlbGVtZW50LiIpOworCit2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKysp
CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltp
XSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwg
MjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZh
bGlkLTAwMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZjNkOGMwZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12
YWxpZC0wMDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3Jt
cyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVs
ZW1lbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworICAKK1BBU1MgZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9wc2V1ZG8tdmFsaWQtMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTEzOTJkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVk
by12YWxpZC0wMDEuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+
CisgOnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDppbnZhbGlkIHsgYmFja2dyb3VuZDog
cmVkOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlu
cHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIgdmFsdWU9IkxvcmVtIGlwc3VtIi8+Cis8aW5w
dXQgbmFtZT0idmljdGltIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iTG9yZW0gaXBzdW0iIHJlcXVpcmVk
Lz4KKzxpbnB1dCBuYW1lPSJ2aWN0aW0iIHR5cGU9InRleHQiIHZhbHVlPSJMb3JlbSBpcHN1bSIg
cGF0dGVybj0iTG9yZW0gaXBzdW0iLz4KKzwvZm9ybT4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3Ig
dGhlIDp2YWxpZCBDU1Mgc2VsZWN0b3Igb24gdmFyaW91cyBpbnB1dCBlbGVtZW50cy4iKTsKKwor
diA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKK2ZvciAoaSA9IDA7IGkg
PCB2Lmxlbmd0aDsgaSsrKQorICAgIHNob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29s
b3InKSIsICIncmdiKDAsIDI1NSwgMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjRiNzljZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitU
aGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZCBDU1Mgc2VsZWN0b3Igb24g
dGV4dGFyZWEgZWxlbWVudHMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisgCitQ
QVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jMzQ3NDA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwMi5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNz
cyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzxzdHlsZT4KKyA6dmFsaWQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgOmludmFsaWQgeyBi
YWNrZ3JvdW5kOiByZWQ7IH0KKyB0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8Zm9ybSBtZXRo
b2Q9ImdldCI+Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIj5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+
Cis8dGV4dGFyZWEgbmFtZT0idmljdGltIiByZXF1aXJlZD5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+
Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQgQ1NTIHNlbGVjdG9y
IG9uIHRleHRhcmVhIGVsZW1lbnRzLiIpOworCit2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5h
bWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxk
QmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwMy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhZmNmNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZv
ciB0aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxlY3RvciBvbiB2YXJpb3VzIGlucHV0IGVsZW1l
bnRzIHdoZXJlIGl0IHNob3VsZG4ndCBiZSBhcHBsaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworICAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMgJ3Jn
YigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAncmdi
KDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
dltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2Io
MCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwOGMwOAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDMuaHRtbApAQCAtMCwwICsxLDMx
IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVkOyB9
CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBpbnB1dCB7IGJhY2tncm91bmQ6IGxp
bWU7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGZvcm0gbWV0aG9kPSJnZXQiPgorPGlucHV0IG5hbWU9InZpY3RpbSIgdHlwZT0idGV4dCIg
dmFsdWU9IkxvcmVtIGlwc3VtIiByZWFkb25seS8+Cis8aW5wdXQgbmFtZT0idmljdGltIiB0eXBl
PSJ0ZXh0IiB2YWx1ZT0iTG9yZW0gaXBzdW0iIGRpc2FibGVkLz4KKzxpbnB1dCBuYW1lPSJ2aWN0
aW0iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvcmVtIGlwc3VtIj4KKzwvZm9ybT4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0b3Igb24gdmFyaW91
cyBpbnB1dCBlbGVtZW50cyB3aGVyZSBpdCBzaG91bGRuJ3QgYmUgYXBwbGllZC4iKTsKKwordiA9
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJ2aWN0aW0iKTsKK2ZvciAoaSA9IDA7IGkgPCB2
Lmxlbmd0aDsgaSsrKQorICAgIHNob3VsZEJlKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3In
KSIsICIncmdiKDAsIDI1NSwgMCknIik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmU0NjVhODUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9wc2V1ZG8tdmFsaWQtMDA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlz
IHRlc3QgcGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0
b3Igb24gdGV4dGFyZWEgZWxlbWVudHMgd2hlcmUgaXQgc2hvdWxkbid0IGJlIGFwcGxpZWQuCisK
K09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisgCitQQVNTIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dy
b3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3Jv
dW5kLWNvbG9yJykgaXMgJ3JnYigwLCAyNTUsIDApJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12
YWxpZC0wMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDg0OGY0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAw
NC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKyA6dmFsaWQg
eyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyA6aW52YWxpZCB7IGJhY2tncm91bmQ6IHJlZDsgfQorIHRl
eHRhcmVhIHsgYmFja2dyb3VuZDogbGltZTsgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8Zm9ybSBtZXRob2Q9ImdldCI+Cis8dGV4dGFyZWEg
bmFtZT0idmljdGltIiByZWFkb25seT5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+Cis8dGV4dGFyZWEg
bmFtZT0idmljdGltIiBkaXNhYmxlZD5Mb3JlbSBpcHN1bTwvdGV4dGFyZWE+Cis8L2Zvcm0+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQvOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9u
IHRleHRhcmVhIGVsZW1lbnRzIHdoZXJlIGl0IHNob3VsZG4ndCBiZSBhcHBsaWVkLiIpOworCit2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8
IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNjVhMzBhNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxl
Y3RvciBvbiBlbGVtZW50cyB3aGVyZSBpdCBzaG91bGRuJ3QgYmUgYXBwbGllZC4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKKworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29s
b3InKSBpcyAncmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1
ZG8tdmFsaWQtMDA1Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA1
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFiYzQ0YwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDUuaHRtbApA
QCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dy
b3VuZDogcmVkOyB9CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBmaWVsZHNldCB7
IGJhY2tncm91bmQ6IGxpbWU7IH0KKyBvYmplY3QgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1l
dGhvZD0iZ2V0Ij4KKzxmaWVsZHNldCBuYW1lPSJ2aWN0aW0iPjwvZmllbGRzZXQ+Cis8b2JqZWN0
IG5hbWU9InZpY3RpbSI+PC9vYmplY3Q+Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9y
IHRoZSA6dmFsaWQvOmludmFsaWQgQ1NTIHNlbGVjdG9yIG9uIGVsZW1lbnRzIHdoZXJlIGl0IHNo
b3VsZG4ndCBiZSBhcHBsaWVkLiIpOworCit2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUo
InZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwNi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ2MTY4YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0
aGUgOnZhbGlkLzppbnZhbGlkIENTUyBzZWxlY3RvciBvbiBlbGVtZW50cyB3aGVyZSBpdCBzaG91
bGRuJ3QgYmUgYXBwbGllZCwgcGFydCB0d28uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitMb3JlbSBpcHN1bSAKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZSh2W2ldLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgaXMg
J3JnYigwLCAyNTUsIDApJworUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKHZbaV0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSBpcyAn
cmdiKDAsIDI1NSwgMCknCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdy
Z2IoMCwgMjU1LCAwKScKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQt
MDA2Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU2NjZhNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDYuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogcmVk
OyB9CisgOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyBidXR0b24geyBiYWNrZ3JvdW5k
OiBsaW1lOyB9CisgaW5wdXQgeyBiYWNrZ3JvdW5kOiBsaW1lOyB9Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1ldGhvZD0iZ2V0Ij4K
KzxidXR0b24gbmFtZT0idmljdGltIj5Mb3JlbSBpcHN1bTwvYnV0dG9uPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdHlwZT0icmVzZXQiIHZhbHVlPSJMb3JlbSBpcHN1bSIvPgorPGlucHV0IG5hbWU9
InZpY3RpbSIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iTG9yZW0gaXBzdW0iLz4KKzwvZm9ybT4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
cGVyZm9ybXMgYSBjaGVjayBmb3IgdGhlIDp2YWxpZC86aW52YWxpZCBDU1Mgc2VsZWN0b3Igb24g
ZWxlbWVudHMgd2hlcmUgaXQgc2hvdWxkbid0IGJlIGFwcGxpZWQsIHBhcnQgdHdvLiIpOworCit2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoInZpY3RpbSIpOworZm9yIChpID0gMDsgaSA8
IHYubGVuZ3RoOyBpKyspCisgICAgc2hvdWxkQmUoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xv
cicpIiwgIidyZ2IoMCwgMjU1LCAwKSciKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3BzZXVkby12YWxpZC0wMDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MvcHNldWRvLXZhbGlkLTAwNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTA2ZTlkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3BzZXVkby12YWxpZC0wMDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Ro
aXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIGZvciB0aGUgOnZhbGlkIENTUyBzZWxlY3RvciBvbiBh
IHNlbGVjdCBlbGVtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworCitQQVNT
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodltpXSwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIGlzICdyZ2IoMCwgMjU1LCAwKScKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA3Lmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRkNDU2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzL3BzZXVkby12YWxpZC0wMDcuaHRtbApAQCAtMCwwICsxLDI5IEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8c3R5bGU+CisgOnZhbGlkIHsgYmFja2dyb3VuZDogbGltZTsgfQorIDppbnZhbGlkIHsgYmFj
a2dyb3VuZDogcmVkOyB9Cisgc2VsZWN0IHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxmb3JtIG1ldGhvZD0i
Z2V0Ij4KKzxzZWxlY3QgbmFtZT0idmljdGltIj48b3B0aW9uPkxvcmVtIGlwc3VtPC9vcHRpb24+
PC9zZWxlY3Q+Cis8L2Zvcm0+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgZm9yIHRoZSA6dmFsaWQgQ1NT
IHNlbGVjdG9yIG9uIGEgc2VsZWN0IGVsZW1lbnQuIik7CisKK3YgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5TmFtZSgidmljdGltIik7Citmb3IgKGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKykKKyAg
ICBzaG91bGRCZSgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh2W2ldLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAiJ3JnYigwLCAyNTUs
IDApJyIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcGx1Z2luLWF0
dHJpYnV0ZXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
cGx1Z2luLWF0dHJpYnV0ZXMtZW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDNlZDc4OTQu
LjhlMGIyYTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3BsdWdpbi1hdHRyaWJ1
dGVzLWVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9w
bHVnaW4tYXR0cmlidXRlcy1lbnVtZXJhdGlvbi1leHBlY3RlZC50eHQKQEAgLTE5LDYgKzE5LDcg
QEAgc3RhbmRieQogdHlwZQogdXNlTWFwCiB2c3BhY2UKK3dpbGxWYWxpZGF0ZQogLS0tLS0tLS0t
LQogRU1CRUQgYWxzbyBoYXM6CiBzcmMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE5MDk1My4uNzNjOTQ5YSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAor
MjAwOS0wOC0xNiAgTWljaGVsYW5nZWxvIERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjczNTcKKyAgICAgICAgU3VwcG9ydCBm
b3IgOnZhbGlkIGFuZCA6aW52YWxpZCBDU1Mgc2VsZWN0b3JzLCBmcm9tIEhUTUw1IHNwZWNzLgor
ICAgICAgICBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyNzZWxlY3Rvci12YWxpZAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Nzcy9wc2V1ZG8taW52YWxp
ZC0wMDEuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLWludmFsaWQtMDAyLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDEuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXZhbGlkLTAwMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDAzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzL3Bz
ZXVkby12YWxpZC0wMDQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MvcHNldWRvLXZhbGlk
LTAwNS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Nzcy9wc2V1ZG8tdmFsaWQtMDA2Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvY3NzL3BzZXVkby12YWxpZC0wMDcuaHRtbAorCisgICAgICAg
ICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpl
eHRyYWN0UHNldWRvVHlwZSk6IGV4dHJhY3RzIG5ldyBwc2V1ZG8tY2xhc3NlcworICAgICAgICAq
IGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6Oik6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KTogTWFrZSBzdXJlIHdlIGRv
bid0IHNoYXJlIHN0eWxlIGJldHdlZW4KK2Zvcm0gY29udHJvbHMgdGhhdCBoYXZlIGRpZmZlcmVu
dCB2YWxpZGl0eSBzdGF0ZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBhcHBsaWVzCisgICAgICAgIHN0eWxl
IGFzc29jaWF0ZWQgdG8gbmV3IHBzZXVkby1jbGFzc2VzCisgICAgICAgICogZG9tL0VsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndpbGxWYWxpZGF0ZSk6IHB1c2hlZCB1cCBp
biBoaWVyYXJjaHkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzVmFsaWRGb3JtQ29udHJv
bEVsZW1lbnQpOiBjaGVja3MgZm9yIHZhbGlkIGZvcm0KKyAgICAgICAgY29udHJvbCBlbGVtZW50
cyAod3JhcHMgVmFsaWRpdHlTdGF0ZTo6dmFsaWQoKSkKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxl
bWVudDo6d2lsbFZhbGlkYXRlKTogbWlub3IgY2xlYW4gdXAKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQpOiBkaXR0bwor
ICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50
Ojp3aWxsVmFsaWRhdGUpOiBhZGRlZAorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPYmplY3RFbGVtZW50Ojp3aWxsVmFsaWRhdGUpOiBh
ZGRlZAorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuaWRsOgorCiAyMDA5LTA4LTE2
ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmlu
ZGV4IDI1ZGJkODcuLmE3ZjcwMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTgxLDYgKzgxLDggQEAg
dm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBkaXNhYmxlZCwgKCJkaXNhYmxlZCIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmVhZE9ubHksICgicmVhZC1vbmx5Iikp
OwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByZWFkV3JpdGUsICgicmVh
ZC13cml0ZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgdmFsaWQs
ICgidmFsaWQiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGludmFs
aWQsICgiaW52YWxpZCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
ZHJhZywgKCItd2Via2l0LWRyYWciKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGRyYWdBbGlhcywgKCIta2h0bWwtZHJhZyIpKTsgLy8gd2FzIGRvY3VtZW50ZWQgd2l0
aCB0aGlzIG5hbWUgaW4gQXBwbGUgZG9jdW1lbnRhdGlvbiwgc28ga2VlcCBhbiBhbGlhCiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGVtcHR5LCAoImVtcHR5IikpOwpAQCAt
MTc5LDYgKzE4MSwxMCBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNv
bnN0CiAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1JlYWRPbmx5OwogICAgIGVsc2UgaWYg
KG1fdmFsdWUgPT0gcmVhZFdyaXRlKQogICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9SZWFk
V3JpdGU7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSB2YWxpZCkKKyAgICAgICAgbV9wc2V1ZG9U
eXBlID0gUHNldWRvVmFsaWQ7CisgICAgZWxzZSBpZiAobV92YWx1ZSA9PSBpbnZhbGlkKQorICAg
ICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9JbnZhbGlkOwogICAgIGVsc2UgaWYgKG1fdmFsdWUg
PT0gZHJhZyB8fCBtX3ZhbHVlID09IGRyYWdBbGlhcykKICAgICAgICAgbV9wc2V1ZG9UeXBlID0g
UHNldWRvRHJhZzsKICAgICBlbHNlIGlmIChtX3ZhbHVlID09IGVuYWJsZWQpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApp
bmRleCA1M2RlNTBkLi5hZmQwYTZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTEzMyw2ICsxMzMsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9SZXF1aXJlZCwKICAgICAgICAg
ICAgIFBzZXVkb1JlYWRPbmx5LAogICAgICAgICAgICAgUHNldWRvUmVhZFdyaXRlLAorICAgICAg
ICAgICAgUHNldWRvVmFsaWQsCisgICAgICAgICAgICBQc2V1ZG9JbnZhbGlkLAogICAgICAgICAg
ICAgUHNldWRvSW5kZXRlcm1pbmF0ZSwKICAgICAgICAgICAgIFBzZXVkb1RhcmdldCwKICAgICAg
ICAgICAgIFBzZXVkb0JlZm9yZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMGI4MGEx
Yi4uMDI2NmJiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
KysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTk5OCw2ICs5OTgsMTAg
QEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjYW5TaGFyZVN0eWxlV2l0aEVsZW1lbnQoTm9kZSog
bikKIAogICAgICAgICAgICAgICAgIGlmIChzLT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgIT0g
bV9lbGVtZW50LT5pc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGlmICgocy0+d2lsbFZhbGlkYXRlKCkg
JiYgcy0+aXNWYWxpZEZvcm1Db250cm9sRWxlbWVudCgpKSAhPQorICAgICAgICAgICAgICAgICAg
ICAobV9lbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiBtX2VsZW1lbnQtPmlzVmFsaWRGb3JtQ29u
dHJvbEVsZW1lbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHN0eWxlLT50cmFuc2l0aW9ucygpIHx8IHN0eWxl
LT5hbmltYXRpb25zKCkpCkBAIC0yMzg5LDYgKzIzOTMsMTAgQEAgYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwg
RWxlbWUKICAgICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLT5pc09wdGlvbmFsRm9ybUNvbnRy
b2woKTsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1JlcXVpcmVkOgogICAg
ICAgICAgICAgICAgIHJldHVybiBlICYmIGUtPmlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOworICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVmFsaWQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGUgJiYgZS0+d2lsbFZhbGlkYXRlKCkgJiYgZS0+aXNWYWxpZEZvcm1Db250cm9sRWxl
bWVudCgpOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSW52YWxpZDoKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZSAmJiBlLT53aWxsVmFsaWRhdGUoKSAmJiAhZS0+aXNWYWxp
ZEZvcm1Db250cm9sRWxlbWVudCgpOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvQ2hlY2tlZDogewogICAgICAgICAgICAgICAgIGlmICghZSB8fCAhZS0+aXNGb3JtQ29udHJv
bEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggMjgxZGU0My4u
NTUzZTg4YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtMTkzLDYgKzE5Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0QnV0dG9uRm9yRm9ybSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQo
KSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGZvcm1Db250cm9sVmFsdWVN
YXRjaGVzUmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGJvb2wpIHsgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDNkOGJjNzguLjk5YTg0YjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OndpbGxWYWxpZGF0ZSgpIGNvbnN0CiAgICAgLy8g
ICAgICBUaGUgY29udHJvbCBkb2VzIG5vdCBoYXZlIGEgcmVwZXRpdGlvbiB0ZW1wbGF0ZSBhcyBh
biBhbmNlc3Rvci4KICAgICAvLyAgICAgIFRoZSBjb250cm9sIGRvZXMgbm90IGhhdmUgYSBkYXRh
bGlzdCBlbGVtZW50IGFzIGFuIGFuY2VzdG9yLgogICAgIC8vICAgICAgVGhlIGNvbnRyb2wgaXMg
bm90IGFuIG91dHB1dCBlbGVtZW50LgotICAgIHJldHVybiBmb3JtKCkgJiYgbmFtZSgpLmxlbmd0
aCgpICYmICFkaXNhYmxlZCgpICYmICFpc1JlYWRPbmx5Rm9ybUNvbnRyb2woKTsKKyAgICByZXR1
cm4gZm9ybSgpICYmICFuYW1lKCkuaXNFbXB0eSgpICYmICFkaXNhYmxlZCgpICYmICFpc1JlYWRP
bmx5Rm9ybUNvbnRyb2woKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRD
dXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQpAQCAtMjk5LDYgKzI5OSwxMSBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25z
dAogICAgIHJldHVybiBpc1N1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSAmJiBtX2Zvcm0gJiYgbV9m
b3JtLT5kZWZhdWx0QnV0dG9uKCkgPT0gdGhpczsKIH0KIAorYm9vbCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojppc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkKK3sKKyAgICByZXR1cm4gdmFsaWRp
dHkoKS0+dmFsaWQoKTsKK30KKwogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZW1vdmVG
cm9tRm9ybSgpCiB7CiAgICAgaWYgKCFtX2Zvcm0pCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuaAppbmRleCA5MDJiYmYzLi4wMjQzMGRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAg
IHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKTsKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9m
b3JtOwogICAgIFJlZlB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1M
S2V5Z2VuRWxlbWVudC5oCmluZGV4IGIyYTBjMjYuLmM1ZDgzMWIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2Vu
RWxlbWVudC5oCkBAIC0zOCw2ICszOCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCBib29sIGFw
cGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpOwogCisgICAgdmlydHVhbCBib29sIHdp
bGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgQXRv
bWljU3RyaW5nIG1fY2hhbGxlbmdlOwogICAgIEF0b21pY1N0cmluZyBtX2tleVR5cGU7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5oCmluZGV4IDhmMzFiZGEuLjQ4NjA1MzAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCkBAIC0xMDQsNiArMTA0LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0
OwogCisgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbCBiL1dlYkNvcmUvaHRtbC9I
VE1MT2JqZWN0RWxlbWVudC5pZGwKaW5kZXggMTg4MDgzNi4uOWMzOWY5MCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaWRsCkBAIC00Niw2ICs0Niw3IEBAIG1vZHVsZSBodG1sIHsKICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5n
ICAgICAgIHVzZU1hcDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGxvbmcgICAgICAgICAg
ICB2c3BhY2U7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBbQ29udmVydE51bGxUb051bGxT
dHJpbmddIERPTVN0cmluZyAgICAgICB3aWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gICAgICAgICB3aWxsVmFsaWRhdGU7CiAKICAgICAgICAgLy8gSW50cm9kdWNlZCBp
biBET00gTGV2ZWwgMjoKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDaGVja0ZyYW1lU2Vj
dXJpdHldIERvY3VtZW50ICAgICAgICBjb250ZW50RG9jdW1lbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>35129</attachid>
            <date>2009-08-19 10:35:29 -0700</date>
            <delta_ts>2009-08-19 10:42:03 -0700</delta_ts>
            <desc>Correction</desc>
            <filename>bug-27357-20090819193527.patch</filename>
            <type>text/plain</type>
            <size>1427</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZGE2M2I4Yi4uYTA5Njk4OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wOC0xOSAgTWljaGVsYW5nZWxv
IERlIFNpbW9uZSAgPG1pY2Rlc2ltQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjczNTcKKyAgICAgICAgUmVtb3ZlZCB0aGUgdHdvIHVubmVjZXNzYXJ5IG92ZXJy
aWRkZW4gd2lsbFZhbGlkYXRlKCkgbWV0aG9kcyBpbnRyb2R1Y2VkCisgICAgICAgIGluIHI0NzQ0
NC4KKworICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuaDogZGl0dG8KKyAgICAgICAg
KiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IGRpdHRvCisKIDIwMDktMDgtMTkgIEp1bmdzaGlr
IFNoaW4gIDxqc2hpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBT
ZWlkZWwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oIGIvV2Vi
Q29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKaW5kZXggYzVkODMxYi4uYjJhMGMyNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9o
dG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKQEAgLTM4LDggKzM4LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICB2
aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQogcHJp
dmF0ZToKICAgICBBdG9taWNTdHJpbmcgbV9jaGFsbGVuZ2U7CiAgICAgQXRvbWljU3RyaW5nIG1f
a2V5VHlwZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggZDEwODQ2MS4uMDBiMTAyMCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTc2LDggKzc2LDYgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVEb2NOYW1lZEl0ZW0o
KTs=
</data>
<flag name="review"
          id="19322"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>