<?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>144482</bug_id>
          
          <creation_ts>2015-04-30 18:06:29 -0700</creation_ts>
          <short_desc>Expand test infrastructure to support scrolling tests (Part 4): Scroll Snap Support</short_desc>
          <delta_ts>2017-05-19 01:04:53 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144131</dependson>
          <blocked>146081</blocked>
    
    <blocked>142358</blocked>
    
    <blocked>144591</blocked>
    
    <blocked>172349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090685</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-30 18:06:29 -0700</bug_when>
    <thetext>Add tests and adjustments to the scroll testing infrastructure to ensure that the scroll snap feature is fully tested.

These changes involve:
1. Make sure the WheelEventTestTrigger object is properly relayed to the scrolling thread so that scroll animations driven on the scrolling thread also block test runs.
2. Add new scroll-snap tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090840</commentid>
    <comment_count>1</comment_count>
      <attachid>252161</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-01 11:53:42 -0700</bug_when>
    <thetext>Created attachment 252161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090961</commentid>
    <comment_count>2</comment_count>
      <attachid>252193</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-01 16:31:27 -0700</bug_when>
    <thetext>Created attachment 252193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090971</commentid>
    <comment_count>3</comment_count>
      <attachid>252193</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-01 16:41:46 -0700</bug_when>
    <thetext>Comment on attachment 252193
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h:34
&gt; +#include &lt;wtf/RefPtr.h&gt;

Not needed.

&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h:110
&gt;      bool m_requestedScrollPositionRepresentsProgrammaticScroll;
&gt; +    bool m_expectsWheelEventTestTrigger;

Might as well convert these to C++11 initializersL m_expectsWheelEventTestTrigger { false };

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:105
&gt; +    virtual void deferTestsForReason(WheelEventTestTrigger::ScrollableAreaIdentifier, WheelEventTestTrigger::DeferTestTriggerReason) { /* Do nothing */ }
&gt; +    virtual void removeTestDeferralForReason(WheelEventTestTrigger::ScrollableAreaIdentifier, WheelEventTestTrigger::DeferTestTriggerReason) { /* Do nothing */ }

No need for &quot;/* Do nothing */&quot;.

&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:107
&gt; +    bool m_expectsWheelEventTestTrigger;

m_expectsWheelEventTestTrigger { false };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090978</commentid>
    <comment_count>4</comment_count>
      <attachid>252193</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-01 16:49:31 -0700</bug_when>
    <thetext>Comment on attachment 252193
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h:34
&gt;&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; 
&gt; Not needed.

I&apos;ll remove it.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h:110
&gt;&gt; +    bool m_expectsWheelEventTestTrigger;
&gt; 
&gt; Might as well convert these to C++11 initializersL m_expectsWheelEventTestTrigger { false };

OK.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingTree.h:105
&gt;&gt; +    virtual void removeTestDeferralForReason(WheelEventTestTrigger::ScrollableAreaIdentifier, WheelEventTestTrigger::DeferTestTriggerReason) { /* Do nothing */ }
&gt; 
&gt; No need for &quot;/* Do nothing */&quot;.

OK!

&gt;&gt; Source/WebCore/page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:107
&gt;&gt; +    bool m_expectsWheelEventTestTrigger;
&gt; 
&gt; m_expectsWheelEventTestTrigger { false };

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090989</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-01 17:10:48 -0700</bug_when>
    <thetext>New scroll snap tests are under Bug 142358.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090999</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-05-01 17:40:51 -0700</bug_when>
    <thetext>Committed r183702: &lt;http://trac.webkit.org/changeset/183702&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252161</attachid>
            <date>2015-05-01 11:53:42 -0700</date>
            <delta_ts>2015-05-01 16:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144482-20150501115230.patch</filename>
            <type>text/plain</type>
            <size>11668</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzY4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTAxICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEV4cGFuZCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHN1cHBvcnQgc2Nyb2xsaW5nIHRlc3RzIChQYXJ0IDQpOiBTY3JvbGwgU25h
cCBTdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQ0ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgdGVzdHMgd2lsbCBiZSBsYW5kZWQgaW4gYSBzZWNvbmQgcGF0Y2guCisKKyAgICAgICAg
VGhlIG5ldyBXaGVlbEV2ZW50VGVzdFRyaWdnZXJzIGRvIG5vdCB3b3JrIHByb3Blcmx5IHdpdGgg
c2Nyb2xsIHNuYXAgcG9pbnRzLCBiZWNhdXNlIHNvbWUgdGVzdCBkZWZlcnJhbCBub3RpZmljYXRp
b25zCisgICAgICAgIG5lZWQgdG8gYmUgdHJpZ2dlcmVkIGZvciBzdGF0ZSBjaGFuZ2VzIG9uIHRo
ZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlzIHJlcXVpcmVkIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoK
KyAgICAgICAgMS4gVGhlIFdoZWVsRXZlbnRUZXN0VHJpZ2dlciBSZWZQdHIgbmVlZGVkIHRvIGJl
IHByb3BhZ2F0ZWQgdG8gdGhlIHNjcm9sbGluZyB0aHJlYWQgc28gdGhhdCB0ZXN0cyBjb3VsZCBi
ZSBoZWxkCisgICAgICAgICAgIHVudGlsIFNjcm9sbGluZyB0aHJlYWQgcnViYmVyYmFuZCBvciBz
Y3JvbGwtc25hcCBhbmltYXRpb25zIGhhZCBjb21wbGV0ZWQuCisgICAgICAgIDIuIFRoZSBTY3Jv
bGxpbmdOb2RlSUQgbmVlZGVkIHRvIGJlIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIGFuZCBjbGVhcmlu
ZyBkZWZlcnJhbHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3I6OmZyYW1lVmlld0xheW91dFVwZGF0ZWQpOiBNYWtlIHN1cmUgdGhhdCB0aGUgV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyCisgICAgICAgIGlzIGFkZGVkIHRvIHRoZSBTY3JvbGxpbmdTdGF0ZVRyZWUg
c28gaXQgY2FuIGJlIHVzZWQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIE9ubHkgZG8gdGhpcyBp
ZiB3ZSBhcmUgcnVubmluZworICAgICAgICBpbiB0ZXN0aW5nIG1vZGUuCisgICAgICAgIChXZWJD
b3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVy
QXN5bmNTY3JvbGwpOiBUaGUgc2Nyb2xsaW5nTm9kZUlEIHNob3VsZCBiZQorICAgICAgICB1c2Vk
IGFzIHRoZSBpZGVudGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbiwgbm90IHRoZSBwYWdlLgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZSk6IFdoZW4gY2xvbmluZyB0aGUgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLAorICAgICAgICBtYWtlIHN1cmUgdG8gaW5jbHVkZSBhIHJlZmVyZW5jZSB0byB0aGUg
V2hlZWxFdmVudFRlc3RUcmlnZ2VyICh3aGljaCBtYXkgYmUgbnVsbCkuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cik6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2Rl
Ojp0ZXN0VHJpZ2dlcik6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp0ZXN0VHJpZ2dlcik6
IFByb3ZpZGUgYW4gYWNjZXNzb3Igc28gdGhhdCB0aGUgU2Nyb2xsQ29udHJvbGxlciBjYW4gbm90
aWZ5CisgICAgICAgIHRoZSBXaGVlbEV2ZW50VGVzdFRyaWdnZXIgb2Ygc3RhdGUgY2hhbmdlcyBk
dXJpbmcgc25hcCBhbmQgcnViYmVyYmFuZCBldmVudHMgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQu
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp1
cGRhdGVCZWZvcmVDaGlsZHJlbik6IElmIHRoZSBXaGVlbEV2ZW50VGVzdFRyaWdnZXIgaGFzIGNo
YW5nZWQsIHVwZGF0ZQorICAgICAgICB0aGUgc2Nyb2xsaW5nIHRocmVhZCBzdGF0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQpOiBOb3RpZnkgdGhlIFdoZWVsRXZlbnRUZXN0VHJpZ2dlciB0aGF0IGl0IHNob3Vs
ZCB3YWl0CisgICAgICAgIHVudGlsIHRoZSBzY3JvbGxpbmcgdGhyZWFkIHN5bmNzIHdpdGggdGhl
IG1haW4gdGhyZWFkIGJlZm9yZSBydW5uaW5nIHRlc3RzLCB1bmxlc3MgdGhlIHdoZWVsIGV2ZW50
IGlzIGhhbmRsZWQKKyAgICAgICAgdmlhIHRoZSBzeW5jaHJvbm91cyBjb2RlIHBhdGguCisKIDIw
MTUtMDUtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBBUEkgdG8gZGlzYWJsZSBtZXRhIHJlZnJlc2hlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCShyZXZpc2lvbiAxODM2ODIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9B
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0
NywxMiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmllCiAgICAgICAg
IHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwgU2Nyb2xsRXZl
bnRBeGlzOjpWZXJ0aWNhbCwgKnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZVZpZXcuZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKHBhZ2UgJiYgcGFnZS0+ZXhw
ZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQorICAgICAgICBub2RlLT5zZXRXaGVlbEV2ZW50VGVz
dFRyaWdnZXIocGFnZS0+dGVzdFRyaWdnZXIoKSk7CisjZW5kaWYKKwogICAgIFNjcm9sbGFibGVB
cmVhUGFyYW1ldGVycyBzY3JvbGxQYXJhbWV0ZXJzOwogICAgIHNjcm9sbFBhcmFtZXRlcnMuaG9y
aXpvbnRhbFNjcm9sbEVsYXN0aWNpdHkgPSBmcmFtZVZpZXcuaG9yaXpvbnRhbFNjcm9sbEVsYXN0
aWNpdHkoKTsKICAgICBzY3JvbGxQYXJhbWV0ZXJzLnZlcnRpY2FsU2Nyb2xsRWxhc3RpY2l0eSA9
IGZyYW1lVmlldy52ZXJ0aWNhbFNjcm9sbEVsYXN0aWNpdHkoKTsKQEAgLTM2MSw3ICszNjcsNyBA
QCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjCiAgICAgICAgIGlmICht
X3BhZ2UtPmV4cGVjdHNXaGVlbEV2ZW50VHJpZ2dlcnMoKSkgewogICAgICAgICAgICAgZnJhbWVW
aWV3LnNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKG1fcGFnZS0+dGVz
dFRyaWdnZXIoKSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgYXV0byYgdHJpZ2dlciA9IG1fcGFn
ZS0+dGVzdFRyaWdnZXIoKSkKLSAgICAgICAgICAgICAgICB0cmlnZ2VyLT5yZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNj
cm9sbGFibGVBcmVhSWRlbnRpZmllcj4obV9wYWdlKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpT
Y3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKKyAgICAgICAgICAgICAgICB0cmlnZ2VyLT5yZW1v
dmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRy
aWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4oc2Nyb2xsaW5nTm9kZUlEKSwgV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKICAgICAgICAgfQog
I2VuZGlmCiAgICAgICAgIApAQCAtMzgwLDcgKzM4Niw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlU2MKICAgICAgICAgaWYgKG1fcGFnZS0+ZXhwZWN0c1doZWVsRXZl
bnRUcmlnZ2VycygpKSB7CiAgICAgICAgICAgICBmcmFtZVZpZXcuc2Nyb2xsQW5pbWF0b3IoKS5z
ZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIobV9wYWdlLT50ZXN0VHJpZ2dlcigpKTsKICAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT50ZXN0VHJpZ2dlcigpKQotICAg
ICAgICAgICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihyZWludGVy
cHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
PihtX3BhZ2UpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVk
ZWQpOworICAgICAgICAgICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNv
bihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJ
ZGVudGlmaWVyPihzY3JvbGxpbmdOb2RlSUQpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9s
bGluZ1RocmVhZFN5bmNOZWVkZWQpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDE4MzY4MikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU0LDYgKzU0LDggQEAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3Jv
bGxpbmdTdAogICAgICwgbV9zY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMoc3RhdGVOb2RlLnNjcm9s
bGFibGVBcmVhUGFyYW1ldGVycygpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJl
cHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoc3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0
aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKQogeworICAgIGlmIChoYXNDaGFuZ2Vk
UHJvcGVydHkoV2hlZWxFdmVudFRlc3RUcmlnZ2VyUHRyKSkKKyAgICAgICAgbV93aGVlbEV2ZW50
VGVzdFRyaWdnZXIgPSBzdGF0ZU5vZGUubV93aGVlbEV2ZW50VGVzdFRyaWdnZXI7CiB9CiAKIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6flNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSgp
CkBAIC0xNDEsNiArMTQzLDEyIEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpz
ZXRSZXEKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24pOwog
fQogCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0V2hlZWxFdmVudFRlc3RU
cmlnZ2VyKFJlZlB0cjxXaGVlbEV2ZW50VGVzdFRyaWdnZXI+JiYgdGVzdFRyaWdnZXIpCit7Cisg
ICAgbV93aGVlbEV2ZW50VGVzdFRyaWdnZXIgPSB0ZXN0VHJpZ2dlcjsKKyAgICBzZXRQcm9wZXJ0
eUNoYW5nZWQoV2hlZWxFdmVudFRlc3RUcmlnZ2VyUHRyKTsKK30KKwogdm9pZCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdAogewogICAgIGlmIChtX3Njcm9sbFBvc2l0aW9uICE9IEZsb2F0UG9pbnQoKSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDE4MzY4MikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5n
U3RhdGVOb2RlLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDYgKzUzLDcg
QEAgcHVibGljOgogICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMsCiAgICAgICAgIFZlcnRp
Y2FsU25hcE9mZnNldHMsCiAjZW5kaWYKKyAgICAgICAgV2hlZWxFdmVudFRlc3RUcmlnZ2VyUHRy
LAogICAgIH07CiAKICAgICBjb25zdCBGbG9hdFNpemUmIHNjcm9sbGFibGVBcmVhU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWFTaXplOyB9CkBAIC04Miw3ICs4NSwxMCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgRmxvYXRQb2ludCYgcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uOyB9CiAgICAgYm9vbCByZXF1
ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Nj
cm9sbDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b24oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgcmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCk7
Ci0gICAgCisKKyAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RUcmlnZ2VyPiB0ZXN0VHJpZ2dlcigp
IGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIoUmVmUHRyPFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcj4mJik7CisKICAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVh
bSYsIGludCBpbmRlbnQpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgpAQCAtMTAx
LDYgKzEwNyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPGZsb2F0PiBtX3ZlcnRpY2FsU25hcE9m
ZnNldHM7CiAjZW5kaWYKICAgICBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnMgbV9zY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnM7CisgICAgUmVmUHRyPFdoZWVsRXZlbnRUZXN0VHJpZ2dlcj4gbV93aGVl
bEV2ZW50VGVzdFRyaWdnZXI7CiAgICAgYm9vbCBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVw
cmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbDsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMTgzNjgyKQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBpc0FscmVhZHlQaW5uZWRJbkRpcmVjdGlvbk9mR2VzdHVyZShjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmLCBTY3JvbGxFdmVudEF4aXMpOwogCisgICAgV2hlZWxFdmVudFRlc3RUcmlnZ2VyKiB0
ZXN0VHJpZ2dlcigpIGNvbnN0IG92ZXJyaWRlOworCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05B
UCkgJiYgUExBVEZPUk0oTUFDKQogICAgIExheW91dFVuaXQgc2Nyb2xsT2Zmc2V0T25BeGlzKFNj
cm9sbEV2ZW50QXhpcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxP
bkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgb3ZlcnJpZGU7CkBAIC05OCw2ICsx
MDAsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX2Zvb3RlckxheWVyOwog
ICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYWludGVyPiBtX3ZlcnRpY2FsU2Nyb2xsYmFyUGFpbnRl
cjsKICAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
UGFpbnRlcjsKKyAgICBSZWZQdHI8V2hlZWxFdmVudFRlc3RUcmlnZ2VyPiBtX3doZWVsRXZlbnRU
ZXN0VHJpZ2dlcjsKICAgICBGbG9hdFBvaW50IG1fcHJvYmFibGVNYWluVGhyZWFkU2Nyb2xsUG9z
aXRpb247CiAgICAgYm9vbCBtX2xhc3RTY3JvbGxIYWRVbmZpbGxlZFBpeGVsczsKICAgICBib29s
IG1faGFkRmlyc3RVcGRhdGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZU1hYy5tbQkocmV2aXNpb24gMTgzNjgyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTY3LDYgKzY3LDExIEBAIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVNYWM6On5TY3IKIHsKIH0KIAorV2hlZWxFdmVudFRlc3RUcmlnZ2VyKiBTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlTWFjOjp0ZXN0VHJpZ2dlcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyLmdldCgpOworfQorCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKIHN0YXRpYyBpbmxpbmUgVmVjdG9yPExheW91dFVuaXQ+IGNvbnZlcnRUb0xheW91
dFVuaXRzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHNuYXBPZmZzZXRzQXNGbG9hdCkKIHsKQEAgLTEz
OSw2ICsxNDQsOSBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6CiAg
ICAgICAgIG1fc2Nyb2xsQ29udHJvbGxlci51cGRhdGVTY3JvbGxTbmFwUG9pbnRzKFNjcm9sbEV2
ZW50QXhpczo6VmVydGljYWwsIGNvbnZlcnRUb0xheW91dFVuaXRzKHNjcm9sbGluZ1N0YXRlTm9k
ZS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkpKTsKICNlbmRpZgogCisgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpX
aGVlbEV2ZW50VGVzdFRyaWdnZXJQdHIpKQorICAgICAgICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dl
ciA9IHNjcm9sbGluZ1N0YXRlTm9kZS50ZXN0VHJpZ2dlcigpOworICAgIAogICAgIG1faGFkRmly
c3RVcGRhdGUgPSB0cnVlOwogfQogCkBAIC0xNzIsNiArMTgwLDE1IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgW21faG9yaXpvbnRhbFNjcm9sbGJh
clBhaW50ZXIgc2V0VXNlUHJlc2VudGF0aW9uVmFsdWU6Tk9dOwogICAgIH0KIAorI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykKKyAgICBpZiAobV93
aGVlbEV2ZW50VGVzdFRyaWdnZXIpIHsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1RyZWUoKS5zaG91
bGRIYW5kbGVXaGVlbEV2ZW50U3luY2hyb25vdXNseSh3aGVlbEV2ZW50KSkKKyAgICAgICAgICAg
IG1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyLT5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24ocmVp
bnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRp
Zmllcj4oc2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGlu
Z1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3doZWVsRXZl
bnRUZXN0VHJpZ2dlci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihzY3JvbGxpbmdOb2Rl
SUQoKSksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7
CisgICAgfQorI2VuZGlmCisKICAgICBtX3Njcm9sbENvbnRyb2xsZXIuaGFuZGxlV2hlZWxFdmVu
dCh3aGVlbEV2ZW50KTsKICAgICBzY3JvbGxpbmdUcmVlKCkuc2V0T3JDbGVhckxhdGNoZWROb2Rl
KHdoZWVsRXZlbnQsIHNjcm9sbGluZ05vZGVJRCgpKTsKICAgICBzY3JvbGxpbmdUcmVlKCkuaGFu
ZGxlV2hlZWxFdmVudFBoYXNlKHdoZWVsRXZlbnQucGhhc2UoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252193</attachid>
            <date>2015-05-01 16:31:27 -0700</date>
            <delta_ts>2015-05-01 16:41:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144482-20150501163015.patch</filename>
            <type>text/plain</type>
            <size>32158</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBACisyMDE1LTA1LTAxICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIEV4cGFuZCB0ZXN0IGluZnJh
