<?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>28868</bug_id>
          
          <creation_ts>2009-09-01 02:56:13 -0700</creation_ts>
          <short_desc>[HTML5][Forms] :valid/:invalid/:optional/:required CSS selectors should be applied lively</short_desc>
          <delta_ts>2009-10-05 11:23:35 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.whatwg.org/specs/web-apps/current-work/multipage/interactive-elements.html#matching-html-elements-using-selectors</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19264</blocked>
    
    <blocked>28649</blocked>
    
    <blocked>29071</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>hyatt</cc>
    
    <cc>michelangelo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143807</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 02:56:13 -0700</bug_when>
    <thetext>:valid, :invalid, :optional and :required CSS selectors should be applied immediately when an element&apos;s
  * value,
  * constraints, or
  * willValidate
state is changed.  In the current WebKit, some of them apply selectors immediately and some of them don&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143813</commentid>
    <comment_count>1</comment_count>
      <attachid>38853</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 03:03:51 -0700</bug_when>
    <thetext>Created attachment 38853
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143828</commentid>
    <comment_count>2</comment_count>
      <attachid>38854</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-01 03:24:28 -0700</bug_when>
    <thetext>Created attachment 38854
Proposed patch (rev.2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143887</commentid>
    <comment_count>3</comment_count>
      <attachid>38854</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 07:47:47 -0700</bug_when>
    <thetext>Comment on attachment 38854
Proposed patch (rev.2)

I probably would have used a function to make the test output more readable:
+PASS document.defaultView.getComputedStyle(el, null).getPropertyValue(&quot;background-color&quot;) is &quot;rgb(255, 0, 0)&quot;

function backgroundOf(el)
{
    return document.defaultView.getComputedStyle(el, null).getPropertyValue(&quot;background-color&quot;);
}

PASS backgroundOf(el) is &quot;rgb(255, 0, 0)&quot;

or maybe even:

PASS backgroundOf(el) is &quot;red&quot;

Slightly sad to see custom edited html files instead of just using .js files and the standard TEMPLATE.html, but these are fine. :)

Those comments above are just nits, not requiring any change.  I&apos;d need to stare at the c++ part of this more to make a real review decision...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145258</commentid>
    <comment_count>4</comment_count>
      <attachid>39168</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-07 20:30:36 -0700</bug_when>
    <thetext>Created attachment 39168
Proposed patch (rev.3)

Follows the Eric&apos;s advice.
 - Separate test HTMLs and JavaScript code
 - Visible text changes in the tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148718</commentid>
    <comment_count>5</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-21 09:28:27 -0700</bug_when>
    <thetext>Note that we don&quot;t need to update the patch rev.3 for the resoruces -&gt; script-tests change because the tests uses not only .js but also .css.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149445</commentid>
    <comment_count>6</comment_count>
      <attachid>39168</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-23 10:45:27 -0700</bug_when>
    <thetext>Comment on attachment 39168
Proposed patch (rev.3)

