<?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>90498</bug_id>
          
          <creation_ts>2012-07-03 14:48:58 -0700</creation_ts>
          <short_desc>add a setting to allow user to play a media by clicking on it</short_desc>
          <delta_ts>2012-07-24 10:34: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>Media</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>66687</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Min Qin">qinmin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>mfeil</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>662494</commentid>
    <comment_count>0</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-03 14:48:58 -0700</bug_when>
    <thetext>add a setting to allow user to play a media by clicking on it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662508</commentid>
    <comment_count>1</comment_count>
      <attachid>150677</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-03 15:19:11 -0700</bug_when>
    <thetext>Created attachment 150677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662510</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 15:21:11 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662515</commentid>
    <comment_count>3</comment_count>
      <attachid>150677</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-03 15:30:22 -0700</bug_when>
    <thetext>Comment on attachment 150677
Patch

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

A few details below.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3853
&gt; +    if (document()-&gt;settings() &amp;&amp; document()-&gt;settings()-&gt;mediaClickToPlayEnabled() &amp;&amp; event-&gt;type() == eventNames().clickEvent &amp;&amp; !hasEventListeners(eventNames().clickEvent) &amp;&amp; canPlay()) {

Is !hasEventListeners(eventNames().clickEvent)  needed here?  I guess folks who handle the click event won&apos;t be preventing the default if there isn&apos;t one currently...

&gt; Source/WebCore/testing/InternalSettings.cpp:371
&gt; +fprintf(stderr, &quot;InternalSettings::setMediaClickToPlayEnabled&quot;);

We should probably remove this line before landing.

&gt; Source/WebCore/testing/InternalSettings.cpp:373
&gt; +    settings()-&gt;setMediaClickToPlayEnabled(enabled);

Please reset this setting to its default value in InternalSettings::restoreTo

&gt; LayoutTests/media/video-click-to-play-enabled.html:14
&gt; +            function cleanClickToPlayRequirement() {
&gt; +                if (window.internals) 
&gt; +                    window.internals.settings.setMediaClickToPlayEnabled(false);
&gt; +            }

Rather than doing this in each test, we have the InternalsSettings object do this work for us.

&gt; LayoutTests/media/video-click-to-play-enabled.html:21
&gt; +                video.dispatchEvent(mouseClick);
&gt; +                testExpected(&quot;video.paused&quot;, false);

Can you add a test case for when the video element has a click event listener?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662571</commentid>
    <comment_count>4</comment_count>
      <attachid>150691</attachid>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-03 16:44:49 -0700</bug_when>
    <thetext>Created attachment 150691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662575</commentid>
    <comment_count>5</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-03 16:49:25 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 150677 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150677&amp;action=review
&gt; 
&gt; A few details below.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3853
&gt; &gt; +    if (document()-&gt;settings() &amp;&amp; document()-&gt;settings()-&gt;mediaClickToPlayEnabled() &amp;&amp; event-&gt;type() == eventNames().clickEvent &amp;&amp; !hasEventListeners(eventNames().clickEvent) &amp;&amp; canPlay()) {
&gt; 
&gt; Is !hasEventListeners(eventNames().clickEvent)  needed here?  I guess folks who handle the click event won&apos;t be preventing the default if there isn&apos;t one currently...
&gt; 

Good point. This should no longer be needed here. In downstream, because clicking the media could pause the playback. So we introduced it to prevent the case that a single click will cause both play() and pause(). Since the behavior is changed when upstreaming this, we no longer need this. 

&gt; &gt; Source/WebCore/testing/InternalSettings.cpp:371
&gt; &gt; +fprintf(stderr, &quot;InternalSettings::setMediaClickToPlayEnabled&quot;);
&gt; 
&gt; We should probably remove this line before landing.

Done, I forgot to remove this running the webkit-patch tool.

&gt; 
&gt; &gt; Source/WebCore/testing/InternalSettings.cpp:373
&gt; &gt; +    settings()-&gt;setMediaClickToPlayEnabled(enabled);
&gt; 
&gt; Please reset this setting to its default value in InternalSettings::restoreTo

Done.

&gt; 
&gt; &gt; LayoutTests/media/video-click-to-play-enabled.html:14
&gt; &gt; +            function cleanClickToPlayRequirement() {
&gt; &gt; +                if (window.internals) 
&gt; &gt; +                    window.internals.settings.setMediaClickToPlayEnabled(false);
&gt; &gt; +            }
&gt; 
&gt; Rather than doing this in each test, we have the InternalsSettings object do this work for us.

Done.

&gt; 
&gt; &gt; LayoutTests/media/video-click-to-play-enabled.html:21
&gt; &gt; +                video.dispatchEvent(mouseClick);
&gt; &gt; +                testExpected(&quot;video.paused&quot;, false);
&gt; 
&gt; Can you add a test case for when the video element has a click event listener?

Done. added a listener to the media element for the 2nd click.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662960</commentid>
    <comment_count>6</comment_count>
      <attachid>150691</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-04 08:11:58 -0700</bug_when>
    <thetext>Comment on attachment 150691
Patch

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

&gt; Source/WebCore/testing/InternalSettings.cpp:110
&gt; +    , m_mediaClickToPlayEnabled(settings()-&gt;mediaClickToPlayEnabled())

nit: I&apos;ve been using the prefix &quot;original&quot; for these variables to indicate that it&apos;s not the current value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662961</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-04 08:12:29 -0700</bug_when>
    <thetext>This looks reasonable to me, but let&apos;s give Eric Carlson a chance to comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663104</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-04 12:42:57 -0700</bug_when>
    <thetext>&gt; For video on mobile devices, expose a setting so that user can click on a media element to start playing it.

This sounds confusing - mobile devices generally don&apos;t have controllers that support clicking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663130</commentid>
    <comment_count>9</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-04 13:11:16 -0700</bug_when>
    <thetext>Both chrome on android and android browser has media controllers that support clicking. But the buttons are quite small, especially for smartphone users. This change is to make it easier for user to play a media by just clicking the element.

for chrome (In reply to comment #8)
&gt; &gt; For video on mobile devices, expose a setting so that user can click on a media element to start playing it.
&gt; 
&gt; This sounds confusing - mobile devices generally don&apos;t have controllers that support clicking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663737</commentid>
    <comment_count>10</comment_count>
      <attachid>150691</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-05 14:43:01 -0700</bug_when>
    <thetext>Comment on attachment 150691
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:3855
&gt; +    if (document()-&gt;settings() &amp;&amp; document()-&gt;settings()-&gt;mediaClickToPlayEnabled() &amp;&amp; event-&gt;type() == eventNames().clickEvent &amp;&amp; canPlay()) {
&gt; +        play();
&gt; +        event-&gt;setDefaultHandled();

This strikes me as the wrong way to enable this feature. Other (most?) players that enable &quot;click to play&quot; have a UI affordance to help the user understand that clicking will initiate playback, often a large &quot;play&quot; button. If someone wanted to implement that in a WebKit port, they would not be able to use this setting because the play button would intercept the click, and they would presumably want to restrict the behavior to clicks in the play button.

It seems to me that you are adding a new control function, so the right place for this is in the media control code. It should be easy to add an element to the controls shadow DOM and do the hit testing there. Whether you actually show a button or not is tangential.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663759</commentid>
    <comment_count>11</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-05 15:53:10 -0700</bug_when>
    <thetext>ok, I will try put the functionality into  the media control code then.

(In reply to comment #10)
&gt; (From update of attachment 150691 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150691&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3855
&gt; &gt; +    if (document()-&gt;settings() &amp;&amp; document()-&gt;settings()-&gt;mediaClickToPlayEnabled() &amp;&amp; event-&gt;type() == eventNames().clickEvent &amp;&amp; canPlay()) {
&gt; &gt; +        play();
&gt; &gt; +        event-&gt;setDefaultHandled();
&gt; 
&gt; This strikes me as the wrong way to enable this feature. Other (most?) players that enable &quot;click to play&quot; have a UI affordance to help the user understand that clicking will initiate playback, often a large &quot;play&quot; button. If someone wanted to implement that in a WebKit port, they would not be able to use this setting because the play button would intercept the click, and they would presumably want to restrict the behavior to clicks in the play button.
&gt; 
&gt; It seems to me that you are adding a new control function, so the right place for this is in the media control code. It should be easy to add an element to the controls shadow DOM and do the hit testing there. Whether you actually show a button or not is tangential.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666286</commentid>
    <comment_count>12</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-10 20:13:15 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 150691 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150691&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:3855
&gt; &gt; +    if (document()-&gt;settings() &amp;&amp; document()-&gt;settings()-&gt;mediaClickToPlayEnabled() &amp;&amp; event-&gt;type() == eventNames().clickEvent &amp;&amp; canPlay()) {
&gt; &gt; +        play();
&gt; &gt; +        event-&gt;setDefaultHandled();
&gt; 
&gt; This strikes me as the wrong way to enable this feature. Other (most?) players that enable &quot;click to play&quot; have a UI affordance to help the user understand that clicking will initiate playback, often a large &quot;play&quot; button. If someone wanted to implement that in a WebKit port, they would not be able to use this setting because the play button would intercept the click, and they would presumably want to restrict the behavior to clicks in the play button.
&gt; 
&gt; It seems to me that you are adding a new control function, so the right place for this is in the media control code. It should be easy to add an element to the controls shadow DOM and do the hit testing there. Whether you actually show a button or not is tangential.

One problem with shadow DOM is that if the media element doesn&apos;t have the controls attribute, then clicking the media element will not work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666291</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-07-10 20:26:01 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; One problem with shadow DOM is that if the media element doesn&apos;t have the controls attribute, then clicking the media element will not work.

Unless something like your new setting also enables the shadow DOM, eg.

  if (controls() || document()-&gt;settings()-&gt;mediaClickToPlayEnabled())
    ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676924</commentid>
    <comment_count>14</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-07-24 09:48:38 -0700</bug_when>
    <thetext>deprecating this patch as I created a new one to add a shadow DOM change for android: 
https://bugs.webkit.org/show_bug.cgi?id=92132</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150677</attachid>
            <date>2012-07-03 15:19:11 -0700</date>
            <delta_ts>2012-07-03 16:44:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90498-20120703151910.patch</filename>
            <type>text/plain</type>
            <size>12537</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRiNmIzMTkwYWU4OGZh
ZjI1ODIzMTgwZjFhOTcyMmQ4OGUzZTRiMi4uZWRhNzRlNGE3YjRjYTQ1NTRlOGI3NTk5NjBmNDY1
MmExODZlZTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTAzICBNaW4g
UWluICA8cWlubWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBhZGQgYSBzZXR0aW5nIHRvIGFs
bG93IHVzZXIgdG8gcGxheSBhIG1lZGlhIGJ5IGNsaWNraW5nIG9uIGl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciB2aWRlbyBvbiBtb2JpbGUgZGV2
aWNlcywgZXhwb3NlIGEgc2V0dGluZyBzbyB0aGF0IHVzZXIgY2FuIGNsaWNrIG9uIGEgbWVkaWEg
ZWxlbWVudCB0byBzdGFydCBwbGF5aW5nIGl0LgorICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1j
bGljay10by1wbGF5LWVuYWJsZWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6Om1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKToKKyAgICAg
ICAgKFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEyLTA3LTAzICBOYXRlIENoYXBpbiAgPGphcGhl
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHJvdGVjdCB0aGlzIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciBpbiBjYW5jZWwoKSB0byBoYW5kbGUgcmVlbnRyYW5jeSBwcm9wZXJseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2IxYTA1ZDhkMTZiNTE5OThkMjRhNWIwMGI2MmVkMGRi
YTBjYWVhMy4uMzVkMTg4OWVlYWVjMDA4MDk4OGFjN2RhM2NkYzlhZjhhNmIxOTNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0wMyAgTWluIFFp
biAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgYWRkIGEgc2V0dGluZyB0byBhbGxv
dyB1c2VyIHRvIHBsYXkgYSBtZWRpYSBieSBjbGlja2luZyBvbiBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0OTgKKworICAgICAgICBUaGlzIGlz
IGZvciBjaHJvbWUgb24gYW5kcm9pZCBhcyB0aGUgbWVkaWEgcGxheSBidXR0b24gaXMgdG9vIGhh
cmQgdG8gY2xpY2suCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0TWVkaWFDbGlja1Rv
UGxheUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA3LTAzICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmll
d2VkLCB1cGRhdGUgLmdpdGlnbm9yZSB0byBoYW5kbGUgVlMyMDEwIGZpbGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmRkYzQyODkzZWJkMDAzZTBhNTVk
ZGI3ZjJjODc1ODY1ZTdhOTQ3Zi4uZDc2OTQ0ZjJmOTZjNzE5ODcyOGNkM2M2MmJlOTZiMzZhOWVk
ZjQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zODUw
LDYgKzM4NTAsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKICAgICBpZiAod2lkZ2V0KQogICAgICAgICB3aWRnZXQtPmhhbmRsZUV2
ZW50KGV2ZW50KTsKICNlbHNlCisgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKS0+bWVkaWFDbGlja1RvUGxheUVuYWJsZWQoKSAmJiBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmICFoYXNFdmVudExpc3RlbmVycyhl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCkgJiYgY2FuUGxheSgpKSB7CisgICAgICAgIHBsYXkoKTsK
KyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQogICAgIEhUTUxFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAppbmRleCBjYTBiMWE0OGE1Yjc1ZjRlMjQ3YmRiODkyY2EwNmMwMDVkZTc3MzJi
Li4yNTZiMmQ0NzA1NGI0YjMzZmY5M2JjY2E2YWZhYTRjNDZjOGQ0NzhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcApAQCAtMjUwLDYgKzI1MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdl
KiBwYWdlKQogI2VuZGlmCiAgICAgLCBtX21lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJl
KGZhbHNlKQogICAgICwgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHRydWUpCisgICAgLCBt
X21lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKGZhbHNlKQogICAgICwgbV9wYXNzd29yZEVjaG9FbmFi
bGVkKGZhbHNlKQogICAgICwgbV9zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcoZmFsc2Up
CiAgICAgLCBtX2JhY2tzcGFjZUtleU5hdmlnYXRpb25FbmFibGVkKHRydWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgKaW5kZXggYTQ2NGNjODZlMzQ2MTFkYjNjOGFjNTlhMDVhODk3ZGRhNWQzODI0Ni4u
OGFlYjViZWE4MjFhZWVkYWI5ODdlZDg1OWU1NzU2N2NlYTAwY2FiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaApAQCAtNTA2LDYgKzUwNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKGJvb2wgZmxhZykgeyBtX21lZGlhUGxh
eWJhY2tBbGxvd3NJbmxpbmUgPSBmbGFnOyB9OwogICAgICAgICBib29sIG1lZGlhUGxheWJhY2tB
bGxvd3NJbmxpbmUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU7
IH0KIAorICAgICAgICB2b2lkIHNldE1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKGJvb2wgZmxhZykg
eyBtX21lZGlhQ2xpY2tUb1BsYXlFbmFibGVkID0gZmxhZzsgfTsKKyAgICAgICAgYm9vbCBtZWRp
YUNsaWNrVG9QbGF5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDbGlja1RvUGxheUVu
YWJsZWQ7IH0KKwogICAgICAgICB2b2lkIHNldFBhc3N3b3JkRWNob0VuYWJsZWQoYm9vbCBmbGFn
KSB7IG1fcGFzc3dvcmRFY2hvRW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYXNzd29y
ZEVjaG9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYXNzd29yZEVjaG9FbmFibGVkOyB9CiAK
QEAgLTczNyw2ICs3NDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAgICAg
Ym9vbCBtX21lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlIDogMTsKICAgICAgICAgYm9v
bCBtX21lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgOiAxOworICAgICAgICBib29sIG1fbWVkaWFD
bGlja1RvUGxheUVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fcGFzc3dvcmRFY2hvRW5hYmxl
ZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgOiAx
OwogICAgICAgICBib29sIG1fYmFja3NwYWNlS2V5TmF2aWdhdGlvbkVuYWJsZWQgOiAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggYmY0MzkyMzA1
OGUzYjU2YTIzZmFkMjE2YjA4ZjA2NmIzMzFjMWIyNC4uOTVhM2I1NGRiMDczMDhmNTkwNDU0Yzg0
Mzc2NTJlNmJhNzYyYmFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCkBAIC0zNjYsNiArMzY2LDEzIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0
TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCBlbmFibGVkLCBFeGNlcHRpCiAg
ICAgc2V0dGluZ3MoKS0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoZW5hYmxl
ZCk7CiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVuYWJs
ZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKK2ZwcmludGYoc3RkZXJyLCAi
SW50ZXJuYWxTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVuYWJsZWQiKTsKKyAgICBJbnRl
cm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldE1lZGlh
Q2xpY2tUb1BsYXlFbmFibGVkKGVuYWJsZWQpOworfQorCiB2b2lkIEludGVybmFsU2V0dGluZ3M6
OnNldEVkaXRpbmdCZWhhdmlvcihjb25zdCBTdHJpbmcmIGVkaXRpbmdCZWhhdmlvciwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggMTI3ZGE0Mjhm
MDY3NWQxODI0Nzk1YmFlOThkNTJkNjBkYTAyYmIzOS4uYWFhNDI3NGRkZjFjMTExNDdmNzU0NjE3
ZTE3MDIwYmVkZTZkNWM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q1NTVmFyaWFibGVz
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIGNzc1Zhcmlh
Ymxlc0VuYWJsZWQoRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFja1Jl
cXVpcmVzVXNlckdlc3R1cmUoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0TWVk
aWFDbGlja1RvUGxheUVuYWJsZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
RWRpdGluZ0JlaGF2aW9yKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lk
IHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNldFN5bmNYSFJJbkRvY3VtZW50c0VuYWJsZWQoYm9vbCwgRXhjZXB0
aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwK
aW5kZXggMTk2NWYwNWU3YjY4MzRmZjVjNWQzOGNiODkwMThkYmNlNjhiYzRmNi4uYTNmOWFmYWE1
YzUwMmY0YmU0MWEyYTMwYjdlZmM4ZjIzZWM5YTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC01Nyw2ICs1Nyw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICB2b2lkIHNldENTU1ZhcmlhYmxlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBjc3NWYXJpYWJsZXNFbmFi
bGVkKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckdlc3R1cmUoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChpbiBib29sZWFu
IGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldEVkaXRpbmdC
ZWhhdmlvcihpbiBET01TdHJpbmcgYmVoYXZpb3IpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAg
ICAgICB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGluIGJvb2xl
YW4gY3JlYXRlcykgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3luY1hI
UkluRG9jdW1lbnRzRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
NWVjNWM1MGRhZDI4OGUzMWEyY2EwNjE2ZDZkYWExMDEzY2IzZjZiNi4uZDgxMzc0MTdiZjY4YzM3
M2Y2ZWM0OWUwMmQ4YzExZmJmYThiYjM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xNTAsNiArMTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpZXdwb3J0RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0TWVkaWFDbGlja1RvUGxheUVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCB2aWV3cG9ydEVuYWJsZWQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1heFVu
dGlsZWRMYXllclNpemUoV2ViU2l6ZSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTRkM2FkODM1NzBiNWI1YmQ1OTE4NWNmYzkz
ZjhiYzI2Nzk0ZTk1ZS4uMjk2Mzc2ZWQzZDE3NjgxOTBlMTc5YjllZGE2YjA2YjQ5OGFiYjM2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBA
IC02MDIsNiArNjAyLDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRNZWRpYVBsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZShib29sIHJlcXVpcmVkKQogICAgIG1fc2V0dGluZ3MtPnNldE1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHJlcXVpcmVkKTsKIH0KIAordm9pZCBXZWJT
ZXR0aW5nc0ltcGw6OnNldE1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sK
KyAgICBtX3NldHRpbmdzLT5zZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChlbmFibGVkKTsKK30K
Kwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdD
b250ZXh0KGJvb2wgY3JlYXRlcykKIHsKICAgICBtX3NldHRpbmdzLT5zZXRGaXhlZFBvc2l0aW9u
Q3JlYXRlc1N0YWNraW5nQ29udGV4dChjcmVhdGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZGRkODkxMTRmNjI5ODI3N2YxYTYxZWRjMjhl
YzgxMzI2YzQ2NGE4ZC4uNTJhYWY2MGNmNjhiYzA2MTkzNDZmMTQxZjM5Njc2M2E0YzhiNDM4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE0
OCw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkUG9zaXRpb25D
cmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9y
dEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJl
c1VzZXJHZXN0dXJlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYUNsaWNrVG9QbGF5
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgdmlld3BvcnRFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3cG9ydEVuYWJsZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY1hI
UkluRG9jdW1lbnRzRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llRW5h
YmxlZChib29sKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5ZGMyNGQ1YjI5OWU4YThiYjEyMDY3Yzg4YmRiMWIxZDI1MGFj
YzA0Li41ZmM0ZDYzZmFmN2RkM2EyZjNmMWJmYTc3OTY0NGM5MWZlNWI4NGEyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTItMDctMDMgIE1pbiBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIGFkZCBhIHNldHRpbmcgdG8gYWxsb3cgdXNlciB0byBwbGF5IGEgbWVkaWEgYnkg
Y2xpY2tpbmcgb24gaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNDk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBtZWRpYS92aWRlby1jbGljay10by1wbGF5LWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRlby1jbGljay10by1wbGF5LWVuYWJsZWQuaHRtbDog
QWRkZWQuCisKIDIwMTItMDctMDMgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gbWFjIHJlYmFzZWxpbmVzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY2xpY2stdG8tcGxheS1lbmFibGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNsaWNrLXRvLXBsYXktZW5hYmxlZC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYyNGM5YWE2ZmI4YTY5ZGI3N2JiZWMyODY3OTVhNzQ1N2Qx
NTkzMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNsaWNrLXRv
LXBsYXktZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0IHRoYXQgdmlk
ZW8gcGxheXMgd2hlbiBhIHVzZXIgY2xpY2sgb24gdGhlIGVsZW1lbnQuCisKK0VWRU5UKGNhbnBs
YXl0aHJvdWdoKQorCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICd0cnVlJykgT0sKKworRVhQ
RUNURUQgKHZpZGVvLnBhdXNlZCA9PSAnZmFsc2UnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY2xpY2stdG8tcGxheS1lbmFibGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jbGljay10by1wbGF5LWVuYWJsZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41Yzc1OTg0MGFmY2UyYjkwZWFkYzUxZWFhMWYxMTUwM2VkOTRhNGRhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY2xpY2stdG8tcGxheS1lbmFibGVk
Lmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDx0aXRs
ZT5UZXN0IGZvciBtZWRpYUNsaWNrVG9QbGF5RW5hYmxlZCBzZXR0aW5nPC90aXRsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9bWVkaWEtY29udHJvbHMuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPW1lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVv
LXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgCisgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZCh0cnVlKTsKKworICAgICAgICAgICAgZnVuY3Rp
b24gY2xlYW5DbGlja1RvUGxheVJlcXVpcmVtZW50KCkgeworICAgICAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSAKKyAgICAgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNsaWNrKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICB2YXIgbW91c2VDbGljayA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50
cyIpOworICAgICAgICAgICAgICAgIG1vdXNlQ2xpY2suaW5pdE1vdXNlRXZlbnQoImNsaWNrIiwg
dHJ1ZSwgdHJ1ZSwgd2luZG93LCAxLCAwLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgMCwgZG9jdW1lbnQpOworICAgICAgICAgICAgICAgIHZpZGVvLmRpc3BhdGNoRXZlbnQo
bW91c2VDbGljayk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQi
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgY2xlYW5DbGlja1RvUGxheVJlcXVpcmVtZW50KCk7
CisgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBmdW5jdGlvbiBjYW5wbGF5dGhyb3VnaCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LnBhdXNlZCIsIHRydWUpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAg
ICAgICAgICAgICAgY2xpY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVt
ZW50KCk7CisgICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnY2FucGxheXRocm91Z2gnLCBj
YW5wbGF5dGhyb3VnaCk7CisgICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZp
bGUoInZpZGVvIiwgImNvbnRlbnQvdGVzdCIpOworICAgICAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICA8cD5U
ZXN0IHRoYXQgdmlkZW8gcGxheXMgd2hlbiBhIHVzZXIgY2xpY2sgb24gdGhlIGVsZW1lbnQuPC9w
PgorICAgIDx2aWRlbyBjb250cm9scz48L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150691</attachid>
            <date>2012-07-03 16:44:49 -0700</date>
            <delta_ts>2012-07-05 14:43:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90498-20120703164448.patch</filename>
            <type>text/plain</type>
            <size>14038</size>
            <attacher name="Min Qin">qinmin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRiNmIzMTkwYWU4OGZh
ZjI1ODIzMTgwZjFhOTcyMmQ4OGUzZTRiMi4uZWRhNzRlNGE3YjRjYTQ1NTRlOGI3NTk5NjBmNDY1
MmExODZlZTNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA3LTAzICBNaW4g
UWluICA8cWlubWluQGNocm9taXVtLm9yZz4KKworICAgICAgICBhZGQgYSBzZXR0aW5nIHRvIGFs
bG93IHVzZXIgdG8gcGxheSBhIG1lZGlhIGJ5IGNsaWNraW5nIG9uIGl0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDQ5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciB2aWRlbyBvbiBtb2JpbGUgZGV2
aWNlcywgZXhwb3NlIGEgc2V0dGluZyBzbyB0aGF0IHVzZXIgY2FuIGNsaWNrIG9uIGEgbWVkaWEg
ZWxlbWVudCB0byBzdGFydCBwbGF5aW5nIGl0LgorICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1j
bGljay10by1wbGF5LWVuYWJsZWQuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6Om1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKToKKyAgICAg
ICAgKFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TWVkaWFDbGlja1RvUGxheUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmg6CisgICAgICAgIChJbnRlcm5hbFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsOgorCiAyMDEyLTA3LTAzICBOYXRlIENoYXBpbiAgPGphcGhl
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUHJvdGVjdCB0aGlzIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlciBpbiBjYW5jZWwoKSB0byBoYW5kbGUgcmVlbnRyYW5jeSBwcm9wZXJseS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggM2IxYTA1ZDhkMTZiNTE5OThkMjRhNWIwMGI2MmVkMGRi
YTBjYWVhMy4uMzVkMTg4OWVlYWVjMDA4MDk4OGFjN2RhM2NkYzlhZjhhNmIxOTNlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0wMyAgTWluIFFp
biAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgYWRkIGEgc2V0dGluZyB0byBhbGxv
dyB1c2VyIHRvIHBsYXkgYSBtZWRpYSBieSBjbGlja2luZyBvbiBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0OTgKKworICAgICAgICBUaGlzIGlz
IGZvciBjaHJvbWUgb24gYW5kcm9pZCBhcyB0aGUgbWVkaWEgcGxheSBidXR0b24gaXMgdG9vIGhh
cmQgdG8gY2xpY2suCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0TWVkaWFDbGlja1Rv
UGxheUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA3LTAzICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbnJldmll
d2VkLCB1cGRhdGUgLmdpdGlnbm9yZSB0byBoYW5kbGUgVlMyMDEwIGZpbGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZmRkYzQyODkzZWJkMDAzZTBhNTVk
ZGI3ZjJjODc1ODY1ZTdhOTQ3Zi4uZjQ5OTZmOWY5YjdhNDA4NDU5NjBiMDQ2NjU1ZmIxZGU2YjA2
N2E4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zODUw
LDYgKzM4NTAsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKICAgICBpZiAod2lkZ2V0KQogICAgICAgICB3aWRnZXQtPmhhbmRsZUV2
ZW50KGV2ZW50KTsKICNlbHNlCisgICAgaWYgKGRvY3VtZW50KCktPnNldHRpbmdzKCkgJiYgZG9j
dW1lbnQoKS0+c2V0dGluZ3MoKS0+bWVkaWFDbGlja1RvUGxheUVuYWJsZWQoKSAmJiBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIGNhblBsYXkoKSkgeworICAgICAg
ICBwbGF5KCk7CisgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0KICAg
ICBIVE1MRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggY2EwYjFhNDhhNWI3NWY0ZTI0N2JkYjg5MmNhMDZj
MDA1ZGU3NzMyYi4uMjU2YjJkNDcwNTRiNGIzM2ZmOTNiY2NhNmFmYWE0YzQ2YzhkNDc4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTI1MCw2ICsyNTAsNyBAQCBTZXR0aW5nczo6U2V0
dGluZ3MoUGFnZSogcGFnZSkKICNlbmRpZgogICAgICwgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNV
c2VyR2VzdHVyZShmYWxzZSkKICAgICAsIG1fbWVkaWFQbGF5YmFja0FsbG93c0lubGluZSh0cnVl
KQorICAgICwgbV9tZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChmYWxzZSkKICAgICAsIG1fcGFzc3dv
cmRFY2hvRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVy
aW5nKGZhbHNlKQogICAgICwgbV9iYWNrc3BhY2VLZXlOYXZpZ2F0aW9uRW5hYmxlZCh0cnVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGE0NjRjYzg2ZTM0NjExZGIzYzhhYzU5YTA1YTg5N2Rk
YTVkMzgyNDYuLjhhZWI1YmVhODIxYWVlZGFiOTg3ZWQ4NTllNTc1NjdjZWEwMGNhYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKQEAgLTUwNiw2ICs1MDYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShib29sIGZsYWcpIHsg
bV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lID0gZmxhZzsgfTsKICAgICAgICAgYm9vbCBtZWRp
YVBsYXliYWNrQWxsb3dzSW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lOyB9CiAKKyAgICAgICAgdm9pZCBzZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChi
b29sIGZsYWcpIHsgbV9tZWRpYUNsaWNrVG9QbGF5RW5hYmxlZCA9IGZsYWc7IH07CisgICAgICAg
IGJvb2wgbWVkaWFDbGlja1RvUGxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2xp
Y2tUb1BsYXlFbmFibGVkOyB9CisKICAgICAgICAgdm9pZCBzZXRQYXNzd29yZEVjaG9FbmFibGVk
KGJvb2wgZmxhZykgeyBtX3Bhc3N3b3JkRWNob0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJv
b2wgcGFzc3dvcmRFY2hvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFzc3dvcmRFY2hvRW5h
YmxlZDsgfQogCkBAIC03MzcsNiArNzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlm
CiAgICAgICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSA6IDE7CiAg
ICAgICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lIDogMTsKKyAgICAgICAgYm9v
bCBtX21lZGlhQ2xpY2tUb1BsYXlFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3Bhc3N3b3Jk
RWNob0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVu
ZGVyaW5nIDogMTsKICAgICAgICAgYm9vbCBtX2JhY2tzcGFjZUtleU5hdmlnYXRpb25FbmFibGVk
IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmluZGV4
IGJmNDM5MjMwNThlM2I1NmEyM2ZhZDIxNmIwOGYwNjZiMzMxYzFiMjQuLjdjN2M1MGZjZDBmN2Zi
Y2Y5ZmFhMzU4MjQwNzVlY2M4OTgwZmY0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTA3LDYgKzEwNyw3IEBAIEludGVybmFsU2V0dGluZ3M6
OkludGVybmFsU2V0dGluZ3MoRnJhbWUqIGZyYW1lKQogICAgICwgbV9vcmlnaW5hbFdpbmRvd0Zv
Y3VzUmVzdHJpY3RlZChzZXR0aW5ncygpLT53aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKSkKICAgICAs
IG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c1RvdWNoKHNldHRpbmdzKCktPmRldmljZVN1cHBvcnRz
VG91Y2goKSkKICAgICAsIG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c01vdXNlKHNldHRpbmdzKCkt
PmRldmljZVN1cHBvcnRzTW91c2UoKSkKKyAgICAsIG1fbWVkaWFDbGlja1RvUGxheUVuYWJsZWQo
c2V0dGluZ3MoKS0+bWVkaWFDbGlja1RvUGxheUVuYWJsZWQoKSkKIHsKIH0KIApAQCAtMTI4LDYg
KzEyOSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0
aW5ncykKICAgICBzZXR0aW5ncy0+c2V0V2luZG93Rm9jdXNSZXN0cmljdGVkKG1fb3JpZ2luYWxX
aW5kb3dGb2N1c1Jlc3RyaWN0ZWQpOwogICAgIHNldHRpbmdzLT5zZXREZXZpY2VTdXBwb3J0c1Rv
dWNoKG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c1RvdWNoKTsKICAgICBzZXR0aW5ncy0+c2V0RGV2
aWNlU3VwcG9ydHNNb3VzZShtX29yaWdpbmFsRGV2aWNlU3VwcG9ydHNNb3VzZSk7CisgICAgc2V0
dGluZ3MtPnNldE1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKG1fbWVkaWFDbGlja1RvUGxheUVuYWJs
ZWQpOwogfQogCiBTZXR0aW5ncyogSW50ZXJuYWxTZXR0aW5nczo6c2V0dGluZ3MoKSBjb25zdApA
QCAtMzY2LDYgKzM2OCwxMiBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wgZW5hYmxlZCwgRXhjZXB0aQogICAgIHNldHRpbmdz
KCktPnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGVuYWJsZWQpOwogfQogCit2
b2lkIEludGVybmFsU2V0dGluZ3M6OnNldE1lZGlhQ2xpY2tUb1BsYXlFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9y
U2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5zZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChl
bmFibGVkKTsKK30KKwogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRFZGl0aW5nQmVoYXZpb3Io
Y29uc3QgU3RyaW5nJiBlZGl0aW5nQmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IDEyN2RhNDI4ZjA2NzVkMTgyNDc5NWJhZTk4ZDUy
ZDYwZGEwMmJiMzkuLjFlNzZlN2RlOTg3ZTU5MWJiMTNkYjQyODU3NWRhZmFiNmM2N2U0MGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCkBAIC03OCw2ICs3OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENTU1ZhcmlhYmxlc0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBjc3NWYXJpYWJsZXNFbmFibGVkKEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJv
b2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldE1lZGlhQ2xpY2tUb1BsYXlFbmFibGVk
KGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRGaXhlZFBvc2l0aW9uQ3Jl
YXRlc1N0YWNraW5nQ29udGV4dChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRT
eW5jWEhSSW5Eb2N1bWVudHNFbmFibGVkKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTEwOSw2
ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9vcmlnaW5hbFdpbmRvd0ZvY3VzUmVzdHJp
Y3RlZDsKICAgICBib29sIG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c1RvdWNoOwogICAgIGJvb2wg
bV9vcmlnaW5hbERldmljZVN1cHBvcnRzTW91c2U7CisgICAgYm9vbCBtX21lZGlhQ2xpY2tUb1Bs
YXlFbmFibGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggMTk2NWYwNWU3YjY4MzRmZjVjNWQz
OGNiODkwMThkYmNlNjhiYzRmNi4uYTNmOWFmYWE1YzUwMmY0YmU0MWEyYTMwYjdlZmM4ZjIzZWM5
YTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBA
IC01Nyw2ICs1Nyw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHNldENTU1Zhcmlh
Ymxlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgYm9vbGVhbiBjc3NWYXJpYWJsZXNFbmFibGVkKCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAgICAgICAgIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoaW4gYm9v
bGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRNZWRp
YUNsaWNrVG9QbGF5RW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICB2b2lkIHNldEVkaXRpbmdCZWhhdmlvcihpbiBET01TdHJpbmcgYmVoYXZp
b3IpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldEZpeGVkUG9zaXRpb25D
cmVhdGVzU3RhY2tpbmdDb250ZXh0KGluIGJvb2xlYW4gY3JlYXRlcykgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAgICAgICAgIHZvaWQgc2V0U3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZChpbiBib29s
ZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXggNWVjNWM1MGRhZDI4OGUzMWEyY2EwNjE2ZDZk
YWExMDEzY2IzZjZiNi4uZDgxMzc0MTdiZjY4YzM3M2Y2ZWM0OWUwMmQ4YzExZmJmYThiYjM5ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xNTAs
NiArMTUwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZFBhaW50
aW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0RW5hYmxl
ZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1Vz
ZXJHZXN0dXJlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFDbGlja1RvUGxh
eUVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB2aWV3cG9ydEVuYWJsZWQoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRUaWxlU2l6ZShXZWJTaXplKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5k
ZXggZTRkM2FkODM1NzBiNWI1YmQ1OTE4NWNmYzkzZjhiYzI2Nzk0ZTk1ZS4uMjk2Mzc2ZWQzZDE3
NjgxOTBlMTc5YjllZGE2YjA2YjQ5OGFiYjM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC02MDIsNiArNjAyLDExIEBAIHZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sIHJl
cXVpcmVkKQogICAgIG1fc2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0
dXJlKHJlcXVpcmVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldE1lZGlhQ2xpY2tU
b1BsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRNZWRpYUNs
aWNrVG9QbGF5RW5hYmxlZChlbmFibGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wgY3JlYXRlcykKIHsKICAg
ICBtX3NldHRpbmdzLT5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dChjcmVh
dGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZGRkODkxMTRmNjI5ODI3N2YxYTYxZWRjMjhlYzgxMzI2YzQ2NGE4ZC4uNTJhYWY2MGNmNjhi
YzA2MTkzNDZmMTQxZjM5Njc2M2E0YzhiNDM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTE0OCw2ICsxNDgsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydEVuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVh
bCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRNZWRpYUNsaWNrVG9QbGF5RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFs
IGJvb2wgdmlld3BvcnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydEVuYWJsZWQ7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U3luY1hIUkluRG9jdW1lbnRzRW5hYmxlZChib29sKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZGMyNGQ1
YjI5OWU4YThiYjEyMDY3Yzg4YmRiMWIxZDI1MGFjYzA0Li41ZmM0ZDYzZmFmN2RkM2EyZjNmMWJm
YTc3OTY0NGM5MWZlNWI4NGEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDctMDMgIE1p
biBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIGFkZCBhIHNldHRpbmcgdG8g
YWxsb3cgdXNlciB0byBwbGF5IGEgbWVkaWEgYnkgY2xpY2tpbmcgb24gaXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDk4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS92aWRlby1jbGljay10
by1wbGF5LWVuYWJsZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS92aWRl
by1jbGljay10by1wbGF5LWVuYWJsZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMDctMDMgIEVtaWwg
QSBFa2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgY2hyb21p
dW0gbWFjIHJlYmFzZWxpbmVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8t
Y2xpY2stdG8tcGxheS1lbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLWNsaWNrLXRvLXBsYXktZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2QyYjJi
ODQwNTU0ZmY1YTU4YjQzOTMxNTgzNWI5MGUzZjBhNDRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL21lZGlhL3ZpZGVvLWNsaWNrLXRvLXBsYXktZW5hYmxlZC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNiBAQAorVGVzdCB0aGF0IHZpZGVvIHBsYXlzIHdoZW4gYSB1c2VyIGNsaWNr
IG9uIHRoZSBlbGVtZW50LgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKworRVhQRUNURUQgKHZp
ZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCisKKyogVmlkZW8gc2hvdWxkIHN0YXJ0IHBsYXlpbmcg
d2hlbiBjbGlja2VkCitFWFBFQ1RFRCAodmlkZW8ucGF1c2VkID09ICdmYWxzZScpIE9LCisKK1JV
Tih2aWRlby5wYXVzZSgpKQorRVhQRUNURUQgKHZpZGVvLnBhdXNlZCA9PSAndHJ1ZScpIE9LCisK
KyogQSBzZWNvbmQgY2xpY2sgZXZlbnQgaXMgcmVjZWl2ZWQKK0VYUEVDVEVEICh2aWRlby5wYXVz
ZWQgPT0gJ2ZhbHNlJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWNsaWNrLXRvLXBsYXktZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvbWVk
aWEvdmlkZW8tY2xpY2stdG8tcGxheS1lbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRjMzE5N2Qz
OWU1NmUyZjgzNTk1MmY0Nzc1OWI3N2IwM2U1MTFlZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL21lZGlhL3ZpZGVvLWNsaWNrLXRvLXBsYXktZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEs
NjIgQEAKKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8dGl0bGU+VGVzdCBmb3IgbWVkaWFD
bGlja1RvUGxheUVuYWJsZWQgc2V0dGluZzwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPW1l
ZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPXZpZGVvLXRlc3QuanM+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgCisgICAgICAgICAgICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRNZWRp
YUNsaWNrVG9QbGF5RW5hYmxlZCh0cnVlKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2xpY2to
YW5kbGVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiog
QSBzZWNvbmQgY2xpY2sgZXZlbnQgaXMgcmVjZWl2ZWQiKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gY2xpY2soKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHZhciBtb3VzZUNsaWNrID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnRzIik7Cisg
ICAgICAgICAgICAgICAgbW91c2VDbGljay5pbml0TW91c2VFdmVudCgiY2xpY2siLCB0cnVlLCB0
cnVlLCB3aW5kb3csIDEsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAw
LCBkb2N1bWVudCk7CisgICAgICAgICAgICAgICAgdmlkZW8uZGlzcGF0Y2hFdmVudChtb3VzZUNs
aWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gZmlyc3RjbGljaygp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIqIFZpZGVvIHNo
b3VsZCBzdGFydCBwbGF5aW5nIHdoZW4gY2xpY2tlZCIpOworICAgICAgICAgICAgICAgIGNsaWNr
KCk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5wYXVzZWQiLCBmYWxzZSk7
CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAgICAgICAgICBydW4o
InZpZGVvLnBhdXNlKCkiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBh
dXNlZCIsIHRydWUpOworICAgICAgICAgICAgICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns
aWNrJywgY2xpY2toYW5kbGVyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc2Vjb25kY2xpY2so
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2Vjb25kY2xpY2soKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAg
ICAgICAgICAgY2xpY2soKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnBh
dXNlZCIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbnBsYXl0aHJvdWdoKCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ucGF1c2VkIiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKyAgICAgICAgICAgICAgICBmaXJzdGNsaWNrKCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworICAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQo
J2NhbnBsYXl0aHJvdWdoJywgY2FucGxheXRocm91Z2gpOworICAgICAgICAgICAgICAgICB2aWRl
by5zcmMgPSBmaW5kTWVkaWFGaWxlKCJ2aWRlbyIsICJjb250ZW50L3Rlc3QiKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
c3RhcnQoKSI+CisgICAgPHA+VGVzdCB0aGF0IHZpZGVvIHBsYXlzIHdoZW4gYSB1c2VyIGNsaWNr
IG9uIHRoZSBlbGVtZW50LjwvcD4KKyAgICA8dmlkZW8gY29udHJvbHM+PC92aWRlbz4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="158977"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>