c3RydWN0dXJlIHRvIHN1cHBvcnQgc2Nyb2xsaW5nIHRlc3RzIChQYXJ0IDQpOiBTY3JvbGwgU25h
cCBTdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQ0ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgdGVzdHMgd2lsbCBiZSBsYW5kZWQgaW4gYSBzZWNvbmQgcGF0Y2guCisKKyAgICAgICAg
VGhlIG5ldyBXaGVlbEV2ZW50VGVzdFRyaWdnZXJzIGRvIG5vdCB3b3JrIHByb3Blcmx5IHdpdGgg
c2Nyb2xsIHNuYXAgcG9pbnRzLCBiZWNhdXNlIHNvbWUgdGVzdCBkZWZlcnJhbCBub3RpZmljYXRp
b25zCisgICAgICAgIG5lZWQgdG8gYmUgdHJpZ2dlcmVkIGZvciBzdGF0ZSBjaGFuZ2VzIG9uIHRo
ZSBzY3JvbGxpbmcgdGhyZWFkLiBUaGlzIHJlcXVpcmVkIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoK
KyAgICAgICAgMS4gQSBmbGFnIGluZGljYXRpbmcgdGhhdCB3ZSB3YW50IHRvIGtub3cgYWJvdXQg
V2hlZWxFdmVudCBzdGF0ZSBjaGFuZ2VzIG5lZWRlZCB0byBiZSBwcm9wYWdhdGVkIHRvIHRoZSBz
Y3JvbGxpbmcgdGhyZWFkLAorICAgICAgICAgICBzbyB0aGF0IHRlc3RzIGNvdWxkIGJlIGRlZmVy
cmVkIHVudGlsIFNjcm9sbGluZyB0aHJlYWQgcnViYmVyYmFuZCBvciBzY3JvbGwtc25hcCBhbmlt
YXRpb25zIGhhZCBjb21wbGV0ZWQuCisgICAgICAgIDIuIFRoZSBTY3JvbGxpbmdOb2RlSUQgbmVl
ZGVkIHRvIGJlIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIGFuZCBjbGVhcmluZyBkZWZlcnJhbHMuCisg
ICAgICAgIDMuIFRoZSBzY3JvbGxpbmcgdGhyZWFkIG5lZWRlZCBhIHdheSB0byBkaXNwYXRjaCBt
ZXNzYWdlcyB0byB0aGUgbWFpbiB0aHJlYWQgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCAob3Ig
c2hvdWxkIG5vdCkKKyAgICAgICAgICAgZGVmZXIgdGVzdHMgZHVlIHRvIHNjcm9sbGluZyBhY3Rp
b25zLgorCisgICAgICAgIE5vdGUgdGhhdCBhIGZ1dHVyZSBwYXRjaCB3aWxsIGV4dGVuZCB0aGlz
IHN1cHBvcnQgdG8gaW5jbHVkZSB0aGUgUmVtb3RlU2Nyb2xsaW5nVHJlZS4KKworICAgICAgICAq
IHBhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6IEFkZGVkIHNvbWUgbG9nZ2lu
ZyBmZWF0dXJlcy4KKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6cmVt
b3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpkdW1w
U3RhdGUpOiBIZWxwZXIgZnVuY3Rpb24gZm9yIGxvZ2dpbmcgdGVzdCBkZWZlcnJhbCBzdGF0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RUaW1l
ckZpcmVkKTogQWRkZWQgc29tZSBsb2dnaW5nIGZlYXR1cmVzLgorICAgICAgICAqIHBhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3TGF5b3V0VXBkYXRlZCk6IE1ha2Ug
c3VyZSB0aGF0IHRoZSBzY3JvbGxpbmcgdGhyZWFkIGlzCisgICAgICAgIHRvbGQgdGhhdCBpdCBu
ZWVkcyB0byBzZW5kIHNjcm9sbGluZyBzdGF0ZSBiYWNrIHRvIHRoZSBtYWluIHRocmVhZC4gT25s
eSBkbyB0aGlzIGlmIHdlIGFyZSBpbiB0ZXN0aW5nIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGwpOiBUaGUgc2Nyb2xsaW5nTm9kZUlEIHNob3VsZCBiZQorICAgICAgICB1c2VkIGFzIHRo
ZSBpZGVudGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbiwgbm90IHRoZSBwYWdlIGFkZHJlc3MuCisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpkZWZlclRlc3RzRm9y
UmVhc29uKTogQWRkZWQuIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIHNjcm9sbGluZyB0aHJl
YWQKKyAgICAgICAgYW5kIG5vdGlmaWVzIHRoZSB0ZXN0aW5nIGluZnJhc3RydWN0dXJlLgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlVGVzdERlZmVy
cmFsRm9yUmVhc29uKTogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSk6IFdoZW4gY2xvbmluZyB0
aGUgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLAorICAgICAgICBpbmNsdWRlIHRoZSB0ZXN0
aW5nIG1vZGUgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OnNldEV4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXIpOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6ZXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlcik6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmRlZmVyVGVzdHNGb3JSZWFz
b24pOiBBZGRlZCBzdHViLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6cmVtb3Zl
VGVzdERlZmVycmFsRm9yUmVhc29uKTogRGl0dG8uCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
VGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVkU2Ny
b2xsaW5nVHJlZTo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6IEFkZGVkLiBEaXNwYXRjaGVzIG1lc3Nh
Z2VzIGZyb20gdGhlIHNjcm9sbGluZyB0aHJlYWQgdG8gdGhlCisgICAgICAgIG1haW4gdGhyZWFk
LgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpyZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24pOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9UaHJlYWRl
ZFNjcm9sbGluZ1RyZWUuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6U2Nyb2xsaW5nVHJlZUZyYW1l
U2Nyb2xsaW5nTm9kZU1hYyk6IEluaXRpYWxpemUgdGVzdGluZyBzdGF0ZSBmbGFnLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6dXBkYXRlQmVm
b3JlQ2hpbGRyZW4pOiBJZiB0aGUgJ0V4cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXInIGZsYWcg
aXMKKyAgICAgICAgc2V0LCB1cGRhdGUgbG9jYWwgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpoYW5kbGVXaGVlbEV2ZW50KTogSWYg
d2UgYXJlIHRlc3RpbmcsIGFuZCB0aGUgd2hlZWwgZXZlbnQgc2hvdWxkIGJlIGhhbmRsZWQKKyAg
ICAgICAgYXN5bmNocm9ub3VzbHksIHRlbGwgdGhlIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgd2Ug
bmVlZCB0byB3YWl0IGZvciB0aGUgdGhyZWFkIHN0YXRlIHRvIHN5bmMuCisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOjpkZWZlclRlc3RzRm9yUmVh
c29uKTogQWRkZWQuIE5vdGlmaWVzIHRlc3Qgc3lzdGVtIHdlIG5lZWQgdG8gZGVmZXIgdGVzdHMK
KyAgICAgICAgdW50aWwgd2Ugbm90aWZ5IHRoZW0uIEFsc28gdXNlZCBieSB0aGUgU2Nyb2xsQ29u
dHJvbGxlciBkdXJpbmcgYW5pbWF0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbik6IERp
dHRvLgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6ZGVm
ZXJUZXN0c0ZvclJlYXNvbik6IEFkZGVkLiBVc2VkIGJ5IFNjcm9sbENvbnRyb2xsZXIgZHVyaW5n
IGFuaW1hdGlvbi4gVGhpcyB1cGRhdGVzIHRoZQorICAgICAgICB0ZXN0aW5nIGluZnJhc3RydWN0
dXJlIGRpcmVjdGx5LCBzaW5jZSBpdCBpcyBydW5uaW5nIGluIHRoZSBzYW1lIHByb2Nlc3MgYW5k
IG1haW4gdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnJlbW92ZVRl
c3REZWZlcnJhbEZvclJlYXNvbik6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJvbGxlckNsaWVudDo6ZGVmZXJUZXN0c0ZvclJl
YXNvbik6IENoYW5nZSBjbGllbnQgQVBJLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQ29udHJv
bGxlckNsaWVudDo6cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxDb250cm9sbGVyQ2xpZW50Ojp0ZXN0VHJpZ2dlcik6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U25hcFJ1YmJlcmJhbmRUaW1lcik6IFVz
ZSBuZXcgY2xpZW50IEFQSS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbENvbnRyb2xsZXI6OnN0
b3BTbmFwUnViYmVyYmFuZFRpbWVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxD
b250cm9sbGVyOjpzdGFydFNjcm9sbFNuYXBUaW1lcik6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQ29udHJvbGxlcjo6c3RvcFNjcm9sbFNuYXBUaW1lcik6IERpdHRvLgorCiAyMDE1
LTA1LTAxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTgzNjg3LgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcAkocmV2aXNpb24gMTgzNjg0KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSwxMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldo
ZWVsRXZlbnRUZXN0VHJpZ2dlci5oIgogCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorCisjaWYgIUxP
R19ESVNBQkxFRAorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBX
aGVlbEV2ZW50VGVzdFRyaWdnZXI6OldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCkBAIC02Miw2ICs2
OSw3IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpkZWZlclRlc3RzRm8KICAgICBpZiAo
aXQgPT0gbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5lbmQoKSkKICAgICAgICAgaXQgPSBtX2Rl
ZmVyVGVzdFRyaWdnZXJSZWFzb25zLmFkZChpZGVudGlmaWVyLCBzdGQ6OnNldDxEZWZlclRlc3RU
cmlnZ2VyUmVhc29uPigpKS5pdGVyYXRvcjsKICAgICAKKyAgICBMT0coV2hlZWxFdmVudFRlc3RU
cmlnZ2VycywgIiAgICAgICg9KSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OmRlZmVyVGVzdHNGb3JS
ZWFzb246IGlkPSVwLCByZWFzb249JWQiLCBpZGVudGlmaWVyLCByZWFzb24pOwogICAgIGl0LT52
YWx1ZS5pbnNlcnQocmVhc29uKTsKIH0KIApAQCAtNzIsMjAgKzgwLDQzIEBAIHZvaWQgV2hlZWxF
dmVudFRlc3RUcmlnZ2VyOjpyZW1vdmVUZXN0RGUKICAgICBpZiAoaXQgPT0gbV9kZWZlclRlc3RU
cmlnZ2VyUmVhc29ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgTE9HKFdoZWVsRXZl
bnRUZXN0VHJpZ2dlcnMsICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpyZW1vdmVU
ZXN0RGVmZXJyYWxGb3JSZWFzb246IGlkPSVwLCByZWFzb249JWQiLCBpZGVudGlmaWVyLCByZWFz
b24pOwogICAgIGl0LT52YWx1ZS5lcmFzZShyZWFzb24pOwogICAgIAogICAgIGlmIChpdC0+dmFs
dWUuZW1wdHkoKSkKICAgICAgICAgbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5yZW1vdmUoaXQp
OwogfQogCisjaWYgIUxPR19ESVNBQkxFRAorc3RhdGljIHZvaWQgZHVtcFN0YXRlKFdURjo6SGFz
aE1hcDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgc3Rk
OjpzZXQ8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uPj4gcmVh
c29ucykKK3sKKyAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6ZHVtcFN0YXRlOiIpOworICAgIGZvciAoY29uc3QgYXV0byYgc2Nyb2xsUmVn
aW9uIDogcmVhc29ucykgeworICAgICAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAg
IEZvciBzY3JvbGwgcmVnaW9uICVwIiwgc2Nyb2xsUmVnaW9uLmtleSk7CisgICAgICAgIFN0cmlu
Z0J1aWxkZXIgcmVhc29uczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWFzb24gOiBzY3Jv
bGxSZWdpb24udmFsdWUpIHsKKyAgICAgICAgICAgIGlmICghcmVhc29ucy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgcmVhc29ucy5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICByZWFzb25z
LmFwcGVuZChTdHJpbmc6Om51bWJlcihyZWFzb24pKTsKKyAgICAgICAgfQorICAgICAgICBMT0co
V2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgICAgUmVhc29uczogJXMiLCByZWFzb25zLnRvU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgfQorfQorI2VuZGlmCisgICAgCiB2b2lkIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6dHJpZ2dlclRlc3RUaW1lckZpcmVkKCkKIHsKICAgICBzdGQ6OmZ1
bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb25DYWxsYmFjazsKIAogICAgIHsKICAgICAgICAgc3RkOjps
b2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV90ZXN0VHJpZ2dlck11dGV4KTsKLSAgICAgICAg
aWYgKCFtX2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFt
X2RlZmVyVGVzdFRyaWdnZXJSZWFzb25zLmlzRW1wdHkoKSkgeworI2lmICFMT0dfRElTQUJMRUQK
KyAgICAgICAgICAgIGlmIChpc0xvZ0NoYW5uZWxFbmFibGVkKCJXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIiKSkKKyAgICAgICAgICAgICAgICBkdW1wU3RhdGUobV9kZWZlclRlc3RUcmlnZ2VyUmVhc29u
cyk7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGZ1
bmN0aW9uQ2FsbGJhY2sgPSBXVEY6Om1vdmUobV90ZXN0Tm90aWZpY2F0aW9uQ2FsbGJhY2spOwog
ICAgICAgICBtX3Rlc3ROb3RpZmljYXRpb25DYWxsYmFjayA9IHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PigpOwpAQCAtOTMsNiArMTI0LDcgQEAgdm9pZCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdn
ZXJUZXN0VAogCiAgICAgbV90ZXN0VHJpZ2dlclRpbWVyLnN0b3AoKTsKIAorICAgIExPRyhXaGVl
bEV2ZW50VGVzdFRyaWdnZXJzLCAiICBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdnZXJUZXN0
VGltZXJGaXJlZDogRklSSU5HIFRFU1QiKTsKICAgICBpZiAoZnVuY3Rpb25DYWxsYmFjaykKICAg
ICAgICAgZnVuY3Rpb25DYWxsYmFjaygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJ
KHJldmlzaW9uIDE4MzY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5j
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJH
cmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1haW5GcmFt
ZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgpAQCAt
MTQ3LDYgKzE0OCwxNCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
CiAgICAgICAgIHNldFN0YXRlU2Nyb2xsaW5nTm9kZVNuYXBPZmZzZXRzQXNGbG9hdCgqbm9kZSwg
U2Nyb2xsRXZlbnRBeGlzOjpWZXJ0aWNhbCwgKnZlcnRpY2FsU25hcE9mZnNldHMsIG1fcGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IFBhZ2UqIHBhZ2UgPSBmcmFtZVZpZXcuZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKHBhZ2UgJiYg
cGFnZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKSB7CisgICAgICAgIExPRyhXaGVlbEV2
ZW50VGVzdFRyaWdnZXJzLCAiICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0xheW91dFVwZGF0ZWQ6IEV4cGVjdHMgd2hlZWwgZXZlbnQgdGVzdCB0cmlnZ2VyPSVkIiwgcGFn
ZS0+ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKTsKKyAgICAgICAgbm9kZS0+c2V0RXhwZWN0
c1doZWVsRXZlbnRUZXN0VHJpZ2dlcihwYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkp
OworICAgIH0KKyNlbmRpZgorCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzIHNjcm9sbFBh
cmFtZXRlcnM7CiAgICAgc2Nyb2xsUGFyYW1ldGVycy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0
eSA9IGZyYW1lVmlldy5ob3Jpem9udGFsU2Nyb2xsRWxhc3RpY2l0eSgpOwogICAgIHNjcm9sbFBh
cmFtZXRlcnMudmVydGljYWxTY3JvbGxFbGFzdGljaXR5ID0gZnJhbWVWaWV3LnZlcnRpY2FsU2Ny
b2xsRWxhc3RpY2l0eSgpOwpAQCAtMzYxLDcgKzM3MCw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6dXBkYXRlU2MKICAgICAgICAgaWYgKG1fcGFnZS0+ZXhwZWN0c1doZWVsRXZl
bnRUcmlnZ2VycygpKSB7CiAgICAgICAgICAgICBmcmFtZVZpZXcuc2Nyb2xsQW5pbWF0b3IoKS5z
ZXRXaGVlbEV2ZW50VGVzdFRyaWdnZXIobV9wYWdlLT50ZXN0VHJpZ2dlcigpKTsKICAgICAgICAg
ICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT50ZXN0VHJpZ2dlcigpKQotICAg
ICAgICAgICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihyZWludGVy
cHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
PihtX3BhZ2UpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVk
ZWQpOworICAgICAgICAgICAgICAgIHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNv
bihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJ
ZGVudGlmaWVyPihzY3JvbGxpbmdOb2RlSUQpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9s
bGluZ1RocmVhZFN5bmNOZWVkZWQpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCkBAIC0z
ODAsNyArMzg5LDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTYwog
ICAgICAgICBpZiAobV9wYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpIHsKICAgICAg
ICAgICAgIGZyYW1lVmlldy5zY3JvbGxBbmltYXRvcigpLnNldFdoZWVsRXZlbnRUZXN0VHJpZ2dl
cihtX3BhZ2UtPnRlc3RUcmlnZ2VyKCkpOwogICAgICAgICAgICAgaWYgKGNvbnN0IGF1dG8mIHRy
aWdnZXIgPSBtX3BhZ2UtPnRlc3RUcmlnZ2VyKCkpCi0gICAgICAgICAgICAgICAgdHJpZ2dlci0+
cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG1fcGFnZSksIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CisgICAgICAgICAgICAgICAg
dHJpZ2dlci0+cmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hl
ZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05v
ZGVJRCksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7
CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTU1Miw2ICs1NjEsMzAgQEAgU3RyaW5nIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
IAorI2lmIFBMQVRGT1JNKENPQ09BKQordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpk
ZWZlclRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJp
Z2dlclJlYXNvbiByZWFzb24pIGNvbnN0Cit7CisgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+
ZXhwZWN0c1doZWVsRXZlbnRUcmlnZ2VycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
Y29uc3QgYXV0byYgdHJpZ2dlciA9IG1fcGFnZS0+dGVzdFRyaWdnZXIoKSkgeworICAgICAgICBM
T0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbjogRGVmZXJyaW5nICVwIGZvciByZWFzb24gJWQuIiwg
aWRlbnRpZmllciwgcmVhc29uKTsKKyAgICAgICAgdHJpZ2dlci0+ZGVmZXJUZXN0c0ZvclJlYXNv
bihpZGVudGlmaWVyLCByZWFzb24pOworICAgIH0KK30KKwordm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RU
cmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikgY29uc3QKK3sKKyAgICBpZiAo
IW1fcGFnZSB8fCAhbV9wYWdlLT5leHBlY3RzV2hlZWxFdmVudFRyaWdnZXJzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChjb25zdCBhdXRvJiB0cmlnZ2VyID0gbV9wYWdlLT50ZXN0VHJp
Z2dlcigpKSB7CisgICAgICAgIExPRyhXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCAiICAgICghKSBB
c3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb246IERl
ZmVycmluZyAlcCBmb3IgcmVhc29uICVkLiIsIGlkZW50aWZpZXIsIHJlYXNvbik7CisgICAgICAg
IHRyaWdnZXItPnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24p
OworICAgIH0KK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAkocmV2aXNp
b24gMTgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDYgKzU2LDExIEBAIHB1YmxpYzoKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVy
QXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBwcm9n
cmFtbWF0aWNTY3JvbGwsIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24pOwogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisgICAgdm9pZCBkZWZlclRlc3RzRm9yUmVhc29uKFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdn
ZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0OworICAgIHZvaWQgcmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNv
bnN0OworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yKFBhZ2UqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3Bw
CShyZXZpc2lvbiAxODM2ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBTY3Jv
bGxpbmdOb2RlVHlwZSBub2RlVHlwZSwgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNj
cm9sbGluZ1N0YXRlTm9kZShub2RlVHlwZSwgc3RhdGVUcmVlLCBub2RlSUQpCiAgICAgLCBtX3Jl
cXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbChmYWxzZSkK
KyAgICAsIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcihmYWxzZSkKIHsKIH0KIApAQCAt
NTMsNiArNTQsNyBAQCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAj
ZW5kaWYKICAgICAsIG1fc2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzKHN0YXRlTm9kZS5zY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnMoKSkKICAgICAsIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXBy
ZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKHN0YXRlTm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlv
blJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSkKKyAgICAsIG1fZXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcihzdGF0ZU5vZGUuZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcigpKQog
ewogfQogCkBAIC0xNDEsNiArMTQzLDE1IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpzZXRSZXEKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWQoUmVxdWVzdGVkU2Nyb2xsUG9zaXRp
b24pOwogfQogCit2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0RXhwZWN0c1do
ZWVsRXZlbnRUZXN0VHJpZ2dlcihib29sIGV4cGVjdHNUZXN0VHJpZ2dlcikKK3sKKyAgICBpZiAo
ZXhwZWN0c1Rlc3RUcmlnZ2VyID09IG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyID0gZXhw
ZWN0c1Rlc3RUcmlnZ2VyOworICAgIHNldFByb3BlcnR5Q2hhbmdlZChFeHBlY3RzV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKTsKK30KKwogdm9pZCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OmR1
bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25zdAogewogICAgIGlm
IChtX3Njcm9sbFBvc2l0aW9uICE9IEZsb2F0UG9pbnQoKSkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmgJKHJldmlzaW9uIDE4MzY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVOb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUxLDYgKzUyLDcg
QEAgcHVibGljOgogICAgICAgICBIb3Jpem9udGFsU25hcE9mZnNldHMsCiAgICAgICAgIFZlcnRp
Y2FsU25hcE9mZnNldHMsCiAjZW5kaWYKKyAgICAgICAgRXhwZWN0c1doZWVsRXZlbnRUZXN0VHJp
Z2dlciwKICAgICB9OwogCiAgICAgY29uc3QgRmxvYXRTaXplJiBzY3JvbGxhYmxlQXJlYVNpemUo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhU2l6ZTsgfQpAQCAtODIsNyArODQsMTAg
QEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHJlcXVlc3RlZFNjcm9sbFBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbjsgfQogICAgIGJvb2wg
cmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0
aWNTY3JvbGw7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIHJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3Jv
bGwpOwotICAgIAorCisgICAgYm9vbCBleHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkgY29u
c3QgeyByZXR1cm4gbV9leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyOyB9CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRFeHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKGJvb2wpOworCiAg
ICAgdmlydHVhbCB2b2lkIGR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBj
b25zdCBvdmVycmlkZTsKICAgICAKIHByb3RlY3RlZDoKQEAgLTEwMiw2ICsxMDcsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzIG1fc2Nyb2xsYWJsZUFy
ZWFQYXJhbWV0ZXJzOwogICAgIGJvb2wgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2Vu
dHNQcm9ncmFtbWF0aWNTY3JvbGw7CisgICAgYm9vbCBtX2V4cGVjdHNXaGVlbEV2ZW50VGVzdFRy
aWdnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCShyZXZpc2lvbiAxODM2ODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxF
dmVudC5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5h
dG9yLmgiCisjaW5jbHVkZSAiV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9U
aHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtMTAwLDYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICAK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFz
ZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZWZlclRl
c3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIHsgLyog
RG8gbm90aGluZyAqLyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRlc3REZWZlcnJhbEZvclJl
YXNvbihXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllciwgV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uKSB7IC8qIERvIG5vdGhp
bmcgKi8gfQogI2VuZGlmCiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4g
V2lsbCB1cGRhdGUgd2hhdCBlZGdlcyBhbGxvdyBydWJiZXItYmFuZGluZy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcAkocmV2aXNpb24gMTgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjIsNiArMTIyLDI5
IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpoYW5kbGVXaGVlbEUKICAgICAgICAgc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPmhhbmRsZVdoZWVsRXZlbnRQaGFzZShwaGFzZSk7CiAgICAgfSk7
CiB9CisKK3ZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpkZWZlclRlc3RzRm9yUmVhc29uKFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbiByZWFzb24pCit7
CisgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gc2Nyb2xsaW5nQ29vcmRpbmF0b3Ig
PSBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
c2Nyb2xsaW5nQ29vcmRpbmF0b3IsIGlkZW50aWZpZXIsIHJlYXNvbl0geworICAgICAgICBzY3Jv
bGxpbmdDb29yZGluYXRvci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24p
OworICAgIH0pOworfQorCit2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6cmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dl
clJlYXNvbiByZWFzb24pCit7CisgICAgaWYgKCFtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgUmVmUHRyPEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I+
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gbV9zY3JvbGxpbmdDb29yZGluYXRvcjsKKyAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW3Njcm9sbGluZ0Nvb3JkaW5hdG9yLCBpZGVudGlmaWVyLCBy
ZWFzb25dIHsKKyAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnJlbW92ZVRlc3REZWZlcnJh
bEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOworICAgIH0pOworfQorCiAjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmgJKHJldmlzaW9uIDE4MzY4NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTYxLDcgKzYxLDkgQEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2
b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24g
PSBTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbikgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oTUFD
KQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2
ZW50UGhhc2UpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmVyVGVzdHNGb3JSZWFz
b24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpT
Y3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0
VHJpZ2dlclJlYXNvbikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMTgzNjg0KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOSBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBpc0FscmVhZHlQaW5uZWRJbkRpcmVjdGlvbk9mR2VzdHVyZShjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxFdmVudEF4aXMpOwogCisgICAgdm9pZCBkZWZlclRl
c3RzRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlm
aWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZl
bnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRy
aWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkgJiYgUExBVEZPUk0oTUFDKQogICAgIExheW91dFVuaXQgc2Ny
b2xsT2Zmc2V0T25BeGlzKFNjcm9sbEV2ZW50QXhpcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgb3Zl
cnJpZGU7CkBAIC0xMDEsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fcHJv
YmFibGVNYWluVGhyZWFkU2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBtX2xhc3RTY3JvbGxIYWRV
bmZpbGxlZFBpeGVsczsKICAgICBib29sIG1faGFkRmlyc3RVcGRhdGU7CisgICAgYm9vbCBtX2V4
cGVjdHNXaGVlbEV2ZW50VGVzdFRyaWdnZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQkocmV2
aXNpb24gMTgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKSAmJiBQTEFURk9STShNQUMpCiAK
ICNpbXBvcnQgIkZyYW1lVmlldy5oIgorI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTlNT
Y3JvbGxlckltcERldGFpbHMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2lt
cG9ydCAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKQEAgLTYwLDYgKzYxLDcgQEAgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzo6U2NybwogICAgICwgbV9ob3Jpem9udGFsU2Nyb2xs
YmFyUGFpbnRlcigwKQogICAgICwgbV9sYXN0U2Nyb2xsSGFkVW5maWxsZWRQaXhlbHMoZmFsc2Up
CiAgICAgLCBtX2hhZEZpcnN0VXBkYXRlKGZhbHNlKQorICAgICwgbV9leHBlY3RzV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKGZhbHNlKQogewogfQogCkBAIC0xMzksNiArMTQxLDkgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjOgogICAgICAgICBtX3Njcm9sbENvbnRyb2xs
ZXIudXBkYXRlU2Nyb2xsU25hcFBvaW50cyhTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBjb252
ZXJ0VG9MYXlvdXRVbml0cyhzY3JvbGxpbmdTdGF0ZU5vZGUudmVydGljYWxTbmFwT2Zmc2V0cygp
KSk7CiAjZW5kaWYKIAorICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6RXhwZWN0c1doZWVsRXZlbnRUZXN0VHJp
Z2dlcikpCisgICAgICAgIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlciA9IHNjcm9sbGlu
Z1N0YXRlTm9kZS5leHBlY3RzV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCk7CisKICAgICBtX2hhZEZp
cnN0VXBkYXRlID0gdHJ1ZTsKIH0KIApAQCAtMTcyLDYgKzE3NywxNSBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6CiAgICAgICAgIFttX2hvcml6b250YWxTY3JvbGxi
YXJQYWludGVyIHNldFVzZVByZXNlbnRhdGlvblZhbHVlOk5PXTsKICAgICB9CiAKKyNpZiBFTkFC
TEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCisgICAgaWYgKG1f
ZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikgeworICAgICAgICBpZiAoc2Nyb2xsaW5nVHJl
ZSgpLnNob3VsZEhhbmRsZVdoZWVsRXZlbnRTeW5jaHJvbm91c2x5KHdoZWVsRXZlbnQpKQorICAg
ICAgICAgICAgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hl
ZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHNjcm9sbGluZ05v
ZGVJRCgpKSwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVk
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVmZXJUZXN0c0ZvclJlYXNvbihyZWludGVy
cHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVy
PihzY3JvbGxpbmdOb2RlSUQoKSksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsaW5nVGhy
ZWFkU3luY05lZWRlZCk7CisgICAgfQorI2VuZGlmCisKICAgICBtX3Njcm9sbENvbnRyb2xsZXIu
aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICBzY3JvbGxpbmdUcmVlKCkuc2V0T3JD
bGVhckxhdGNoZWROb2RlKHdoZWVsRXZlbnQsIHNjcm9sbGluZ05vZGVJRCgpKTsKICAgICBzY3Jv
bGxpbmdUcmVlKCkuaGFuZGxlV2hlZWxFdmVudFBoYXNlKHdoZWVsRXZlbnQucGhhc2UoKSk7CkBA
IC01NjEsNiArNTc1LDI0IEBAIGZsb2F0IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMKIH0KICNlbmRpZgogCit2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6
OmRlZmVyVGVzdHNGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJl
YUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RU
cmlnZ2VyUmVhc29uIHJlYXNvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fZXhwZWN0c1doZWVsRXZl
bnRUZXN0VHJpZ2dlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgTE9HKFdoZWVsRXZlbnRUZXN0
VHJpZ2dlcnMsICIgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWM6OmRlZmVyVGVz
dHNGb3JSZWFzb246IFNUQVJUSU5HIGRlZmVycmFsIGZvciAlcCBiZWNhdXNlIG9mICVkIiwgaWRl
bnRpZmllciwgcmVhc29uKTsKKyAgICBzY3JvbGxpbmdUcmVlKCkuZGVmZXJUZXN0c0ZvclJlYXNv
bihpZGVudGlmaWVyLCByZWFzb24pOworfQorICAgIAordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRl
c3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZXhwZWN0c1doZWVsRXZlbnRUZXN0VHJpZ2dlcikKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIExPRyhXaGVlbEV2ZW50VGVzdFRyaWdnZXJzLCAiICAgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYzo6ZGVmZXJUZXN0c0ZvclJlYXNvbjogRU5ESU5HIGRlZmVycmFs
IGZvciAlcCBiZWNhdXNlIG9mICVkIiwgaWRlbnRpZmllciwgcmVhc29uKTsKKyAgICBzY3JvbGxp
bmdUcmVlKCkucmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKGlkZW50aWZpZXIsIHJlYXNvbik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpICYmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvZ2dpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5n
LmgJKHJldmlzaW9uIDE4MzY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDMsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw2ICs3Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBNKFdlYkF1ZGlvKSBcCiAgICAgTShXZWJHTCkgXAog
ICAgIE0oV2ViUmVwbGF5KSBcCisgICAgTShXaGVlbEV2ZW50VGVzdFRyaWdnZXJzKSBcCiAKICNk
ZWZpbmUgREVDTEFSRV9MT0dfQ0hBTk5FTChuYW1lKSBcCiAgICAgV0VCQ09SRV9FWFBPUlQgZXh0
ZXJuIFdURkxvZ0NoYW5uZWwgSk9JTl9MT0dfQ0hBTk5FTF9XSVRIX1BSRUZJWChMT0dfQ0hBTk5F
TF9QUkVGSVgsIG5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFu
aW1hdG9yLmNwcAkocmV2aXNpb24gMTgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNCArMTkyLDIyIEBAIHZv
aWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXgKIH0KICNlbmRpZgogCisjaWYg
KEVOQUJMRShDU1NfU0NST0xMX1NOQVApIHx8IEVOQUJMRShSVUJCRVJfQkFORElORykpICYmIFBM
QVRGT1JNKE1BQykKK3ZvaWQgU2Nyb2xsQW5pbWF0b3I6OmRlZmVyVGVzdHNGb3JSZWFzb24oV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIgaWRlbnRpZmllciwg
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2VyUmVhc29uIHJlYXNvbikgY29u
c3QKK3sKKyAgICBpZiAoIW1fd2hlZWxFdmVudFRlc3RUcmlnZ2VyKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3doZWVsRXZlbnRUZXN0VHJpZ2dlci0+ZGVmZXJUZXN0c0ZvclJlYXNvbihpZGVu
dGlmaWVyLCByZWFzb24pOworfQorCit2b2lkIFNjcm9sbEFuaW1hdG9yOjpyZW1vdmVUZXN0RGVm
ZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50
aWZpZXIgaWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpEZWZlclRlc3RUcmlnZ2Vy
UmVhc29uIHJlYXNvbikgY29uc3QKK3sKKyAgICBpZiAoIW1fd2hlZWxFdmVudFRlc3RUcmlnZ2Vy
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV93aGVlbEV2ZW50VGVzdFRyaWdnZXItPnJl
bW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbihpZGVudGlmaWVyLCByZWFzb24pOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaAkocmV2aXNpb24gMTgzNjg0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTIxLDcgKzEyMSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0V2hlZWxFdmVudFRlc3RUcmlnZ2VyKFJlZlB0cjxXaGVl
bEV2ZW50VGVzdFRyaWdnZXI+JiYgdGVzdFRyaWdnZXIpIHsgbV93aGVlbEV2ZW50VGVzdFRyaWdn
ZXIgPSB0ZXN0VHJpZ2dlcjsgfQogI2lmIChFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSB8fCBFTkFC
TEUoUlVCQkVSX0JBTkRJTkcpKSAmJiBQTEFURk9STShNQUMpCi0gICAgV2hlZWxFdmVudFRlc3RU
cmlnZ2VyKiB0ZXN0VHJpZ2dlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmdldCgpOyB9CisgICAgdm9pZCBkZWZlclRlc3RzRm9yUmVhc29uKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVz
dFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Ny
b2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRy
aWdnZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkgJiYgUExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NvY29hL1Njcm9sbENvbnRyb2xsZXIuaAkocmV2aXNpb24gMTgzNjg0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAi
V2hlZWxFdmVudFRlc3RUcmlnZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNzYsNyArNzcsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIHBhZ2UgdG8gc2Nyb2xsIHRvIHRoZSBuZWFyZXN0IGJvdW5kYXJ5IHBvaW50LgogICAg
IHZpcnR1YWwgdm9pZCBhZGp1c3RTY3JvbGxQb3NpdGlvblRvQm91bmRzSWZOZWNlc3NhcnkoKSA9
IDA7CiAKLSAgICB2aXJ0dWFsIFdoZWVsRXZlbnRUZXN0VHJpZ2dlciogdGVzdFRyaWdnZXIoKSBj
b25zdCB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCB2b2lkIGRlZmVyVGVzdHNGb3JS
ZWFzb24oV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6RGVmZXJUZXN0VHJpZ2dlclJlYXNvbikgY29uc3QgeyAvKiBE
byBub3RoaW5nICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVGVzdERlZmVycmFsRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdFRyaWdnZXI6OkRlZmVyVGVzdFRyaWdnZXJSZWFzb24pIGNvbnN0IHsgLyogRG8g
bm90aGluZyAqLyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBQTEFURk9STShN
QUMpCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IHNjcm9sbE9mZnNldE9uQXhpcyhTY3JvbGxFdmVu
dEF4aXMpIGNvbnN0ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Nj
cm9sbENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQkocmV2aXNpb24gMTgzNjg0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvU2Nyb2xsQ29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDEzLDggKzQxMyw3IEBAIHZvaWQgU2Nyb2xsQ29udHJvbGxlcjo6c3RhcnRTbmFwUnViYmVy
YmEKICAgICBtX2NsaWVudC5zdGFydFNuYXBSdWJiZXJiYW5kVGltZXIoKTsKICAgICBtX3NuYXBS
dWJiZXJiYW5kVGltZXIuc3RhcnRSZXBlYXRpbmcoMS4wIC8gNjAuMCk7CiAKLSAgICBpZiAoYXV0
byogdHJpZ2dlciA9IG1fY2xpZW50LnRlc3RUcmlnZ2VyKCkpCi0gICAgICAgIHRyaWdnZXItPmRl
ZmVyVGVzdHNGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6
OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6
UnViYmVyYmFuZEluUHJvZ3Jlc3MpOworICAgIG1fY2xpZW50LmRlZmVyVGVzdHNGb3JSZWFzb24o
cmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6UnViYmVyYmFuZEluUHJvZ3Jl
c3MpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0b3BTbmFwUnViYmVyYmFuZFRpbWVy
KCkKQEAgLTQyMyw4ICs0MjIsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0b3BTbmFwUnVi
YmVyYmFuCiAgICAgbV9zbmFwUnViYmVyYmFuZFRpbWVyLnN0b3AoKTsKICAgICBtX3NuYXBSdWJi
ZXJiYW5kVGltZXJJc0FjdGl2ZSA9IGZhbHNlOwogICAgIAotICAgIGlmIChhdXRvKiB0cmlnZ2Vy
ID0gbV9jbGllbnQudGVzdFRyaWdnZXIoKSkKLSAgICAgICAgdHJpZ2dlci0+cmVtb3ZlVGVzdERl
ZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpT
Y3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlJ1
YmJlcmJhbmRJblByb2dyZXNzKTsKKyAgICBtX2NsaWVudC5yZW1vdmVUZXN0RGVmZXJyYWxGb3JS
ZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVB
cmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6UnViYmVyYmFuZElu
UHJvZ3Jlc3MpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnNuYXBSdWJiZXJCYW5kKCkK
QEAgLTYyNCw4ICs2MjIsNyBAQCB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25h
cFRpCiAgICAgaWYgKCFtX2hvcml6b250YWxTY3JvbGxTbmFwVGltZXIuaXNBY3RpdmUoKSAmJiAh
bV92ZXJ0aWNhbFNjcm9sbFNuYXBUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoYXV0byogdHJpZ2dlciA9IG1fY2xpZW50LnRlc3RUcmlnZ2VyKCkpCi0gICAgICAg
IHRyaWdnZXItPmRlZmVyVGVzdHNGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50
VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRU
ZXN0VHJpZ2dlcjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3MpOworICAgIG1fY2xpZW50LmRlZmVyVGVz
dHNGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xs
U25hcEluUHJvZ3Jlc3MpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6OnN0b3BTY3JvbGxT
bmFwVGltZXIoU2Nyb2xsRXZlbnRBeGlzIGF4aXMpCkBAIC02MzcsOCArNjM0LDcgQEAgdm9pZCBT
Y3JvbGxDb250cm9sbGVyOjpzdG9wU2Nyb2xsU25hcFRpbQogICAgIGlmIChtX2hvcml6b250YWxT
Y3JvbGxTbmFwVGltZXIuaXNBY3RpdmUoKSB8fCBtX3ZlcnRpY2FsU2Nyb2xsU25hcFRpbWVyLmlz
QWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiB0cmlnZ2VyID0gbV9j
bGllbnQudGVzdFRyaWdnZXIoKSkKLSAgICAgICAgdHJpZ2dlci0+cmVtb3ZlVGVzdERlZmVycmFs
Rm9yUmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpTY3JvbGxh
YmxlQXJlYUlkZW50aWZpZXI+KHRoaXMpLCBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbFNu
YXBJblByb2dyZXNzKTsKKyAgICBtX2NsaWVudC5yZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24o
cmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllcj4odGhpcyksIFdoZWVsRXZlbnRUZXN0VHJpZ2dlcjo6U2Nyb2xsU25hcEluUHJvZ3Jl
c3MpOwogfQogCiB2b2lkIFNjcm9sbENvbnRyb2xsZXI6Omhvcml6b250YWxTY3JvbGxTbmFwVGlt
ZXJGaXJlZCgpCg==
</data>
<flag name="review"
          id="277025"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>