<?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>74448</bug_id>
          
          <creation_ts>2011-12-13 14:18:23 -0800</creation_ts>
          <short_desc>Broaden support for mutation observation of attributes</short_desc>
          <delta_ts>2011-12-14 13:14:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>darin</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520367</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 14:18:23 -0800</bug_when>
    <thetext>Broaden support for mutation observation of attributes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520374</commentid>
    <comment_count>1</comment_count>
      <attachid>119085</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 14:26:06 -0800</bug_when>
    <thetext>Created attachment 119085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520381</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-13 14:35:55 -0800</bug_when>
    <thetext>Note to reviewer(s): the name &quot;enqueueAttributesMutationRecordIfRequested&quot; is rather...unfortunate.  One possible fix is to rename it Element::willMutateAttribute, let me know if you&apos;d refer that more general naming scheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520779</commentid>
    <comment_count>3</comment_count>
      <attachid>119085</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 01:36:36 -0800</bug_when>
    <thetext>Comment on attachment 119085
Patch

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

&gt; Source/WebCore/ChangeLog:25
&gt; +        (WebCore::Attr::setValue): Enqueue a mutation record when Attr.value is set from JS.
&gt; +        (WebCore::Attr::childrenChanged): Enqueue a mutation record when an Attr&apos;s value changes to due additions/removals of Text children.
&gt; +        * dom/Element.cpp:
&gt; +        (WebCore::Element::enqueueAttributesMutationRecordIfRequested): Previously a static, expose as part of Element&apos;s interface to allow it to be re-used by NamedNodeMap and Attr.
&gt; +        (WebCore::Element::removeAttribute): Remove enqueue call now handled by NamedNodeMap.
&gt; +        (WebCore::Element::setAttributeInternal): Fixup call of enqueueAttributesMutationRecordIfRequested.
&gt; +        * dom/Element.h:
&gt; +        * dom/NamedNodeMap.cpp:
&gt; +        (WebCore::NamedNodeMap::setNamedItem): Enqueue a mutation record when an attribute is changed via Element.attributes.setNamedItem from JS.
&gt; +        (WebCore::NamedNodeMap::removeNamedItem): Enqueue a mutation record when an attribute is removed, either via Element.attributes.removeNamedItem or Element.removeAttribute.