Looks fine to me.  Sad this has been sitting in the queue for 2 weeks w/o comment. :(

50     if (textArea-&gt;willValidate())
 51         // Need to sync the value in order to apply :valid/:invalid selectors.
 52         textArea-&gt;updateValue();

Needs {} since the comment makes it multi-line.  There are 2 instances of that.

If updateValue() isn&apos;t const anymore, why is this const_cast needed?
 297     const_cast&lt;HTMLTextAreaElement*&gt;(this)-&gt;updateValue();

I&apos;m not sure I&apos;m the best person to review this change, but the others have been silent.  It looks OK to me and looks non-harmful.  I&apos;ll r+ it, but it can&apos;t be auto-committed as is, so you&apos;ll have to commit this yourself, find someone to commit it, or post a new patch with modifications for the commit-queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149546</commentid>
    <comment_count>7</comment_count>
      <attachid>40029</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-23 16:39:55 -0700</bug_when>
    <thetext>Created attachment 40029
Proposed patch (rev.4)


&gt; Needs {} since the comment makes it multi-line.  There are 2 instances of that.

Fixed 2 instances, and removed {} for single statement at another place.

&gt; If updateValue() isn&apos;t const anymore, why is this const_cast needed?
&gt;  297     const_cast&lt;HTMLTextAreaElement*&gt;(this)-&gt;updateValue();

In order to nuke &quot;const&quot; of &quot;this&quot;.  This method is const and updateValue() is not const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150456</commentid>
    <comment_count>8</comment_count>
      <attachid>40215</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-09-27 21:53:22 -0700</bug_when>
    <thetext>Created attachment 40215
Proposed patch (rev.5)

Resolved a patch conflict with today&apos;s WebKit source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151532</commentid>
    <comment_count>9</comment_count>
      <attachid>40439</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-10-01 06:42:21 -0700</bug_when>
    <thetext>Created attachment 40439
Proposed patch (rev.6)

- Resolved a conflict with r48959.
- Added more explanation to ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151743</commentid>
    <comment_count>10</comment_count>
      <attachid>40487</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2009-10-01 17:42:52 -0700</bug_when>
    <thetext>Created attachment 40487
Proposed patch (rev.7)

Oops, ChangeLog in the previous patch was old.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152363</commentid>
    <comment_count>11</comment_count>
      <attachid>39168</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 10:59:34 -0700</bug_when>
    <thetext>Comment on attachment 39168
Proposed patch (rev.3)

Clearing r+ on this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152364</commentid>
    <comment_count>12</comment_count>
      <attachid>40487</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-05 11:00:59 -0700</bug_when>
    <thetext>Comment on attachment 40487
Proposed patch (rev.7)

Looks OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152388</commentid>
    <comment_count>13</comment_count>
      <attachid>40487</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-05 11:23:31 -0700</bug_when>
    <thetext>Comment on attachment 40487
Proposed patch (rev.7)

Clearing flags on attachment: 40487

Committed r49105: &lt;http://trac.webkit.org/changeset/49105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152389</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-05 11:23:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38853</attachid>
            <date>2009-09-01 03:03:51 -0700</date>
            <delta_ts>2009-09-01 03:24:28 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>live-validation-selector.diff</filename>
            <type>text/plain</type>
            <size>22996</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi5iMzMyNWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDkt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRvIGNoZWNrIGlmIHZhbGlkYXRp
b24tcmVsYXRlZCBDU1Mgc2VsZWN0b3JzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKworICAgICAg
ICAqIGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1z
ZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0zMSAgQnJp
YW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1M2UyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDM2IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2YWxp
ZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xv
ciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBuYW1lOgorUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNr
Z3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDI1NSwgMjU1KSIKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFj
a2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBkaXNhYmxlZDoKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVh
ZE9ubHk6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDI1NSwg
MCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCki
CitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDI1NSwgMjU1LCAyNTUpIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNv
bG9yIikgaXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmli
dXRlOgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigwLCAwLCAyNTUp
IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDAsIDApIgor
Q2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQt
Y29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
ImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJh
Y2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcGF0dGVybjoKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMjU1KSIKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMjU1KSIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNGU1MmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5o
dG1sCkBAIC0wLDAgKzEsMTE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sCis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAwLCAwKTsgfQor
OnZhbGlkIHsgYmFja2dyb3VuZDogcmdiKDAsIDAsIDI1NSk7IH0KKzpkaXNhYmxlZCB7IGJhY2tn
cm91bmQ6IGJsYWNrOyB9Cis6cmVhZC1vbmx5IHsgYmFja2dyb3VuZDogcmdiKDAsIDI1NSwgMCk7
IH0KK2lucHV0IHsgYmFja2dyb3VuZDogd2hpdGU7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
Kzxmb3JtIG1ldGhvZD0iZ2V0IiBpZD0iZjEiPgorPC9mb3JtPgorPGRpdiBpZD0ibm9uLWZvcm0t
cGFyZW50Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBs
aXZlbHkgYXBwbGllZC4iKTsKKworZnVuY3Rpb24gbWFrZUludmFsaWQoKSB7CisgICAgdmFyIGYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZjEnKTsKKyAgICB2YXIgaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaS5uYW1lID0gJ2Zvbyc7CisgICAgaS5yZXF1aXJl
ZCA9IHRydWU7CisgICAgaS52YWx1ZSA9ICcnOworICAgIGYuYXBwZW5kQ2hpbGQoaSk7CisgICAg
cmV0dXJuIGk7Cit9CisKK3ZhciBlbEJhY2tncm91bmQgPSAnZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1j
b2xvciIpJzsKK3ZhciBpbnZhbGlkID0gJyJyZ2IoMjU1LCAwLCAwKSInOwordmFyIG5vcm1hbCA9
ICcicmdiKDI1NSwgMjU1LCAyNTUpIic7Cit2YXIgZGlzYWJsZWQgPSAnInJnYigwLCAwLCAwKSIn
OwordmFyIHJlYWRPbmx5ID0gJyJyZ2IoMCwgMjU1LCAwKSInCit2YXIgdmFsaWQgPSAnInJnYigw
LCAwLCAyNTUpIic7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAg
ICAgd2lsbFZhbGlkYXRlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK3ZhciBlbCA9IG1ha2VJbnZhbGlkKCk7CisvLyBDb25maXJtIHRoaXMgZWxlbWVudCBpcyBp
bnZhbGlkLgorc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKworZGVidWcoJ0NoYW5n
ZSBuYW1lOicpOworZWwubmFtZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBub3JtYWwp
OworZWwubmFtZSA9ICdiYXInOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKwor
ZGVidWcoJ0NoYW5nZSBkaXNhYmxlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmRpc2Fi
bGVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgZGlzYWJsZWQpOworZWwuZGlzYWJs
ZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKK2RlYnVnKCdD
aGFuZ2UgcmVhZE9ubHk6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZWFkT25seSA9IHRy
dWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsIHJlYWRPbmx5KTsKK2VsLnJlYWRPbmx5ID0gZmFs
c2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnSW5zaWRlL291
dHNpZGUgb2YgYSBmb3JtOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ25vbi1mb3JtLXBhcmVudCcpLmFwcGVuZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgbm9ybWFsKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmMScpLmFwcGVu
ZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgdmFsdWUgY2hhbmdlCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkg
RE9NIGF0dHJpYnV0ZTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7
CitzaG91bGRCZShlbEJhY2tncm91bmQsIHZhbGlkKTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRC
ZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBr
ZXkgaW5wdXQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5mb2N1cygpOworZXZlbnRTZW5k
ZXIua2V5RG93bignYScpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitldmVudFNl
bmRlci5rZXlEb3duKCdkZWxldGUnLCBbXSk7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFs
aWQpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIENvbnN0
cmFpbnRzIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVn
KCdDaGFuZ2UgcmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZXF1aXJlZCA9
IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitlbC5yZXF1aXJlZCA9IHRy
dWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHBh
dHRlcm46Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitlbC5wYXR0ZXJuID0gJ2EuLmMnOworc2hvdWxkQmUo
ZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKK2VsLnBhdHRlcm4gPSAnYS5jJzsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgdmFsaWQpOworCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0MDE1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8t
c2VsZWN0b3JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBs
aXZlbHkgYXBwbGllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBuYW1l
OgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDI1NSwgMjU1
KSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIK
K0NoYW5nZSBkaXNhYmxlZDoKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJy
Z2IoMCwgMCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1
NSwgMCwgMCkiCitDaGFuZ2UgcmVhZE9ubHk6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDAsIDI1NSwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3Ii
KSBpcyAicmdiKDI1NSwgMCwgMCkiCitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMjU1LCAyNTUpIgorUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRo
ZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9y
IikgaXMgInJnYigwLCAwLCAyNTUpIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikg
aXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6CitQQVNT
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVx
dWlyZWQ6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1
NSkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCki
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVk
by1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTli
MDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1s
aXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbAorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKzppbnZhbGlkIHsgYmFja2dyb3Vu
ZDogcmdiKDI1NSwgMCwgMCk7IH0KKzp2YWxpZCB7IGJhY2tncm91bmQ6IHJnYigwLCAwLCAyNTUp
OyB9Cis6ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiBibGFjazsgfQorOnJlYWQtb25seSB7IGJhY2tn
cm91bmQ6IHJnYigwLCAyNTUsIDApOyB9Cit0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHdoaXRlOyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8Zm9ybSBtZXRob2Q9ImdldCIgaWQ9ImYxIj4KKzwv
Zm9ybT4KKzxkaXYgaWQ9Im5vbi1mb3JtLXBhcmVudCI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQg
Q1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuIik7CisKK2Z1bmN0aW9uIG1h
a2VJbnZhbGlkKCkgeworICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YxJyk7
CisgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOworICAgIGku
bmFtZSA9ICdmb28nOworICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgIGkudmFsdWUgPSAnJzsK
KyAgICBmLmFwcGVuZENoaWxkKGkpOworICAgIHJldHVybiBpOworfQorCit2YXIgZWxCYWNrZ3Jv
dW5kID0gJ2RvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSc7Cit2YXIgaW52YWxpZCA9ICcicmdi
KDI1NSwgMCwgMCkiJzsKK3ZhciBub3JtYWwgPSAnInJnYigyNTUsIDI1NSwgMjU1KSInOwordmFy
IGRpc2FibGVkID0gJyJyZ2IoMCwgMCwgMCkiJzsKK3ZhciByZWFkT25seSA9ICcicmdiKDAsIDI1
NSwgMCkiJwordmFyIHZhbGlkID0gJyJyZ2IoMCwgMCwgMjU1KSInOworCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHdpbGxWYWxpZGF0ZSBjaGFuZ2UKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgZWwgPSBtYWtlSW52YWxpZCgpOwor
Ly8gQ29uZmlybSB0aGlzIGVsZW1lbnQgaXMgaW52YWxpZC4KK3Nob3VsZEJlKGVsQmFja2dyb3Vu
ZCwgaW52YWxpZCk7CisKK2RlYnVnKCdDaGFuZ2UgbmFtZTonKTsKK2VsLm5hbWUgPSAnJzsKK3No
b3VsZEJlKGVsQmFja2dyb3VuZCwgbm9ybWFsKTsKK2VsLm5hbWUgPSAnYmFyJzsKK3Nob3VsZEJl
KGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKK2RlYnVnKCdDaGFuZ2UgZGlzYWJsZWQ6Jyk7Citl
bCA9IG1ha2VJbnZhbGlkKCk7CitlbC5kaXNhYmxlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGRpc2FibGVkKTsKK2VsLmRpc2FibGVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHJlYWRPbmx5OicpOworZWwgPSBtYWtl
SW52YWxpZCgpOworZWwucmVhZE9ubHkgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBy
ZWFkT25seSk7CitlbC5yZWFkT25seSA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBp
bnZhbGlkKTsKKworZGVidWcoJ0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybTonKTsKK2VsID0gbWFr
ZUludmFsaWQoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub24tZm9ybS1wYXJlbnQnKS5h
cHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsIG5vcm1hbCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZjEnKS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGludmFsaWQpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gICAgIHZhbHVlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBhdHRyaWJ1dGU6Jyk7CitlbCA9IG1ha2VJ
bnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxp
ZCk7CitlbC52YWx1ZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKwor
ZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OicpOworZWwgPSBtYWtlSW52YWxp
ZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgdmFsaWQpOworZXZlbnRTZW5kZXIua2V5RG93bignZGVsZXRlJywgW10pOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vICAgICBDb25zdHJhaW50cyBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1ZygnQ2hhbmdlIHJlcXVpcmVkOicpOworZWwgPSBt
YWtlSW52YWxpZCgpOworZWwucmVxdWlyZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3Vu
ZCwgdmFsaWQpOworZWwucmVxdWlyZWQgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBp
bnZhbGlkKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBkMDEwMjFkLi43NDRkZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA5
LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgc3R5bGUgd2hlbiB2YWxpZGF0
aW9uLXJlbGF0ZWQgdmFsdWVzIGFyZSBtb2RpZmllZCBpbiBvcmRlcgorICAgICAgICB0byBhcHBs
eSA6dmFsaWQsIDppbnZhbGlkLCA6b3B0aW9uYWwgb3IgOnJlcXVpcmVkIGltbWVkaWF0ZWx5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKwor
ICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3Rv
cnMuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
dXBkYXRlVmFsaWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojp1cGRhdGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50
Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1
ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisKIDIwMDkt
MDgtMzEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEu
Y28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzMDAyYjM1Li41MTBhZTZhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC01MCw2ICs1MCw3IEBA
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAgICAgLCBtX2Zvcm0oZikKICAgICAsIG1fZGlzYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KGZhbHNlKQorICAgICwgbV9yZXF1aXJlZChmYWxz
ZSkKICAgICAsIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFtX2Zv
cm0pCkBAIC04NSw3ICs4Niw3IEBAIFZhbGlkaXR5U3RhdGUqIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnZhbGlkaXR5KCkKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gbmFtZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0
cikgewogICAgICAgICBib29sIG9sZERpc2FibGVkID0gbV9kaXNhYmxlZDsKICAgICAgICAgbV9k
aXNhYmxlZCA9ICFhdHRyLT5pc051bGwoKTsKQEAgLTEwMiw2ICsxMDMsMTEgQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUg
KmF0dHIpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgp
LT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVxdWlyZWRBdHRyKSB7CisgICAgICAgIGJvb2wg
b2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOworICAgICAgICBtX3JlcXVpcmVkID0gIWF0dHItPmlz
TnVsbCgpOworICAgICAgICBpZiAob2xkUmVxdWlyZWQgIT0gbV9yZXF1aXJlZCkKKyAgICAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtMjE2LDcgKzIyMiw3IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKIAogYm9vbCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhh
c0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOworICAgIHJldHVybiBtX3JlcXVpcmVkOwogfQogCiB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKGJvb2wgYikKQEAgLTI4Myw2
ICsyODksMTMgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRh
dGVWYWxpZGl0eSgpCit7CisgICAgaWYgKHdpbGxWYWxpZGF0ZSgpKQorICAgICAgICAvLyBVcGRh
dGUgc3R5bGUgZm9yIHBzZXVkbyBjbGFzc2VzIHN1Y2ggYXMgOnZhbGlkIDppbnZhbGlkLgorICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKICAgICB2YWxp
ZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uZTRjMDVkNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOworICAgIHZvaWQgdXBkYXRlVmFsaWRpdHko
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0o
KSBjb25zdDsKQEAgLTEyNiw5ICsxMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxGb3JtRWxl
bWVudCogbV9mb3JtOwogICAgIFJlZlB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7
Ci0gICAgYm9vbCBtX2Rpc2FibGVkOwotICAgIGJvb2wgbV9yZWFkT25seTsKLSAgICBib29sIG1f
dmFsdWVNYXRjaGVzUmVuZGVyZXI7CisgICAgYm9vbCBtX2Rpc2FibGVkIDogMTsKKyAgICBib29s
IG1fcmVhZE9ubHkgOiAxOworICAgIGJvb2wgbV9yZXF1aXJlZCA6IDE7CisgICAgYm9vbCBtX3Zh
bHVlTWF0Y2hlc1JlbmRlcmVyIDogMTsKIH07CiAKIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggYjRkZjA5ZC4uMDNlYjJiMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMzc4LDYgKzM3OCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
SW5wdXRUeXBlKGNvbnN0IFN0cmluZyYgdCkKICAgICAgICAgfQogCiAgICAgICAgIElucHV0RWxl
bWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKICAgICB9CiAgICAgbV9oYXZlVHlwZSA9IHRydWU7CiAKQEAgLTY0OCw2ICs2NDksNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKICAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5yZW1vdmVCdXR0
b24odGhpcyk7CiAgICAgICAgIG1fZGF0YS5zZXROYW1lKGF0dHItPnZhbHVlKCkpOwogICAgICAg
ICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsKKyAgICAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b2NvbXBsZXRlQXR0cikgewogICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm9mZiIpKSB7CiAgICAg
ICAgICAgICBtX2F1dG9jb21wbGV0ZSA9IE9mZjsKQEAgLTY2NywxMiArNjY5LDE0IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKQogICAgICAgICBpZiAobV9kYXRhLnZhbHVlKCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoZmFsc2UpOworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGNoZWNrZWRBdHRyKSB7CiAgICAgICAgIG1fZGVmYXVsdENoZWNr
ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgICAgIGlmIChtX3VzZURlZmF1bHRDaGVja2VkKSB7
CiAgICAgICAgICAgICBzZXRDaGVja2VkKG1fZGVmYXVsdENoZWNrZWQpOwogICAgICAgICAgICAg
bV91c2VEZWZhdWx0Q2hlY2tlZCA9IHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgdXBkYXRlVmFs
aWRpdHkoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXhsZW5ndGhBdHRyKQog
ICAgICAgICBJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4TGVuZ3RoQXR0cmlidXRlKG1fZGF0YSwgdGhp
cywgdGhpcywgYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKQpA
QCAtNzMyLDExICs3MzYsMTMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgICAgICB1cGRhdGVQbGFjZWhv
bGRlclZpc2liaWxpdHkoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvc2F2
ZUF0dHIgfHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gaW5jcmVtZW50YWxBdHRyIHx8
Ci0gICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IG1pbkF0dHIgfHwKLSAgICAgICAgICAgICBh
dHRyLT5uYW1lKCkgPT0gbWF4QXR0ciB8fAotICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBt
dWx0aXBsZUF0dHIgfHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gcHJlY2lzaW9uQXR0
cikKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBtaW5BdHRyCisgICAgICAgICAgICAgfHwgYXR0ci0+bmFtZSgpID09IG1heEF0dHIK
KyAgICAgICAgICAgICB8fCBhdHRyLT5uYW1lKCkgPT0gbXVsdGlwbGVBdHRyCisgICAgICAgICAg
ICAgfHwgYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyKQorICAgICAgICB1cGRhdGVWYWxpZGl0
eSgpOwogI2lmIEVOQUJMRShEQVRBTElTVCkKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
bGlzdEF0dHIpCiAgICAgICAgIG1faGFzTm9uRW1wdHlMaXN0ID0gIWF0dHItPmlzRW1wdHkoKTsK
QEAgLTExMTMsNiArMTExOSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIGNhY2hlU2VsZWN0aW9uKG1heCwgbWF4KTsK
ICAgICB9CiAgICAgSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOwor
ICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpwbGFj
ZWhvbGRlcigpIGNvbnN0CkBAIC0xMTM1LDYgKzExNDIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgLy8gRmls
ZSB1cGxvYWQgY29udHJvbHMgd2lsbCBhbHdheXMgdXNlIHNldEZpbGVMaXN0RnJvbVJlbmRlcmVy
LgogICAgIEFTU0VSVChpbnB1dFR5cGUoKSAhPSBGSUxFKTsKICAgICBJbnB1dEVsZW1lbnQ6OnNl
dFZhbHVlRnJvbVJlbmRlcmVyKG1fZGF0YSwgdGhpcywgdGhpcywgdmFsdWUpOworICAgIHVwZGF0
ZVZhbGlkaXR5KCk7CiB9CiAKIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9t
UmVuZGVyZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQpAQCAtMTE0Niw2ICsxMTU0LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcihjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGF0aHMpCiAKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1Jl
bmRlcmVyKHRydWUpOwogICAgIElucHV0RWxlbWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0
aGlzKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCBkM2ZjODk3Li42NzU0NjFmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0yNzksMjAgKzI3OSwyMiBAQCB2b2lkIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKCkKICAgICB1cGRhdGVWYWx1ZSgpOwog
fQogCi12b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKCkgY29uc3QKK3ZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlVmFsdWUoKQogewogICAgIGlmIChmb3JtQ29udHJv
bFZhbHVlTWF0Y2hlc1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChy
ZW5kZXJlcigpKTsKICAgICBtX3ZhbHVlID0gdG9SZW5kZXJUZXh0Q29udHJvbChyZW5kZXJlcigp
KS0+dGV4dCgpOwotICAgIGNvbnN0X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KHRoaXMpLT5z
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOworICAgIHNldEZvcm1Db250
cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdl
ZCh0aGlzKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiBTdHJpbmcgSFRNTFRleHRBcmVh
RWxlbWVudDo6dmFsdWUoKSBjb25zdAogewotICAgIHVwZGF0ZVZhbHVlKCk7CisgICAgLy8gdmFs
dWUoKSBpcyBjYWxsZWQgYnkgc29tZSBjb25zdCBvdmVycmlkaW5nIG1ldGhvZHMsIGFuZCB2YWx1
ZSgpIHNob3VsZCBiZSBzZW1hbnRpY2FsbHkgY29uc3QuCisgICAgY29uc3RfY2FzdDxIVE1MVGV4
dEFyZWFFbGVtZW50Kj4odGhpcyktPnVwZGF0ZVZhbHVlKCk7CiAgICAgcmV0dXJuIG1fdmFsdWU7
CiB9CiAKQEAgLTMyNSw2ICszMjcsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZh
bHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAg
ICAgbm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgpOwog
fQogCiBTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggYi9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGRiMTJlOWMuLmUyZjU1YTQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtOTQsMTEgKzk0LDExIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKIAogICAgIGJvb2wgcGxh
Y2Vob2xkZXJTaG91bGRCZVZpc2libGUoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZVZhbHVlKCk7
CiAKIHByaXZhdGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0V3JhcCwgSGFy
ZFdyYXAgfTsKIAotICAgIHZvaWQgdXBkYXRlVmFsdWUoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0
ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShib29sIHBsYWNlaG9sZGVyVmFsdWVDaGFuZ2VkKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb2N1c0V2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoQmx1ckV2ZW50KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbE11bHRpTGluZS5jcHAKaW5kZXggOGRmYjg1OC4uOTVlNTU4MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtNDUsNyArNDUs
MTEgQEAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZSgpCiB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdl
ZCgpCiB7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2VkKCk7Ci0gICAg
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoZmFsc2UpOworICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3Rh
dGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUoKSk7CisgICAgdGV4dEFyZWEtPnNl
dEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIGlmICh0ZXh0QXJl
YS0+d2lsbFZhbGlkYXRlKCkpCisgICAgICAgIC8vIE5lZWQgdG8gc3luYyB0aGUgdmFsdWUgaW4g
b3JkZXIgdG8gYXBwbHkgOnZhbGlkLzppbnZhbGlkIHNlbGVjdG9ycy4KKyAgICAgICAgdGV4dEFy
ZWEtPnVwZGF0ZVZhbHVlKCk7CiAKICAgICBpZiAoIW5vZGUoKS0+Zm9jdXNlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC01NCw3ICs1OCw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICBub2RlKCktPmRpc3BhdGNoRXZlbnQoZXZlbnRO
YW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUg
PSBkb2N1bWVudCgpLT5mcmFtZSgpKQotICAgICAgICBmcmFtZS0+dGV4dERpZENoYW5nZUluVGV4
dEFyZWEoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSkpOworICAgICAgICBmcmFtZS0+dGV4
dERpZENoYW5nZUluVGV4dEFyZWEodGV4dEFyZWEpOwogfQogCiBib29sIFJlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRU
ZXN0QWN0aW9uIGhpdFRlc3RBY3Rpb24pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38854</attachid>
            <date>2009-09-01 03:24:28 -0700</date>
            <delta_ts>2009-09-07 20:30:36 -0700</delta_ts>
            <desc>Proposed patch (rev.2)</desc>
            <filename>live-validation-selector-2.diff</filename>
            <type>text/plain</type>
            <size>22643</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MWI5MzhhLi5iMzMyNWFlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDkt
MDEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRvIGNoZWNrIGlmIHZhbGlkYXRp
b24tcmVsYXRlZCBDU1Mgc2VsZWN0b3JzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKworICAgICAg
ICAqIGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1z
ZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwogMjAwOS0wOC0zMSAgQnJp
YW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1M2UyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDM2IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2YWxp
ZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xv
ciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBuYW1lOgorUEFTUyBkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNr
Z3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDI1NSwgMjU1KSIKK1BBU1MgZG9jdW1lbnQuZGVm
YXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFj
a2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBkaXNhYmxlZDoKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMCkiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVh
ZE9ubHk6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDI1NSwg
MCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCki
CitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDI1NSwgMjU1LCAyNTUpIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5n
ZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNv
bG9yIikgaXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmli
dXRlOgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigwLCAwLCAyNTUp
IgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDAsIDApIgor
Q2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQt
Y29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGRvY3VtZW50
LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
ImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJh
Y2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcGF0dGVybjoKK1BB
U1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMjU1KSIKK1BBU1Mg
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMCwgMCwgMjU1KSIKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNGU1MmIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5o
dG1sCkBAIC0wLDAgKzEsMTE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sCis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHN0eWxlPgorOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAwLCAwKTsgfQor
OnZhbGlkIHsgYmFja2dyb3VuZDogcmdiKDAsIDAsIDI1NSk7IH0KKzpkaXNhYmxlZCB7IGJhY2tn
cm91bmQ6IGJsYWNrOyB9Cis6cmVhZC1vbmx5IHsgYmFja2dyb3VuZDogcmdiKDAsIDI1NSwgMCk7
IH0KK2lucHV0IHsgYmFja2dyb3VuZDogd2hpdGU7IH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
Kzxmb3JtIG1ldGhvZD0iZ2V0IiBpZD0iZjEiPgorPC9mb3JtPgorPGRpdiBpZD0ibm9uLWZvcm0t
cGFyZW50Ij48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBs
aXZlbHkgYXBwbGllZC4iKTsKKworZnVuY3Rpb24gbWFrZUludmFsaWQoKSB7CisgICAgdmFyIGYg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZjEnKTsKKyAgICB2YXIgaSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaS5uYW1lID0gJ2Zvbyc7CisgICAgaS5yZXF1aXJl
ZCA9IHRydWU7CisgICAgaS52YWx1ZSA9ICcnOworICAgIGYuYXBwZW5kQ2hpbGQoaSk7CisgICAg
cmV0dXJuIGk7Cit9CisKK3ZhciBlbEJhY2tncm91bmQgPSAnZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1j
b2xvciIpJzsKK3ZhciBpbnZhbGlkID0gJyJyZ2IoMjU1LCAwLCAwKSInOwordmFyIG5vcm1hbCA9
ICcicmdiKDI1NSwgMjU1LCAyNTUpIic7Cit2YXIgZGlzYWJsZWQgPSAnInJnYigwLCAwLCAwKSIn
OwordmFyIHJlYWRPbmx5ID0gJyJyZ2IoMCwgMjU1LCAwKSInCit2YXIgdmFsaWQgPSAnInJnYigw
LCAwLCAyNTUpIic7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAg
ICAgd2lsbFZhbGlkYXRlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KK3ZhciBlbCA9IG1ha2VJbnZhbGlkKCk7CisvLyBDb25maXJtIHRoaXMgZWxlbWVudCBpcyBp
bnZhbGlkLgorc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKworZGVidWcoJ0NoYW5n
ZSBuYW1lOicpOworZWwubmFtZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBub3JtYWwp
OworZWwubmFtZSA9ICdiYXInOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKwor
ZGVidWcoJ0NoYW5nZSBkaXNhYmxlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmRpc2Fi
bGVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgZGlzYWJsZWQpOworZWwuZGlzYWJs
ZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKK2RlYnVnKCdD
aGFuZ2UgcmVhZE9ubHk6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZWFkT25seSA9IHRy
dWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsIHJlYWRPbmx5KTsKK2VsLnJlYWRPbmx5ID0gZmFs
c2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnSW5zaWRlL291
dHNpZGUgb2YgYSBmb3JtOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ25vbi1mb3JtLXBhcmVudCcpLmFwcGVuZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgbm9ybWFsKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmMScpLmFwcGVu
ZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKKy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgdmFsdWUgY2hhbmdlCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkg
RE9NIGF0dHJpYnV0ZTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7
CitzaG91bGRCZShlbEJhY2tncm91bmQsIHZhbGlkKTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRC
ZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBr
ZXkgaW5wdXQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5mb2N1cygpOworZXZlbnRTZW5k
ZXIua2V5RG93bignYScpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitldmVudFNl
bmRlci5rZXlEb3duKCdkZWxldGUnLCBbXSk7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFs
aWQpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIENvbnN0
cmFpbnRzIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVn
KCdDaGFuZ2UgcmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZXF1aXJlZCA9
IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitlbC5yZXF1aXJlZCA9IHRy
dWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHBh
dHRlcm46Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCB2YWxpZCk7CitlbC5wYXR0ZXJuID0gJ2EuLmMnOworc2hvdWxkQmUo
ZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKK2VsLnBhdHRlcm4gPSAnYS5jJzsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgdmFsaWQpOworCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0MDE1NgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8t
c2VsZWN0b3JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBs
aXZlbHkgYXBwbGllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIKK0NoYW5nZSBuYW1l
OgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDI1NSwgMjU1
KSIKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJyZ2IoMjU1LCAwLCAwKSIK
K0NoYW5nZSBkaXNhYmxlZDoKK1BBU1MgZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpIGlzICJy
Z2IoMCwgMCwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1
NSwgMCwgMCkiCitDaGFuZ2UgcmVhZE9ubHk6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29s
b3IiKSBpcyAicmdiKDAsIDI1NSwgMCkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3Ii
KSBpcyAicmdiKDI1NSwgMCwgMCkiCitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMjU1LCAyNTUpIgorUEFTUyBk
b2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0
eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikgaXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRo
ZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9y
IikgaXMgInJnYigwLCAwLCAyNTUpIgorUEFTUyBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCJiYWNrZ3JvdW5kLWNvbG9yIikg
aXMgInJnYigyNTUsIDAsIDApIgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6CitQQVNT
IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3Bl
cnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1NSkiCitQQVNTIGRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCkiCitDaGFuZ2UgcmVx
dWlyZWQ6CitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDAsIDAsIDI1
NSkiCitQQVNTIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSBpcyAicmdiKDI1NSwgMCwgMCki
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVk
by1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTli
MDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1s
aXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDEwOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbAorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzdHlsZT4KKzppbnZhbGlkIHsgYmFja2dyb3Vu
ZDogcmdiKDI1NSwgMCwgMCk7IH0KKzp2YWxpZCB7IGJhY2tncm91bmQ6IHJnYigwLCAwLCAyNTUp
OyB9Cis6ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiBibGFjazsgfQorOnJlYWQtb25seSB7IGJhY2tn
cm91bmQ6IHJnYigwLCAyNTUsIDApOyB9Cit0ZXh0YXJlYSB7IGJhY2tncm91bmQ6IHdoaXRlOyB9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8Zm9ybSBtZXRob2Q9ImdldCIgaWQ9ImYxIj4KKzwv
Zm9ybT4KKzxkaXYgaWQ9Im5vbi1mb3JtLXBhcmVudCI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQg
Q1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuIik7CisKK2Z1bmN0aW9uIG1h
a2VJbnZhbGlkKCkgeworICAgIHZhciBmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2YxJyk7
CisgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOworICAgIGku
bmFtZSA9ICdmb28nOworICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgIGkudmFsdWUgPSAnJzsK
KyAgICBmLmFwcGVuZENoaWxkKGkpOworICAgIHJldHVybiBpOworfQorCit2YXIgZWxCYWNrZ3Jv
dW5kID0gJ2RvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSc7Cit2YXIgaW52YWxpZCA9ICcicmdi
KDI1NSwgMCwgMCkiJzsKK3ZhciBub3JtYWwgPSAnInJnYigyNTUsIDI1NSwgMjU1KSInOwordmFy
IGRpc2FibGVkID0gJyJyZ2IoMCwgMCwgMCkiJzsKK3ZhciByZWFkT25seSA9ICcicmdiKDAsIDI1
NSwgMCkiJwordmFyIHZhbGlkID0gJyJyZ2IoMCwgMCwgMjU1KSInOworCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHdpbGxWYWxpZGF0ZSBjaGFuZ2UKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgZWwgPSBtYWtlSW52YWxpZCgpOwor
Ly8gQ29uZmlybSB0aGlzIGVsZW1lbnQgaXMgaW52YWxpZC4KK3Nob3VsZEJlKGVsQmFja2dyb3Vu
ZCwgaW52YWxpZCk7CisKK2RlYnVnKCdDaGFuZ2UgbmFtZTonKTsKK2VsLm5hbWUgPSAnJzsKK3No
b3VsZEJlKGVsQmFja2dyb3VuZCwgbm9ybWFsKTsKK2VsLm5hbWUgPSAnYmFyJzsKK3Nob3VsZEJl
KGVsQmFja2dyb3VuZCwgaW52YWxpZCk7CisKK2RlYnVnKCdDaGFuZ2UgZGlzYWJsZWQ6Jyk7Citl
bCA9IG1ha2VJbnZhbGlkKCk7CitlbC5kaXNhYmxlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGRpc2FibGVkKTsKK2VsLmRpc2FibGVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGludmFsaWQpOworCitkZWJ1ZygnQ2hhbmdlIHJlYWRPbmx5OicpOworZWwgPSBtYWtl
SW52YWxpZCgpOworZWwucmVhZE9ubHkgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBy
ZWFkT25seSk7CitlbC5yZWFkT25seSA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBp
bnZhbGlkKTsKKworZGVidWcoJ0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybTonKTsKK2VsID0gbWFr
ZUludmFsaWQoKTsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdub24tZm9ybS1wYXJlbnQnKS5h
cHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsIG5vcm1hbCk7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZjEnKS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsIGludmFsaWQpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gICAgIHZhbHVlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBhdHRyaWJ1dGU6Jyk7CitlbCA9IG1ha2VJ
bnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCB2YWxp
ZCk7CitlbC52YWx1ZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKwor
ZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OicpOworZWwgPSBtYWtlSW52YWxp
ZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgdmFsaWQpOworZXZlbnRTZW5kZXIua2V5RG93bignZGVsZXRlJywgW10pOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBpbnZhbGlkKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKy8vICAgICBDb25zdHJhaW50cyBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1ZygnQ2hhbmdlIHJlcXVpcmVkOicpOworZWwgPSBt
YWtlSW52YWxpZCgpOworZWwucmVxdWlyZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3Vu
ZCwgdmFsaWQpOworZWwucmVxdWlyZWQgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCBp
bnZhbGlkKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBkMDEwMjFkLi43NDRkZmVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA5
LTAxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgc3R5bGUgd2hlbiB2YWxpZGF0
aW9uLXJlbGF0ZWQgdmFsdWVzIGFyZSBtb2RpZmllZCBpbiBvcmRlcgorICAgICAgICB0byBhcHBs
eSA6dmFsaWQsIDppbnZhbGlkLCA6b3B0aW9uYWwgb3IgOnJlcXVpcmVkIGltbWVkaWF0ZWx5Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKwor
ICAgICAgICBUZXN0czogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRt
bAorICAgICAgICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3Rv
cnMuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6cmVxdWlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
dXBkYXRlVmFsaWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVt
ZW50Ojp1cGRhdGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50
Ojp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1
ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisKIDIwMDkt
MDgtMzEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEu
Y28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAzMDAyYjM1Li41MTBhZTZhIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC01MCw2ICs1MCw3IEBA
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jCiAgICAgLCBtX2Zvcm0oZikKICAgICAsIG1fZGlzYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRPbmx5KGZhbHNlKQorICAgICwgbV9yZXF1aXJlZChmYWxz
ZSkKICAgICAsIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFtX2Zv
cm0pCkBAIC04NSw3ICs4Niw3IEBAIFZhbGlkaXR5U3RhdGUqIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OnZhbGlkaXR5KCkKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkg
PT0gbmFtZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0
cikgewogICAgICAgICBib29sIG9sZERpc2FibGVkID0gbV9kaXNhYmxlZDsKICAgICAgICAgbV9k
aXNhYmxlZCA9ICFhdHRyLT5pc051bGwoKTsKQEAgLTEwMiw2ICsxMDMsMTEgQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUg
KmF0dHIpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgp
LT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+
c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9CisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVxdWlyZWRBdHRyKSB7CisgICAgICAgIGJvb2wg
b2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOworICAgICAgICBtX3JlcXVpcmVkID0gIWF0dHItPmlz
TnVsbCgpOworICAgICAgICBpZiAob2xkUmVxdWlyZWQgIT0gbV9yZXF1aXJlZCkKKyAgICAgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtMjE2LDcgKzIyMiw3IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKIAogYm9vbCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhh
c0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOworICAgIHJldHVybiBtX3JlcXVpcmVkOwogfQogCiB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKGJvb2wgYikKQEAgLTI4Myw2
ICsyODksMTMgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRh
dGVWYWxpZGl0eSgpCit7CisgICAgaWYgKHdpbGxWYWxpZGF0ZSgpKQorICAgICAgICAvLyBVcGRh
dGUgc3R5bGUgZm9yIHBzZXVkbyBjbGFzc2VzIHN1Y2ggYXMgOnZhbGlkIDppbnZhbGlkLgorICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKICAgICB2YWxp
ZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uZTRjMDVkNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGljOgogCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOworICAgIHZvaWQgdXBkYXRlVmFsaWRpdHko
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZvcm0o
KSBjb25zdDsKQEAgLTEyNiw5ICsxMjcsMTAgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxGb3JtRWxl
bWVudCogbV9mb3JtOwogICAgIFJlZlB0cjxWYWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7
Ci0gICAgYm9vbCBtX2Rpc2FibGVkOwotICAgIGJvb2wgbV9yZWFkT25seTsKLSAgICBib29sIG1f
dmFsdWVNYXRjaGVzUmVuZGVyZXI7CisgICAgYm9vbCBtX2Rpc2FibGVkIDogMTsKKyAgICBib29s
IG1fcmVhZE9ubHkgOiAxOworICAgIGJvb2wgbV9yZXF1aXJlZCA6IDE7CisgICAgYm9vbCBtX3Zh
bHVlTWF0Y2hlc1JlbmRlcmVyIDogMTsKIH07CiAKIGNsYXNzIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGUgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAKaW5kZXggYjRkZjA5ZC4uMTQxMDU1NyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtMzc4LDYgKzM3OCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0
SW5wdXRUeXBlKGNvbnN0IFN0cmluZyYgdCkKICAgICAgICAgfQogCiAgICAgICAgIElucHV0RWxl
bWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKICAgICB9CiAgICAgbV9oYXZlVHlwZSA9IHRydWU7CiAKQEAgLTY0OCw2ICs2NDksNyBA
QCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSAqYXR0cikKICAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5yZW1vdmVCdXR0
b24odGhpcyk7CiAgICAgICAgIG1fZGF0YS5zZXROYW1lKGF0dHItPnZhbHVlKCkpOwogICAgICAg
ICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsKKyAgICAgICAgSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b2NvbXBsZXRlQXR0cikgewogICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm9mZiIpKSB7CiAgICAg
ICAgICAgICBtX2F1dG9jb21wbGV0ZSA9IE9mZjsKQEAgLTY2NywxMiArNjY5LDE0IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICph
dHRyKQogICAgICAgICBpZiAobV9kYXRhLnZhbHVlKCkuaXNOdWxsKCkpCiAgICAgICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVz
UmVuZGVyZXIoZmFsc2UpOworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IGNoZWNrZWRBdHRyKSB7CiAgICAgICAgIG1fZGVmYXVsdENoZWNr
ZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgICAgIGlmIChtX3VzZURlZmF1bHRDaGVja2VkKSB7
CiAgICAgICAgICAgICBzZXRDaGVja2VkKG1fZGVmYXVsdENoZWNrZWQpOwogICAgICAgICAgICAg
bV91c2VEZWZhdWx0Q2hlY2tlZCA9IHRydWU7CiAgICAgICAgIH0KKyAgICAgICAgdXBkYXRlVmFs
aWRpdHkoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXhsZW5ndGhBdHRyKQog
ICAgICAgICBJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4TGVuZ3RoQXR0cmlidXRlKG1fZGF0YSwgdGhp
cywgdGhpcywgYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNpemVBdHRyKQpA
QCAtNzM3LDYgKzc0MSw4IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9
PSBtdWx0aXBsZUF0dHIgfHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkgPT0gcHJlY2lzaW9u
QXR0cikKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBwYXR0ZXJuQXR0cikKKyAgICAgICAgdXBkYXRlVmFsaWRpdHkoKTsKICNpZiBF
TkFCTEUoREFUQUxJU1QpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGxpc3RBdHRyKQog
ICAgICAgICBtX2hhc05vbkVtcHR5TGlzdCA9ICFhdHRyLT5pc0VtcHR5KCk7CkBAIC0xMTEzLDYg
KzExMTksNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgICAgICAgICBjYWNoZVNlbGVjdGlvbihtYXgsIG1heCk7CiAgICAgfQogICAg
IElucHV0RWxlbWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICB1cGRhdGVW
YWxpZGl0eSgpOwogfQogCiBTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXIoKSBj
b25zdApAQCAtMTEzNSw2ICsxMTQyLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1
ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIC8vIEZpbGUgdXBsb2FkIGNv
bnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBzZXRGaWxlTGlzdEZyb21SZW5kZXJlci4KICAgICBBU1NF
UlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7CiAgICAgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21S
ZW5kZXJlcihtX2RhdGEsIHRoaXMsIHRoaXMsIHZhbHVlKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgp
OwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKQEAgLTExNDYsNiArMTE1NCw3IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVl
KTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAg
dXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdG9yZXNWYWx1
ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggZDNmYzg5Ny4uNjc1NDYxZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcApAQCAtMjc5LDIwICsyNzksMjIgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojpy
ZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCiAgICAgdXBkYXRlVmFsdWUoKTsKIH0KIAotdm9pZCBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVWYWx1ZSgpIGNvbnN0Cit2b2lkIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKCkKIHsKICAgICBpZiAoZm9ybUNvbnRyb2xWYWx1ZU1hdGNo
ZXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7
CiAgICAgbV92YWx1ZSA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIoKSktPnRleHQoKTsK
LSAgICBjb25zdF9jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+c2V0Rm9ybUNvbnRy
b2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKKyAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0
Y2hlc1JlbmRlcmVyKHRydWUpOwogICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7Cisg
ICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZh
bHVlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAgIC8vIHZhbHVlKCkgaXMgY2Fs
bGVkIGJ5IHNvbWUgY29uc3Qgb3ZlcnJpZGluZyBtZXRob2RzLCBhbmQgdmFsdWUoKSBzaG91bGQg
YmUgc2VtYW50aWNhbGx5IGNvbnN0LgorICAgIGNvbnN0X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dCo+KHRoaXMpLT51cGRhdGVWYWx1ZSgpOwogICAgIHJldHVybiBtX3ZhbHVlOwogfQogCkBAIC0z
MjUsNiArMzI3LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIG5vdGlmeUZv
cm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogU3RyaW5n
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaAppbmRleCBkYjEyZTljLi5lMmY1NWE0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgKQEAgLTk0LDExICs5NCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CiAKICAgICBib29sIHBsYWNlaG9sZGVyU2hv
dWxkQmVWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVWYWx1ZSgpOwogCiBwcml2YXRl
OgogICAgIGVudW0gV3JhcE1ldGhvZCB7IE5vV3JhcCwgU29mdFdyYXAsIEhhcmRXcmFwIH07CiAK
LSAgICB2b2lkIHVwZGF0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRl
clZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJF
dmVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmUuY3BwCmluZGV4IDhkZmI4NTguLjk1ZTU1ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTQ1LDcgKzQ1LDExIEBAIFJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUoKQogdm9p
ZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5nZWQoKQogewogICAg
IFJlbmRlclRleHRDb250cm9sOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpOwotICAgIHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKCkpLT5zZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZh
bHNlKTsKKyAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKCkpOworICAgIHRleHRBcmVhLT5zZXRGb3JtQ29udHJv
bFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKKyAgICBpZiAodGV4dEFyZWEtPndpbGxWYWxp
ZGF0ZSgpKQorICAgICAgICAvLyBOZWVkIHRvIHN5bmMgdGhlIHZhbHVlIGluIG9yZGVyIHRvIGFw
cGx5IDp2YWxpZC86aW52YWxpZCBzZWxlY3RvcnMuCisgICAgICAgIHRleHRBcmVhLT51cGRhdGVW
YWx1ZSgpOwogCiAgICAgaWYgKCFub2RlKCktPmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNTQsNyArNTgsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVl
SGFzQ2hhbmdlZCgpCiAgICAgbm9kZSgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50TmFtZXMoKS5pbnB1
dEV2ZW50LCB0cnVlLCBmYWxzZSk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQo
KS0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHN0YXRp
Y19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKKyAgICAgICAgZnJhbWUtPnRleHREaWRDaGFuZ2VJ
blRleHRBcmVhKHRleHRBcmVhKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlvbiBo
aXRUZXN0QWN0aW9uKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39168</attachid>
            <date>2009-09-07 20:30:36 -0700</date>
            <delta_ts>2009-10-05 10:59:33 -0700</delta_ts>
            <desc>Proposed patch (rev.3)</desc>
            <filename>live-validation-selector-3.diff</filename>
            <type>text/plain</type>
            <size>21921</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyZTJiNmM4Li44ZGJiZTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDkt
MDcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIHRvIGNoZWNrIGlmIHZhbGlkYXRp
b24tcmVsYXRlZCBDU1Mgc2VsZWN0b3JzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKworICAgICAg
ICAqIGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvaW5wdXQtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Jlc291cmNl
cy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1z
L3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanM6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1z
ZWxlY3RvcnMuaHRtbDogQWRkZWQuCisKIDIwMDktMDktMDcgIERyZXcgV2lsc29uICA8YXR3aWxz
b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTYW0gV2VpbmlnLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxl
Y3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBz
ZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjAwZjhjMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBA
QAorVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBz
dWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitDaGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6CitQQVNTIGJhY2tncm91bmRPZihl
bCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgbmFtZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBp
cyBub3JtYWxDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hh
bmdlIGRpc2FibGVkOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGRpc2FibGVkQ29sb3IKK1BB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSByZWFkT25seToKK1BB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyByZWFkT25seUNvbG9yCitQQVNTIGJhY2tncm91bmRPZihl
bCkgaXMgaW52YWxpZENvbG9yCitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZh
bGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0ZToKK1BBU1MgYmFja2dy
b3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxp
ZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtleSBpbnB1dDoKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9y
CitDaGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgor
UEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHBhdHRlcm46CitQ
QVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwp
IGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMDJlYmMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sCis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5jc3MiPgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVj
dG9ycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxl
Y3RvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJiOTllZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2lucHV0LWxp
dmUtcHNldWRvLXNlbGVjdG9ycy5qcwpAQCAtMCwwICsxLDEwMiBAQAorZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIHRoYXQgOnZhbGlkLzppbnZhbGlkIENTUyBwc3VkbyBz
ZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkLiIpOworCisvLyBTZXR1cCBmb3Igc3RhdGljIGVs
ZW1lbnRzLgordmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pOwordmFyIG5vbkZvcm0gPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9uRm9ybSk7CisK
K2Z1bmN0aW9uIG1ha2VJbnZhbGlkKCkgeworICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaW5wdXQnKTsKKyAgICBpLm5hbWUgPSAnZm9vJzsKKyAgICBpLnJlcXVpcmVkID0gdHJ1
ZTsKKyAgICBpLnZhbHVlID0gJyc7CisgICAgZm9ybS5hcHBlbmRDaGlsZChpKTsKKyAgICByZXR1
cm4gaTsKK30KKworZnVuY3Rpb24gYmFja2dyb3VuZE9mKGVsKSB7CisgICAgcmV0dXJuIGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JhY2tncm91bmQtY29sb3InKTsKK30KKwordmFyIGVsQmFja2dyb3VuZCA9ICdiYWNrZ3Jv
dW5kT2YoZWwpJzsKK3ZhciBpbnZhbGlkQ29sb3IgPSAncmdiKDI1NSwgMCwgMCknOwordmFyIG5v
cm1hbENvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1KSc7Cit2YXIgZGlzYWJsZWRDb2xvciA9ICdy
Z2IoMCwgMCwgMCknOwordmFyIHJlYWRPbmx5Q29sb3IgPSAncmdiKDAsIDI1NSwgMCknCit2YXIg
dmFsaWRDb2xvciA9ICdyZ2IoMCwgMCwgMjU1KSc7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyAgICAgd2lsbFZhbGlkYXRlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZhciBlbCA9IG1ha2VJbnZhbGlkKCk7CisvLyBDb25maXJt
IHRoaXMgZWxlbWVudCBpcyBpbnZhbGlkLgorZGVidWcoJ0NoaGVjayB0aGUgaW5pdGlhbCBzdGF0
ZTonKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1Zygn
Q2hhbmdlIG5hbWU6Jyk7CitlbC5uYW1lID0gJyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdu
b3JtYWxDb2xvcicpOworZWwubmFtZSA9ICdiYXInOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAn
aW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgZGlzYWJsZWQ6Jyk7CitlbCA9IG1ha2VJ
bnZhbGlkKCk7CitlbC5kaXNhYmxlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdk
aXNhYmxlZENvbG9yJyk7CitlbC5kaXNhYmxlZCA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3Jv
dW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgcmVhZE9ubHk6Jyk7CitlbCA9
IG1ha2VJbnZhbGlkKCk7CitlbC5yZWFkT25seSA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91
bmQsICdyZWFkT25seUNvbG9yJyk7CitlbC5yZWFkT25seSA9IGZhbHNlOworc2hvdWxkQmUoZWxC
YWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdJbnNpZGUvb3V0c2lkZSBvZiBh
IGZvcm06Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7Citub25Gb3JtLmFwcGVuZENoaWxkKGVsKTsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ25vcm1hbENvbG9yJyk7Citmb3JtLmFwcGVuZENoaWxk
KGVsKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHZhbHVlIGNoYW5nZQorLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5
IERPTSBhdHRyaWJ1dGU6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMn
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwudmFsdWUgPSAnJzsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdl
IHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5mb2N1
cygpOworZXZlbnRTZW5kZXIua2V5RG93bignYScpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAn
dmFsaWRDb2xvcicpOworZXZlbnRTZW5kZXIua2V5RG93bignZGVsZXRlJywgW10pOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyAgICAgQ29uc3RyYWludHMgY2hhbmdlCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSByZXF1aXJlZDonKTsKK2VsID0g
bWFrZUludmFsaWQoKTsKK2VsLnJlcXVpcmVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91
bmQsICd2YWxpZENvbG9yJyk7CitlbC5yZXF1aXJlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5nZSBwYXR0ZXJuOicpOworZWwg
PSBtYWtlSW52YWxpZCgpOworZWwudmFsdWUgPSAnYWJjJzsKK3Nob3VsZEJlKGVsQmFja2dyb3Vu
ZCwgJ3ZhbGlkQ29sb3InKTsKK2VsLnBhdHRlcm4gPSAnYS4uYyc7CitzaG91bGRCZShlbEJhY2tn
cm91bmQsICdpbnZhbGlkQ29sb3InKTsKK2VsLnBhdHRlcm4gPSAnYS5jJzsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUt
cHNldWRvLXNlbGVjdG9ycy5jc3MgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9s
aXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjBiNTczNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jl
c291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzCkBAIC0wLDAgKzEsNiBAQAorOmludmFs
aWQgeyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAwLCAwKTsgfQorOnZhbGlkIHsgYmFja2dyb3VuZDog
cmdiKDAsIDAsIDI1NSk7IH0KKzpkaXNhYmxlZCB7IGJhY2tncm91bmQ6IGJsYWNrOyB9Cis6cmVh
ZC1vbmx5IHsgYmFja2dyb3VuZDogcmdiKDAsIDI1NSwgMCk7IH0KK2lucHV0IHsgYmFja2dyb3Vu
ZDogd2hpdGU7IH0KK3RleHRhcmVhIHsgYmFja2dyb3VuZDogd2hpdGU7IH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxp
dmUtcHNldWRvLXNlbGVjdG9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li45NDg4MzY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCkBAIC0wLDAgKzEsOTMgQEAK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52
YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4iKTsKKworLy8gU2V0
dXAgZm9yIHN0YXRpYyBlbGVtZW50cy4KK3ZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZm9ybScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKK3ZhciBub25Gb3Jt
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKG5vbkZvcm0pOworCitmdW5jdGlvbiBtYWtlSW52YWxpZCgpIHsKKyAgICB2YXIgaSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7CisgICAgaS5uYW1lID0gJ2Zvbyc7Cisg
ICAgaS5yZXF1aXJlZCA9IHRydWU7CisgICAgaS52YWx1ZSA9ICcnOworICAgIGZvcm0uYXBwZW5k
Q2hpbGQoaSk7CisgICAgcmV0dXJuIGk7Cit9CisKK2Z1bmN0aW9uIGJhY2tncm91bmRPZihlbCkg
eworICAgIHJldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyk7Cit9CisKK3ZhciBlbEJh
Y2tncm91bmQgPSAnYmFja2dyb3VuZE9mKGVsKSc7Cit2YXIgaW52YWxpZENvbG9yID0gJ3JnYigy
NTUsIDAsIDApJzsKK3ZhciBub3JtYWxDb2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSknOwordmFy
IGRpc2FibGVkQ29sb3IgPSAncmdiKDAsIDAsIDApJzsKK3ZhciByZWFkT25seUNvbG9yID0gJ3Jn
YigwLCAyNTUsIDApJwordmFyIHZhbGlkQ29sb3IgPSAncmdiKDAsIDAsIDI1NSknOworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHdpbGxWYWxpZGF0ZSBjaGFu
Z2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgZWwgPSBtYWtlSW52
YWxpZCgpOworLy8gQ29uZmlybSB0aGlzIGVsZW1lbnQgaXMgaW52YWxpZC4KK2RlYnVnKCdDaGhl
Y2sgdGhlIGluaXRpYWwgc3RhdGU6Jyk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlk
Q29sb3InKTsKKworZGVidWcoJ0NoYW5nZSBuYW1lOicpOworZWwubmFtZSA9ICcnOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCAnbm9ybWFsQ29sb3InKTsKK2VsLm5hbWUgPSAnYmFyJzsKK3Nob3Vs
ZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIGRpc2Fi
bGVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwuZGlzYWJsZWQgPSB0cnVlOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCAnZGlzYWJsZWRDb2xvcicpOworZWwuZGlzYWJsZWQgPSBmYWxzZTsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdl
IHJlYWRPbmx5OicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwucmVhZE9ubHkgPSB0cnVlOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAncmVhZE9ubHlDb2xvcicpOworZWwucmVhZE9ubHkgPSBm
YWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1Zygn
SW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworbm9uRm9y
bS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdub3JtYWxDb2xvcicp
OworZm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlk
Q29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICB2
YWx1ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Zygn
Q2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOicpOworZWwgPSBtYWtlSW52YWxpZCgp
OworZWwudmFsdWUgPSAnYWJjJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3In
KTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3In
KTsKKworZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OicpOworZWwgPSBtYWtl
SW52YWxpZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKK3Nob3Vs
ZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2Rl
bGV0ZScsIFtdKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIENvbnN0cmFpbnRzIGNo
YW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnKCdDaGFuZ2Ug
cmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZXF1aXJlZCA9IGZhbHNlOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwucmVxdWlyZWQgPSB0cnVl
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKKwordmFyIHN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZlMWIwMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0
b3JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMzIEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBj
aGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkg
YXBwbGllZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NoaGVjayB0aGUgaW5p
dGlhbCBzdGF0ZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5n
ZSBuYW1lOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIG5vcm1hbENvbG9yCitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgZGlzYWJsZWQ6CitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgZGlzYWJsZWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGlu
dmFsaWRDb2xvcgorQ2hhbmdlIHJlYWRPbmx5OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHJl
YWRPbmx5Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0luc2lk
ZS9vdXRzaWRlIG9mIGEgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBub3JtYWxDb2xv
cgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1
ZSBieSBET00gYXR0cmlidXRlOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUg
Ynkga2V5IGlucHV0OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1Mg
YmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSByZXF1aXJlZDoKK1BBU1Mg
YmFja2dyb3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMg
aW52YWxpZENvbG9yCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxp
dmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJl
YS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kNTMyYzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDE0IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbAorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9saXZl
LXBzZXVkby1zZWxlY3RvcnMuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBkMTViYmM0Li5hNTI2MjkzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDA5LTA5LTA3ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgc3R5bGUgd2hlbiB2YWxpZGF0aW9uLXJlbGF0
ZWQgdmFsdWVzIGFyZSBtb2RpZmllZCBpbiBvcmRlcgorICAgICAgICB0byBhcHBseSA6dmFsaWQs
IDppbnZhbGlkLCA6b3B0aW9uYWwgb3IgOnJlcXVpcmVkIGltbWVkaWF0ZWx5LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4NjgKKworICAgICAgICBU
ZXN0czogZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbAorICAgICAg
ICAgICAgICAgZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbAor
CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVxdWly
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dXBkYXRlVmFs
aWRpdHkpOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpzZXRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c2V0VmFsdWVGcm9tUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVu
dDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRh
dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCk6CisKIDIwMDktMDktMDcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
NjFlMTEyYy4uNGM4NzgyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtNTAsNiArNTAsNyBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgICwgbV9mb3Jt
KGYpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShmYWxzZSkKKyAg
ICAsIG1fcmVxdWlyZWQoZmFsc2UpCiAgICAgLCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNl
KQogewogICAgIGlmICghbV9mb3JtKQpAQCAtODUsNyArODYsNyBAQCBWYWxpZGl0eVN0YXRlKiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGl0eSgpCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKICAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKSB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcu
CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKICAgICAgICAgYm9vbCBvbGREaXNhYmxlZCA9IG1fZGlz
YWJsZWQ7CiAgICAgICAgIG1fZGlzYWJsZWQgPSAhYXR0ci0+aXNOdWxsKCk7CkBAIC0xMDIsNiAr
MTAzLDExIEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkgJiYg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQXBwZWFyYW5jZSgpKQogICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnRoZW1lKCktPnN0YXRlQ2hhbmdlZChyZW5kZXJlcigpLCBSZWFkT25seVN0YXRl
KTsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHJlcXVpcmVkQXR0
cikgeworICAgICAgICBib29sIG9sZFJlcXVpcmVkID0gbV9yZXF1aXJlZDsKKyAgICAgICAgbV9y
ZXF1aXJlZCA9ICFhdHRyLT5pc051bGwoKTsKKyAgICAgICAgaWYgKG9sZFJlcXVpcmVkICE9IG1f
cmVxdWlyZWQpCisgICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgfSBlbHNl
CiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAg
LTIxNiw3ICsyMjIsNyBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEF1dG9mb2N1
cyhib29sIGIpCiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cmVxdWlyZWQoKSBjb25z
dAogewotICAgIHJldHVybiBoYXNBdHRyaWJ1dGUocmVxdWlyZWRBdHRyKTsKKyAgICByZXR1cm4g
bV9yZXF1aXJlZDsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRSZXF1aXJl
ZChib29sIGIpCkBAIC0yODksNiArMjk1LDEzIEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dDo6Y2hlY2tWYWxpZGl0eSgpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgSFRNTEZvcm1D
b250cm9sRWxlbWVudDo6dXBkYXRlVmFsaWRpdHkoKQoreworICAgIGlmICh3aWxsVmFsaWRhdGUo
KSkKKyAgICAgICAgLy8gVXBkYXRlIHN0eWxlIGZvciBwc2V1ZG8gY2xhc3NlcyBzdWNoIGFzIDp2
YWxpZCA6aW52YWxpZC4KKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworfQorCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYg
ZXJyb3IpCiB7CiAgICAgdmFsaWRpdHkoKS0+c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGVycm9yKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IGVlN2Q3NzIuLmU0YzA1ZDYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTE4LDYgKzExOCw3IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgcmVtb3ZlRnJvbUZvcm0oKTsKKyAgICB2
b2lkIHVwZGF0ZVZhbGlkaXR5KCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBIVE1MRm9ybUVs
ZW1lbnQqIHZpcnR1YWxGb3JtKCkgY29uc3Q7CkBAIC0xMjYsOSArMTI3LDEwIEBAIHByaXZhdGU6
CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBSZWZQdHI8VmFsaWRpdHlTdGF0
ZT4gbV92YWxpZGl0eVN0YXRlOwotICAgIGJvb2wgbV9kaXNhYmxlZDsKLSAgICBib29sIG1fcmVh
ZE9ubHk7Ci0gICAgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyOworICAgIGJvb2wgbV9kaXNh
YmxlZCA6IDE7CisgICAgYm9vbCBtX3JlYWRPbmx5IDogMTsKKyAgICBib29sIG1fcmVxdWlyZWQg
OiAxOworICAgIGJvb2wgbV92YWx1ZU1hdGNoZXNSZW5kZXJlciA6IDE7CiB9OwogCiBjbGFzcyBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlIDogcHVibGljIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IGEyMTUyMGYuLjA5ZDg1NmEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTM4Myw2ICszODMsNyBAQCB2b2lkIEhU
TUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlwZShjb25zdCBTdHJpbmcmIHQpCiAgICAgICAgIH0K
IAogICAgICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7Cisg
ICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiAgICAgfQogICAgIG1faGF2ZVR5cGUgPSB0cnVlOwog
CkBAIC02NjAsNiArNjYxLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIGNoZWNrZWRSYWRpb0J1dHRv
bnModGhpcykucmVtb3ZlQnV0dG9uKHRoaXMpOwogICAgICAgICBtX2RhdGEuc2V0TmFtZShhdHRy
LT52YWx1ZSgpKTsKICAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlzKS5hZGRCdXR0b24o
dGhpcyk7CisgICAgICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKGF0dHIpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGF1dG9j
b21wbGV0ZUF0dHIpIHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGF0dHItPnZhbHVl
KCksICJvZmYiKSkgewogICAgICAgICAgICAgbV9hdXRvY29tcGxldGUgPSBPZmY7CkBAIC02Nzks
MTIgKzY4MSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgaWYgKG1fZGF0YS52YWx1ZSgpLmlzTnVs
bCgpKQogICAgICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBzZXRGb3Jt
Q29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKKyAgICAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjaGVja2VkQXR0cikgewogICAg
ICAgICBtX2RlZmF1bHRDaGVja2VkID0gIWF0dHItPmlzTnVsbCgpOwogICAgICAgICBpZiAobV91
c2VEZWZhdWx0Q2hlY2tlZCkgewogICAgICAgICAgICAgc2V0Q2hlY2tlZChtX2RlZmF1bHRDaGVj
a2VkKTsKICAgICAgICAgICAgIG1fdXNlRGVmYXVsdENoZWNrZWQgPSB0cnVlOwogICAgICAgICB9
CisgICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gbWF4bGVuZ3RoQXR0cikKICAgICAgICAgSW5wdXRFbGVtZW50OjpwYXJzZU1heExlbmd0aEF0
dHJpYnV0ZShtX2RhdGEsIHRoaXMsIHRoaXMsIGF0dHIpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBzaXplQXR0cikKQEAgLTc0OSw2ICs3NTMsOCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAg
ICAgICBhdHRyLT5uYW1lKCkgPT0gbXVsdGlwbGVBdHRyIHx8CiAgICAgICAgICAgICAgYXR0ci0+
bmFtZSgpID09IHByZWNpc2lvbkF0dHIpCiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
KyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcGF0dGVybkF0dHIpCisgICAgICAgIHVwZGF0
ZVZhbGlkaXR5KCk7CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBsaXN0QXR0cikKICAgICAgICAgbV9oYXNOb25FbXB0eUxpc3QgPSAhYXR0ci0+aXNF
bXB0eSgpOwpAQCAtMTEyOSw2ICsxMTM1LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRW
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICAgICAgY2FjaGVTZWxlY3Rpb24obWF4
LCBtYXgpOwogICAgIH0KICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQo
dGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogU3RyaW5nIEhUTUxJbnB1dEVsZW1l
bnQ6OnBsYWNlaG9sZGVyKCkgY29uc3QKQEAgLTExNTEsNiArMTE1OCw3IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAg
ICAvLyBGaWxlIHVwbG9hZCBjb250cm9scyB3aWxsIGFsd2F5cyB1c2Ugc2V0RmlsZUxpc3RGcm9t
UmVuZGVyZXIuCiAgICAgQVNTRVJUKGlucHV0VHlwZSgpICE9IEZJTEUpOwogICAgIElucHV0RWxl
bWVudDo6c2V0VmFsdWVGcm9tUmVuZGVyZXIobV9kYXRhLCB0aGlzLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxl
TGlzdEZyb21SZW5kZXJlcihjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpCkBAIC0xMTYyLDYg
KzExNzAsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVy
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKIAogICAgIHNldEZvcm1Db250cm9sVmFsdWVN
YXRjaGVzUmVuZGVyZXIodHJ1ZSk7CiAgICAgSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVD
aGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIGJvb2wgSFRNTElucHV0
RWxlbWVudDo6c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQzZmM4OTcuLjY3NTQ2MWYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTI3OSwyMCArMjc5LDIyIEBAIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6cmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKQogICAgIHVwZGF0ZVZh
bHVlKCk7CiB9CiAKLXZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlVmFsdWUoKSBjb25z
dAordm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVWYWx1ZSgpCiB7CiAgICAgaWYgKGZv
cm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
QVNTRVJUKHJlbmRlcmVyKCkpOwogICAgIG1fdmFsdWUgPSB0b1JlbmRlclRleHRDb250cm9sKHJl
bmRlcmVyKCkpLT50ZXh0KCk7Ci0gICAgY29uc3RfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
dGhpcyktPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CisgICAgc2V0
Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBub3RpZnlGb3JtU3Rh
dGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIFN0cmluZyBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp2YWx1ZSgpIGNvbnN0CiB7Ci0gICAgdXBkYXRlVmFsdWUoKTsKKyAg
ICAvLyB2YWx1ZSgpIGlzIGNhbGxlZCBieSBzb21lIGNvbnN0IG92ZXJyaWRpbmcgbWV0aG9kcywg
YW5kIHZhbHVlKCkgc2hvdWxkIGJlIHNlbWFudGljYWxseSBjb25zdC4KKyAgICBjb25zdF9jYXN0
PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+dXBkYXRlVmFsdWUoKTsKICAgICByZXR1cm4g
bV92YWx1ZTsKIH0KIApAQCAtMzI1LDYgKzMyNyw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVu
dDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogICAgIHNldE5lZWRzU3R5bGVSZWNh
bGMoKTsKICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlk
aXR5KCk7CiB9CiAKIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBj
b25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggMWY1Y2I5MS4uOWYyNmFiNiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC05NSwxMSArOTUsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0OwogCiAgICAg
Ym9vbCBwbGFjZWhvbGRlclNob3VsZEJlVmlzaWJsZSgpIGNvbnN0OworICAgIHZvaWQgdXBkYXRl
VmFsdWUoKTsKIAogcHJpdmF0ZToKICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRX
cmFwLCBIYXJkV3JhcCB9OwogCi0gICAgdm9pZCB1cGRhdGVWYWx1ZSgpIGNvbnN0OwogICAgIHZv
aWQgdXBkYXRlUGxhY2Vob2xkZXJWaXNpYmlsaXR5KGJvb2wgcGxhY2Vob2xkZXJWYWx1ZUNoYW5n
ZWQpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4ZGZiODU4Li45NWU1NTgzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC00
NSw3ICs0NSwxMSBAQCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6flJlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lKCkKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVI
YXNDaGFuZ2VkKCkKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQo
KTsKLSAgICBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKS0+c2V0Rm9ybUNvbnRyb2xWYWx1
ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFy
ZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKTsKKyAgICB0ZXh0
QXJlYS0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisgICAgaWYg
KHRleHRBcmVhLT53aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgLy8gTmVlZCB0byBzeW5jIHRoZSB2
YWx1ZSBpbiBvcmRlciB0byBhcHBseSA6dmFsaWQvOmludmFsaWQgc2VsZWN0b3JzLgorICAgICAg
ICB0ZXh0QXJlYS0+dXBkYXRlVmFsdWUoKTsKIAogICAgIGlmICghbm9kZSgpLT5mb2N1c2VkKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTU0LDcgKzU4LDcgQEAgdm9pZCBSZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5nZWQoKQogICAgIG5vZGUoKS0+ZGlzcGF0Y2hFdmVu
dChldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgdHJ1ZSwgZmFsc2UpOwogCiAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIGZyYW1lLT50ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKSk7CisgICAgICAgIGZy
YW1lLT50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0ZXh0QXJlYSk7CiB9CiAKIGJvb2wgUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGludCB4LCBpbnQgeSwgaW50IHR4LCBpbnQg
dHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikK
</data>
<flag name="commit-queue"
          id="21162"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40029</attachid>
            <date>2009-09-23 16:39:55 -0700</date>
            <delta_ts>2009-09-27 21:53:22 -0700</delta_ts>
            <desc>Proposed patch (rev.4)</desc>
            <filename>0001-live-selectors.patch</filename>
            <type>text/plain</type>
            <size>23890</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA3ZGVmMmVlZDM4NjM3MGIyNGQ1Mjg0NThlMDBkN2Q0YWIwYzI4NzExIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDEgU2VwIDIwMDkgMTY6MzA6MDUgKzA5MDAKU3ViamVjdDogW1BBVENIXSBsaXZlLXNl
bGVjdG9ycwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTUgKysrCiAuLi4vZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
LWV4cGVjdGVkLnR4dCB8ICAgMzcgKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmh0bWwgICAgfCAgIDE0ICsrKwogLi4uL2Zvcm1zL3Jlc291cmNlcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgfCAgMTAyICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyB8ICAg
IDYgKwogLi4uL3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgICAg
fCAgIDkzICsrKysrKysrKysrKysrKysrKwogLi4uL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVj
dG9ycy1leHBlY3RlZC50eHQgICAgfCAgIDMzICsrKysrKysKIC4uLi9mYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIHwgICAxNCArKysKIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysKIFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAyMiArKysr
LQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAgICAgICAgICAgICAgfCAg
ICA4ICstCiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKysKIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAgICAgICAg
ICAgICAgIHwgICAgOSArLQogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCAgICAg
ICAgICAgICAgICAgfCAgICAyICstCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5jcHAgICB8ICAgIDkgKystCiAxNSBmaWxlcyBjaGFuZ2VkLCAzOTEgaW5zZXJ0
aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CiBjcmVh
dGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1z
ZWxlY3RvcnMuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMv
cmVzb3VyY2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwogY3JlYXRlIG1vZGUgMTAw
NjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9y
cy5jc3MKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNl
cy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBl
Y3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1ODc5YzAuLjk4ZjNkODcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wOS0wNyAgS2VudCBUYW11cmEgIDx0a2VudEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGVzdHMgdG8gY2hlY2sgaWYgdmFsaWRhdGlvbi1yZWxhdGVkIENTUyBzZWxlY3RvcnMg
YXJlIGFwcGxpZWQgaW1tZWRpYXRlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yODg2OAorCisgICAgICAgICogZmFzdC9mb3Jtcy9pbnB1dC1saXZl
LXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zv
cm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanM6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5j
c3M6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUt
cHNldWRvLXNlbGVjdG9ycy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy90ZXh0YXJl
YS1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sOiBBZGRlZC4KKwog
MjAwOS0wOS0yMyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9y
bXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGY4YzI5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIHRo
YXQgOnZhbGlkLzppbnZhbGlkIENTUyBwc3VkbyBzZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVk
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hoZWNrIHRoZSBpbml0aWFsIHN0
YXRlOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIG5hbWU6
CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSBkaXNhYmxlZDoKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyBkaXNhYmxlZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENv
bG9yCitDaGFuZ2UgcmVhZE9ubHk6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgcmVhZE9ubHlD
b2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorSW5zaWRlL291dHNp
ZGUgb2YgYSBmb3JtOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIG5vcm1hbENvbG9yCitQQVNT
IGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IERP
TSBhdHRyaWJ1dGU6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBi
YWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkg
aW5wdXQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHJlcXVpcmVkOgorUEFTUyBiYWNrZ3Jv
dW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlk
Q29sb3IKK0NoYW5nZSBwYXR0ZXJuOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29s
b3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3Vu
ZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lu
cHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iZDAyZWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDE0IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbAorPGhl
YWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9saXZl
LXBzZXVkby1zZWxlY3RvcnMuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvaW5wdXQt
bGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmEyYjk5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3Jlc291cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKQEAgLTAsMCAr
MSwxMDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2
YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4iKTsK
KworLy8gU2V0dXAgZm9yIHN0YXRpYyBlbGVtZW50cy4KK3ZhciBmb3JtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZm9ybScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKK3Zh
ciBub25Gb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKG5vbkZvcm0pOworCitmdW5jdGlvbiBtYWtlSW52YWxpZCgpIHsKKyAgICB2
YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaS5uYW1lID0gJ2Zv
byc7CisgICAgaS5yZXF1aXJlZCA9IHRydWU7CisgICAgaS52YWx1ZSA9ICcnOworICAgIGZvcm0u
YXBwZW5kQ2hpbGQoaSk7CisgICAgcmV0dXJuIGk7Cit9CisKK2Z1bmN0aW9uIGJhY2tncm91bmRP
ZihlbCkgeworICAgIHJldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyk7Cit9CisKK3Zh
ciBlbEJhY2tncm91bmQgPSAnYmFja2dyb3VuZE9mKGVsKSc7Cit2YXIgaW52YWxpZENvbG9yID0g
J3JnYigyNTUsIDAsIDApJzsKK3ZhciBub3JtYWxDb2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSkn
OwordmFyIGRpc2FibGVkQ29sb3IgPSAncmdiKDAsIDAsIDApJzsKK3ZhciByZWFkT25seUNvbG9y
ID0gJ3JnYigwLCAyNTUsIDApJwordmFyIHZhbGlkQ29sb3IgPSAncmdiKDAsIDAsIDI1NSknOwor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHdpbGxWYWxpZGF0
ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgZWwgPSBt
YWtlSW52YWxpZCgpOworLy8gQ29uZmlybSB0aGlzIGVsZW1lbnQgaXMgaW52YWxpZC4KK2RlYnVn
KCdDaGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6Jyk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdp
bnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5nZSBuYW1lOicpOworZWwubmFtZSA9ICcnOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnbm9ybWFsQ29sb3InKTsKK2VsLm5hbWUgPSAnYmFyJzsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdl
IGRpc2FibGVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwuZGlzYWJsZWQgPSB0cnVlOwor
c2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnZGlzYWJsZWRDb2xvcicpOworZWwuZGlzYWJsZWQgPSBm
YWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1Zygn
Q2hhbmdlIHJlYWRPbmx5OicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwucmVhZE9ubHkgPSB0
cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAncmVhZE9ubHlDb2xvcicpOworZWwucmVhZE9u
bHkgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitk
ZWJ1ZygnSW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOicpOworZWwgPSBtYWtlSW52YWxpZCgpOwor
bm9uRm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdub3JtYWxD
b2xvcicpOworZm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdp
bnZhbGlkQ29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
ICAgICB2YWx1ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitk
ZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOicpOworZWwgPSBtYWtlSW52
YWxpZCgpOworZWwudmFsdWUgPSAnYWJjJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlk
Q29sb3InKTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlk
Q29sb3InKTsKKworZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OicpOworZWwg
PSBtYWtlSW52YWxpZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2V2ZW50U2VuZGVyLmtleURv
d24oJ2RlbGV0ZScsIFtdKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicp
OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIENvbnN0cmFp
bnRzIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnKCdD
aGFuZ2UgcmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZXF1aXJlZCA9IGZh
bHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwucmVxdWlyZWQg
PSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVn
KCdDaGFuZ2UgcGF0dGVybjonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2Fi
Yyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CitlbC5wYXR0ZXJuID0g
J2EuLmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CitlbC5wYXR0
ZXJuID0gJ2EuYyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CisKKwor
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzIGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU3MzZmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNz
cwpAQCAtMCwwICsxLDYgQEAKKzppbnZhbGlkIHsgYmFja2dyb3VuZDogcmdiKDI1NSwgMCwgMCk7
IH0KKzp2YWxpZCB7IGJhY2tncm91bmQ6IHJnYigwLCAwLCAyNTUpOyB9Cis6ZGlzYWJsZWQgeyBi
YWNrZ3JvdW5kOiBibGFjazsgfQorOnJlYWQtb25seSB7IGJhY2tncm91bmQ6IHJnYigwLCAyNTUs
IDApOyB9CitpbnB1dCB7IGJhY2tncm91bmQ6IHdoaXRlOyB9Cit0ZXh0YXJlYSB7IGJhY2tncm91
bmQ6IHdoaXRlOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNl
cy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4ODM2NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVj
dG9ycy5qcwpAQCAtMCwwICsxLDkzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1z
IGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2
ZWx5IGFwcGxpZWQuIik7CisKKy8vIFNldHVwIGZvciBzdGF0aWMgZWxlbWVudHMuCit2YXIgZm9y
bSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZm9ybSk7Cit2YXIgbm9uRm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub25Gb3JtKTsKKworZnVuY3Rpb24gbWFrZUlu
dmFsaWQoKSB7CisgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScp
OworICAgIGkubmFtZSA9ICdmb28nOworICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgIGkudmFs
dWUgPSAnJzsKKyAgICBmb3JtLmFwcGVuZENoaWxkKGkpOworICAgIHJldHVybiBpOworfQorCitm
dW5jdGlvbiBiYWNrZ3JvdW5kT2YoZWwpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3Vu
ZC1jb2xvcicpOworfQorCit2YXIgZWxCYWNrZ3JvdW5kID0gJ2JhY2tncm91bmRPZihlbCknOwor
dmFyIGludmFsaWRDb2xvciA9ICdyZ2IoMjU1LCAwLCAwKSc7Cit2YXIgbm9ybWFsQ29sb3IgPSAn
cmdiKDI1NSwgMjU1LCAyNTUpJzsKK3ZhciBkaXNhYmxlZENvbG9yID0gJ3JnYigwLCAwLCAwKSc7
Cit2YXIgcmVhZE9ubHlDb2xvciA9ICdyZ2IoMCwgMjU1LCAwKScKK3ZhciB2YWxpZENvbG9yID0g
J3JnYigwLCAwLCAyNTUpJzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vICAgICB3aWxsVmFsaWRhdGUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQordmFyIGVsID0gbWFrZUludmFsaWQoKTsKKy8vIENvbmZpcm0gdGhpcyBlbGVtZW50
IGlzIGludmFsaWQuCitkZWJ1ZygnQ2hoZWNrIHRoZSBpbml0aWFsIHN0YXRlOicpOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgbmFtZTon
KTsKK2VsLm5hbWUgPSAnJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ25vcm1hbENvbG9yJyk7
CitlbC5uYW1lID0gJ2Jhcic7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3In
KTsKKworZGVidWcoJ0NoYW5nZSBkaXNhYmxlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2Vs
LmRpc2FibGVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2Rpc2FibGVkQ29sb3In
KTsKK2VsLmRpc2FibGVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlk
Q29sb3InKTsKKworZGVidWcoJ0NoYW5nZSByZWFkT25seTonKTsKK2VsID0gbWFrZUludmFsaWQo
KTsKK2VsLnJlYWRPbmx5ID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3JlYWRPbmx5
Q29sb3InKTsKK2VsLnJlYWRPbmx5ID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdp
bnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybTonKTsKK2Vs
ID0gbWFrZUludmFsaWQoKTsKK25vbkZvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxkQmUoZWxC
YWNrZ3JvdW5kLCAnbm9ybWFsQ29sb3InKTsKK2Zvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxk
QmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCisvLyAgICAgdmFsdWUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0
ZTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7CitzaG91bGRCZShl
bEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CitlbC52YWx1ZSA9ICcnOworc2hvdWxkQmUoZWxC
YWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5
IGtleSBpbnB1dDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmZvY3VzKCk7CitldmVudFNl
bmRlci5rZXlEb3duKCdhJyk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7
CitldmVudFNlbmRlci5rZXlEb3duKCdkZWxldGUnLCBbXSk7CitzaG91bGRCZShlbEJhY2tncm91
bmQsICdpbnZhbGlkQ29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKy8vICAgICBDb25zdHJhaW50cyBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCitkZWJ1ZygnQ2hhbmdlIHJlcXVpcmVkOicpOworZWwgPSBtYWtlSW52YWxpZCgp
OworZWwucmVxdWlyZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29s
b3InKTsKK2VsLnJlcXVpcmVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFs
aWRDb2xvcicpOworCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVk
by1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ2ZTFiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Rl
eHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBA
QAorVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBz
dWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitDaGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6CitQQVNTIGJhY2tncm91bmRPZihl
bCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgbmFtZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBp
cyBub3JtYWxDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hh
bmdlIGRpc2FibGVkOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGRpc2FibGVkQ29sb3IKK1BB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSByZWFkT25seToKK1BB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyByZWFkT25seUNvbG9yCitQQVNTIGJhY2tncm91bmRPZihl
bCkgaXMgaW52YWxpZENvbG9yCitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZh
bGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0ZToKK1BBU1MgYmFja2dy
b3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxp
ZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtleSBpbnB1dDoKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9y
CitDaGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgor
UEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzMmMwMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgorPGh0bWwKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJyZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyI+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY3YjgxZS4uMmY3MDc1MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNCBAQAorMjAwOS0wOS0wNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHN0
eWxlIHdoZW4gdmFsaWRhdGlvbi1yZWxhdGVkIHZhbHVlcyBhcmUgbW9kaWZpZWQgaW4gb3JkZXIK
KyAgICAgICAgdG8gYXBwbHkgOnZhbGlkLCA6aW52YWxpZCwgOm9wdGlvbmFsIG9yIDpyZXF1aXJl
ZCBpbW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTI4ODY4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1
ZG8tc2VsZWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2
ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpI
VE1MRm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5wdXRUeXBlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVh
RWxlbWVudDo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0No
YW5nZWQpOgorCiAyMDA5LTA5LTIzICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNjFlMTEyYy4uNzgwMGZjZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTAsNiArNTAsNyBAQCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvYwogICAgICwgbV9mb3JtKGYpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNl
KQogICAgICwgbV9yZWFkT25seShmYWxzZSkKKyAgICAsIG1fcmVxdWlyZWQoZmFsc2UpCiAgICAg
LCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKQogewogICAgIGlmICghbV9mb3JtKQpAQCAt
ODQsOSArODUsOSBAQCBWYWxpZGl0eVN0YXRlKiBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxp
ZGl0eSgpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFt
ZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRy
KQorICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IGRpc2FibGVkQXR0cikgewogICAgICAgICBib29sIG9sZERpc2FibGVkID0gbV9kaXNh
YmxlZDsKICAgICAgICAgbV9kaXNhYmxlZCA9ICFhdHRyLT5pc051bGwoKTsKICAgICAgICAgaWYg
KG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKQEAgLTEwMiw2ICsxMDMsMTEgQEAgdm9pZCBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUgKmF0dHIpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHls
ZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUo
KS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOwogICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVxdWlyZWRBdHRyKSB7CisgICAgICAgIGJv
b2wgb2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOworICAgICAgICBtX3JlcXVpcmVkID0gIWF0dHIt
PmlzTnVsbCgpOworICAgICAgICBpZiAob2xkUmVxdWlyZWQgIT0gbV9yZXF1aXJlZCkKKyAgICAg
ICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtMjE2LDcgKzIyMiw3IEBA
IHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wgYikKIAogYm9v
bCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGhhc0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOworICAgIHJldHVybiBtX3JlcXVpcmVkOwogfQog
CiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKGJvb2wgYikKQEAgLTI4
OSw2ICsyOTUsMTQgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5
KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1
cGRhdGVWYWxpZGl0eSgpCit7CisgICAgaWYgKHdpbGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIC8v
IFVwZGF0ZSBzdHlsZSBmb3IgcHNldWRvIGNsYXNzZXMgc3VjaCBhcyA6dmFsaWQgOmludmFsaWQu
CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikK
IHsKICAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZWU3ZDc3Mi4uZTRjMDVkNiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMTgsNiArMTE4LDcgQEAgcHVibGlj
OgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCByZW1vdmVGcm9tRm9ybSgpOworICAgIHZvaWQgdXBk
YXRlVmFsaWRpdHkoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCog
dmlydHVhbEZvcm0oKSBjb25zdDsKQEAgLTEyNiw5ICsxMjcsMTAgQEAgcHJpdmF0ZToKIAogICAg
IEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIFJlZlB0cjxWYWxpZGl0eVN0YXRlPiBtX3Zh
bGlkaXR5U3RhdGU7Ci0gICAgYm9vbCBtX2Rpc2FibGVkOwotICAgIGJvb2wgbV9yZWFkT25seTsK
LSAgICBib29sIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXI7CisgICAgYm9vbCBtX2Rpc2FibGVkIDog
MTsKKyAgICBib29sIG1fcmVhZE9ubHkgOiAxOworICAgIGJvb2wgbV9yZXF1aXJlZCA6IDE7Cisg
ICAgYm9vbCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyIDogMTsKIH07CiAKIGNsYXNzIEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnRXaXRoU3RhdGUgOiBwdWJsaWMgSFRNTEZvcm1Db250cm9sRWxlbWVudCB7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggOGI4ODRjZi4uNjNlNGY5ZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMzg0LDYgKzM4NCw3IEBAIHZvaWQgSFRNTElucHV0
RWxlbWVudDo6c2V0SW5wdXRUeXBlKGNvbnN0IFN0cmluZyYgdCkKICAgICAgICAgfQogCiAgICAg
ICAgIElucHV0RWxlbWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAg
dXBkYXRlVmFsaWRpdHkoKTsKICAgICB9CiAgICAgbV9oYXZlVHlwZSA9IHRydWU7CiAKQEAgLTY2
MSw2ICs2NjIsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAgICAgICAgY2hlY2tlZFJhZGlvQnV0dG9ucyh0aGlz
KS5yZW1vdmVCdXR0b24odGhpcyk7CiAgICAgICAgIG1fZGF0YS5zZXROYW1lKGF0dHItPnZhbHVl
KCkpOwogICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLmFkZEJ1dHRvbih0aGlzKTsK
KyAgICAgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gYXV0b2NvbXBsZXRl
QXR0cikgewogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYXR0ci0+dmFsdWUoKSwgIm9m
ZiIpKSB7CiAgICAgICAgICAgICBtX2F1dG9jb21wbGV0ZSA9IE9mZjsKQEAgLTY4MCwxMiArNjgy
LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlICphdHRyKQogICAgICAgICBpZiAobV9kYXRhLnZhbHVlKCkuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIHNldEZvcm1Db250cm9s
VmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNoZWNrZWRBdHRyKSB7CiAgICAgICAgIG1f
ZGVmYXVsdENoZWNrZWQgPSAhYXR0ci0+aXNOdWxsKCk7CiAgICAgICAgIGlmIChtX3VzZURlZmF1
bHRDaGVja2VkKSB7CiAgICAgICAgICAgICBzZXRDaGVja2VkKG1fZGVmYXVsdENoZWNrZWQpOwog
ICAgICAgICAgICAgbV91c2VEZWZhdWx0Q2hlY2tlZCA9IHRydWU7CiAgICAgICAgIH0KKyAgICAg
ICAgdXBkYXRlVmFsaWRpdHkoKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBtYXhs
ZW5ndGhBdHRyKQogICAgICAgICBJbnB1dEVsZW1lbnQ6OnBhcnNlTWF4TGVuZ3RoQXR0cmlidXRl
KG1fZGF0YSwgdGhpcywgdGhpcywgYXR0cik7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHNpemVBdHRyKQpAQCAtNzUwLDYgKzc1NCw4IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICAgICAgIGF0
dHItPm5hbWUoKSA9PSBtdWx0aXBsZUF0dHIgfHwKICAgICAgICAgICAgICBhdHRyLT5uYW1lKCkg
PT0gcHJlY2lzaW9uQXR0cikKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOworICAgIGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBwYXR0ZXJuQXR0cikKKyAgICAgICAgdXBkYXRlVmFsaWRp
dHkoKTsKICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IGxpc3RBdHRyKQogICAgICAgICBtX2hhc05vbkVtcHR5TGlzdCA9ICFhdHRyLT5pc0VtcHR5KCk7
CkBAIC0xMTMwLDYgKzExMzYsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgICAgICBjYWNoZVNlbGVjdGlvbihtYXgsIG1heCk7
CiAgICAgfQogICAgIElucHV0RWxlbWVudDo6bm90aWZ5Rm9ybVN0YXRlQ2hhbmdlZCh0aGlzKTsK
KyAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiBTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6cGxh
Y2Vob2xkZXIoKSBjb25zdApAQCAtMTE1Miw2ICsxMTU5LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIC8vIEZp
bGUgdXBsb2FkIGNvbnRyb2xzIHdpbGwgYWx3YXlzIHVzZSBzZXRGaWxlTGlzdEZyb21SZW5kZXJl
ci4KICAgICBBU1NFUlQoaW5wdXRUeXBlKCkgIT0gRklMRSk7CiAgICAgSW5wdXRFbGVtZW50Ojpz
ZXRWYWx1ZUZyb21SZW5kZXJlcihtX2RhdGEsIHRoaXMsIHRoaXMsIHZhbHVlKTsKKyAgICB1cGRh
dGVWYWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJv
bVJlbmRlcmVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKQEAgLTExNjMsNiArMTE3MSw3
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhdGhzKQogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNS
ZW5kZXJlcih0cnVlKTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQo
dGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50
OjpzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZDNmYzg5Ny4uNjc1NDYxZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMjc5LDIwICsyNzksMjIgQEAgdm9pZCBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCiAgICAgdXBkYXRlVmFsdWUoKTsK
IH0KIAotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVWYWx1ZSgpIGNvbnN0Cit2b2lk
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKCkKIHsKICAgICBpZiAoZm9ybUNvbnRy
b2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQo
cmVuZGVyZXIoKSk7CiAgICAgbV92YWx1ZSA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIo
KSktPnRleHQoKTsKLSAgICBjb25zdF9jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPih0aGlzKS0+
c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKKyAgICBzZXRGb3JtQ29u
dHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwogICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5n
ZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogU3RyaW5nIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVWYWx1ZSgpOworICAgIC8vIHZh
bHVlKCkgaXMgY2FsbGVkIGJ5IHNvbWUgY29uc3Qgb3ZlcnJpZGluZyBtZXRob2RzLCBhbmQgdmFs
dWUoKSBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGNvbnN0LgorICAgIGNvbnN0X2Nhc3Q8SFRNTFRl
eHRBcmVhRWxlbWVudCo+KHRoaXMpLT51cGRhdGVWYWx1ZSgpOwogICAgIHJldHVybiBtX3ZhbHVl
OwogfQogCkBAIC0zMjUsNiArMzI3LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRW
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwog
ICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsK
IH0KIAogU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCAxZjVjYjkxLi45ZjI2YWI2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTk1LDExICs5NSwxMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCkgY29uc3Q7CiAKICAgICBib29sIHBs
YWNlaG9sZGVyU2hvdWxkQmVWaXNpYmxlKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVWYWx1ZSgp
OwogCiBwcml2YXRlOgogICAgIGVudW0gV3JhcE1ldGhvZCB7IE5vV3JhcCwgU29mdFdyYXAsIEhh
cmRXcmFwIH07CiAKLSAgICB2b2lkIHVwZGF0ZVZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRh
dGVQbGFjZWhvbGRlclZpc2liaWxpdHkoYm9vbCBwbGFjZWhvbGRlclZhbHVlQ2hhbmdlZCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaEJsdXJFdmVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDhkZmI4NTguLmVjYTEwYmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTQ1LDcgKzQ1
LDEyIEBAIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjp+UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmUoKQogdm9pZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5n
ZWQoKQogewogICAgIFJlbmRlclRleHRDb250cm9sOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpOwotICAg
IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpLT5zZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKGZhbHNlKTsKKyAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0
YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihub2RlKCkpOworICAgIHRleHRBcmVhLT5z
ZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKTsKKyAgICBpZiAodGV4dEFy
ZWEtPndpbGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIC8vIE5lZWQgdG8gc3luYyB0aGUgdmFsdWUg
aW4gb3JkZXIgdG8gYXBwbHkgQ1NTIHNlbGVjdG9ycyBzdWNoIGFzIDp2YWxpZCBhbmQgOmludmFs
aWQuCisgICAgICAgIHRleHRBcmVhLT51cGRhdGVWYWx1ZSgpOworICAgIH0KIAogICAgIGlmICgh
bm9kZSgpLT5mb2N1c2VkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU0LDcgKzU5LDcgQEAgdm9p
ZCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5nZWQoKQogICAgIG5v
ZGUoKS0+ZGlzcGF0Y2hFdmVudChldmVudE5hbWVzKCkuaW5wdXRFdmVudCwgdHJ1ZSwgZmFsc2Up
OwogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAg
IGZyYW1lLT50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSgpKSk7CisgICAgICAgIGZyYW1lLT50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSh0ZXh0QXJlYSk7
CiB9CiAKIGJvb2wgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6Om5vZGVBdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGludCB4LCBp
bnQgeSwgaW50IHR4LCBpbnQgdHksIEhpdFRlc3RBY3Rpb24gaGl0VGVzdEFjdGlvbikKLS0gCjEu
Ni4zLjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40215</attachid>
            <date>2009-09-27 21:53:22 -0700</date>
            <delta_ts>2009-10-01 06:42:21 -0700</delta_ts>
            <desc>Proposed patch (rev.5)</desc>
            <filename>0001-live-selectors.patch</filename>
            <type>text/plain</type>
            <size>23675</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA5NDk2N2YyN2NhOWQ0NTQ0MTlhNmY5NGYzNGE1NDkyODU2NzkyYTgzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDEgU2VwIDIwMDkgMTY6MzA6MDUgKzA5MDAKU3ViamVjdDogW1BBVENIXSBsaXZlLXNl
bGVjdG9ycwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgMTUgKysrCiAuLi4vZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
LWV4cGVjdGVkLnR4dCB8ICAgMzcgKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmh0bWwgICAgfCAgIDE0ICsrKwogLi4uL2Zvcm1zL3Jlc291cmNlcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgfCAgMTAyICsrKysrKysrKysrKysrKysrKysr
CiAuLi4vZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyB8ICAg
IDYgKwogLi4uL3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgICAg
fCAgIDkzICsrKysrKysrKysrKysrKysrKwogLi4uL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVj
dG9ycy1leHBlY3RlZC50eHQgICAgfCAgIDMzICsrKysrKysKIC4uLi9mYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIHwgICAxNCArKysKIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysKIFdlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAyMiArKysr
LQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAgICAgICAgICAgICAgfCAg
ICA4ICstCiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAgICAgICAgICAg
ICB8ICAgIDkgKysKIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAgICAgICAg
ICAgICAgIHwgICAgOSArLQogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCAgICAg
ICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
TXVsdGlMaW5lLmNwcCAgIHwgICAgOSArKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDM5MSBpbnNlcnRp
b25zKCspLCAxMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9m
YXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKIGNyZWF0
ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9y
ZXNvdXJjZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCiBjcmVhdGUgbW9kZSAxMDA2
NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
LmNzcwogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2Vz
L3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IExh
eW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVj
dGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFy
ZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjM1NmVlMC4uYzNjMGVjZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDA5LTA5LTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUZXN0cyB0byBjaGVjayBpZiB2YWxpZGF0aW9uLXJlbGF0ZWQgQ1NTIHNlbGVjdG9ycyBh
cmUgYXBwbGllZCBpbW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI4ODY4CisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWxpdmUt
cHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9y
bXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvcmVzb3VyY2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qczogQWRkZWQu
CisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNz
czogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVh
LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAy
MDA5LTA5LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGY4YzI5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMzcgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIHRoYXQg
OnZhbGlkLzppbnZhbGlkIENTUyBwc3VkbyBzZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworQ2hoZWNrIHRoZSBpbml0aWFsIHN0YXRl
OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIG5hbWU6CitQ
QVNTIGJhY2tncm91bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVs
KSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSBkaXNhYmxlZDoKK1BBU1MgYmFja2dyb3VuZE9mKGVs
KSBpcyBkaXNhYmxlZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9y
CitDaGFuZ2UgcmVhZE9ubHk6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgcmVhZE9ubHlDb2xv
cgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorSW5zaWRlL291dHNpZGUg
b2YgYSBmb3JtOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIG5vcm1hbENvbG9yCitQQVNTIGJh
Y2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBh
dHRyaWJ1dGU6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNr
Z3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5w
dXQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHJlcXVpcmVkOgorUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29s
b3IKK0NoYW5nZSBwYXR0ZXJuOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0
LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pbnB1
dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5iZDAyZWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jt
cy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbAorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9saXZlLXBz
ZXVkby1zZWxlY3RvcnMuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvaW5wdXQtbGl2
ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMv
aW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmEyYjk5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL3Jlc291cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKQEAgLTAsMCArMSwx
MDIgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2YWxp
ZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4iKTsKKwor
Ly8gU2V0dXAgZm9yIHN0YXRpYyBlbGVtZW50cy4KK3ZhciBmb3JtID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZm9ybScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmb3JtKTsKK3ZhciBu
b25Gb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKG5vbkZvcm0pOworCitmdW5jdGlvbiBtYWtlSW52YWxpZCgpIHsKKyAgICB2YXIg
aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CisgICAgaS5uYW1lID0gJ2Zvbyc7
CisgICAgaS5yZXF1aXJlZCA9IHRydWU7CisgICAgaS52YWx1ZSA9ICcnOworICAgIGZvcm0uYXBw
ZW5kQ2hpbGQoaSk7CisgICAgcmV0dXJuIGk7Cit9CisKK2Z1bmN0aW9uIGJhY2tncm91bmRPZihl
bCkgeworICAgIHJldHVybiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVs
LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyk7Cit9CisKK3ZhciBl
bEJhY2tncm91bmQgPSAnYmFja2dyb3VuZE9mKGVsKSc7Cit2YXIgaW52YWxpZENvbG9yID0gJ3Jn
YigyNTUsIDAsIDApJzsKK3ZhciBub3JtYWxDb2xvciA9ICdyZ2IoMjU1LCAyNTUsIDI1NSknOwor
dmFyIGRpc2FibGVkQ29sb3IgPSAncmdiKDAsIDAsIDApJzsKK3ZhciByZWFkT25seUNvbG9yID0g
J3JnYigwLCAyNTUsIDApJwordmFyIHZhbGlkQ29sb3IgPSAncmdiKDAsIDAsIDI1NSknOworCisv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHdpbGxWYWxpZGF0ZSBj
aGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit2YXIgZWwgPSBtYWtl
SW52YWxpZCgpOworLy8gQ29uZmlybSB0aGlzIGVsZW1lbnQgaXMgaW52YWxpZC4KK2RlYnVnKCdD
aGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6Jyk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZh
bGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5nZSBuYW1lOicpOworZWwubmFtZSA9ICcnOworc2hv
dWxkQmUoZWxCYWNrZ3JvdW5kLCAnbm9ybWFsQ29sb3InKTsKK2VsLm5hbWUgPSAnYmFyJzsKK3No
b3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIGRp
c2FibGVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwuZGlzYWJsZWQgPSB0cnVlOworc2hv
dWxkQmUoZWxCYWNrZ3JvdW5kLCAnZGlzYWJsZWRDb2xvcicpOworZWwuZGlzYWJsZWQgPSBmYWxz
ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hh
bmdlIHJlYWRPbmx5OicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwucmVhZE9ubHkgPSB0cnVl
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAncmVhZE9ubHlDb2xvcicpOworZWwucmVhZE9ubHkg
PSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1
ZygnSW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworbm9u
Rm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdub3JtYWxDb2xv
cicpOworZm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZh
bGlkQ29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAg
ICB2YWx1ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1
ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOicpOworZWwgPSBtYWtlSW52YWxp
ZCgpOworZWwudmFsdWUgPSAnYWJjJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29s
b3InKTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29s
b3InKTsKKworZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OicpOworZWwgPSBt
YWtlSW52YWxpZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2EnKTsKK3No
b3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2V2ZW50U2VuZGVyLmtleURvd24o
J2RlbGV0ZScsIFtdKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOwor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIENvbnN0cmFpbnRz
IGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnKCdDaGFu
Z2UgcmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZXF1aXJlZCA9IGZhbHNl
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwucmVxdWlyZWQgPSB0
cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdD
aGFuZ2UgcGF0dGVybjonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7
CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CitlbC5wYXR0ZXJuID0gJ2Eu
LmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CitlbC5wYXR0ZXJu
ID0gJ2EuYyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CisKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU3MzZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcwpA
QCAtMCwwICsxLDYgQEAKKzppbnZhbGlkIHsgYmFja2dyb3VuZDogcmdiKDI1NSwgMCwgMCk7IH0K
Kzp2YWxpZCB7IGJhY2tncm91bmQ6IHJnYigwLCAwLCAyNTUpOyB9Cis6ZGlzYWJsZWQgeyBiYWNr
Z3JvdW5kOiBibGFjazsgfQorOnJlYWQtb25seSB7IGJhY2tncm91bmQ6IHJnYigwLCAyNTUsIDAp
OyB9CitpbnB1dCB7IGJhY2tncm91bmQ6IHdoaXRlOyB9Cit0ZXh0YXJlYSB7IGJhY2tncm91bmQ6
IHdoaXRlOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90
ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ4ODM2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5qcwpAQCAtMCwwICsxLDkzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEg
Y2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5
IGFwcGxpZWQuIik7CisKKy8vIFNldHVwIGZvciBzdGF0aWMgZWxlbWVudHMuCit2YXIgZm9ybSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoZm9ybSk7Cit2YXIgbm9uRm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub25Gb3JtKTsKKworZnVuY3Rpb24gbWFrZUludmFs
aWQoKSB7CisgICAgdmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0YXJlYScpOwor
ICAgIGkubmFtZSA9ICdmb28nOworICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgIGkudmFsdWUg
PSAnJzsKKyAgICBmb3JtLmFwcGVuZENoaWxkKGkpOworICAgIHJldHVybiBpOworfQorCitmdW5j
dGlvbiBiYWNrZ3JvdW5kT2YoZWwpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1j
b2xvcicpOworfQorCit2YXIgZWxCYWNrZ3JvdW5kID0gJ2JhY2tncm91bmRPZihlbCknOwordmFy
IGludmFsaWRDb2xvciA9ICdyZ2IoMjU1LCAwLCAwKSc7Cit2YXIgbm9ybWFsQ29sb3IgPSAncmdi
KDI1NSwgMjU1LCAyNTUpJzsKK3ZhciBkaXNhYmxlZENvbG9yID0gJ3JnYigwLCAwLCAwKSc7Cit2
YXIgcmVhZE9ubHlDb2xvciA9ICdyZ2IoMCwgMjU1LCAwKScKK3ZhciB2YWxpZENvbG9yID0gJ3Jn
YigwLCAwLCAyNTUpJzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8v
ICAgICB3aWxsVmFsaWRhdGUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQordmFyIGVsID0gbWFrZUludmFsaWQoKTsKKy8vIENvbmZpcm0gdGhpcyBlbGVtZW50IGlz
IGludmFsaWQuCitkZWJ1ZygnQ2hoZWNrIHRoZSBpbml0aWFsIHN0YXRlOicpOworc2hvdWxkQmUo
ZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgbmFtZTonKTsK
K2VsLm5hbWUgPSAnJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ25vcm1hbENvbG9yJyk7Citl
bC5uYW1lID0gJ2Jhcic7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsK
KworZGVidWcoJ0NoYW5nZSBkaXNhYmxlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmRp
c2FibGVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2Rpc2FibGVkQ29sb3InKTsK
K2VsLmRpc2FibGVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29s
b3InKTsKKworZGVidWcoJ0NoYW5nZSByZWFkT25seTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsK
K2VsLnJlYWRPbmx5ID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3JlYWRPbmx5Q29s
b3InKTsKK2VsLnJlYWRPbmx5ID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZh
bGlkQ29sb3InKTsKKworZGVidWcoJ0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybTonKTsKK2VsID0g
bWFrZUludmFsaWQoKTsKK25vbkZvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxkQmUoZWxCYWNr
Z3JvdW5kLCAnbm9ybWFsQ29sb3InKTsKK2Zvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxkQmUo
ZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisvLyAgICAgdmFsdWUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0ZTon
KTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7CitzaG91bGRCZShlbEJh
Y2tncm91bmQsICd2YWxpZENvbG9yJyk7CitlbC52YWx1ZSA9ICcnOworc2hvdWxkQmUoZWxCYWNr
Z3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtl
eSBpbnB1dDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmZvY3VzKCk7CitldmVudFNlbmRl
ci5rZXlEb3duKCdhJyk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7Citl
dmVudFNlbmRlci5rZXlEb3duKCdkZWxldGUnLCBbXSk7CitzaG91bGRCZShlbEJhY2tncm91bmQs
ICdpbnZhbGlkQ29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
Ky8vICAgICBDb25zdHJhaW50cyBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCitkZWJ1ZygnQ2hhbmdlIHJlcXVpcmVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOwor
ZWwucmVxdWlyZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3In
KTsKK2VsLnJlcXVpcmVkID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRD
b2xvcicpOworCisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1z
ZWxlY3RvcnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmQ2ZTFiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRh
cmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAor
VGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBzdWRv
IHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitDaGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6CitQQVNTIGJhY2tncm91bmRPZihlbCkg
aXMgaW52YWxpZENvbG9yCitDaGFuZ2UgbmFtZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBu
b3JtYWxDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdl
IGRpc2FibGVkOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGRpc2FibGVkQ29sb3IKK1BBU1Mg
YmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSByZWFkT25seToKK1BBU1Mg
YmFja2dyb3VuZE9mKGVsKSBpcyByZWFkT25seUNvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkg
aXMgaW52YWxpZENvbG9yCitJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06CitQQVNTIGJhY2tncm91
bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlk
Q29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0ZToKK1BBU1MgYmFja2dyb3Vu
ZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENv
bG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtleSBpbnB1dDoKK1BBU1MgYmFja2dyb3VuZE9mKGVs
KSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitD
aGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUzMmMwMQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0
bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWwKKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJyZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyI+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2ZmI1ZS4uN2M2MDhhYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NCBAQAorMjAwOS0wOS0wNyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHN0eWxl
IHdoZW4gdmFsaWRhdGlvbi1yZWxhdGVkIHZhbHVlcyBhcmUgbW9kaWZpZWQgaW4gb3JkZXIKKyAg
ICAgICAgdG8gYXBwbHkgOnZhbGlkLCA6aW52YWxpZCwgOm9wdGlvbmFsIG9yIDpyZXF1aXJlZCBp
bW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTI4ODY4CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8t
c2VsZWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1w
c2V1ZG8tc2VsZWN0b3JzLmh0bWwKKworICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ6OnJlcXVpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6c2V0SW5wdXRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKToKKyAgICAg
ICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRleHRBcmVhRWxlbWVudDo6dXBkYXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRl
eHRBcmVhRWxlbWVudDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxl
bWVudDo6c2V0VmFsdWUpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6c3VidHJlZUhhc0NoYW5n
ZWQpOgorCiAyMDA5LTA5LTI3ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmNwcAppbmRleCA4ZTY2ZmUwLi4yYTRmNTliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuY3BwCkBAIC01Miw2ICs1Miw3IEBAIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQ6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jCiAgICAgLCBtX2Zvcm0oZikKICAgICAsIG1fZGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Jl
YWRPbmx5KGZhbHNlKQorICAgICwgbV9yZXF1aXJlZChmYWxzZSkKICAgICAsIG1fdmFsdWVNYXRj
aGVzUmVuZGVyZXIoZmFsc2UpCiB7CiAgICAgaWYgKCFtX2Zvcm0pCkBAIC04Niw5ICs4Nyw5IEBA
IFZhbGlkaXR5U3RhdGUqIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkaXR5KCkKIAogdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUgKmF0dHIpCiB7Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBuYW1lQXR0cikgewotICAg
ICAgICAvLyBEbyBub3RoaW5nLgotICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpc2Fi
bGVkQXR0cikgeworICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpCisgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZGlzYWJs
ZWRBdHRyKSB7CiAgICAgICAgIGJvb2wgb2xkRGlzYWJsZWQgPSBtX2Rpc2FibGVkOwogICAgICAg
ICBtX2Rpc2FibGVkID0gIWF0dHItPmlzTnVsbCgpOwogICAgICAgICBpZiAob2xkRGlzYWJsZWQg
IT0gbV9kaXNhYmxlZCkgewpAQCAtMTA0LDYgKzEwNSwxMSBAQCB2b2lkIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKICAg
ICAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPnN0eWxlKCktPmhhc0FwcGVh
cmFuY2UoKSkKICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT50aGVtZSgpLT5zdGF0ZUNoYW5n
ZWQocmVuZGVyZXIoKSwgUmVhZE9ubHlTdGF0ZSk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSByZXF1aXJlZEF0dHIpIHsKKyAgICAgICAgYm9vbCBvbGRSZXF1aXJl
ZCA9IG1fcmVxdWlyZWQ7CisgICAgICAgIG1fcmVxdWlyZWQgPSAhYXR0ci0+aXNOdWxsKCk7Cisg
ICAgICAgIGlmIChvbGRSZXF1aXJlZCAhPSBtX3JlcXVpcmVkKQorICAgICAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkBAIC0yMTgsNyArMjI0LDcgQEAgdm9pZCBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRBdXRvZm9jdXMoYm9vbCBiKQogCiBib29sIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnJlcXVpcmVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzQXR0cmlidXRl
KHJlcXVpcmVkQXR0cik7CisgICAgcmV0dXJuIG1fcmVxdWlyZWQ7CiB9CiAKIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6c2V0UmVxdWlyZWQoYm9vbCBiKQpAQCAtMjkxLDYgKzI5NywxNCBA
QCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKQogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnVwZGF0ZVZhbGlkaXR5
KCkKK3sKKyAgICBpZiAod2lsbFZhbGlkYXRlKCkpIHsKKyAgICAgICAgLy8gVXBkYXRlIHN0eWxl
IGZvciBwc2V1ZG8gY2xhc3NlcyBzdWNoIGFzIDp2YWxpZCA6aW52YWxpZC4KKyAgICAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOworICAgIH0KK30KKwogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQogewogICAgIHZhbGlk
aXR5KCktPnNldEN1c3RvbUVycm9yTWVzc2FnZShlcnJvcik7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaAppbmRleCA3YjNjZmJkLi5jMjM5YjI4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHJlbW92ZUZyb21Gb3JtKCk7CisgICAgdm9pZCB1cGRhdGVWYWxpZGl0eSgp
OwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVtZW50KiB2aXJ0dWFsRm9ybSgp
IGNvbnN0OwpAQCAtMTI2LDkgKzEyNywxMCBAQCBwcml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVt
ZW50KiBtX2Zvcm07CiAgICAgUmVmUHRyPFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsK
LSAgICBib29sIG1fZGlzYWJsZWQ7Ci0gICAgYm9vbCBtX3JlYWRPbmx5OwotICAgIGJvb2wgbV92
YWx1ZU1hdGNoZXNSZW5kZXJlcjsKKyAgICBib29sIG1fZGlzYWJsZWQgOiAxOworICAgIGJvb2wg
bV9yZWFkT25seSA6IDE7CisgICAgYm9vbCBtX3JlcXVpcmVkIDogMTsKKyAgICBib29sIG1fdmFs
dWVNYXRjaGVzUmVuZGVyZXIgOiAxOwogfTsKIAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZSA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCAwYWVmZTdmLi4yNWRjMjhhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC0zODEsNiArMzgxLDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRJ
bnB1dFR5cGUoY29uc3QgU3RyaW5nJiB0KQogICAgICAgICB9CiAKICAgICAgICAgSW5wdXRFbGVt
ZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgICAgICB1cGRhdGVWYWxpZGl0
eSgpOwogICAgIH0KICAgICBtX2hhdmVUeXBlID0gdHJ1ZTsKIApAQCAtNjU4LDYgKzY1OSw3IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlICphdHRyKQogICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLnJlbW92ZUJ1dHRv
bih0aGlzKTsKICAgICAgICAgbV9kYXRhLnNldE5hbWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAg
IGNoZWNrZWRSYWRpb0J1dHRvbnModGhpcykuYWRkQnV0dG9uKHRoaXMpOworICAgICAgICBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
ICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29tcGxldGVBdHRyKSB7CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAib2ZmIikpIHsKICAgICAg
ICAgICAgIG1fYXV0b2NvbXBsZXRlID0gT2ZmOwpAQCAtNjc3LDEyICs2NzksMTQgQEAgdm9pZCBI
VE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0
dHIpCiAgICAgICAgIGlmIChtX2RhdGEudmFsdWUoKS5pc051bGwoKSkKICAgICAgICAgICAgIHNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNS
ZW5kZXJlcihmYWxzZSk7CisgICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gY2hlY2tlZEF0dHIpIHsKICAgICAgICAgbV9kZWZhdWx0Q2hlY2tl
ZCA9ICFhdHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKG1fdXNlRGVmYXVsdENoZWNrZWQpIHsK
ICAgICAgICAgICAgIHNldENoZWNrZWQobV9kZWZhdWx0Q2hlY2tlZCk7CiAgICAgICAgICAgICBt
X3VzZURlZmF1bHRDaGVja2VkID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1cGRhdGVWYWxp
ZGl0eSgpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1heGxlbmd0aEF0dHIpCiAg
ICAgICAgIElucHV0RWxlbWVudDo6cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUobV9kYXRhLCB0aGlz
LCB0aGlzLCBhdHRyKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpCkBA
IC03NDYsNiArNzUwLDggQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09
IG11bHRpcGxlQXR0ciB8fAogICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25B
dHRyKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IHBhdHRlcm5BdHRyKQorICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogI2lmIEVO
QUJMRShEQVRBTElTVCkKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlzdEF0dHIpCiAg
ICAgICAgIG1faGFzTm9uRW1wdHlMaXN0ID0gIWF0dHItPmlzRW1wdHkoKTsKQEAgLTExMjYsNiAr
MTEzMiw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAgICAgICAgIGNhY2hlU2VsZWN0aW9uKG1heCwgbWF4KTsKICAgICB9CiAgICAg
SW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZh
bGlkaXR5KCk7CiB9CiAKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlcigpIGNv
bnN0CkBAIC0xMTQ5LDYgKzExNTYsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVl
RnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgQVNTRVJUKGlucHV0VHlwZSgp
ICE9IEZJTEUpOwogICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAg
SW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihtX2RhdGEsIHRoaXMsIHRoaXMsIHZh
bHVlKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKQEAg
LTExNjAsNiArMTE2OCw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9t
UmVuZGVyZXIoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogCiAgICAgc2V0Rm9ybUNvbnRy
b2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZv
cm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggZjM5OGZjMi4uZDU5ODkzMSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzA2LDIwICszMDYsMjIgQEAg
dm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpyZW5kZXJlcldpbGxCZURlc3Ryb3llZCgpCiAgICAg
dXBkYXRlVmFsdWUoKTsKIH0KIAotdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVWYWx1
ZSgpIGNvbnN0Cit2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKCkKIHsKICAg
ICBpZiAoZm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQocmVuZGVyZXIoKSk7CiAgICAgbV92YWx1ZSA9IHRvUmVuZGVyVGV4dENv
bnRyb2wocmVuZGVyZXIoKSktPnRleHQoKTsKLSAgICBjb25zdF9jYXN0PEhUTUxUZXh0QXJlYUVs
ZW1lbnQqPih0aGlzKS0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVlKTsK
KyAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwogICAgIG5vdGlm
eUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogU3Ry
aW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKCkgY29uc3QKIHsKLSAgICB1cGRhdGVWYWx1
ZSgpOworICAgIC8vIHZhbHVlKCkgaXMgY2FsbGVkIGJ5IHNvbWUgY29uc3Qgb3ZlcnJpZGluZyBt
ZXRob2RzLCBhbmQgdmFsdWUoKSBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGNvbnN0LgorICAgIGNv
bnN0X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KHRoaXMpLT51cGRhdGVWYWx1ZSgpOwogICAg
IHJldHVybiBtX3ZhbHVlOwogfQogCkBAIC0zNTIsNiArMzU0LDcgQEAgdm9pZCBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogCiAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogICAgIG5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAgdXBk
YXRlVmFsaWRpdHkoKTsKIH0KIAogU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmRlZmF1bHRW
YWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBlZjk2ZmM1Li5k
ODU2N2YzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTk2LDYgKzk2LDcgQEAg
cHVibGljOgogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0
ZVZhbHVlKCk7CiAKIHByaXZhdGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0
V3JhcCwgSGFyZFdyYXAgfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmNwcAppbmRleCA4NDc4NDMyLi42YTIzNGFjIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC00NSw3ICs0NSwx
MiBAQCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6flJlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lKCkKIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2Vk
KCkKIHsKICAgICBSZW5kZXJUZXh0Q29udHJvbDo6c3VidHJlZUhhc0NoYW5nZWQoKTsKLSAgICBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obm9kZSgpKS0+c2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNS
ZW5kZXJlcihmYWxzZSk7CisgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0
aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4obm9kZSgpKTsKKyAgICB0ZXh0QXJlYS0+c2V0
Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisgICAgaWYgKHRleHRBcmVh
LT53aWxsVmFsaWRhdGUoKSkgeworICAgICAgICAvLyBOZWVkIHRvIHN5bmMgdGhlIHZhbHVlIGlu
IG9yZGVyIHRvIGFwcGx5IENTUyBzZWxlY3RvcnMgc3VjaCBhcyA6dmFsaWQgYW5kIDppbnZhbGlk
LgorICAgICAgICB0ZXh0QXJlYS0+dXBkYXRlVmFsdWUoKTsKKyAgICB9CiAKICAgICBpZiAoIW5v
ZGUoKS0+Zm9jdXNlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01Myw3ICs1OCw3IEBAIHZvaWQg
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKCkKICAgICBub2Rl
KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5wdXRFdmVudCwg
dHJ1ZSwgZmFsc2UpKTsKIAogICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFt
ZSgpKQotICAgICAgICBmcmFtZS0+dGV4dERpZENoYW5nZUluVGV4dEFyZWEoc3RhdGljX2Nhc3Q8
RWxlbWVudCo+KG5vZGUoKSkpOworICAgICAgICBmcmFtZS0+dGV4dERpZENoYW5nZUluVGV4dEFy
ZWEodGV4dEFyZWEpOwogfQogCiBib29sIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVz
dWx0LCBpbnQgeCwgaW50IHksIGludCB0eCwgaW50IHR5LCBIaXRUZXN0QWN0aW9uIGhpdFRlc3RB
Y3Rpb24pCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40439</attachid>
            <date>2009-10-01 06:42:21 -0700</date>
            <delta_ts>2009-10-01 17:42:52 -0700</delta_ts>
            <desc>Proposed patch (rev.6)</desc>
            <filename>0001-live-selectors-6.patch</filename>
            <type>text/plain</type>
            <size>22488</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSA2MzM1ZjY0ZmU0ZjBhMzI2MjI5ZmI0ZTI4Y2U5ZjIyNGQ4NWJlYzhjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDEgU2VwIDIwMDkgMTY6MzA6MDUgKzA5MDAKU3ViamVjdDogW1BBVENIXSBsaXZlLXNl
bGVjdG9ycy02CgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxNSArKysKIC4uLi9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3Rv
cnMtZXhwZWN0ZWQudHh0IHwgICAzNyArKysrKysrCiAuLi4vZmFzdC9mb3Jtcy9pbnB1dC1saXZl
LXBzZXVkby1zZWxlY3RvcnMuaHRtbCAgICB8ICAgMTQgKysrCiAuLi4vZm9ybXMvcmVzb3VyY2Vz
L2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyB8ICAxMDIgKysrKysrKysrKysrKysrKysr
KysKIC4uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzIHwg
ICAgNiArCiAuLi4vcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyAg
ICB8ICAgOTMgKysrKysrKysrKysrKysrKysrCiAuLi4vdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2Vs
ZWN0b3JzLWV4cGVjdGVkLnR4dCAgICB8ICAgMzMgKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvdGV4
dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgfCAgIDE0ICsrKwogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysrKwogV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwICAgICAgICAgICAgfCAgIDIyICsr
KystCiBXZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oICAgICAgICAgICAgICB8
ICAgIDkgKy0KIFdlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCAgICAgICAgICAgICAg
ICAgIHwgICAgOSArKwogV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwICAgICAg
ICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmNwcCAgIHwgICAgNiArLQogMTQgZmlsZXMgY2hhbmdlZCwgMzgyIGluc2VydGlvbnMo
KyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0
b3JzLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291
cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBM
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3Nz
CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4
dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQu
dHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1s
aXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiNWQ0ZTc0Li4zYjViMTQzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDktMDcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzIHRvIGNoZWNrIGlmIHZhbGlkYXRpb24tcmVsYXRlZCBDU1Mgc2VsZWN0b3JzIGFyZSBh
cHBsaWVkIGltbWVkaWF0ZWx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mjg4NjgKKworICAgICAgICAqIGZhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1
ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVk
by1zZWxlY3RvcnMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMvdGV4dGFyZWEtbGl2
ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9m
b3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbDogQWRkZWQuCisKIDIwMDkt
MTAtMDEgIEpha3ViIFdpZWN6b3JlayAgPGZhdzIxN0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBmOGMyOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0
aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGll
ZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0NoaGVjayB0aGUgaW5pdGlhbCBz
dGF0ZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSBuYW1l
OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIG5vcm1hbENvbG9yCitQQVNTIGJhY2tncm91bmRP
ZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgZGlzYWJsZWQ6CitQQVNTIGJhY2tncm91bmRP
ZihlbCkgaXMgZGlzYWJsZWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRD
b2xvcgorQ2hhbmdlIHJlYWRPbmx5OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHJlYWRPbmx5
Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0luc2lkZS9vdXRz
aWRlIG9mIGEgZm9ybToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBub3JtYWxDb2xvcgorUEFT
UyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBE
T00gYXR0cmlidXRlOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1Mg
YmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5
IGlucHV0OgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dy
b3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSByZXF1aXJlZDoKK1BBU1MgYmFja2dy
b3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxp
ZENvbG9yCitDaGFuZ2UgcGF0dGVybjoKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyB2YWxpZENv
bG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitQQVNTIGJhY2tncm91
bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9p
bnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYmQwMmViYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKQEAgLTAsMCArMSwxNCBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWwKKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvbGl2
ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2lucHV0
LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3Vy
Y2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hMmI5OWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9yZXNvdXJjZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCkBAIC0wLDAg
KzEsMTAyIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sgdGhhdCA6
dmFsaWQvOmludmFsaWQgQ1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxpZWQuIik7
CisKKy8vIFNldHVwIGZvciBzdGF0aWMgZWxlbWVudHMuCit2YXIgZm9ybSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2Zvcm0nKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZm9ybSk7Cit2
YXIgbm9uRm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChub25Gb3JtKTsKKworZnVuY3Rpb24gbWFrZUludmFsaWQoKSB7CisgICAg
dmFyIGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOworICAgIGkubmFtZSA9ICdm
b28nOworICAgIGkucmVxdWlyZWQgPSB0cnVlOworICAgIGkudmFsdWUgPSAnJzsKKyAgICBmb3Jt
LmFwcGVuZENoaWxkKGkpOworICAgIHJldHVybiBpOworfQorCitmdW5jdGlvbiBiYWNrZ3JvdW5k
T2YoZWwpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShlbCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpOworfQorCit2
YXIgZWxCYWNrZ3JvdW5kID0gJ2JhY2tncm91bmRPZihlbCknOwordmFyIGludmFsaWRDb2xvciA9
ICdyZ2IoMjU1LCAwLCAwKSc7Cit2YXIgbm9ybWFsQ29sb3IgPSAncmdiKDI1NSwgMjU1LCAyNTUp
JzsKK3ZhciBkaXNhYmxlZENvbG9yID0gJ3JnYigwLCAwLCAwKSc7Cit2YXIgcmVhZE9ubHlDb2xv
ciA9ICdyZ2IoMCwgMjU1LCAwKScKK3ZhciB2YWxpZENvbG9yID0gJ3JnYigwLCAwLCAyNTUpJzsK
KworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICB3aWxsVmFsaWRh
dGUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQordmFyIGVsID0g
bWFrZUludmFsaWQoKTsKKy8vIENvbmZpcm0gdGhpcyBlbGVtZW50IGlzIGludmFsaWQuCitkZWJ1
ZygnQ2hoZWNrIHRoZSBpbml0aWFsIHN0YXRlOicpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAn
aW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgbmFtZTonKTsKK2VsLm5hbWUgPSAnJzsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ25vcm1hbENvbG9yJyk7CitlbC5uYW1lID0gJ2Jhcic7
CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5n
ZSBkaXNhYmxlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLmRpc2FibGVkID0gdHJ1ZTsK
K3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2Rpc2FibGVkQ29sb3InKTsKK2VsLmRpc2FibGVkID0g
ZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVidWco
J0NoYW5nZSByZWFkT25seTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnJlYWRPbmx5ID0g
dHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3JlYWRPbmx5Q29sb3InKTsKK2VsLnJlYWRP
bmx5ID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKwor
ZGVidWcoJ0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybTonKTsKK2VsID0gbWFrZUludmFsaWQoKTsK
K25vbkZvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnbm9ybWFs
Q29sb3InKTsKK2Zvcm0uYXBwZW5kQ2hpbGQoZWwpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAn
aW52YWxpZENvbG9yJyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisv
LyAgICAgdmFsdWUgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
ZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUgYnkgRE9NIGF0dHJpYnV0ZTonKTsKK2VsID0gbWFrZUlu
dmFsaWQoKTsKK2VsLnZhbHVlID0gJ2FiYyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxp
ZENvbG9yJyk7CitlbC52YWx1ZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxp
ZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtleSBpbnB1dDonKTsKK2Vs
ID0gbWFrZUludmFsaWQoKTsKK2VsLmZvY3VzKCk7CitldmVudFNlbmRlci5rZXlEb3duKCdhJyk7
CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CitldmVudFNlbmRlci5rZXlE
b3duKCdkZWxldGUnLCBbXSk7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3In
KTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICBDb25zdHJh
aW50cyBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1Zygn
Q2hhbmdlIHJlcXVpcmVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwucmVxdWlyZWQgPSBm
YWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2VsLnJlcXVpcmVk
ID0gdHJ1ZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1
ZygnQ2hhbmdlIHBhdHRlcm46Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC52YWx1ZSA9ICdh
YmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwucGF0dGVybiA9
ICdhLi5jJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworZWwucGF0
dGVybiA9ICdhLmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworCisK
K3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzcyBiL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5jc3MKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1NzM2ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5j
c3MKQEAgLTAsMCArMSw2IEBACis6aW52YWxpZCB7IGJhY2tncm91bmQ6IHJnYigyNTUsIDAsIDAp
OyB9Cis6dmFsaWQgeyBiYWNrZ3JvdW5kOiByZ2IoMCwgMCwgMjU1KTsgfQorOmRpc2FibGVkIHsg
YmFja2dyb3VuZDogYmxhY2s7IH0KKzpyZWFkLW9ubHkgeyBiYWNrZ3JvdW5kOiByZ2IoMCwgMjU1
LCAwKTsgfQoraW5wdXQgeyBiYWNrZ3JvdW5kOiB3aGl0ZTsgfQordGV4dGFyZWEgeyBiYWNrZ3Jv
dW5kOiB3aGl0ZTsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJj
ZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ODgzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxl
Y3RvcnMuanMKQEAgLTAsMCArMSw5MyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBwZXJmb3Jt
cyBhIGNoZWNrIHRoYXQgOnZhbGlkLzppbnZhbGlkIENTUyBwc3VkbyBzZWxlY3RvcnMgYXJlIGxp
dmVseSBhcHBsaWVkLiIpOworCisvLyBTZXR1cCBmb3Igc3RhdGljIGVsZW1lbnRzLgordmFyIGZv
cm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdmb3JtJyk7Citkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGZvcm0pOwordmFyIG5vbkZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9uRm9ybSk7CisKK2Z1bmN0aW9uIG1ha2VJ
bnZhbGlkKCkgeworICAgIHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGV4dGFyZWEn
KTsKKyAgICBpLm5hbWUgPSAnZm9vJzsKKyAgICBpLnJlcXVpcmVkID0gdHJ1ZTsKKyAgICBpLnZh
bHVlID0gJyc7CisgICAgZm9ybS5hcHBlbmRDaGlsZChpKTsKKyAgICByZXR1cm4gaTsKK30KKwor
ZnVuY3Rpb24gYmFja2dyb3VuZE9mKGVsKSB7CisgICAgcmV0dXJuIGRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKTsKK30KKwordmFyIGVsQmFja2dyb3VuZCA9ICdiYWNrZ3JvdW5kT2YoZWwpJzsK
K3ZhciBpbnZhbGlkQ29sb3IgPSAncmdiKDI1NSwgMCwgMCknOwordmFyIG5vcm1hbENvbG9yID0g
J3JnYigyNTUsIDI1NSwgMjU1KSc7Cit2YXIgZGlzYWJsZWRDb2xvciA9ICdyZ2IoMCwgMCwgMCkn
OwordmFyIHJlYWRPbmx5Q29sb3IgPSAncmdiKDAsIDI1NSwgMCknCit2YXIgdmFsaWRDb2xvciA9
ICdyZ2IoMCwgMCwgMjU1KSc7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CisvLyAgICAgd2lsbFZhbGlkYXRlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KK3ZhciBlbCA9IG1ha2VJbnZhbGlkKCk7CisvLyBDb25maXJtIHRoaXMgZWxlbWVu
dCBpcyBpbnZhbGlkLgorZGVidWcoJ0NoaGVjayB0aGUgaW5pdGlhbCBzdGF0ZTonKTsKK3Nob3Vs
ZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIG5hbWU6
Jyk7CitlbC5uYW1lID0gJyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdub3JtYWxDb2xvcicp
OworZWwubmFtZSA9ICdiYXInOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9y
Jyk7CisKK2RlYnVnKCdDaGFuZ2UgZGlzYWJsZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7Citl
bC5kaXNhYmxlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdkaXNhYmxlZENvbG9y
Jyk7CitlbC5kaXNhYmxlZCA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxp
ZENvbG9yJyk7CisKK2RlYnVnKCdDaGFuZ2UgcmVhZE9ubHk6Jyk7CitlbCA9IG1ha2VJbnZhbGlk
KCk7CitlbC5yZWFkT25seSA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdyZWFkT25s
eUNvbG9yJyk7CitlbC5yZWFkT25seSA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAn
aW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06Jyk7Citl
bCA9IG1ha2VJbnZhbGlkKCk7Citub25Gb3JtLmFwcGVuZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgJ25vcm1hbENvbG9yJyk7Citmb3JtLmFwcGVuZENoaWxkKGVsKTsKK3Nob3Vs
ZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQorLy8gICAgIHZhbHVlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KK2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBhdHRyaWJ1
dGU6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxkQmUo
ZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZWwudmFsdWUgPSAnJzsKK3Nob3VsZEJlKGVs
QmFja2dyb3VuZCwgJ2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBi
eSBrZXkgaW5wdXQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5mb2N1cygpOworZXZlbnRT
ZW5kZXIua2V5RG93bignYScpOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicp
OworZXZlbnRTZW5kZXIua2V5RG93bignZGVsZXRlJywgW10pOworc2hvdWxkQmUoZWxCYWNrZ3Jv
dW5kLCAnaW52YWxpZENvbG9yJyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisvLyAgICAgQ29uc3RyYWludHMgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorZGVidWcoJ0NoYW5nZSByZXF1aXJlZDonKTsKK2VsID0gbWFrZUludmFsaWQo
KTsKK2VsLnJlcXVpcmVkID0gZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENv
bG9yJyk7CitlbC5yZXF1aXJlZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZh
bGlkQ29sb3InKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3Jz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1
ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5kNmUxYjAwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90
ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMg
QEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIHRoYXQgOnZhbGlkLzppbnZhbGlkIENTUyBw
c3VkbyBzZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworQ2hoZWNrIHRoZSBpbml0aWFsIHN0YXRlOgorUEFTUyBiYWNrZ3JvdW5kT2Yo
ZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIG5hbWU6CitQQVNTIGJhY2tncm91bmRPZihlbCkg
aXMgbm9ybWFsQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0No
YW5nZSBkaXNhYmxlZDoKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBkaXNhYmxlZENvbG9yCitQ
QVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgcmVhZE9ubHk6CitQ
QVNTIGJhY2tncm91bmRPZihlbCkgaXMgcmVhZE9ubHlDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2Yo
ZWwpIGlzIGludmFsaWRDb2xvcgorSW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOgorUEFTUyBiYWNr
Z3JvdW5kT2YoZWwpIGlzIG5vcm1hbENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52
YWxpZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBhdHRyaWJ1dGU6CitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFs
aWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6CitQQVNTIGJhY2tncm91bmRP
ZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xv
cgorQ2hhbmdlIHJlcXVpcmVkOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IK
K1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MzJjMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KKzxodG1sCis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0icmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0No
YW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg3YmM5YzIuLjI1NzUyZDUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzQgQEAKKzIwMDktMDktMDcgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBz
dHlsZSB3aGVuIHZhbGlkYXRpb24tcmVsYXRlZCB2YWx1ZXMgYXJlIG1vZGlmaWVkIGluIG9yZGVy
CisgICAgICAgIHRvIGFwcGx5IDp2YWxpZCwgOmludmFsaWQsIDpvcHRpb25hbCBvciA6cmVxdWly
ZWQgaW1tZWRpYXRlbHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODg2OAorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNl
dWRvLXNlbGVjdG9ycy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLWxp
dmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6
SFRNTEZvcm1Db250cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9y
bUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWYWxpZGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OnN1YnRyZWVIYXND
aGFuZ2VkKToKKwogMjAwOS0xMC0wMSAgTWFydGluIFJvYmluc29uICA8bWFydGluLmphbWVzLnJv
Ymluc29uQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggOGU2NmZlMC4uMmE0ZjU5YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNTIsNiArNTIsNyBA
QCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgICwgbV9mb3JtKGYpCiAgICAgLCBtX2Rpc2Fi
bGVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShmYWxzZSkKKyAgICAsIG1fcmVxdWlyZWQoZmFs
c2UpCiAgICAgLCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNlKQogewogICAgIGlmICghbV9m
b3JtKQpAQCAtODYsOSArODcsOSBAQCBWYWxpZGl0eVN0YXRlKiBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp2YWxpZGl0eSgpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewotICAgIGlmIChhdHRyLT5uYW1l
KCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGluZy4KLSAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09
IG5hbWVBdHRyKQorICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0cikgewogICAgICAgICBib29sIG9sZERpc2FibGVk
ID0gbV9kaXNhYmxlZDsKICAgICAgICAgbV9kaXNhYmxlZCA9ICFhdHRyLT5pc051bGwoKTsKICAg
ICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsKQEAgLTEwNCw2ICsxMDUsMTEg
QEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJl
cigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAgICAgICAgICAgcmVuZGVyZXIo
KS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJlYWRPbmx5U3RhdGUpOwogICAg
ICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gcmVxdWlyZWRBdHRyKSB7Cisg
ICAgICAgIGJvb2wgb2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOworICAgICAgICBtX3JlcXVpcmVk
ID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAob2xkUmVxdWlyZWQgIT0gbV9yZXF1aXJl
ZCkKKyAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICB9IGVsc2UKICAgICAg
ICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtMjE4LDcg
KzIyNCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0QXV0b2ZvY3VzKGJvb2wg
YikKIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1aXJlZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOworICAgIHJldHVybiBtX3JlcXVp
cmVkOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJlcXVpcmVkKGJvb2wg
YikKQEAgLTI5MSw2ICsyOTcsMTQgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVj
a1ZhbGlkaXR5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50Ojp1cGRhdGVWYWxpZGl0eSgpCit7CisgICAgaWYgKHdpbGxWYWxpZGF0ZSgpKSB7Cisg
ICAgICAgIC8vIFVwZGF0ZSBzdHlsZSBmb3IgcHNldWRvIGNsYXNzZXMgc3VjaCBhcyA6dmFsaWQg
OmludmFsaWQuCisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICB9Cit9CisKIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5n
JiBlcnJvcikKIHsKICAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3Ip
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggNDMyM2UxYi4uM2RhMjBj
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDYsOCArMTA2LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxpZGF0ZSgpIGNvbnN0OwogICAg
IGJvb2wgY2hlY2tWYWxpZGl0eSgpOworICAgIHZvaWQgdXBkYXRlVmFsaWRpdHkoKTsKICAgICB2
b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOwotCiAgICAgdmlydHVhbCBib29s
IHZhbHVlTWlzc2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIHRvb0xvbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTI3LDkgKzEyNywxMCBA
QCBwcml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgUmVmUHRyPFZh
bGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKLSAgICBib29sIG1fZGlzYWJsZWQ7Ci0gICAg
Ym9vbCBtX3JlYWRPbmx5OwotICAgIGJvb2wgbV92YWx1ZU1hdGNoZXNSZW5kZXJlcjsKKyAgICBi
b29sIG1fZGlzYWJsZWQgOiAxOworICAgIGJvb2wgbV9yZWFkT25seSA6IDE7CisgICAgYm9vbCBt
X3JlcXVpcmVkIDogMTsKKyAgICBib29sIG1fdmFsdWVNYXRjaGVzUmVuZGVyZXIgOiAxOwogfTsK
IAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSA6IHB1YmxpYyBIVE1MRm9y
bUNvbnRyb2xFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCA3Y2M1NTY1
Li45YjNlMzRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
KysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC00MTgsNiArNDE4LDcg
QEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUoY29uc3QgU3RyaW5nJiB0KQog
ICAgICAgICB9CiAKICAgICAgICAgSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2Vk
KHRoaXMpOworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAgIH0KICAgICBtX2hhdmVUeXBl
ID0gdHJ1ZTsKIApAQCAtNjk1LDYgKzY5Niw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogICAgICAgICBjaGVja2Vk
UmFkaW9CdXR0b25zKHRoaXMpLnJlbW92ZUJ1dHRvbih0aGlzKTsKICAgICAgICAgbV9kYXRhLnNl
dE5hbWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGNoZWNrZWRSYWRpb0J1dHRvbnModGhpcyku
YWRkQnV0dG9uKHRoaXMpOworICAgICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRl
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBhdXRvY29tcGxldGVBdHRyKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
dHRyLT52YWx1ZSgpLCAib2ZmIikpIHsKICAgICAgICAgICAgIG1fYXV0b2NvbXBsZXRlID0gT2Zm
OwpAQCAtNzE0LDEyICs3MTYsMTQgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIGlmIChtX2RhdGEudmFs
dWUoKS5pc051bGwoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAg
ICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihmYWxzZSk7CisgICAgICAgIHVw
ZGF0ZVZhbGlkaXR5KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gY2hlY2tlZEF0
dHIpIHsKICAgICAgICAgbV9kZWZhdWx0Q2hlY2tlZCA9ICFhdHRyLT5pc051bGwoKTsKICAgICAg
ICAgaWYgKG1fdXNlRGVmYXVsdENoZWNrZWQpIHsKICAgICAgICAgICAgIHNldENoZWNrZWQobV9k
ZWZhdWx0Q2hlY2tlZCk7CiAgICAgICAgICAgICBtX3VzZURlZmF1bHRDaGVja2VkID0gdHJ1ZTsK
ICAgICAgICAgfQorICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG1heGxlbmd0aEF0dHIpCiAgICAgICAgIElucHV0RWxlbWVudDo6cGFyc2VN
YXhMZW5ndGhBdHRyaWJ1dGUobV9kYXRhLCB0aGlzLCB0aGlzLCBhdHRyKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpCkBAIC03ODMsNiArNzg3LDggQEAgdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIp
CiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IG11bHRpcGxlQXR0ciB8fAogICAgICAgICAg
ICAgIGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyKQogICAgICAgICBzZXROZWVkc1N0eWxl
UmVjYWxjKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHBhdHRlcm5BdHRyKQorICAg
ICAgICB1cGRhdGVWYWxpZGl0eSgpOwogI2lmIEVOQUJMRShEQVRBTElTVCkKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gbGlzdEF0dHIpCiAgICAgICAgIG1faGFzTm9uRW1wdHlMaXN0ID0g
IWF0dHItPmlzRW1wdHkoKTsKQEAgLTExNjMsNiArMTE2OSw3IEBAIHZvaWQgSFRNTElucHV0RWxl
bWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAgICAgICAgIGNhY2hlU2Vs
ZWN0aW9uKG1heCwgbWF4KTsKICAgICB9CiAgICAgSW5wdXRFbGVtZW50Ojpub3RpZnlGb3JtU3Rh
dGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIFN0cmluZyBIVE1M
SW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlcigpIGNvbnN0CkBAIC0xMTg2LDYgKzExOTMsNyBAQCB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRlcmVyKGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgQVNTRVJUKGlucHV0VHlwZSgpICE9IEZJTEUpOwogICAgIHVwZGF0ZVBsYWNl
aG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21S
ZW5kZXJlcihtX2RhdGEsIHRoaXMsIHRoaXMsIHZhbHVlKTsKKyAgICB1cGRhdGVWYWxpZGl0eSgp
OwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVMaXN0RnJvbVJlbmRlcmVyKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKQEAgLTExOTcsNiArMTIwNSw3IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHBhdGhzKQogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcih0cnVl
KTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNoYW5nZWQodGhpcyk7CisgICAg
dXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdG9yZXNWYWx1
ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAKaW5kZXggNmY2MGFlMy4uM2ZmMTNkMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcApAQCAtMzU2LDYgKzM1Niw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0
VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
ICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlkaXR5KCk7
CiB9CiAKIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
Y3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmlu
ZGV4IDg0Nzg0MzIuLmE0OWUwOTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTQ1LDcgKzQ1LDkgQEAgUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZSgpCiB2b2lkIFJlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCgpCiB7CiAgICAgUmVuZGVyVGV4
dENvbnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2VkKCk7Ci0gICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUoKSktPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAg
IEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVh
RWxlbWVudCo+KG5vZGUoKSk7CisgICAgdGV4dEFyZWEtPnNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIoZmFsc2UpOworICAgIHRleHRBcmVhLT51cGRhdGVWYWxpZGl0eSgpOwogCiAg
ICAgaWYgKCFub2RlKCktPmZvY3VzZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTMsNyArNTUs
NyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCgp
CiAgICAgbm9kZSgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmlu
cHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKKyAgICAgICAgZnJhbWUtPnRleHREaWRDaGFu
Z2VJblRleHRBcmVhKHRleHRBcmVhKTsKIH0KIAogYm9vbCBSZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgaW50IHgsIGludCB5LCBpbnQgdHgsIGludCB0eSwgSGl0VGVzdEFjdGlv
biBoaXRUZXN0QWN0aW9uKQotLSAKMS42LjMuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40487</attachid>
            <date>2009-10-01 17:42:52 -0700</date>
            <delta_ts>2009-10-05 11:23:31 -0700</delta_ts>
            <desc>Proposed patch (rev.7)</desc>
            <filename>0001-live-selectors-7.patch</filename>
            <type>text/plain</type>
            <size>22677</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">RnJvbSAwY2ExMTMzNjFlMTUxMmJiZGQ1N2JjNzFlZTlmM2ZhMzY2MDIzNmRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLZW50IFRhbXVyYSA8dGtlbnRAY2hyb21pdW0ub3JnPgpEYXRl
OiBUdWUsIDEgU2VwIDIwMDkgMTY6MzA6MDUgKzA5MDAKU3ViamVjdDogW1BBVENIXSBsaXZlLXNl
bGVjdG9ycy02CgotLS0KIExheW91dFRlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAxNSArKysKIC4uLi9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3Rv
cnMtZXhwZWN0ZWQudHh0IHwgICAzNyArKysrKysrCiAuLi4vZmFzdC9mb3Jtcy9pbnB1dC1saXZl
LXBzZXVkby1zZWxlY3RvcnMuaHRtbCAgICB8ICAgMTQgKysrCiAuLi4vZm9ybXMvcmVzb3VyY2Vz
L2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyB8ICAxMDIgKysrKysrKysrKysrKysrKysr
KysKIC4uLi9mYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzIHwg
ICAgNiArCiAuLi4vcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyAg
ICB8ICAgOTMgKysrKysrKysrKysrKysrKysrCiAuLi4vdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2Vs
ZWN0b3JzLWV4cGVjdGVkLnR4dCAgICB8ICAgMzMgKysrKysrKwogLi4uL2Zhc3QvZm9ybXMvdGV4
dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgfCAgIDE0ICsrKwogV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM0ICsrKysrKysKIFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCAgICAgICAgICAgIHwgICAyMiAr
KysrLQogV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCAgICAgICAgICAgICAg
fCAgICA5ICstCiBXZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgICAgICAgICAgICAg
ICAgICB8ICAgIDkgKysKIFdlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCAgICAg
ICAgICAgICAgIHwgICAgMSArCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5jcHAgICB8ICAgIDYgKy0KIDE0IGZpbGVzIGNoYW5nZWQsIDM4NSBpbnNlcnRpb25z
KCspLCAxMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVj
dG9ycy5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNv
dXJjZXMvaW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmpzCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNz
cwogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3VyY2VzL3Rl
eHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3QvZm9ybXMvdGV4dGFyZWEt
bGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjVkNGU3NC4uM2I1YjE0MyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE4IEBACisyMDA5LTA5LTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0cyB0byBjaGVjayBpZiB2YWxpZGF0aW9uLXJlbGF0ZWQgQ1NTIHNlbGVjdG9ycyBhcmUg
YXBwbGllZCBpbW1lZGlhdGVseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTI4ODY4CisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNl
dWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZm9ybXMv
aW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvcmVzb3VyY2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qczogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmNzczog
QWRkZWQuCisgICAgICAgICogZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1
ZG8tc2VsZWN0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Zvcm1zL3RleHRhcmVhLWxp
dmUtcHNldWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Zm9ybXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDA5
LTEwLTAxICBKYWt1YiBXaWVjem9yZWsgIDxmYXcyMTdAZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9mb3Jtcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwZjhjMjkKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzNyBAQAorVGhpcyB0ZXN0IHBlcmZvcm1zIGEgY2hlY2sg
dGhhdCA6dmFsaWQvOmludmFsaWQgQ1NTIHBzdWRvIHNlbGVjdG9ycyBhcmUgbGl2ZWx5IGFwcGxp
ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitDaGhlY2sgdGhlIGluaXRpYWwg
c3RhdGU6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgbmFt
ZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBub3JtYWxDb2xvcgorUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIGRpc2FibGVkOgorUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIGRpc2FibGVkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlk
Q29sb3IKK0NoYW5nZSByZWFkT25seToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyByZWFkT25s
eUNvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitJbnNpZGUvb3V0
c2lkZSBvZiBhIGZvcm06CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgbm9ybWFsQ29sb3IKK1BB
U1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkg
RE9NIGF0dHJpYnV0ZToKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNT
IGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgdGhlIHZhbHVlIGJ5IGtl
eSBpbnB1dDoKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyB2YWxpZENvbG9yCitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitDaGFuZ2UgcmVxdWlyZWQ6CitQQVNTIGJhY2tn
cm91bmRPZihlbCkgaXMgdmFsaWRDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFs
aWRDb2xvcgorQ2hhbmdlIHBhdHRlcm46CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgdmFsaWRD
b2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorUEFTUyBiYWNrZ3Jv
dW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
aW5wdXQtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJkMDJlYmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sCkBAIC0wLDAgKzEsMTQgQEAK
KzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sCis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRl
c3Qtc3R5bGUuY3NzIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2xp
dmUtcHNldWRvLXNlbGVjdG9ycy5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9pbnB1
dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291
cmNlcy9pbnB1dC1saXZlLXBzZXVkby1zZWxlY3RvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYTJiOTllZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZm9ybXMvcmVzb3VyY2VzL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwpAQCAtMCww
ICsxLDEwMiBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBwZXJmb3JtcyBhIGNoZWNrIHRoYXQg
OnZhbGlkLzppbnZhbGlkIENTUyBwc3VkbyBzZWxlY3RvcnMgYXJlIGxpdmVseSBhcHBsaWVkLiIp
OworCisvLyBTZXR1cCBmb3Igc3RhdGljIGVsZW1lbnRzLgordmFyIGZvcm0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdmb3JtJyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZvcm0pOwor
dmFyIG5vbkZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK2RvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQobm9uRm9ybSk7CisKK2Z1bmN0aW9uIG1ha2VJbnZhbGlkKCkgeworICAg
IHZhciBpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKKyAgICBpLm5hbWUgPSAn
Zm9vJzsKKyAgICBpLnJlcXVpcmVkID0gdHJ1ZTsKKyAgICBpLnZhbHVlID0gJyc7CisgICAgZm9y
bS5hcHBlbmRDaGlsZChpKTsKKyAgICByZXR1cm4gaTsKK30KKworZnVuY3Rpb24gYmFja2dyb3Vu
ZE9mKGVsKSB7CisgICAgcmV0dXJuIGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKTsKK30KKwor
dmFyIGVsQmFja2dyb3VuZCA9ICdiYWNrZ3JvdW5kT2YoZWwpJzsKK3ZhciBpbnZhbGlkQ29sb3Ig
PSAncmdiKDI1NSwgMCwgMCknOwordmFyIG5vcm1hbENvbG9yID0gJ3JnYigyNTUsIDI1NSwgMjU1
KSc7Cit2YXIgZGlzYWJsZWRDb2xvciA9ICdyZ2IoMCwgMCwgMCknOwordmFyIHJlYWRPbmx5Q29s
b3IgPSAncmdiKDAsIDI1NSwgMCknCit2YXIgdmFsaWRDb2xvciA9ICdyZ2IoMCwgMCwgMjU1KSc7
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgd2lsbFZhbGlk
YXRlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3ZhciBlbCA9
IG1ha2VJbnZhbGlkKCk7CisvLyBDb25maXJtIHRoaXMgZWxlbWVudCBpcyBpbnZhbGlkLgorZGVi
dWcoJ0NoaGVjayB0aGUgaW5pdGlhbCBzdGF0ZTonKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwg
J2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIG5hbWU6Jyk7CitlbC5uYW1lID0gJyc7
CitzaG91bGRCZShlbEJhY2tncm91bmQsICdub3JtYWxDb2xvcicpOworZWwubmFtZSA9ICdiYXIn
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVnKCdDaGFu
Z2UgZGlzYWJsZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5kaXNhYmxlZCA9IHRydWU7
CitzaG91bGRCZShlbEJhY2tncm91bmQsICdkaXNhYmxlZENvbG9yJyk7CitlbC5kaXNhYmxlZCA9
IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisKK2RlYnVn
KCdDaGFuZ2UgcmVhZE9ubHk6Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7CitlbC5yZWFkT25seSA9
IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdyZWFkT25seUNvbG9yJyk7CitlbC5yZWFk
T25seSA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9yJyk7CisK
K2RlYnVnKCdJbnNpZGUvb3V0c2lkZSBvZiBhIGZvcm06Jyk7CitlbCA9IG1ha2VJbnZhbGlkKCk7
Citub25Gb3JtLmFwcGVuZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ25vcm1h
bENvbG9yJyk7Citmb3JtLmFwcGVuZENoaWxkKGVsKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwg
J2ludmFsaWRDb2xvcicpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
Ly8gICAgIHZhbHVlIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
K2RlYnVnKCdDaGFuZ2UgdGhlIHZhbHVlIGJ5IERPTSBhdHRyaWJ1dGU6Jyk7CitlbCA9IG1ha2VJ
bnZhbGlkKCk7CitlbC52YWx1ZSA9ICdhYmMnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFs
aWRDb2xvcicpOworZWwudmFsdWUgPSAnJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFs
aWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBrZXkgaW5wdXQ6Jyk7Citl
bCA9IG1ha2VJbnZhbGlkKCk7CitlbC5mb2N1cygpOworZXZlbnRTZW5kZXIua2V5RG93bignYScp
Oworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRDb2xvcicpOworZXZlbnRTZW5kZXIua2V5
RG93bignZGVsZXRlJywgW10pOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52YWxpZENvbG9y
Jyk7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgICAgQ29uc3Ry
YWludHMgY2hhbmdlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZGVidWco
J0NoYW5nZSByZXF1aXJlZDonKTsKK2VsID0gbWFrZUludmFsaWQoKTsKK2VsLnJlcXVpcmVkID0g
ZmFsc2U7CitzaG91bGRCZShlbEJhY2tncm91bmQsICd2YWxpZENvbG9yJyk7CitlbC5yZXF1aXJl
ZCA9IHRydWU7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVi
dWcoJ0NoYW5nZSBwYXR0ZXJuOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwudmFsdWUgPSAn
YWJjJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2VsLnBhdHRlcm4g
PSAnYS4uYyc7CitzaG91bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKK2VsLnBh
dHRlcm4gPSAnYS5jJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKKwor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZm9ybXMvcmVzb3VyY2VzL2xpdmUtcHNldWRvLXNlbGVjdG9ycy5jc3MgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNTczNmYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3Jlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMu
Y3NzCkBAIC0wLDAgKzEsNiBAQAorOmludmFsaWQgeyBiYWNrZ3JvdW5kOiByZ2IoMjU1LCAwLCAw
KTsgfQorOnZhbGlkIHsgYmFja2dyb3VuZDogcmdiKDAsIDAsIDI1NSk7IH0KKzpkaXNhYmxlZCB7
IGJhY2tncm91bmQ6IGJsYWNrOyB9Cis6cmVhZC1vbmx5IHsgYmFja2dyb3VuZDogcmdiKDAsIDI1
NSwgMCk7IH0KK2lucHV0IHsgYmFja2dyb3VuZDogd2hpdGU7IH0KK3RleHRhcmVhIHsgYmFja2dy
b3VuZDogd2hpdGU7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvcmVzb3Vy
Y2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qv
Zm9ybXMvcmVzb3VyY2VzL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDg4MzY3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9yZXNvdXJjZXMvdGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2Vs
ZWN0b3JzLmpzCkBAIC0wLDAgKzEsOTMgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgcGVyZm9y
bXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1MgcHN1ZG8gc2VsZWN0b3JzIGFyZSBs
aXZlbHkgYXBwbGllZC4iKTsKKworLy8gU2V0dXAgZm9yIHN0YXRpYyBlbGVtZW50cy4KK3ZhciBm
b3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZm9ybScpOworZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChmb3JtKTsKK3ZhciBub25Gb3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vbkZvcm0pOworCitmdW5jdGlvbiBtYWtl
SW52YWxpZCgpIHsKKyAgICB2YXIgaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVh
Jyk7CisgICAgaS5uYW1lID0gJ2Zvbyc7CisgICAgaS5yZXF1aXJlZCA9IHRydWU7CisgICAgaS52
YWx1ZSA9ICcnOworICAgIGZvcm0uYXBwZW5kQ2hpbGQoaSk7CisgICAgcmV0dXJuIGk7Cit9CisK
K2Z1bmN0aW9uIGJhY2tncm91bmRPZihlbCkgeworICAgIHJldHVybiBkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3Jv
dW5kLWNvbG9yJyk7Cit9CisKK3ZhciBlbEJhY2tncm91bmQgPSAnYmFja2dyb3VuZE9mKGVsKSc7
Cit2YXIgaW52YWxpZENvbG9yID0gJ3JnYigyNTUsIDAsIDApJzsKK3ZhciBub3JtYWxDb2xvciA9
ICdyZ2IoMjU1LCAyNTUsIDI1NSknOwordmFyIGRpc2FibGVkQ29sb3IgPSAncmdiKDAsIDAsIDAp
JzsKK3ZhciByZWFkT25seUNvbG9yID0gJ3JnYigwLCAyNTUsIDApJwordmFyIHZhbGlkQ29sb3Ig
PSAncmdiKDAsIDAsIDI1NSknOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gICAgIHdpbGxWYWxpZGF0ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCit2YXIgZWwgPSBtYWtlSW52YWxpZCgpOworLy8gQ29uZmlybSB0aGlzIGVsZW1l
bnQgaXMgaW52YWxpZC4KK2RlYnVnKCdDaGhlY2sgdGhlIGluaXRpYWwgc3RhdGU6Jyk7CitzaG91
bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5nZSBuYW1l
OicpOworZWwubmFtZSA9ICcnOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnbm9ybWFsQ29sb3In
KTsKK2VsLm5hbWUgPSAnYmFyJzsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFsaWRDb2xv
cicpOworCitkZWJ1ZygnQ2hhbmdlIGRpc2FibGVkOicpOworZWwgPSBtYWtlSW52YWxpZCgpOwor
ZWwuZGlzYWJsZWQgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnZGlzYWJsZWRDb2xv
cicpOworZWwuZGlzYWJsZWQgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ2ludmFs
aWRDb2xvcicpOworCitkZWJ1ZygnQ2hhbmdlIHJlYWRPbmx5OicpOworZWwgPSBtYWtlSW52YWxp
ZCgpOworZWwucmVhZE9ubHkgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAncmVhZE9u
bHlDb2xvcicpOworZWwucmVhZE9ubHkgPSBmYWxzZTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwg
J2ludmFsaWRDb2xvcicpOworCitkZWJ1ZygnSW5zaWRlL291dHNpZGUgb2YgYSBmb3JtOicpOwor
ZWwgPSBtYWtlSW52YWxpZCgpOworbm9uRm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91bGRCZShl
bEJhY2tncm91bmQsICdub3JtYWxDb2xvcicpOworZm9ybS5hcHBlbmRDaGlsZChlbCk7CitzaG91
bGRCZShlbEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgICB2YWx1ZSBjaGFuZ2UKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCitkZWJ1ZygnQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmli
dXRlOicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwudmFsdWUgPSAnYWJjJzsKK3Nob3VsZEJl
KGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3InKTsKK2VsLnZhbHVlID0gJyc7CitzaG91bGRCZShl
bEJhY2tncm91bmQsICdpbnZhbGlkQ29sb3InKTsKKworZGVidWcoJ0NoYW5nZSB0aGUgdmFsdWUg
Ynkga2V5IGlucHV0OicpOworZWwgPSBtYWtlSW52YWxpZCgpOworZWwuZm9jdXMoKTsKK2V2ZW50
U2VuZGVyLmtleURvd24oJ2EnKTsKK3Nob3VsZEJlKGVsQmFja2dyb3VuZCwgJ3ZhbGlkQ29sb3In
KTsKK2V2ZW50U2VuZGVyLmtleURvd24oJ2RlbGV0ZScsIFtdKTsKK3Nob3VsZEJlKGVsQmFja2dy
b3VuZCwgJ2ludmFsaWRDb2xvcicpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorLy8gICAgIENvbnN0cmFpbnRzIGNoYW5nZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KK2RlYnVnKCdDaGFuZ2UgcmVxdWlyZWQ6Jyk7CitlbCA9IG1ha2VJbnZhbGlk
KCk7CitlbC5yZXF1aXJlZCA9IGZhbHNlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAndmFsaWRD
b2xvcicpOworZWwucmVxdWlyZWQgPSB0cnVlOworc2hvdWxkQmUoZWxCYWNrZ3JvdW5kLCAnaW52
YWxpZENvbG9yJyk7CisKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9y
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNl
dWRvLXNlbGVjdG9ycy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDZlMWIwMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMv
dGV4dGFyZWEtbGl2ZS1wc2V1ZG8tc2VsZWN0b3JzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMz
IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYSBjaGVjayB0aGF0IDp2YWxpZC86aW52YWxpZCBDU1Mg
cHN1ZG8gc2VsZWN0b3JzIGFyZSBsaXZlbHkgYXBwbGllZC4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK0NoaGVjayB0aGUgaW5pdGlhbCBzdGF0ZToKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyBpbnZhbGlkQ29sb3IKK0NoYW5nZSBuYW1lOgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwp
IGlzIG5vcm1hbENvbG9yCitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitD
aGFuZ2UgZGlzYWJsZWQ6CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgZGlzYWJsZWRDb2xvcgor
UEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGludmFsaWRDb2xvcgorQ2hhbmdlIHJlYWRPbmx5Ogor
UEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIHJlYWRPbmx5Q29sb3IKK1BBU1MgYmFja2dyb3VuZE9m
KGVsKSBpcyBpbnZhbGlkQ29sb3IKK0luc2lkZS9vdXRzaWRlIG9mIGEgZm9ybToKK1BBU1MgYmFj
a2dyb3VuZE9mKGVsKSBpcyBub3JtYWxDb2xvcgorUEFTUyBiYWNrZ3JvdW5kT2YoZWwpIGlzIGlu
dmFsaWRDb2xvcgorQ2hhbmdlIHRoZSB2YWx1ZSBieSBET00gYXR0cmlidXRlOgorUEFTUyBiYWNr
Z3JvdW5kT2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZh
bGlkQ29sb3IKK0NoYW5nZSB0aGUgdmFsdWUgYnkga2V5IGlucHV0OgorUEFTUyBiYWNrZ3JvdW5k
T2YoZWwpIGlzIHZhbGlkQ29sb3IKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyBpbnZhbGlkQ29s
b3IKK0NoYW5nZSByZXF1aXJlZDoKK1BBU1MgYmFja2dyb3VuZE9mKGVsKSBpcyB2YWxpZENvbG9y
CitQQVNTIGJhY2tncm91bmRPZihlbCkgaXMgaW52YWxpZENvbG9yCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNlbGVjdG9ycy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3RvcnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTMyYzAxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3Rv
cnMuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbAorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9saXZlLXBzZXVkby1zZWxlY3RvcnMuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXh0YXJlYS1saXZlLXBzZXVkby1zZWxlY3Rv
cnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4N2JjOWMyLi45MzFlNDBhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDA5LTA5LTA3ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
c3R5bGUgaW1tZWRpYXRlbHkgd2hlbiB2YWxpZGF0aW9uLXJlbGF0ZWQgdmFsdWVzIGFyZSB1cGRh
dGVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4
NjgKKworICAgICAgICBJbiBvcmRlciB0byBhcHBseSA6dmFsaWQsIDppbnZhbGlkLCA6b3B0aW9u
YWwgb3IgOnJlcXVpcmVkIGxpdmVseSwKKyAgICAgICAgICAtIGNhbGwgc2V0TmVlZHNTdHlsZVJl
Y2FsYygpIHdoZW4gcHJvcGVydGllcyB3aGljaCBjYW4gY2hhbmdlCisgICAgICAgICAgICB3aWxs
VmFsaWRhdGUgc3RhdGUgYXJlIHVwZGF0ZWQsIGFuZAorICAgICAgICAgICAgIChQYXJlbnQgZm9y
bSBlbGVtZW50LCBuYW1lLCBkaXNhYmxlZCwgcmVhZG9ubHkpCisgICAgICAgICAgLSBjYWxsIHVw
ZGF0ZVZhbGlkaXR5KCkgd2hlbiBwcm9wZXJ0aWVzIHdoaWNoIGNhbiBjaGFuZ2UgdmFsaWRpdHkK
KyAgICAgICAgICAgIHN0YXRlIGFyZSB1cGRhdGVkLiAodmFsdWUsIHBhdHRlcm4sIHJlcXVpcmVk
KQorCisgICAgICAgIFRlc3RzOiBmYXN0L2Zvcm1zL2lucHV0LWxpdmUtcHNldWRvLXNlbGVjdG9y
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2Zvcm1zL3RleHRhcmVhLWxpdmUtcHNldWRvLXNl
bGVjdG9ycy5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6SFRNTEZvcm1Db250
cm9sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xF
bGVtZW50OjpyZXF1aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Ojp1cGRhdGVWYWxpZGl0eSk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldElucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpzZXRGaWxlTGlzdEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnNldFZhbHVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0
aUxpbmU6OnN1YnRyZWVIYXNDaGFuZ2VkKToKKwogMjAwOS0xMC0wMSAgTWFydGluIFJvYmluc29u
ICA8bWFydGluLmphbWVzLnJvYmluc29uQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXgg
OGU2NmZlMC4uMmE0ZjU5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cApAQCAtNTIsNiArNTIsNyBAQCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvYwogICAgICwgbV9mb3Jt
KGYpCiAgICAgLCBtX2Rpc2FibGVkKGZhbHNlKQogICAgICwgbV9yZWFkT25seShmYWxzZSkKKyAg
ICAsIG1fcmVxdWlyZWQoZmFsc2UpCiAgICAgLCBtX3ZhbHVlTWF0Y2hlc1JlbmRlcmVyKGZhbHNl
KQogewogICAgIGlmICghbV9mb3JtKQpAQCAtODYsOSArODcsOSBAQCBWYWxpZGl0eVN0YXRlKiBI
VE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp2YWxpZGl0eSgpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9s
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewot
ICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gbmFtZUF0dHIpIHsKLSAgICAgICAgLy8gRG8gbm90aGlu
Zy4KLSAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBkaXNhYmxlZEF0dHIpIHsKKyAgICBp
ZiAoYXR0ci0+bmFtZSgpID09IG5hbWVBdHRyKQorICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxj
KCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGRpc2FibGVkQXR0cikgewogICAgICAg
ICBib29sIG9sZERpc2FibGVkID0gbV9kaXNhYmxlZDsKICAgICAgICAgbV9kaXNhYmxlZCA9ICFh
dHRyLT5pc051bGwoKTsKICAgICAgICAgaWYgKG9sZERpc2FibGVkICE9IG1fZGlzYWJsZWQpIHsK
QEAgLTEwNCw2ICsxMDUsMTEgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXIoKSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5oYXNBcHBlYXJhbmNlKCkpCiAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIoKS0+dGhlbWUoKS0+c3RhdGVDaGFuZ2VkKHJlbmRlcmVyKCksIFJl
YWRPbmx5U3RhdGUpOwogICAgICAgICB9CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
cmVxdWlyZWRBdHRyKSB7CisgICAgICAgIGJvb2wgb2xkUmVxdWlyZWQgPSBtX3JlcXVpcmVkOwor
ICAgICAgICBtX3JlcXVpcmVkID0gIWF0dHItPmlzTnVsbCgpOworICAgICAgICBpZiAob2xkUmVx
dWlyZWQgIT0gbV9yZXF1aXJlZCkKKyAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsK
ICAgICB9IGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQpAQCAtMjE4LDcgKzIyNCw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6
c2V0QXV0b2ZvY3VzKGJvb2wgYikKIAogYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpyZXF1
aXJlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShyZXF1aXJlZEF0dHIpOwor
ICAgIHJldHVybiBtX3JlcXVpcmVkOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6
OnNldFJlcXVpcmVkKGJvb2wgYikKQEAgLTI5MSw2ICsyOTcsMTQgQEAgYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojp1cGRhdGVWYWxpZGl0eSgpCit7CisgICAgaWYgKHdp
bGxWYWxpZGF0ZSgpKSB7CisgICAgICAgIC8vIFVwZGF0ZSBzdHlsZSBmb3IgcHNldWRvIGNsYXNz
ZXMgc3VjaCBhcyA6dmFsaWQgOmludmFsaWQuCisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKKyAgICB9Cit9CisKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKICAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21F
cnJvck1lc3NhZ2UoZXJyb3IpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5k
ZXggNDMyM2UxYi4uM2RhMjBjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
CkBAIC0xMDYsOCArMTA2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxp
ZGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpOworICAgIHZvaWQgdXBkYXRl
VmFsaWRpdHkoKTsKICAgICB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOwot
CiAgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpA
QCAtMTI3LDkgKzEyNywxMCBAQCBwcml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zv
cm07CiAgICAgUmVmUHRyPFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKLSAgICBib29s
IG1fZGlzYWJsZWQ7Ci0gICAgYm9vbCBtX3JlYWRPbmx5OwotICAgIGJvb2wgbV92YWx1ZU1hdGNo
ZXNSZW5kZXJlcjsKKyAgICBib29sIG1fZGlzYWJsZWQgOiAxOworICAgIGJvb2wgbV9yZWFkT25s
eSA6IDE7CisgICAgYm9vbCBtX3JlcXVpcmVkIDogMTsKKyAgICBib29sIG1fdmFsdWVNYXRjaGVz
UmVuZGVyZXIgOiAxOwogfTsKIAogY2xhc3MgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZSA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA3Y2M1NTY1Li45YjNlMzRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC00MTgsNiArNDE4LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRJbnB1dFR5cGUo
Y29uc3QgU3RyaW5nJiB0KQogICAgICAgICB9CiAKICAgICAgICAgSW5wdXRFbGVtZW50Ojpub3Rp
ZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogICAg
IH0KICAgICBtX2hhdmVUeXBlID0gdHJ1ZTsKIApAQCAtNjk1LDYgKzY5Niw3IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRy
KQogICAgICAgICBjaGVja2VkUmFkaW9CdXR0b25zKHRoaXMpLnJlbW92ZUJ1dHRvbih0aGlzKTsK
ICAgICAgICAgbV9kYXRhLnNldE5hbWUoYXR0ci0+dmFsdWUoKSk7CiAgICAgICAgIGNoZWNrZWRS
YWRpb0J1dHRvbnModGhpcykuYWRkQnV0dG9uKHRoaXMpOworICAgICAgICBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKICAgICB9IGVs
c2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhdXRvY29tcGxldGVBdHRyKSB7CiAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhdHRyLT52YWx1ZSgpLCAib2ZmIikpIHsKICAgICAgICAgICAgIG1f
YXV0b2NvbXBsZXRlID0gT2ZmOwpAQCAtNzE0LDEyICs3MTYsMTQgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAg
ICAgIGlmIChtX2RhdGEudmFsdWUoKS5pc051bGwoKSkKICAgICAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1hdGNoZXNSZW5kZXJlcihm
YWxzZSk7CisgICAgICAgIHVwZGF0ZVZhbGlkaXR5KCk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gY2hlY2tlZEF0dHIpIHsKICAgICAgICAgbV9kZWZhdWx0Q2hlY2tlZCA9ICFhdHRy
LT5pc051bGwoKTsKICAgICAgICAgaWYgKG1fdXNlRGVmYXVsdENoZWNrZWQpIHsKICAgICAgICAg
ICAgIHNldENoZWNrZWQobV9kZWZhdWx0Q2hlY2tlZCk7CiAgICAgICAgICAgICBtX3VzZURlZmF1
bHRDaGVja2VkID0gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwog
ICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG1heGxlbmd0aEF0dHIpCiAgICAgICAgIElu
cHV0RWxlbWVudDo6cGFyc2VNYXhMZW5ndGhBdHRyaWJ1dGUobV9kYXRhLCB0aGlzLCB0aGlzLCBh
dHRyKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2l6ZUF0dHIpCkBAIC03ODMsNiAr
Nzg3LDggQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgICAgICAgYXR0ci0+bmFtZSgpID09IG11bHRpcGxl
QXR0ciB8fAogICAgICAgICAgICAgIGF0dHItPm5hbWUoKSA9PSBwcmVjaXNpb25BdHRyKQogICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHBhdHRlcm5BdHRyKQorICAgICAgICB1cGRhdGVWYWxpZGl0eSgpOwogI2lmIEVOQUJMRShEQVRB
TElTVCkKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gbGlzdEF0dHIpCiAgICAgICAgIG1f
aGFzTm9uRW1wdHlMaXN0ID0gIWF0dHItPmlzRW1wdHkoKTsKQEAgLTExNjMsNiArMTE2OSw3IEBA
IHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAg
ICAgICAgICAgIGNhY2hlU2VsZWN0aW9uKG1heCwgbWF4KTsKICAgICB9CiAgICAgSW5wdXRFbGVt
ZW50Ojpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAgIHVwZGF0ZVZhbGlkaXR5KCk7
CiB9CiAKIFN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpwbGFjZWhvbGRlcigpIGNvbnN0CkBAIC0x
MTg2LDYgKzExOTMsNyBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFZhbHVlRnJvbVJlbmRl
cmVyKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgQVNTRVJUKGlucHV0VHlwZSgpICE9IEZJTEUp
OwogICAgIHVwZGF0ZVBsYWNlaG9sZGVyVmlzaWJpbGl0eShmYWxzZSk7CiAgICAgSW5wdXRFbGVt
ZW50OjpzZXRWYWx1ZUZyb21SZW5kZXJlcihtX2RhdGEsIHRoaXMsIHRoaXMsIHZhbHVlKTsKKyAg
ICB1cGRhdGVWYWxpZGl0eSgpOwogfQogCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldEZpbGVM
aXN0RnJvbVJlbmRlcmVyKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXRocykKQEAgLTExOTcsNiAr
MTIwNSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RmlsZUxpc3RGcm9tUmVuZGVyZXIo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHBhdGhzKQogCiAgICAgc2V0Rm9ybUNvbnRyb2xWYWx1ZU1h
dGNoZXNSZW5kZXJlcih0cnVlKTsKICAgICBJbnB1dEVsZW1lbnQ6Om5vdGlmeUZvcm1TdGF0ZUNo
YW5nZWQodGhpcyk7CisgICAgdXBkYXRlVmFsaWRpdHkoKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNmY2MGFlMy4uM2ZmMTNkMiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzU2LDYgKzM1Niw3IEBAIHZvaWQgSFRNTFRl
eHRBcmVhRWxlbWVudDo6c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIAogICAgIHNldE5l
ZWRzU3R5bGVSZWNhbGMoKTsKICAgICBub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKHRoaXMpOworICAg
IHVwZGF0ZVZhbGlkaXR5KCk7CiB9CiAKIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZh
dWx0VmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwCmluZGV4IDg0Nzg0MzIuLmE0OWUwOTIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTQ1LDcgKzQ1LDkg
QEAgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6On5SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZSgpCiB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpzdWJ0cmVlSGFzQ2hhbmdlZCgp
CiB7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OnN1YnRyZWVIYXNDaGFuZ2VkKCk7Ci0gICAgc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUoKSktPnNldEZvcm1Db250cm9sVmFsdWVNYXRjaGVzUmVu
ZGVyZXIoZmFsc2UpOworICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KG5vZGUoKSk7CisgICAgdGV4dEFyZWEtPnNldEZv
cm1Db250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIoZmFsc2UpOworICAgIHRleHRBcmVhLT51cGRh
dGVWYWxpZGl0eSgpOwogCiAgICAgaWYgKCFub2RlKCktPmZvY3VzZWQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtNTMsNyArNTUsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpz
dWJ0cmVlSGFzQ2hhbmdlZCgpCiAgICAgbm9kZSgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmlucHV0RXZlbnQsIHRydWUsIGZhbHNlKSk7CiAKICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgZnJhbWUtPnRleHREaWRD
aGFuZ2VJblRleHRBcmVhKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKCkpKTsKKyAgICAgICAg
ZnJhbWUtPnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRleHRBcmVhKTsKIH0KIAogYm9vbCBSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgaW50IHgsIGludCB5LCBpbnQgdHgsIGlu
dCB0eSwgSGl0VGVzdEFjdGlvbiBoaXRUZXN0QWN0aW9uKQotLSAKMS42LjMuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>