Please line-break as needed. These lines are extremely long. Doesn&apos;t even fit on my high-resolution 15&quot; screen :(

&gt; LayoutTests/fast/mutation/observe-attributes.html:-9
&gt; -&lt;html&gt;
&gt; -&lt;head&gt;
&gt; -&lt;meta charset=&quot;utf-8&quot;&gt;
&gt;  &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
&gt; -&lt;/head&gt;
&gt; -&lt;body&gt;
&gt; -&lt;p id=description&gt;&lt;/p&gt;
&gt; -&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

Why are we removing these nodes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520985</commentid>
    <comment_count>4</comment_count>
      <attachid>119085</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-12-14 09:18:09 -0800</bug_when>
    <thetext>Comment on attachment 119085
Patch

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

&gt;&gt; LayoutTests/fast/mutation/observe-attributes.html:-9
&gt;&gt; -&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; Why are we removing these nodes?

I&apos;ve asked Rafael to remove these in other reviews. They don&apos;t affect the test in anyways, so they just add more noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521108</commentid>
    <comment_count>5</comment_count>
      <attachid>119085</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-14 11:14:30 -0800</bug_when>
    <thetext>Comment on attachment 119085
Patch

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

&gt;&gt;&gt; LayoutTests/fast/mutation/observe-attributes.html:-9
&gt;&gt;&gt; -&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt;&gt; 
&gt;&gt; Why are we removing these nodes?
&gt; 
&gt; I&apos;ve asked Rafael to remove these in other reviews. They don&apos;t affect the test in anyways, so they just add more noise.

But they&apos;re auto-generated by the script, right? Also, not having body isn&apos;t desirable at times although it works in this test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521155</commentid>
    <comment_count>6</comment_count>
      <attachid>119085</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-14 11:50:36 -0800</bug_when>
    <thetext>Comment on attachment 119085
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        (WebCore::NamedNodeMap::removeNamedItem): Enqueue a mutation record when an attribute is removed, either via Element.attributes.removeNamedItem or Element.removeAttribute.
&gt; 
&gt; Please line-break as needed. These lines are extremely long. Doesn&apos;t even fit on my high-resolution 15&quot; screen :(

Will break on submit. I feel like I heard at some point that breaking these lines screwed up trac&apos;s formatting, but I must be misremembering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521176</commentid>
    <comment_count>7</comment_count>
      <attachid>119275</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2011-12-14 12:23:51 -0800</bug_when>
    <thetext>Created attachment 119275
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521229</commentid>
    <comment_count>8</comment_count>
      <attachid>119275</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 13:14:33 -0800</bug_when>
    <thetext>Comment on attachment 119275
Patch for landing

Clearing flags on attachment: 119275

Committed r102814: &lt;http://trac.webkit.org/changeset/102814&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521230</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-14 13:14:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119085</attachid>
            <date>2011-12-13 14:26:06 -0800</date>
            <delta_ts>2011-12-14 12:23:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74448-20111213142605.patch</filename>
            <type>text/plain</type>
            <size>20727</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkyYWVkZGM3ZTkwZGJh
ZjQxODY2OThlMTIxYWYyMGMzOGJiMjQ0MS4uYWYyYjE5Nzg1MDE5MDk5YmVlNjYzOTY3OTU0N2Vm
ZDk4M2RkMzQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDExLTEyLTEzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIEJyb2FkZW4gc3VwcG9ydCBm
b3IgbXV0YXRpb24gb2JzZXJ2YXRpb24gb2YgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgcHJldmlvdXNseS1sYW5kZWQgTXV0YXRp
b25PYnNlcnZlciBzdXBwb3J0IGZvciBhdHRyaWJ1dGVzIHdhcyBpbmNvbXBsZXRlOgorICAgICAg
ICBpdCBkaWRuJ3Qgc3VwcG9ydCBtdXRhdGlvbnMgcmVsYXRlZCB0byBBdHRyIG5vZGVzIChtZXRo
b2RzIG9uIEF0dHJzLAorICAgICAgICBzZXRBdHRyaWJ1dGVOb2RlL3JlbW92ZUF0dHJpYnV0ZU5v
ZGUgb24gRWxlbWVudCwgb3IgbWV0aG9kcyBvbiBOYW1lZE5vZGVNYXApLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWRkcyBmdWxsIHN1cHBvcnQgb2YgbXV0YXRpb24gb2JzZXJ2YXRpb24gZm9yIGFs
bCB0aGVzZSBjYXNlcywgYW5kIGFkZHMKKyAgICAgICAgdGVzdCBjYXNlcyBmb3IgYWxsIHRoZXNl
IHNpdHVhdGlvbnMuCisKKyAgICAgICAgKiBkb20vQXR0ci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdHRyOjpzZXRWYWx1ZSk6IEVucXVldWUgYSBtdXRhdGlvbiByZWNvcmQgd2hlbiBBdHRyLnZh
bHVlIGlzIHNldCBmcm9tIEpTLgorICAgICAgICAoV2ViQ29yZTo6QXR0cjo6Y2hpbGRyZW5DaGFu
Z2VkKTogRW5xdWV1ZSBhIG11dGF0aW9uIHJlY29yZCB3aGVuIGFuIEF0dHIncyB2YWx1ZSBjaGFu
Z2VzIHRvIGR1ZSBhZGRpdGlvbnMvcmVtb3ZhbHMgb2YgVGV4dCBjaGlsZHJlbi4KKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnF1ZXVlQXR0
cmlidXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0ZWQpOiBQcmV2aW91c2x5IGEgc3RhdGljLCBl
eHBvc2UgYXMgcGFydCBvZiBFbGVtZW50J3MgaW50ZXJmYWNlIHRvIGFsbG93IGl0IHRvIGJlIHJl
LXVzZWQgYnkgTmFtZWROb2RlTWFwIGFuZCBBdHRyLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVtb3ZlQXR0cmlidXRlKTogUmVtb3ZlIGVucXVldWUgY2FsbCBub3cgaGFuZGxlZCBieSBO
YW1lZE5vZGVNYXAuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRyaWJ1dGVJbnRl
cm5hbCk6IEZpeHVwIGNhbGwgb2YgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElmUmVx
dWVzdGVkLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05hbWVkTm9k
ZU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbSk6
IEVucXVldWUgYSBtdXRhdGlvbiByZWNvcmQgd2hlbiBhbiBhdHRyaWJ1dGUgaXMgY2hhbmdlZCB2
aWEgRWxlbWVudC5hdHRyaWJ1dGVzLnNldE5hbWVkSXRlbSBmcm9tIEpTLgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZWROb2RlTWFwOjpyZW1vdmVOYW1lZEl0ZW0pOiBFbnF1ZXVlIGEgbXV0YXRpb24g
cmVjb3JkIHdoZW4gYW4gYXR0cmlidXRlIGlzIHJlbW92ZWQsIGVpdGhlciB2aWEgRWxlbWVudC5h
dHRyaWJ1dGVzLnJlbW92ZU5hbWVkSXRlbSBvciBFbGVtZW50LnJlbW92ZUF0dHJpYnV0ZS4KKwor
MjAxMS0xMi0xMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKwogICAgICAgICBV
cGRhdGUgdmFyaWFibGUgbmFtZXMgaW4gTmFtZWROb2RlTWFwIG1ldGhvZHMgdG8gbWF0Y2ggV2Vi
S2l0IHN0eWxlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQzNwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggYWU5OGZlMzUyY2RiYzJhZGQyNzQ5NjUwMWNi
NGY5NDNkMzkxZjE3NC4uZGI2OWViMzQ2NzAyNTRiZDE5YTM3MWU3MDJlOTllZjRiMDQ2NjlmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9BdHRyLmNwcApAQCAtMTMwLDYgKzEzMCwxMSBAQCB2b2lkIEF0dHI6OnNldFZhbHVl
KGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIHZvaWQgQXR0cjo6c2V0VmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCiB7CisjaWYgRU5BQkxFKE1VVEFU
SU9OX09CU0VSVkVSUykKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2VsZW1lbnQtPmVu
cXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChtX2F0dHJpYnV0ZS0+bmFt
ZSgpLCBtX2F0dHJpYnV0ZS0+dmFsdWUoKSk7CisjZW5kaWYKKwogICAgIGlmIChtX2VsZW1lbnQg
JiYgbV9lbGVtZW50LT5pc0lkQXR0cmlidXRlTmFtZShtX2F0dHJpYnV0ZS0+bmFtZSgpKSkKICAg
ICAgICAgbV9lbGVtZW50LT51cGRhdGVJZChtX2VsZW1lbnQtPmdldElkQXR0cmlidXRlKCksIHZh
bHVlKTsKIApAQCAtMTY3LDcgKzE3MiwxMiBAQCB2b2lkIEF0dHI6OmNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlcgogewog
ICAgIGlmIChtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCA+IDApCiAgICAgICAgIHJldHVybjsKLSAK
KworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgaWYgKG1fZWxlbWVudCkKKyAg
ICAgICAgbV9lbGVtZW50LT5lbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkSWZSZXF1ZXN0
ZWQobV9hdHRyaWJ1dGUtPm5hbWUoKSwgbV9hdHRyaWJ1dGUtPnZhbHVlKCkpOworI2VuZGlmCisK
ICAgICBOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2Us
IGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0
c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
NWRkZjU4OTcxMDQzOTNjODUxNWQyNGY0OTk0YTY3N2VhNDc2YmVhMi4uNjk3NzkxNTRmOTZiYjhm
ZWMzY2QzNTg1NGQ5MDFlNDc1ZWU0NDc5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTgx
LDEwICsxODEsMTQgQEAgdm9pZCBFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllcyhj
b25zdCBFbGVtZW50KikKIH0KIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi1zdGF0
aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKEVsZW1lbnQqIHRhcmdldCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBv
bGRWYWx1ZSkKK3ZvaWQgRWxlbWVudDo6ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElm
UmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21p
Y1N0cmluZyYgb2xkVmFsdWUpCiB7Ci0gICAgT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVz
dEdyb3VwPiBtdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91
cDo6Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHRhcmdldCwgYXR0cmlidXRlTmFtZSk7Ci0g
ICAgbXV0YXRpb25SZWNpcGllbnRzLT5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoTXV0YXRpb25SZWNv
cmQ6OmNyZWF0ZUF0dHJpYnV0ZXModGFyZ2V0LCBhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSkpOwor
ICAgIGlmIChpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQorICAgICAgICByZXR1cm47
CisgICAgT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3VwPiBtdXRhdGlvblJlY2lw
aWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6Y3JlYXRlRm9yQXR0cmlidXRl
c011dGF0aW9uKHRoaXMsIGF0dHJpYnV0ZU5hbWUpOworICAgIGlmIChtdXRhdGlvblJlY2lwaWVu
dHMtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG11dGF0aW9uUmVjaXBpZW50cy0+
ZW5xdWV1ZU11dGF0aW9uUmVjb3JkKE11dGF0aW9uUmVjb3JkOjpjcmVhdGVBdHRyaWJ1dGVzKHRo
aXMsIGF0dHJpYnV0ZU5hbWUsIG9sZFZhbHVlKSk7CiB9CiAjZW5kaWYKIApAQCAtMTk1LDEwICsx
OTksNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2Rl
ID0gbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZU5hbWVkSXRlbShuYW1lLCBlYyk7CiAgICAgICAgIGlm
IChlYyA9PSBOT1RfRk9VTkRfRVJSKQogICAgICAgICAgICAgZWMgPSAwOwotI2lmIEVOQUJMRShN
VVRBVElPTl9PQlNFUlZFUlMpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVucXVldWVBdHRy
aWJ1dGVzTXV0YXRpb25SZWNvcmQodGhpcywgbmFtZSwgYXR0ck5vZGUtPm5vZGVWYWx1ZSgpKTsK
LSNlbmRpZgogICAgIH0KIH0KIApAQCAtNjU2LDE0ICs2NTYsMTIgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRBdHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY28KICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9N
QXR0cihkb2N1bWVudCgpLCB0aGlzKTsKICNlbmRpZgogCi0gICAgZG9jdW1lbnQoKS0+aW5jRE9N
VHJlZVZlcnNpb24oKTsKLQogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCi0gICAgLy8g
VGhlIGNhbGwgdG8gYXR0cmlidXRlQ2hhbmdlZCBiZWxvdyBtYXkgZGlzcGF0Y2ggRE9NU3VidHJl
ZU1vZGlmaWVkLCBzbyBpdCdzIGltcG9ydGFudCB0byBlbnF1ZXVlIGEgTXV0YXRpb25SZWNvcmQg
bm93LgotICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKLSAgICAgICAg
ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZCh0aGlzLCBuYW1lLCBvbGQgPyBvbGQtPnZh
bHVlKCkgOiBudWxsQXRvbSk7CisgICAgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElm
UmVxdWVzdGVkKG5hbWUsIG9sZCA/IG9sZC0+dmFsdWUoKSA6IG51bGxBdG9tKTsKICNlbmRpZgog
CisgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsKKwogICAgIGlmIChpc0lkQXR0
cmlidXRlTmFtZShuYW1lKSkKICAgICAgICAgdXBkYXRlSWQob2xkID8gb2xkLT52YWx1ZSgpIDog
bnVsbEF0b20sIHZhbHVlKTsKIApAQCAtNjc2LDYgKzY3NCw3IEBAIHZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlSW50ZXJuYWwoQXR0cmlidXRlKiBvbGQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvCiAgICAgICAgICAgICBhdHRyTm9kZS0+c2V0VmFsdWUodmFsdWUpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBvbGQtPnNldFZhbHVlKHZhbHVlKTsKKwogICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkKG9sZCk7CiAgICAgfQogCkBAIC0xNTIzLDEwICsxNTIyLDYgQEAgdm9pZCBFbGVt
ZW50OjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgUmVmUHRyPE5vZGU+IGF0dHJOb2RlID0gbV9hdHRyaWJ1dGVNYXAtPnJlbW92
ZU5hbWVkSXRlbShsb2NhbE5hbWUsIGVjKTsKICAgICAgICAgaWYgKGVjID09IE5PVF9GT1VORF9F
UlIpCiAgICAgICAgICAgICBlYyA9IDA7Ci0jaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29y
ZCh0aGlzLCBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWUsIG51bGxBdG9tKSwgYXR0
ck5vZGUtPm5vZGVWYWx1ZSgpKTsKLSNlbmRpZgogICAgIH0KICAgICAKICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcywgbmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCA3YTcyODYzMzE4MTEzNDE0MGE5MTlkZDU1MmM0NmY4ZTc2
OGI2ODczLi4xZDE3MjhiZmIxMDljYjhlZDQ5ODQzOGFiZWRlZmU4OTEzNjEwNzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKQEAgLTM2NCw2ICszNjQsMTAgQEAgcHVibGljOgogICAgIAogICAgIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yUmVuZGVyZXIoKTsKIAorI2lmIEVOQUJMRShNVVRB
VElPTl9PQlNFUlZFUlMpCisgICAgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3Jk
SWZSZXF1ZXN0ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xk
VmFsdWUpOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBl
KQogICAgICAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTmFtZWROb2RlTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lZE5vZGVNYXAuY3BwCmluZGV4IGRjNTM1MDE0Y2ZjMTE3ZTk2NmI2MTdhNmFkYTA5Njc3MTQ1
YTYxNWUuLjk2MDQxMGQzOWY0OTM3MjkzNTU1MWM1MGIwNDNiNjhhZWUwNWY5OTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwCkBAIC0xMTksNiArMTE5LDEwIEBAIFBhc3NSZWZQdHI8
Tm9kZT4gTmFtZWROb2RlTWFwOjpzZXROYW1lZEl0ZW0oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCisgICAgbV9lbGVtZW50LT5lbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3Jk
SWZSZXF1ZXN0ZWQoYXR0cmlidXRlLT5uYW1lKCksIG9sZEF0dHJpYnV0ZSA/IG9sZEF0dHJpYnV0
ZS0+dmFsdWUoKSA6IG51bGxBdG9tKTsKKyNlbmRpZgorCiAgICAgaWYgKGF0dHItPmlzSWQoKSkK
ICAgICAgICAgbV9lbGVtZW50LT51cGRhdGVJZChvbGRBdHRyaWJ1dGUgPyBvbGRBdHRyaWJ1dGUt
PnZhbHVlKCkgOiBudWxsQXRvbSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKIApAQCAtMTQ5LDYgKzE1
MywxMSBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJdGVtKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEV4Y2VwdAogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKKyNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQorICAgIGlmIChtX2VsZW1lbnQpCisg
ICAgICAgIG1fZWxlbWVudC0+ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElmUmVxdWVz
dGVkKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworI2VuZGlmCisKICAg
ICBSZWZQdHI8QXR0cj4gYXR0ciA9IGF0dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxl
bWVudCk7CiAKICAgICBpZiAoYXR0ci0+aXNJZCgpKQpAQCAtMjQyLDcgKzI1MSw3IEBAIHZvaWQg
TmFtZWROb2RlTWFwOjpzZXRBdHRyaWJ1dGVzKGNvbnN0IE5hbWVkTm9kZU1hcCYgb3RoZXIpCiB2
b2lkIE5hbWVkTm9kZU1hcDo6YWRkQXR0cmlidXRlKFBhc3NSZWZQdHI8QXR0cmlidXRlPiBwcnBB
dHRyaWJ1dGUpCiB7CiAgICAgUmVmUHRyPEF0dHJpYnV0ZT4gYXR0cmlidXRlID0gcHJwQXR0cmli
dXRlOwotICAgIAorCiAgICAgLy8gQWRkIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGxpc3QKICAgICBt
X2F0dHJpYnV0ZXMuYXBwZW5kKGF0dHJpYnV0ZSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3NzcwZjhmMDQwMmQxYjYy
MGUxNDZjNGZkODM4YjU5ODU4YjViNjM4Li42NjRiMjdiMDZkZGY3YWRhMTk2N2MzODU4NzJjODk2
NGQ2ZDZmMWZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMTMgIEFkYW0gS2xlaW4g
IDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQnJvYWRlbiBzdXBwb3J0IGZvciBtdXRh
dGlvbiBvYnNlcnZhdGlvbiBvZiBhdHRyaWJ1dGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBjb3ZlcmluZyBhdHRyaWJ1dGUgbXV0YXRp
b24gdmlhIEF0dHIgbm9kZXMuCisKKyAgICAgICAgKiBmYXN0L211dGF0aW9uL29ic2VydmUtYXR0
cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0
dHJpYnV0ZXMuaHRtbDoKKwogMjAxMS0xMi0xMyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrIGl0ZW0gdmlldyBk
b2VzIG5vdCBjb3JyZWN0bHkgZGVjb2RlICIrIiBpbiByZXF1ZXN0IHBhcmFtZXRlcnMuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQKaW5kZXggN2ZmZmM1ZjM1NDVlMGRmNTY3YTRjOGQ1YmMzMzFmZDk2MTllNmU4
YS4uODNlYjdiYWUyZDMyMGE4MjNkYmY1MGZiMzIxZThmNGU0MGE3ZDFhMyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dApAQCAtOTAsMTMgKzkwLDE2IEBAIFBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUgaXMgImZvbyIKIFBBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJiYXIiCiAKIFRlc3Rp
bmcgc2V0dGluZyBhbiBhdHRyaWJ1dGUgdmlhIHJlZmxlY3RlZCBJREwgYXR0cmlidXRlLgotUEFT
UyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAzCiBQQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgogUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZSBpcyAiaWQiCiBQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyBudWxsCiBQ
QVNTIG11dGF0aW9uc1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgogUEFTUyBtdXRhdGlvbnNbMV0u
YXR0cmlidXRlTmFtZSBpcyAiaWQiCiBQQVNTIG11dGF0aW9uc1sxXS5vbGRWYWx1ZSBpcyAiZm9v
IgorUEFTUyBtdXRhdGlvbnNbMl0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25z
WzJdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgorUEFTUyBtdXRhdGlvbnNbMl0ub2xkVmFsdWUgaXMg
ImJhciIKIAogVGVzdGluZyB0aGF0IGF0dHJpYnV0ZUZpbHRlciB3b3JrcyBhcyBleHBlY3RlZCBh
bmQgaWdub3JlcyBjYXNlIHdpdGggSFRNTCBlbGVtZW50cy4KIC4uLm9ubHkgZm9vLCBiYXIgJiBi
b29tIHNob3VsZCBiZSByZWNlaXZlZC4KQEAgLTE4OSw2ICsxOTIsNTMgQEAgUEFTUyBtdXRhdGlv
bnMgaXMgbnVsbAogVGVzdGluZyB0aGF0IGEgbm8tb3Agc3R5bGUgcHJvcGVydHkgbXV0YXRpb24g
ZG9lcyBub3QgY3JlYXRlIE11dGF0aW9uIFJlY29yZHMuCiBQQVNTIG11dGF0aW9ucyBpcyBudWxs
CiAKK1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhbiBhdHRyIG5vZGUg
ZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BB
U1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRl
c3QiCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgorCitUZXN0IHRoYXQgbXV0
YXRpbmcgYW4gYXR0cmlidXRlIGJ5IGF0dGFjaGluZyBhIGNoaWxkIHRvIGFuIGF0dHIgbm9kZSBk
ZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCitQQVNTIG11dGF0aW9ucy5sZW5ndGggaXMgMQorUEFT
UyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAi
YXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVz
dCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCisKK1Rlc3QgdGhhdCBtdXRh
dGluZyB2aWEgc2V0QXR0cmlidXRlTm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzCitQQVNT
IG11dGF0aW9ucy5sZW5ndGggaXMgMworUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgor
UEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBd
LmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVl
IGlzICJmb28iCitQQVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9u
c1sxXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFt
ZSBpcyAiZGF0YS1vdGhlciIKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlzIG51bGwKK1BB
U1MgbXV0YXRpb25zWzJdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMg
ImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BB
U1MgbXV0YXRpb25zWzJdLm9sZFZhbHVlIGlzICJteUlkIgorCitUZXN0IHRoYXQgc2V0QXR0cmli
dXRlIG9uIGFuIGF0dHJpYnV0ZSB3aXRoIGFuIGV4aXN0aW5nIEF0dHIgZGVsaXZlcnMgbXV0YXRp
b24gcmVjb3JkcworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBd
LnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQ
QVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCitQQVNTIG11dGF0
aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgorCitUZXN0IHRoYXQgc2V0TmFtZWRJdGVtIGFuZCBy
ZW1vdmVOYW1lZEl0ZW0gZGVsaXZlciBtdXRhdGlvbiByZWNvcmRzCitQQVNTIG11dGF0aW9ucy5s
ZW5ndGggaXMgMgorUEFTUyBtdXRhdGlvbnNbMF0udGFyZ2V0IGlzIGRpdgorUEFTUyBtdXRhdGlv
bnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5h
bWUgaXMgImRhdGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzBdLm9sZFZhbHVlIGlzICJmb28iCitQ
QVNTIG11dGF0aW9uc1sxXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1sxXS50eXBlIGlz
ICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZSBpcyAiZGF0YS10
ZXN0IgorUEFTUyBtdXRhdGlvbnNbMV0ub2xkVmFsdWUgaXMgImJhciIKKwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAppbmRleCAwZWUzNmZmNzBiZDU5
ZTZlNDQ4MTY3NzZmOTY5OTNlNGVmYTJmZjQ1Li5hNDdlZjZhYzczZDcyNTUzMTk0MDJiM2QxNjM0
OGM1ZWVjYzA4YmEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29ic2Vy
dmUtYXR0cmlidXRlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2
ZS1hdHRyaWJ1dGVzLmh0bWwKQEAgLTEsMTcgKzEsMTEgQEAKIDwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08cCBp
ZD1kZXNjcmlwdGlvbj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KIDxzY3JpcHQ+CiAK
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIHZhciBtdXRhdGlvbnMsIG11dGF0aW9uczIs
IG11dGF0aW9uc1dpdGhPbGRWYWx1ZTsKIHZhciBjYWxsczsKK3ZhciBkaXY7CiAKIGZ1bmN0aW9u
IHRlc3RCYXNpYygpIHsKICAgICB2YXIgZGl2OwpAQCAtNDI5LDE3ICs0MjMsMjEgQEAgZnVuY3Rp
b24gdGVzdElETEF0dHJpYnV0ZSgpIHsKICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsg
YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7CiAgICAgICAgIGRp
di5pZCA9ICdmb28nOwogICAgICAgICBkaXYuaWQgPSAnYmFyJzsKKyAgICAgICAgZGl2LmlkID0g
bnVsbDsKICAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIGZpbmlzaCgpIHsKLSAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcsICczJyk7CiAgICAgICAgIHNo
b3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKICAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICdudWxsJyk7CiAgICAgICAgIHNob3VsZEJl
KCdtdXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKICAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJpZCInKTsKICAgICAgICAgc2hvdWxkQmUo
J211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0
YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnNbMl0ub2xkVmFsdWUnLCAnImJhciInKTsKICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVj
dCgpOwogICAgICAgICBkZWJ1ZygnJyk7CiAgICAgICAgIHJ1bk5leHRUZXN0KCk7CkBAIC03ODYs
NiArNzg0LDIwMCBAQCBmdW5jdGlvbiB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc0ln
bm9yZU5vb3AoKSB7CiAgICAgc3RhcnQoKTsKIH0KIAorZnVuY3Rpb24gdGVzdE11dGF0ZVRocm91
Z2hBdHRyTm9kZVZhbHVlKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0
YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSB0
aHJvdWdoIGFuIGF0dHIgbm9kZSBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAg
ICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRp
b25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRh
dGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRhLXRl
c3QnLCAnZm9vJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6
IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAgICAgICBkaXYuYXR0cmlidXRl
c1snZGF0YS10ZXN0J10udmFsdWUgPSAnYmFyJzsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlz
aCwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zLmxlbmd0aCcsICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNb
MF0udGFyZ2V0JywgJ2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUn
LCAnImF0dHJpYnV0ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmli
dXRlTmFtZScsICciZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBd
Lm9sZFZhbHVlJywgJyJmb28iJyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwor
ICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAg
c3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZUNoaWxkKCkg
eworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBk
ZWJ1ZygnVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSBieSBhdHRhY2hpbmcgYSBjaGls
ZCB0byBhbiBhdHRyIG5vZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcycpOworCisgICAgICAg
IG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9u
T2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7CisgICAgICAgICAgICB3aW5kb3cubXV0YXRp
b25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKworICAgICAgICBkaXYgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0
JywgJ2ZvbycpOworICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0
cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXNb
J2RhdGEtdGVzdCddLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdiYXInKSk7
CisKKyAgICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9u
IGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBz
aG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAg
ICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworCisgICAg
ICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBy
dW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RT
ZXRBbmRSZW1vdmVBdHRyaWJ1dGVOb2RlKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1
bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IG11dGF0aW5nIHZpYSBz
ZXRBdHRyaWJ1dGVOb2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMnKTsKKworICAgICAgICBt
dXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZlciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAgICAgICAgICAgd2luZG93Lm11dGF0aW9u
cyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5pZCA9ICdteUlkJzsKKyAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsK
KyAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcp
OworICAgICAgICBhdHRyLnZhbHVlID0gJ2Jhcic7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVO
b2RlKGF0dHIpOworICAgICAgICBhdHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRh
LW90aGVyJyk7CisgICAgICAgIGF0dHIudmFsdWUgPSAnYmF6JzsKKyAgICAgICAgZGl2LnNldEF0
dHJpYnV0ZU5vZGUoYXR0cik7CisgICAgICAgIGRpdi5yZW1vdmVBdHRyaWJ1dGVOb2RlKGRpdi5h
dHRyaWJ1dGVzWydpZCddKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICczJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0Jywg
J2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0
ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICci
ZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywg
JyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ2Rpdicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciZGF0YS1v
dGhlciInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS5vbGRWYWx1ZScsICdudWxs
Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0udGFyZ2V0JywgJ2RpdicpOworICAg
ICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0uYXR0cmlidXRlTmFtZScsICciaWQiJyk7CisgICAg
ICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMl0ub2xkVmFsdWUnLCAnIm15SWQiJyk7CisKKyAgICAg
ICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7CisgICAgICAgIHJ1
bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rpb24gdGVzdE1p
eGVkTm9kZUFuZEVsZW1lbnRPcGVyYXRpb25zKCkgeworICAgIHZhciBvYnNlcnZlcjsKKworICAg
IGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1ZygnVGVzdCB0aGF0IHNldEF0dHJpYnV0
ZSBvbiBhbiBhdHRyaWJ1dGUgd2l0aCBhbiBleGlzdGluZyBBdHRyIGRlbGl2ZXJzIG11dGF0aW9u
IHJlY29yZHMnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZl
ciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAg
ICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHZhciBh
dHRyID0gZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKKyAgICAgICAgYXR0
ci52YWx1ZSA9ICdmb28nOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKKyAg
ICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRl
T2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcs
ICdiYXInKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zLmxlbmd0aCcs
ICcxJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0JywgJ2RpdicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7Cisg
ICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICciZGF0YS10ZXN0
IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywgJyJmb28iJyk7
CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7Cisg
ICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKworZnVuY3Rp
b24gdGVzdE5hbWVkTm9kZU1hcE9wZXJhdGlvbnMoKSB7CisgICAgdmFyIG9ic2VydmVyOworCisg
ICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgIGRlYnVnKCdUZXN0IHRoYXQgc2V0TmFtZWRJ
dGVtIGFuZCByZW1vdmVOYW1lZEl0ZW0gZGVsaXZlciBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAg
ICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0
YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5t
dXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuc2V0QXR0cmlidXRlKCdkYXRh
LXRlc3QnLCAnZm9vJyk7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0
ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAgICAgICB2YXIgYXR0ciA9
IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS10ZXN0Jyk7CisgICAgICAgIGF0dHIudmFs
dWUgPSAnYmFyJzsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXMuc2V0TmFtZWRJdGVtKGF0dHIpOwor
ICAgICAgICBkaXYuYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0ZW0oJ2RhdGEtdGVzdCcpOworCisg
ICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5p
c2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAg
IHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnImZvbyInKTsKKyAgICAgICAgc2hv
dWxkQmUoJ211dGF0aW9uc1sxXS50YXJnZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnNbMV0udHlwZScsICciYXR0cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1sxXS5hdHRyaWJ1dGVOYW1lJywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAgIHNob3Vs
ZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnImJhciInKTsKKworICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CisgICAgICAgIGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3Qo
KTsKKyAgICB9CisKKyAgICBzdGFydCgpOworfQorCiB2YXIgdGVzdHMgPSBbCiAgICAgdGVzdEJh
c2ljLAogICAgIHRlc3RXcm9uZ1R5cGUsCkBAIC04MDQsNyArOTk2LDEyIEBAIHZhciB0ZXN0cyA9
IFsKICAgICB0ZXN0QXR0cmlidXRlRmlsdGVyTm9uSFRNTERvY3VtZW50LAogICAgIHRlc3RTdHls
ZUF0dHJpYnV0ZVByb3BlcnR5QWNjZXNzLAogICAgIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3BlcnR5
QWNjZXNzT2xkVmFsdWUsCi0gICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25v
cmVOb29wCisgICAgdGVzdFN0eWxlQXR0cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25vcmVOb29wLAor
ICAgIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSwKKyAgICB0ZXN0TXV0YXRlVGhyb3Vn
aEF0dHJOb2RlQ2hpbGQsCisgICAgdGVzdFNldEFuZFJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAg
dGVzdE1peGVkTm9kZUFuZEVsZW1lbnRPcGVyYXRpb25zLAorICAgIHRlc3ROYW1lZE5vZGVNYXBP
cGVyYXRpb25zCiBdOwogdmFyIHRlc3RJbmRleCA9IDA7CiAKQEAgLTgyNCw1ICsxMDIxLDMgQEAg
ZWxzZQogCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119275</attachid>
            <date>2011-12-14 12:23:51 -0800</date>
            <delta_ts>2011-12-14 13:14:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74448-20111214122350.patch</filename>
            <type>text/plain</type>
            <size>20065</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTEyNDcxYzM4Y2U0Zjhh
YmI0NzdjZjRhODc3NjA1NGMyY2Y1YWQwOC4uMWMxMzg1YjE0OGFjZjhjMGI0ZWRmY2Q2MjliMmIz
NzI2MmI3NmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTEyLTEzICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJyb2FkZW4gc3VwcG9ydCBm
b3IgbXV0YXRpb24gb2JzZXJ2YXRpb24gb2YgYXR0cmlidXRlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVGhlIHByZXZpb3VzbHktbGFuZGVkIE11dGF0aW9u
T2JzZXJ2ZXIgc3VwcG9ydCBmb3IgYXR0cmlidXRlcyB3YXMgaW5jb21wbGV0ZToKKyAgICAgICAg
aXQgZGlkbid0IHN1cHBvcnQgbXV0YXRpb25zIHJlbGF0ZWQgdG8gQXR0ciBub2RlcyAobWV0aG9k
cyBvbiBBdHRycywKKyAgICAgICAgc2V0QXR0cmlidXRlTm9kZS9yZW1vdmVBdHRyaWJ1dGVOb2Rl
IG9uIEVsZW1lbnQsIG9yIG1ldGhvZHMgb24gTmFtZWROb2RlTWFwKS4KKworICAgICAgICBUaGlz
IHBhdGNoIGFkZHMgZnVsbCBzdXBwb3J0IG9mIG11dGF0aW9uIG9ic2VydmF0aW9uIGZvciBhbGwg
dGhlc2UgY2FzZXMsCisgICAgICAgIGFuZCBhZGRzIHRlc3QgY2FzZXMgZm9yIGFsbCB0aGVzZSBz
aXR1YXRpb25zLgorCisgICAgICAgICogZG9tL0F0dHIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXR0cjo6c2V0VmFsdWUpOiBFbnF1ZXVlIGEgbXV0YXRpb24gcmVjb3JkIHdoZW4gQXR0ci52YWx1
ZSBpcyBzZXQgZnJvbSBKUy4KKyAgICAgICAgKFdlYkNvcmU6OkF0dHI6OmNoaWxkcmVuQ2hhbmdl
ZCk6IEVucXVldWUgYSBtdXRhdGlvbiByZWNvcmQgd2hlbiBhbiBBdHRyJ3MgdmFsdWUKKyAgICAg
ICAgY2hhbmdlcyB0byBkdWUgYWRkaXRpb25zL3JlbW92YWxzIG9mIFRleHQgY2hpbGRyZW4uCisg
ICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5x
dWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJlY29yZElmUmVxdWVzdGVkKTogUHJldmlvdXNseSBhIHN0
YXRpYywKKyAgICAgICAgZXhwb3NlIGFzIHBhcnQgb2YgRWxlbWVudCdzIGludGVyZmFjZSB0byBh
bGxvdyBpdCB0byBiZSByZS11c2VkIGJ5IE5hbWVkTm9kZU1hcCBhbmQgQXR0ci4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6IFJlbW92ZSBlbnF1ZXVlIGNhbGwg
bm93IGhhbmRsZWQgYnkgTmFtZWROb2RlTWFwLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2V0QXR0cmlidXRlSW50ZXJuYWwpOiBGaXh1cCBjYWxsIG9mIGVucXVldWVBdHRyaWJ1dGVzTXV0
YXRpb25SZWNvcmRJZlJlcXVlc3RlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAg
ICAqIGRvbS9OYW1lZE5vZGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWROb2RlTWFw
OjpzZXROYW1lZEl0ZW0pOiBFbnF1ZXVlIGEgbXV0YXRpb24gcmVjb3JkIHdoZW4gYW4gYXR0cmli
dXRlCisgICAgICAgIGlzIGNoYW5nZWQgdmlhIEVsZW1lbnQuYXR0cmlidXRlcy5zZXROYW1lZEl0
ZW0gZnJvbSBKUy4KKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTm9kZU1hcDo6cmVtb3ZlTmFtZWRJ
dGVtKTogRW5xdWV1ZSBhIG11dGF0aW9uIHJlY29yZCB3aGVuIGFuCisgICAgICAgIGF0dHJpYnV0
ZSBpcyByZW1vdmVkLCBlaXRoZXIgdmlhIEVsZW1lbnQuYXR0cmlidXRlcy5yZW1vdmVOYW1lZEl0
ZW0gb3IgRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUuCisKIDIwMTEtMTItMTQgIEtlbnRhcm8gSGFy
YSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVzZSBbU3VwcGxlbWVudGFsXSBJ
REwgaW4gV2ViU29ja2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQXR0ci5jcHAKaW5kZXggYWU5OGZlMzUyY2RiYzJhZGQyNzQ5
NjUwMWNiNGY5NDNkMzkxZjE3NC4uZGI2OWViMzQ2NzAyNTRiZDE5YTM3MWU3MDJlOTllZjRiMDQ2
NjlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BdHRyLmNwcApAQCAtMTMwLDYgKzEzMCwxMSBAQCB2b2lkIEF0dHI6OnNl
dFZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIHZvaWQgQXR0cjo6c2V0VmFsdWUo
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYpCiB7CisjaWYgRU5BQkxF
KE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBpZiAobV9lbGVtZW50KQorICAgICAgICBtX2VsZW1l
bnQtPmVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChtX2F0dHJpYnV0
ZS0+bmFtZSgpLCBtX2F0dHJpYnV0ZS0+dmFsdWUoKSk7CisjZW5kaWYKKwogICAgIGlmIChtX2Vs
ZW1lbnQgJiYgbV9lbGVtZW50LT5pc0lkQXR0cmlidXRlTmFtZShtX2F0dHJpYnV0ZS0+bmFtZSgp
KSkKICAgICAgICAgbV9lbGVtZW50LT51cGRhdGVJZChtX2VsZW1lbnQtPmdldElkQXR0cmlidXRl
KCksIHZhbHVlKTsKIApAQCAtMTY3LDcgKzE3MiwxMiBAQCB2b2lkIEF0dHI6OmNoaWxkcmVuQ2hh
bmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRl
cgogewogICAgIGlmIChtX2lnbm9yZUNoaWxkcmVuQ2hhbmdlZCA+IDApCiAgICAgICAgIHJldHVy
bjsKLSAKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgaWYgKG1fZWxlbWVu
dCkKKyAgICAgICAgbV9lbGVtZW50LT5lbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkSWZS
ZXF1ZXN0ZWQobV9hdHRyaWJ1dGUtPm5hbWUoKSwgbV9hdHRyaWJ1dGUtPnZhbHVlKCkpOworI2Vu
ZGlmCisKICAgICBOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVD
aGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogCiAgICAgaW52YWxpZGF0ZU5v
ZGVMaXN0c0NhY2hlQWZ0ZXJBdHRyaWJ1dGVDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggMzYxNTIxMWI4Yjk2MDRiYTljMTk0N2JlZGI3NmRiYmE0YmZkMzE5NS4uMDQ3NGU5ZDcw
NTM0YzIwNWY3NjZhNWNlMTE5MmFiNGI4NWQ2MTE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtMTgxLDEwICsxODEsMTIgQEAgdm9pZCBFbGVtZW50Ojpjb3B5Tm9uQXR0cmlidXRlUHJvcGVy
dGllcyhjb25zdCBFbGVtZW50KikKIH0KIAogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMp
Ci1zdGF0aWMgdm9pZCBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKEVsZW1lbnQqIHRh
cmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBvbGRWYWx1ZSkKK3ZvaWQgRWxlbWVudDo6ZW5xdWV1ZUF0dHJpYnV0ZXNNdXRhdGlvblJl
Y29yZElmUmVxdWVzdGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCiB7Ci0gICAgaWYgKE93blB0cjxNdXRhdGlvbk9ic2Vy
dmVySW50ZXJlc3RHcm91cD4gbXV0YXRpb25SZWNpcGllbnRzID0gTXV0YXRpb25PYnNlcnZlcklu
dGVyZXN0R3JvdXA6OmNyZWF0ZUZvckF0dHJpYnV0ZXNNdXRhdGlvbih0YXJnZXQsIGF0dHJpYnV0
ZU5hbWUpKQotICAgICAgICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29y
ZChNdXRhdGlvblJlY29yZDo6Y3JlYXRlQXR0cmlidXRlcyh0YXJnZXQsIGF0dHJpYnV0ZU5hbWUs
IG9sZFZhbHVlKSk7CisgICAgaWYgKGlzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoT3duUHRyPE11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdy
b3VwPiBtdXRhdGlvblJlY2lwaWVudHMgPSBNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cDo6
Y3JlYXRlRm9yQXR0cmlidXRlc011dGF0aW9uKHRoaXMsIGF0dHJpYnV0ZU5hbWUpKQorICAgICAg
ICBtdXRhdGlvblJlY2lwaWVudHMtPmVucXVldWVNdXRhdGlvblJlY29yZChNdXRhdGlvblJlY29y
ZDo6Y3JlYXRlQXR0cmlidXRlcyh0aGlzLCBhdHRyaWJ1dGVOYW1lLCBvbGRWYWx1ZSkpOwogfQog
I2VuZGlmCiAKQEAgLTE5NSwxMCArMTk3LDYgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAg
IFJlZlB0cjxOb2RlPiBhdHRyTm9kZSA9IG1fYXR0cmlidXRlTWFwLT5yZW1vdmVOYW1lZEl0ZW0o
bmFtZSwgZWMpOwogICAgICAgICBpZiAoZWMgPT0gTk9UX0ZPVU5EX0VSUikKICAgICAgICAgICAg
IGVjID0gMDsKLSNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBlbnF1ZXVlQXR0cmlidXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIG5hbWUsIGF0
dHJOb2RlLT5ub2RlVmFsdWUoKSk7Ci0jZW5kaWYKICAgICB9CiB9CiAKQEAgLTY1NiwxNCArNjU0
LDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoQXR0cmlidXRlKiBvbGQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbE1vZGlmeURPTUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiAjZW5kaWYKIAot
ICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7Ci0KICNpZiBFTkFCTEUoTVVUQVRJ
T05fT0JTRVJWRVJTKQotICAgIC8vIFRoZSBjYWxsIHRvIGF0dHJpYnV0ZUNoYW5nZWQgYmVsb3cg
bWF5IGRpc3BhdGNoIERPTVN1YnRyZWVNb2RpZmllZCwgc28gaXQncyBpbXBvcnRhbnQgdG8gZW5x
dWV1ZSBhIE11dGF0aW9uUmVjb3JkIG5vdy4KLSAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxl
QXR0cmlidXRlKCkpCi0gICAgICAgIGVucXVldWVBdHRyaWJ1dGVzTXV0YXRpb25SZWNvcmQodGhp
cywgbmFtZSwgb2xkID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20pOworICAgIGVucXVldWVBdHRy
aWJ1dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChuYW1lLCBvbGQgPyBvbGQtPnZhbHVlKCkg
OiBudWxsQXRvbSk7CiAjZW5kaWYKIAorICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9u
KCk7CisKICAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUobmFtZSkpCiAgICAgICAgIHVwZGF0ZUlk
KG9sZCA/IG9sZC0+dmFsdWUoKSA6IG51bGxBdG9tLCB2YWx1ZSk7CiAKQEAgLTE1MjMsMTAgKzE1
MTksNiBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBSZWZQdHI8Tm9kZT4gYXR0ck5vZGUgPSBtX2F0
dHJpYnV0ZU1hcC0+cmVtb3ZlTmFtZWRJdGVtKGxvY2FsTmFtZSwgZWMpOwogICAgICAgICBpZiAo
ZWMgPT0gTk9UX0ZPVU5EX0VSUikKICAgICAgICAgICAgIGVjID0gMDsKLSNpZiBFTkFCTEUoTVVU
QVRJT05fT0JTRVJWRVJTKQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbnF1ZXVlQXR0cmli
dXRlc011dGF0aW9uUmVjb3JkKHRoaXMsIFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFt
ZSwgbnVsbEF0b20pLCBhdHRyTm9kZS0+bm9kZVZhbHVlKCkpOwotI2VuZGlmCiAgICAgfQogICAg
IAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0cihkb2N1bWVu
dCgpLCB0aGlzLCBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDdhNzI4NjMzMTgxMTM0MTQw
YTkxOWRkNTUyYzQ2ZjhlNzY4YjY4NzMuLjFkMTcyOGJmYjEwOWNiOGVkNDk4NDM4YWJlZGVmZTg5
MTM2MTA3NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzY0LDYgKzM2NCwxMCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JSZW5kZXJlcigpOwog
CisjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICB2b2lkIGVucXVldWVBdHRyaWJ1
dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBvbGRWYWx1ZSk7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25z
dHJ1Y3Rpb25UeXBlIHR5cGUpCiAgICAgICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgdHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKaW5kZXggZGM1MzUwMTRjZmMxMTdlOTY2
YjYxN2E2YWRhMDk2NzcxNDVhNjE1ZS4uY2RjODA4OTA0MGJmYjViYzQwMTFkZmUzOGFhMzNhOWEy
YWE3MGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKQEAgLTExOSw2ICsxMTks
MTAgQEAgUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisjaWYg
RU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKKyAgICBtX2VsZW1lbnQtPmVucXVldWVBdHRyaWJ1
dGVzTXV0YXRpb25SZWNvcmRJZlJlcXVlc3RlZChhdHRyaWJ1dGUtPm5hbWUoKSwgb2xkQXR0cmli
dXRlID8gb2xkQXR0cmlidXRlLT52YWx1ZSgpIDogbnVsbEF0b20pOworI2VuZGlmCisKICAgICBp
ZiAoYXR0ci0+aXNJZCgpKQogICAgICAgICBtX2VsZW1lbnQtPnVwZGF0ZUlkKG9sZEF0dHJpYnV0
ZSA/IG9sZEF0dHJpYnV0ZS0+dmFsdWUoKSA6IG51bGxBdG9tLCBhdHRyaWJ1dGUtPnZhbHVlKCkp
OwogCkBAIC0xNDksNiArMTUzLDExIEBAIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFwOjpy
ZW1vdmVOYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAorI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAg
aWYgKG1fZWxlbWVudCkKKyAgICAgICAgbV9lbGVtZW50LT5lbnF1ZXVlQXR0cmlidXRlc011dGF0
aW9uUmVjb3JkSWZSZXF1ZXN0ZWQoYXR0cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUo
KSk7CisjZW5kaWYKKwogICAgIFJlZlB0cjxBdHRyPiBhdHRyID0gYXR0cmlidXRlLT5jcmVhdGVB
dHRySWZOZWVkZWQobV9lbGVtZW50KTsKIAogICAgIGlmIChhdHRyLT5pc0lkKCkpCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MDAxZWMwMjA0ZWZlNTIzMjA2ODMwMjFjMjkzN2NjM2I3ZTNkOGNiOS4uY2Y5NGExODA3ZjY0YTg0
MzZkOTJjM2NmYTk0MTNiYjQ4YzA5MjY4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTEy
LTEzICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJyb2FkZW4g
c3VwcG9ydCBmb3IgbXV0YXRpb24gb2JzZXJ2YXRpb24gb2YgYXR0cmlidXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIHRlc3RzIGNvdmVyaW5nIGF0
dHJpYnV0ZSBtdXRhdGlvbiB2aWEgQXR0ciBub2Rlcy4KKworICAgICAgICAqIGZhc3QvbXV0YXRp
b24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L211dGF0
aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1sOgorCiAyMDExLTEyLTE0ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBUZXN0IGZvbnRzIGFyZSBu
b3QgdXNlZCB3aXRoIFF0NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9v
YnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9vYnNlcnZlLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CmluZGV4IDdmZmZjNWYzNTQ1ZTBkZjU2
N2E0YzhkNWJjMzMxZmQ5NjE5ZTZlOGEuLjgzZWI3YmFlMmQzMjBhODIzZGJmNTBmYjMyMWU4ZjRl
NDBhN2QxYTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1h
dHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL29i
c2VydmUtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTkwLDEzICs5MCwxNiBAQCBQQVNTIG11
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJmb28iCiBQQVNTIG11dGF0aW9uc1swXS5vbGRW
YWx1ZSBpcyAiYmFyIgogCiBUZXN0aW5nIHNldHRpbmcgYW4gYXR0cmlidXRlIHZpYSByZWZsZWN0
ZWQgSURMIGF0dHJpYnV0ZS4KLVBBU1MgbXV0YXRpb25zLmxlbmd0aCBpcyAyCitQQVNTIG11dGF0
aW9ucy5sZW5ndGggaXMgMwogUEFTUyBtdXRhdGlvbnNbMF0udHlwZSBpcyAiYXR0cmlidXRlcyIK
IFBBU1MgbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgogUEFTUyBtdXRhdGlvbnNb
MF0ub2xkVmFsdWUgaXMgbnVsbAogUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRl
cyIKIFBBU1MgbXV0YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImlkIgogUEFTUyBtdXRhdGlv
bnNbMV0ub2xkVmFsdWUgaXMgImZvbyIKK1BBU1MgbXV0YXRpb25zWzJdLnR5cGUgaXMgImF0dHJp
YnV0ZXMiCitQQVNTIG11dGF0aW9uc1syXS5hdHRyaWJ1dGVOYW1lIGlzICJpZCIKK1BBU1MgbXV0
YXRpb25zWzJdLm9sZFZhbHVlIGlzICJiYXIiCiAKIFRlc3RpbmcgdGhhdCBhdHRyaWJ1dGVGaWx0
ZXIgd29ya3MgYXMgZXhwZWN0ZWQgYW5kIGlnbm9yZXMgY2FzZSB3aXRoIEhUTUwgZWxlbWVudHMu
CiAuLi5vbmx5IGZvbywgYmFyICYgYm9vbSBzaG91bGQgYmUgcmVjZWl2ZWQuCkBAIC0xODksNiAr
MTkyLDUzIEBAIFBBU1MgbXV0YXRpb25zIGlzIG51bGwKIFRlc3RpbmcgdGhhdCBhIG5vLW9wIHN0
eWxlIHByb3BlcnR5IG11dGF0aW9uIGRvZXMgbm90IGNyZWF0ZSBNdXRhdGlvbiBSZWNvcmRzLgog
UEFTUyBtdXRhdGlvbnMgaXMgbnVsbAogCitUZXN0IHRoYXQgbXV0YXRpbmcgYW4gYXR0cmlidXRl
IHRocm91Z2ggYW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKK1BBU1MgbXV0
YXRpb25zLmxlbmd0aCBpcyAxCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNT
IG11dGF0aW9uc1swXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0
cmlidXRlTmFtZSBpcyAiZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMg
ImZvbyIKKworVGVzdCB0aGF0IG11dGF0aW5nIGFuIGF0dHJpYnV0ZSBieSBhdHRhY2hpbmcgYSBj
aGlsZCB0byBhbiBhdHRyIG5vZGUgZGVsaXZlcnMgbXV0YXRpb24gcmVjb3JkcworUEFTUyBtdXRh
dGlvbnMubGVuZ3RoIGlzIDEKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdldCBpcyBkaXYKK1BBU1Mg
bXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRy
aWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCitQQVNTIG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAi
Zm9vIgorCitUZXN0IHRoYXQgbXV0YXRpbmcgdmlhIHNldEF0dHJpYnV0ZU5vZGUgZGVsaXZlcnMg
bXV0YXRpb24gcmVjb3JkcworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDMKK1BBU1MgbXV0YXRp
b25zWzBdLnRhcmdldCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0
ZXMiCitQQVNTIG11dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCitQQVNT
IG11dGF0aW9uc1swXS5vbGRWYWx1ZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMV0udGFyZ2V0
IGlzIGRpdgorUEFTUyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0
YXRpb25zWzFdLmF0dHJpYnV0ZU5hbWUgaXMgImRhdGEtb3RoZXIiCitQQVNTIG11dGF0aW9uc1sx
XS5vbGRWYWx1ZSBpcyBudWxsCitQQVNTIG11dGF0aW9uc1syXS50YXJnZXQgaXMgZGl2CitQQVNT
IG11dGF0aW9uc1syXS50eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMl0uYXR0
cmlidXRlTmFtZSBpcyAiaWQiCitQQVNTIG11dGF0aW9uc1syXS5vbGRWYWx1ZSBpcyAibXlJZCIK
KworVGVzdCB0aGF0IHNldEF0dHJpYnV0ZSBvbiBhbiBhdHRyaWJ1dGUgd2l0aCBhbiBleGlzdGlu
ZyBBdHRyIGRlbGl2ZXJzIG11dGF0aW9uIHJlY29yZHMKK1BBU1MgbXV0YXRpb25zLmxlbmd0aCBp
cyAxCitQQVNTIG11dGF0aW9uc1swXS50YXJnZXQgaXMgZGl2CitQQVNTIG11dGF0aW9uc1swXS50
eXBlIGlzICJhdHRyaWJ1dGVzIgorUEFTUyBtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZSBpcyAi
ZGF0YS10ZXN0IgorUEFTUyBtdXRhdGlvbnNbMF0ub2xkVmFsdWUgaXMgImZvbyIKKworVGVzdCB0
aGF0IHNldE5hbWVkSXRlbSBhbmQgcmVtb3ZlTmFtZWRJdGVtIGRlbGl2ZXIgbXV0YXRpb24gcmVj
b3JkcworUEFTUyBtdXRhdGlvbnMubGVuZ3RoIGlzIDIKK1BBU1MgbXV0YXRpb25zWzBdLnRhcmdl
dCBpcyBkaXYKK1BBU1MgbXV0YXRpb25zWzBdLnR5cGUgaXMgImF0dHJpYnV0ZXMiCitQQVNTIG11
dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1lIGlzICJkYXRhLXRlc3QiCitQQVNTIG11dGF0aW9uc1sw
XS5vbGRWYWx1ZSBpcyAiZm9vIgorUEFTUyBtdXRhdGlvbnNbMV0udGFyZ2V0IGlzIGRpdgorUEFT
UyBtdXRhdGlvbnNbMV0udHlwZSBpcyAiYXR0cmlidXRlcyIKK1BBU1MgbXV0YXRpb25zWzFdLmF0
dHJpYnV0ZU5hbWUgaXMgImRhdGEtdGVzdCIKK1BBU1MgbXV0YXRpb25zWzFdLm9sZFZhbHVlIGlz
ICJiYXIiCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0
ZXMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vb2JzZXJ2ZS1hdHRyaWJ1dGVzLmh0
bWwKaW5kZXggMGVlMzZmZjcwYmQ1OWU2ZTQ0ODE2Nzc2Zjk2OTkzZTRlZmEyZmY0NS4uYTQ3ZWY2
YWM3M2Q3MjU1MzE5NDAyYjNkMTYzNDhjNWVlY2MwOGJhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tdXRhdGlvbi9vYnNlcnZlLWF0dHJpYnV0ZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL29ic2VydmUtYXR0cmlidXRlcy5odG1sCkBAIC0xLDE3ICsxLDExIEBA
CiA8IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLTxib2R5PgotPHAgaWQ9ZGVzY3JpcHRpb24+PC9wPgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CiA8c2NyaXB0PgogCiB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiB2YXIg
bXV0YXRpb25zLCBtdXRhdGlvbnMyLCBtdXRhdGlvbnNXaXRoT2xkVmFsdWU7CiB2YXIgY2FsbHM7
Cit2YXIgZGl2OwogCiBmdW5jdGlvbiB0ZXN0QmFzaWMoKSB7CiAgICAgdmFyIGRpdjsKQEAgLTQy
OSwxNyArNDIzLDIxIEBAIGZ1bmN0aW9uIHRlc3RJRExBdHRyaWJ1dGUoKSB7CiAgICAgICAgIG9i
c2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJpYnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVl
OiB0cnVlIH0pOwogICAgICAgICBkaXYuaWQgPSAnZm9vJzsKICAgICAgICAgZGl2LmlkID0gJ2Jh
cic7CisgICAgICAgIGRpdi5pZCA9IG51bGw7CiAgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAw
KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBmaW5pc2goKSB7Ci0gICAgICAgIHNob3VsZEJlKCdt
dXRhdGlvbnMubGVuZ3RoJywgJzInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5n
dGgnLCAnMycpOwogICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJp
YnV0ZXMiJyk7CiAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScs
ICciaWQiJyk7CiAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFsdWUnLCAnbnVs
bCcpOwogICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMi
Jyk7CiAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciaWQi
Jyk7CiAgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0ub2xkVmFsdWUnLCAnImZvbyInKTsK
KyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0ZU5hbWUnLCAnImlkIicpOwor
ICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVlJywgJyJiYXIiJyk7CiAgICAg
ICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgZGVidWcoJycpOwogICAgICAgICBy
dW5OZXh0VGVzdCgpOwpAQCAtNzg2LDYgKzc4NCwyMDAgQEAgZnVuY3Rpb24gdGVzdFN0eWxlQXR0
cmlidXRlUHJvcGVydHlBY2Nlc3NJZ25vcmVOb29wKCkgewogICAgIHN0YXJ0KCk7CiB9CiAKK2Z1
bmN0aW9uIHRlc3RNdXRhdGVUaHJvdWdoQXR0ck5vZGVWYWx1ZSgpIHsKKyAgICB2YXIgb2JzZXJ2
ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBt
dXRhdGluZyBhbiBhdHRyaWJ1dGUgdGhyb3VnaCBhbiBhdHRyIG5vZGUgZGVsaXZlcnMgbXV0YXRp
b24gcmVjb3JkcycpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9ic2Vy
dmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7Cisg
ICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsKKwor
ICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZGl2
LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAgICBvYnNlcnZlci5vYnNl
cnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9KTsK
KyAgICAgICAgZGl2LmF0dHJpYnV0ZXNbJ2RhdGEtdGVzdCddLnZhbHVlID0gJ2Jhcic7CisKKyAg
ICAgICAgc2V0VGltZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlz
aCgpIHsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAg
ICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9uc1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRC
ZSgnbXV0YXRpb25zWzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAgICAg
c2hvdWxkQmUoJ211dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworCisgICAgICAgIG9i
c2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0
VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNdXRhdGVU
aHJvdWdoQXR0ck5vZGVDaGlsZCgpIHsKKyAgICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlv
biBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rlc3QgdGhhdCBtdXRhdGluZyBhbiBhdHRyaWJ1
dGUgYnkgYXR0YWNoaW5nIGEgY2hpbGQgdG8gYW4gYXR0ciBub2RlIGRlbGl2ZXJzIG11dGF0aW9u
IHJlY29yZHMnKTsKKworICAgICAgICBtdXRhdGlvbnMgPSBudWxsOworICAgICAgICBvYnNlcnZl
ciA9IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeworICAg
ICAgICAgICAgd2luZG93Lm11dGF0aW9ucyA9IG11dGF0aW9uczsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRpdi5z
ZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2
ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlT2xkVmFsdWU6IHRydWUgfSk7Cisg
ICAgICAgIGRpdi5hdHRyaWJ1dGVzWydkYXRhLXRlc3QnXS5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgnYmFyJykpOworCisgICAgICAgIHNldFRpbWVvdXQoZmluaXNoLCAwKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBmaW5pc2goKSB7CisgICAgICAgIHNob3VsZEJlKCdtdXRh
dGlvbnMubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50YXJn
ZXQnLCAnZGl2Jyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udHlwZScsICciYXR0
cmlidXRlcyInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS5hdHRyaWJ1dGVOYW1l
JywgJyJkYXRhLXRlc3QiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0ub2xkVmFs
dWUnLCAnImZvbyInKTsKKworICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CisgICAgICAg
IGRlYnVnKCcnKTsKKyAgICAgICAgcnVuTmV4dFRlc3QoKTsKKyAgICB9CisKKyAgICBzdGFydCgp
OworfQorCitmdW5jdGlvbiB0ZXN0U2V0QW5kUmVtb3ZlQXR0cmlidXRlTm9kZSgpIHsKKyAgICB2
YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWcoJ1Rl
c3QgdGhhdCBtdXRhdGluZyB2aWEgc2V0QXR0cmlidXRlTm9kZSBkZWxpdmVycyBtdXRhdGlvbiBy
ZWNvcmRzJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0gbnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIg
PSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKKyAgICAg
ICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlvbnM7CisgICAgICAgIH0pOworCisgICAg
ICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBkaXYuaWQg
PSAnbXlJZCc7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGVzdCcsICdmb28nKTsK
KyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHsgYXR0cmlidXRlczogdHJ1ZSwgYXR0cmli
dXRlT2xkVmFsdWU6IHRydWUgfSk7CisgICAgICAgIHZhciBhdHRyID0gZG9jdW1lbnQuY3JlYXRl
QXR0cmlidXRlKCdkYXRhLXRlc3QnKTsKKyAgICAgICAgYXR0ci52YWx1ZSA9ICdiYXInOworICAg
ICAgICBkaXYuc2V0QXR0cmlidXRlTm9kZShhdHRyKTsKKyAgICAgICAgYXR0ciA9IGRvY3VtZW50
LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0YS1vdGhlcicpOworICAgICAgICBhdHRyLnZhbHVlID0gJ2Jh
eic7CisgICAgICAgIGRpdi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpOworICAgICAgICBkaXYucmVt
b3ZlQXR0cmlidXRlTm9kZShkaXYuYXR0cmlidXRlc1snaWQnXSk7CisKKyAgICAgICAgc2V0VGlt
ZW91dChmaW5pc2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAg
ICAgc2hvdWxkQmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMycpOworICAgICAgICBzaG91bGRCZSgn
bXV0YXRpb25zWzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9u
c1swXS50eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLmF0dHJpYnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211
dGF0aW9uc1swXS5vbGRWYWx1ZScsICciZm9vIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRp
b25zWzFdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sxXS50
eXBlJywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLmF0
dHJpYnV0ZU5hbWUnLCAnImRhdGEtb3RoZXIiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlv
bnNbMV0ub2xkVmFsdWUnLCAnbnVsbCcpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJd
LnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1syXS50eXBlJywg
JyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLmF0dHJpYnV0
ZU5hbWUnLCAnImlkIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzJdLm9sZFZhbHVl
JywgJyJteUlkIicpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAg
ZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAgIHN0YXJ0KCk7
Cit9CisKK2Z1bmN0aW9uIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50T3BlcmF0aW9ucygpIHsKKyAg
ICB2YXIgb2JzZXJ2ZXI7CisKKyAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgZGVidWco
J1Rlc3QgdGhhdCBzZXRBdHRyaWJ1dGUgb24gYW4gYXR0cmlidXRlIHdpdGggYW4gZXhpc3Rpbmcg
QXR0ciBkZWxpdmVycyBtdXRhdGlvbiByZWNvcmRzJyk7CisKKyAgICAgICAgbXV0YXRpb25zID0g
bnVsbDsKKyAgICAgICAgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5j
dGlvbihtdXRhdGlvbnMpIHsKKyAgICAgICAgICAgIHdpbmRvdy5tdXRhdGlvbnMgPSBtdXRhdGlv
bnM7CisgICAgICAgIH0pOworCisgICAgICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgICAgICB2YXIgYXR0ciA9IGRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZSgnZGF0
YS10ZXN0Jyk7CisgICAgICAgIGF0dHIudmFsdWUgPSAnZm9vJzsKKyAgICAgICAgZGl2LnNldEF0
dHJpYnV0ZU5vZGUoYXR0cik7CisgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7IGF0dHJp
YnV0ZXM6IHRydWUsIGF0dHJpYnV0ZU9sZFZhbHVlOiB0cnVlIH0pOworICAgICAgICBkaXYuc2V0
QXR0cmlidXRlKCdkYXRhLXRlc3QnLCAnYmFyJyk7CisKKyAgICAgICAgc2V0VGltZW91dChmaW5p
c2gsIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIGZpbmlzaCgpIHsKKyAgICAgICAgc2hvdWxk
QmUoJ211dGF0aW9ucy5sZW5ndGgnLCAnMScpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
WzBdLnRhcmdldCcsICdkaXYnKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1swXS50eXBl
JywgJyJhdHRyaWJ1dGVzIicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLmF0dHJp
YnV0ZU5hbWUnLCAnImRhdGEtdGVzdCInKTsKKyAgICAgICAgc2hvdWxkQmUoJ211dGF0aW9uc1sw
XS5vbGRWYWx1ZScsICciZm9vIicpOworCisgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsK
KyAgICAgICAgZGVidWcoJycpOworICAgICAgICBydW5OZXh0VGVzdCgpOworICAgIH0KKworICAg
IHN0YXJ0KCk7Cit9CisKK2Z1bmN0aW9uIHRlc3ROYW1lZE5vZGVNYXBPcGVyYXRpb25zKCkgewor
ICAgIHZhciBvYnNlcnZlcjsKKworICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICBkZWJ1
ZygnVGVzdCB0aGF0IHNldE5hbWVkSXRlbSBhbmQgcmVtb3ZlTmFtZWRJdGVtIGRlbGl2ZXIgbXV0
YXRpb24gcmVjb3JkcycpOworCisgICAgICAgIG11dGF0aW9ucyA9IG51bGw7CisgICAgICAgIG9i
c2VydmVyID0gbmV3IFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7
CisgICAgICAgICAgICB3aW5kb3cubXV0YXRpb25zID0gbXV0YXRpb25zOworICAgICAgICB9KTsK
KworICAgICAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAg
ZGl2LnNldEF0dHJpYnV0ZSgnZGF0YS10ZXN0JywgJ2ZvbycpOworICAgICAgICBvYnNlcnZlci5v
YnNlcnZlKGRpdiwgeyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSB9
KTsKKyAgICAgICAgdmFyIGF0dHIgPSBkb2N1bWVudC5jcmVhdGVBdHRyaWJ1dGUoJ2RhdGEtdGVz
dCcpOworICAgICAgICBhdHRyLnZhbHVlID0gJ2Jhcic7CisgICAgICAgIGRpdi5hdHRyaWJ1dGVz
LnNldE5hbWVkSXRlbShhdHRyKTsKKyAgICAgICAgZGl2LmF0dHJpYnV0ZXMucmVtb3ZlTmFtZWRJ
dGVtKCdkYXRhLXRlc3QnKTsKKworICAgICAgICBzZXRUaW1lb3V0KGZpbmlzaCwgMCk7CisgICAg
fQorCisgICAgZnVuY3Rpb24gZmluaXNoKCkgeworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25z
Lmxlbmd0aCcsICcyJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0udGFyZ2V0Jywg
J2RpdicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLnR5cGUnLCAnImF0dHJpYnV0
ZXMiJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMF0uYXR0cmlidXRlTmFtZScsICci
ZGF0YS10ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzBdLm9sZFZhbHVlJywg
JyJmb28iJyk7CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0udGFyZ2V0JywgJ2Rpdicp
OworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLnR5cGUnLCAnImF0dHJpYnV0ZXMiJyk7
CisgICAgICAgIHNob3VsZEJlKCdtdXRhdGlvbnNbMV0uYXR0cmlidXRlTmFtZScsICciZGF0YS10
ZXN0IicpOworICAgICAgICBzaG91bGRCZSgnbXV0YXRpb25zWzFdLm9sZFZhbHVlJywgJyJiYXIi
Jyk7CisKKyAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICBkZWJ1ZygnJyk7
CisgICAgICAgIHJ1bk5leHRUZXN0KCk7CisgICAgfQorCisgICAgc3RhcnQoKTsKK30KKwogdmFy
IHRlc3RzID0gWwogICAgIHRlc3RCYXNpYywKICAgICB0ZXN0V3JvbmdUeXBlLApAQCAtODA0LDcg
Kzk5NiwxMiBAQCB2YXIgdGVzdHMgPSBbCiAgICAgdGVzdEF0dHJpYnV0ZUZpbHRlck5vbkhUTUxE
b2N1bWVudCwKICAgICB0ZXN0U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2VzcywKICAgICB0ZXN0
U3R5bGVBdHRyaWJ1dGVQcm9wZXJ0eUFjY2Vzc09sZFZhbHVlLAotICAgIHRlc3RTdHlsZUF0dHJp
YnV0ZVByb3BlcnR5QWNjZXNzSWdub3JlTm9vcAorICAgIHRlc3RTdHlsZUF0dHJpYnV0ZVByb3Bl
cnR5QWNjZXNzSWdub3JlTm9vcCwKKyAgICB0ZXN0TXV0YXRlVGhyb3VnaEF0dHJOb2RlVmFsdWUs
CisgICAgdGVzdE11dGF0ZVRocm91Z2hBdHRyTm9kZUNoaWxkLAorICAgIHRlc3RTZXRBbmRSZW1v
dmVBdHRyaWJ1dGVOb2RlLAorICAgIHRlc3RNaXhlZE5vZGVBbmRFbGVtZW50T3BlcmF0aW9ucywK
KyAgICB0ZXN0TmFtZWROb2RlTWFwT3BlcmF0aW9ucwogXTsKIHZhciB0ZXN0SW5kZXggPSAwOwog
CkBAIC04MjQsNSArMTAyMSwzIEBAIGVsc2UKIAogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>