<?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>100665</bug_id>
          
          <creation_ts>2012-10-29 06:16:27 -0700</creation_ts>
          <short_desc>[Qt][WK2] Remove ViewportUpdateDeferrer from PageViewportController</short_desc>
          <delta_ts>2012-10-30 05:39:26 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>jturcotte</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>753341</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-29 06:16:27 -0700</bug_when>
    <thetext>[Qt][WK2] Remove ViewportUpdateDeferrer from PageViewportController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753342</commentid>
    <comment_count>1</comment_count>
      <attachid>171220</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-29 06:16:55 -0700</bug_when>
    <thetext>Created attachment 171220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753426</commentid>
    <comment_count>2</comment_count>
      <attachid>171220</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-29 07:32:52 -0700</bug_when>
    <thetext>Comment on attachment 171220
Patch

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

I liked that we had a stack for suspend resume before, now it might evolve in a group of loosely related booleans depending on future needs. It also feels like there might be case where we&apos;d have to call resume that could slip. Having the update deferrer acting as a &quot;suspend lock&quot; was pretty effective I think, so I&apos;m not sure if it&apos;s a good idea to get rid of it completely. What do you think?

&gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:179
&gt; +    m_isUserInteracting = false;

What if you touched, but didn&apos;t start a flick and released your finger, shouldn&apos;t you call resume here for that case?

&gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:-461
&gt; -    m_scaleUpdateDeferrer.reset(); // Clear after starting potential animation, which takes over deferring.

No resume here either?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753600</commentid>
    <comment_count>3</comment_count>
      <attachid>171281</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-29 10:43:07 -0700</bug_when>
    <thetext>Created attachment 171281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753602</commentid>
    <comment_count>4</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-29 10:43:35 -0700</bug_when>
    <thetext>In reply to comment #2)
&gt; (From update of attachment 171220 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171220&amp;action=review
&gt; 
&gt; I liked that we had a stack for suspend resume before, now it might evolve in a group of loosely related booleans depending on future needs. It also feels like there might be case where we&apos;d have to call resume that could slip. Having the update deferrer acting as a &quot;suspend lock&quot; was pretty effective I think, so I&apos;m not sure if it&apos;s a good idea to get rid of it completely. What do you think?

As soon as the functionality of guarding suspend-resume cycles (viewport guard) was mixed with the deferring functionality to delay updates until the deferrer is in scope the usage became quite messy.
After the recent refactoring, besides convenience, there is no real need to have a stack suspend/resume any more.
We can simply have suspend/resume calls for the former where needed and updateViewportController for the later.

The only boolean we need is to track if the user has the finger on the screen or not, a state which was previously indirect through the usage of a deferrer.
I do not see a use-case which would need to add a new state that could not be deduced from current states, thus I think having a stacking mechanism not only complicates debugging but also hides possible bugs by obfuscating the state machine.
I see the tempting convenience of not having to deal with the proper placement of suspend/resume pairs, though :)

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:179
&gt; &gt; +    m_isUserInteracting = false;
&gt; 
&gt; What if you touched, but didn&apos;t start a flick and released your finger, shouldn&apos;t you call resume here for that case?

If the pan gesture did not result in a movement then the content is not suspended, if it resulted in a movement the content is suspended when movement starts and resumed when the movement ends, no matter if the movement ended with a flick animation or not (eg. if the content is just dragged or flicked).
I see how the name of flickMoveStarted/Ended in the client is misleading and should be changed since they are not triggered on flick animation start/end but movement start/end. But since this is the current behavior and unrelated to this patch the rename should be addressed in a separate patch, I think.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:-461
&gt; &gt; -    m_scaleUpdateDeferrer.reset(); // Clear after starting potential animation, which takes over deferring.
&gt; 
&gt; No resume here either?
There is no need for resume here since animateContentRectVisible should result in a resume if there is no animation performed. Added a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753628</commentid>
    <comment_count>5</comment_count>
      <attachid>171281</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-29 11:13:55 -0700</bug_when>
    <thetext>Comment on attachment 171281
Patch

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

For some reasons this makes me afraid that as the code evolves we&apos;ll get cases where the contents is left suspended. That might be because the current code was over protective too.
Let&apos;s test it hard and make sure that it won&apos;t happen for 5.0, worst case we can add protection later.

&gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:458
&gt; +    // Should always resume the content, even if no animation was performed.

Maybe write it something like &quot;This should&quot; or &quot;This will take care or resuming&quot;. I wasn&apos;t sure if you meant that we should do it here or if it&apos;s expected from animateContentRectVisible until I went back to read your comment on the bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754250</commentid>
    <comment_count>6</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-30 05:32:33 -0700</bug_when>
    <thetext>Committed r132898: &lt;http://trac.webkit.org/changeset/132898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754258</commentid>
    <comment_count>7</comment_count>
      <attachid>171281</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-30 05:39:26 -0700</bug_when>
    <thetext>Comment on attachment 171281
Patch

(In reply to comment #5)
&gt; (From update of attachment 171281 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171281&amp;action=review
&gt; 
&gt; For some reasons this makes me afraid that as the code evolves we&apos;ll get cases where the contents is left suspended. That might be because the current code was over protective too.
&gt; Let&apos;s test it hard and make sure that it won&apos;t happen for 5.0, worst case we can add protection later.

Thanks for the review.
Yes, in some cases the code became overprotective since the switch to Flickable and after the recent refactoring.
I&apos;ll make sure it does not introduce issues.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/PageViewportControllerClientQt.cpp:458
&gt; &gt; +    // Should always resume the content, even if no animation was performed.
&gt; 
&gt; Maybe write it something like &quot;This should&quot; or &quot;This will take care or resuming&quot;. I wasn&apos;t sure if you meant that we should do it here or if it&apos;s expected from animateContentRectVisible until I went back to read your comment on the bug report.

Done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171220</attachid>
            <date>2012-10-29 06:16:55 -0700</date>
            <delta_ts>2012-10-29 10:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100665-20121029141527.patch</filename>
            <type>text/plain</type>
            <size>12271</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjU2NTFhZTM3NGFhZWU5
MWY3ZTI4NDY5N2RhOGMwYjNiYzhmYmMxOC4uYTIxZmQ1ODk2NWEzM2Y5ZTkxNTUwMmQxOGY1YjBm
MGRiZmVjYTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEwLTI2ICBBbmRy
YXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBS
ZW1vdmUgVmlld3BvcnRVcGRhdGVEZWZlcnJlciBmcm9tIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRo
ZSBvcmlnaW5hbCB1c2UgY2FzZSBvZiBkZWxheWVkIHZpZXdwb3J0IHVwZGF0ZXMgYW5kIHRoZSBp
c3N1ZQorICAgICAgICBvZiBpbmZpbml0ZSBsb29wIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgcHJv
Z3JhbW1hdGljIGFkanVzdG1ldCBvZiB0aGUKKyAgICAgICAgdmlld3BvcnQgYW5kIHRoZSBRdCBu
b3RpZmljYXRpb24gc2lnbmFscyBhcmUgbm90IHByZXNlbnQgYW55IG1vcmUgdGhlCisgICAgICAg
IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIgYmVjYW1lIGFuIHVubmVjZXNzYXJ5IGxlZ2FjeSBhbmQg
Y2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXI6OnN1c3BlbmRDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlcjo6cmVzdW1lQ29udGVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlVmll
d3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZsaWNrTW92ZVN0YXJ0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZsaWNr
TW92ZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dFF0OjpzY2FsZUFuaW1hdGlvblN0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6dG91Y2hCZWdpbik6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6dG91Y2hFbmQpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNldENvbnRlbnRzUmVjdFRvTmVh
cmVzdFZhbGlkQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0OjpwaW5jaEdlc3R1cmVTdGFydGVkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVFbmRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGluY2hHZXN0dXJlQ2FuY2Vs
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dFF0Lmg6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQpOgorCiAyMDEy
LTEwLTI5ICBKb2NlbHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1dLMl0gRW5hYmxlIGRlbGVnYXRlZCBzY3JvbGxpbmcgYXMgc29vbiBhcyB0aGUg
RnJhbWVWaWV3IGlzIGNyZWF0ZWQgd2hlbiB1c2luZyBmaXhlZCBsYXlvdXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAppbmRleCBk
YmI3NDU0Mjg5Zjg3MzQ5M2E2ZGY4MTE4YzYxYzg4YmE0YzhhYjU5Li4wMzgzMGM5ZWRmNWE3YWZl
Nzc1Njg3MjA0NGI2NWM4ZTQ3OWZiMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCkBAIC0zOSwzMSArMzksMTEgQEAgYm9v
bCBmdXp6eUNvbXBhcmUoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgZXBzaWxvbikKICAgICByZXR1
cm4gc3RkOjphYnMoYSAtIGIpIDwgZXBzaWxvbjsKIH0KIAotVmlld3BvcnRVcGRhdGVEZWZlcnJl
cjo6Vmlld3BvcnRVcGRhdGVEZWZlcnJlcihQYWdlVmlld3BvcnRDb250cm9sbGVyKiBQYWdlVmll
d3BvcnRDb250cm9sbGVyLCBTdXNwZW5kQ29udGVudEZsYWcgc3VzcGVuZENvbnRlbnRGbGFnKQot
ICAgIDogbV9jb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpCi17Ci0gICAgbV9jb250
cm9sbGVyLT5tX2FjdGl2ZURlZmVycmVyQ291bnQrKzsKLQotICAgIC8vIFRoZXJlIGlzIG5vIG5l
ZWQgdG8gc3VzcGVuZCBjb250ZW50IGZvciBpbW1lZGlhdGUgdXBkYXRlcwotICAgIC8vIG9ubHkg
ZHVyaW5nIGFuaW1hdGlvbnMgb3IgbG9uZ2VyIGdlc3R1cmVzLgotICAgIGlmIChzdXNwZW5kQ29u
dGVudEZsYWcgPT0gRGVmZXJVcGRhdGVBbmRTdXNwZW5kQ29udGVudCkKLSAgICAgICAgbV9jb250
cm9sbGVyLT5zdXNwZW5kQ29udGVudCgpOwotfQotCi1WaWV3cG9ydFVwZGF0ZURlZmVycmVyOjp+
Vmlld3BvcnRVcGRhdGVEZWZlcnJlcigpCi17Ci0gICAgaWYgKC0tKG1fY29udHJvbGxlci0+bV9h
Y3RpdmVEZWZlcnJlckNvdW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jb250cm9sbGVy
LT5yZXN1bWVDb250ZW50KCk7Ci19Ci0KIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHByb3h5LCBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBtX3dlYlBhZ2VQcm94eShwcm94eSkKICAg
ICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fYWxsb3dzVXNlclNjYWxpbmcoZmFsc2UpCiAg
ICAgLCBtX21pbmltdW1TY2FsZVRvRml0KDEpCi0gICAgLCBtX2FjdGl2ZURlZmVycmVyQ291bnQo
MCkKICAgICAsIG1faGFzU3VzcGVuZGVkQ29udGVudChmYWxzZSkKICAgICAsIG1faGFkVXNlcklu
dGVyYWN0aW9uKGZhbHNlKQogICAgICwgbV9lZmZlY3RpdmVTY2FsZSgxKQpAQCAtMTcyLDcgKzE1
Miw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0aW9uKQogewogICAgIC8vIElnbm9yZSB0aGUgcmVx
dWVzdCBpZiBzdXNwZW5kZWQuIENhbiBvbmx5IGhhcHBlbiBkdWUgdG8gZGVsYXkgaW4gZXZlbnQg
ZGVsaXZlcnkuCi0gICAgaWYgKG1fYWN0aXZlRGVmZXJyZXJDb3VudCkKKyAgICBpZiAobV9oYXNT
dXNwZW5kZWRDb250ZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFJlY3QgZW5kVmlz
aWJsZUNvbnRlbnRSZWN0KGNsYW1wVmlld3BvcnRUb0NvbnRlbnRzKGNzc1Bvc2l0aW9uLCBtX2Vm
ZmVjdGl2ZVNjYWxlKSwgdmlld3BvcnRTaXplSW5Db250ZW50c0Nvb3JkaW5hdGVzKCkpOwpAQCAt
MjQzLDE4ICsyMjMsMTUgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzdXNwZW5kQ29u
dGVudCgpCiB7CiAgICAgaWYgKG1faGFzU3VzcGVuZGVkQ29udGVudCkKICAgICAgICAgcmV0dXJu
OwotCiAgICAgbV9oYXNTdXNwZW5kZWRDb250ZW50ID0gdHJ1ZTsKICAgICBtX3dlYlBhZ2VQcm94
eS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlcjo6cmVzdW1lQ29udGVudCgpCiB7Ci0gICAgbV9jbGllbnQtPmRp
ZFJlc3VtZUNvbnRlbnQoKTsKLQogICAgIGlmICghbV9oYXNTdXNwZW5kZWRDb250ZW50KQogICAg
ICAgICByZXR1cm47Ci0KKyAgICBtX2NsaWVudC0+ZGlkUmVzdW1lQ29udGVudCgpOwogICAgIG1f
aGFzU3VzcGVuZGVkQ29udGVudCA9IGZhbHNlOwogICAgIG1fd2ViUGFnZVByb3h5LT5yZXN1bWVB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKaW5kZXggMzgwODhkYjM5OGE4MTM4
Y2Y1MTVlZDNkODcwZWE3MGRlYWNjNjQwNC4uOTc0NjMyMTZiOTg3NGNhNWMzOWE4MDQzZDY4OTM2
OGE5MzcwMWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5oCkBAIC00MCwzMiArNDAsNiBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBQYWdlVmlld3BvcnRDb250cm9sbGVyOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudDsKIAotLy8gV2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBjb250ZW50LCBlaXRoZXIg
YnkgYW5pbWF0aW5nIG9yIGJ5IHRoZSBoYW5kIG9mIHRoZSB1c2VyLAotLy8gaXQgaXMgaW1wb3J0
YW50IHRvIGVuc3VyZSBzbW9vdGggYW5pbWF0aW9ucyBvZiBhdCBsZWFzdCA2MGZwcyBpbiBvcmRl
ciB0byBnaXZlIGEKLS8vIGdvb2QgdXNlciBleHBlcmllbmNlLgotLy8KLS8vIEluIG9yZGVyIHRv
IGRvIHRoaXMgd2UgbmVlZCB0byBnZXQgcmlkIG9mIHVua25vd24gZmFjdG9ycy4gVGhlc2UgaW5j
bHVkZSBkZXZpY2UKLS8vIHNlbnNvcnMgKGdlb2xvY2F0aW9uLCBvcmllbnRhdGlvbiB1cGRhdGVz
IGV0YyksIENTUzMgYW5pbWF0aW9ucywgSmF2YVNjcmlwdAotLy8gZXhlY3R1dGlvbiwgc3ViIHJl
c291cmNlIGxvYWRzIGV0Yy4KLS8vIFdlIGRvIHRoaXMgYnkgc2VuZGluZyBzdXNwZW5kIGFuZCBy
ZXN1bWUgbm90aWZpY2F0aW9ucyB0byB0aGUgd2ViIHByb2Nlc3MuCi0vLwotLy8gRm9yIHRoaXMg
cHVycG9zZSB0aGUgVmlld3BvcnRVcGRhdGVEZWZlcnJlciBndWFyZCBjYW4gYmUgdXNlZCB3aGVu
IGludGVyYWN0aW5nCi0vLyB3aXRoIG9yIGFuaW1hdGluZyB0aGUgY29udGVudCB0byBzY29wZSBz
dXNwZW5kIC8gcmVzdW1lIGFuZCBkZWZlciB1cGRhdGUKLS8vIG5vdGlmaWNhdGlvbnMuCi0vLwot
Ly8gSWYgc29tZXRoaW5nIHNob3VsZCBvbmx5IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNvbnRlbnQg
aXMgc3VzcGVuZGVkLCBpdCBpcyBwb3NzaWJsZQotLy8gdG8gY2hlY2sgZm9yIHRoYXQgdXNpbmcg
QVNTRVJUKGhhc1N1c3BlbmRlZENvbnRlbnQoKSkuCi0KLWNsYXNzIFZpZXdwb3J0VXBkYXRlRGVm
ZXJyZXIgewotcHVibGljOgotICAgIGVudW0gU3VzcGVuZENvbnRlbnRGbGFnIHsgRGVmZXJVcGRh
dGUsIERlZmVyVXBkYXRlQW5kU3VzcGVuZENvbnRlbnQgfTsKLSAgICBWaWV3cG9ydFVwZGF0ZURl
ZmVycmVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqLCBTdXNwZW5kQ29udGVudEZsYWcgPSBEZWZl
clVwZGF0ZSk7Ci0gICAgflZpZXdwb3J0VXBkYXRlRGVmZXJyZXIoKTsKLQotcHJpdmF0ZToKLSAg
ICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBjb25zdCBtX2NvbnRyb2xsZXI7Ci19OwotCiBjbGFz
cyBQYWdlVmlld3BvcnRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdl
Vmlld3BvcnRDb250cm9sbGVyKTsKIApAQCAtMTIxLDcgKzk1LDYgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYWxsb3dzVXNlclNjYWxpbmc7CiAgICAgZmxvYXQgbV9taW5pbXVtU2NhbGVUb0ZpdDsK
IAotICAgIGludCBtX2FjdGl2ZURlZmVycmVyQ291bnQ7CiAgICAgYm9vbCBtX2hhc1N1c3BlbmRl
ZENvbnRlbnQ7CiAgICAgYm9vbCBtX2hhZFVzZXJJbnRlcmFjdGlvbjsKIApAQCAtMTM0LDggKzEw
Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3ZpZXdwb3J0UG9zSXNMb2NrZWQ7CiAgICAgYm9v
bCBtX2VmZmVjdGl2ZVNjYWxlSXNMb2NrZWQ7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IG1fbGFz
dEZyYW1lQ292ZXJlZFJlY3Q7Ci0KLSAgICBmcmllbmQgY2xhc3MgVmlld3BvcnRVcGRhdGVEZWZl
cnJlcjsKIH07CiAKIGJvb2wgZnV6enlDb21wYXJlKGZsb2F0LCBmbG9hdCwgZmxvYXQgZXBzaWxv
bik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGJmYjg3YWJjM2ZlZmQ0YzNiNGQ4
ZWQ2YzliOGRiYjlhMTRlMTFhNWIuLjFhODRhZGNjN2Q4Y2I0MzUzZDNjODZmYjM5MmQ2Yjc5ZjNl
ZmFkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBAIC00NSw2ICs0NSw3IEBAIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dFF0KFFRdWlja1dlYlZpZXcqIHZpCiAgICAgLCBtX3BpbmNoU3RhcnRTY2FsZSgtMSkKICAgICAs
IG1fbGFzdENvbW1pdHRlZFNjYWxlKC0xKQogICAgICwgbV96b29tT3V0U2NhbGUoMCkKKyAgICAs
IG1faXNVc2VySW50ZXJhY3RpbmcoZmFsc2UpCiAgICAgLCBtX2lnbm9yZVZpZXdwb3J0Q2hhbmdl
cyh0cnVlKQogewogICAgIG1fc2NhbGVBbmltYXRpb24tPnNldER1cmF0aW9uKGtTY2FsZUFuaW1h
dGlvbkR1cmF0aW9uTWlsbGlzKTsKQEAgLTEyMCw4ICsxMjEsNyBAQCB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdDo6YW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZShjb25zdCBRUmVj
dEYmIGNvbgogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6ZmxpY2tNb3Zl
U3RhcnRlZCgpCiB7Ci0gICAgUV9BU1NFUlQobV92aWV3cG9ydEl0ZW0tPmlzTW92aW5nKCkpOwot
ICAgIG1fc2Nyb2xsVXBkYXRlRGVmZXJyZXIucmVzZXQobmV3IFZpZXdwb3J0VXBkYXRlRGVmZXJy
ZXIobV9jb250cm9sbGVyLCBWaWV3cG9ydFVwZGF0ZURlZmVycmVyOjpEZWZlclVwZGF0ZUFuZFN1
c3BlbmRDb250ZW50KSk7CisgICAgbV9jb250cm9sbGVyLT5zdXNwZW5kQ29udGVudCgpOwogCiAg
ICAgbV9sYXN0U2Nyb2xsUG9zaXRpb24gPSBtX3ZpZXdwb3J0SXRlbS0+Y29udGVudFBvcygpOwog
CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRR
dDo6ZmxpY2tNb3ZlU3RhcnRlZCgpCiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dFF0OjpmbGlja01vdmVFbmRlZCgpCiB7Ci0gICAgUV9BU1NFUlQoIW1fdmlld3BvcnRJdGVtLT5p
c01vdmluZygpKTsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGVuZCBvZiB0
aGUgcGFuIG9yIHBhbiBraW5ldGljIGFuaW1hdGlvbi4KIAogICAgIG1faWdub3JlVmlld3BvcnRD
aGFuZ2VzID0gdHJ1ZTsKIAotICAgIG1fc2Nyb2xsVXBkYXRlRGVmZXJyZXIucmVzZXQoKTsKKyAg
ICBpZiAoIW1faXNVc2VySW50ZXJhY3RpbmcpCisgICAgICAgIG1fY29udHJvbGxlci0+cmVzdW1l
Q29udGVudCgpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGFn
ZUl0ZW1Qb3NpdGlvbkNoYW5nZWQoKQpAQCAtMTU1LDExICsxNTUsMTAgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxlQW5pbWF0aW9uU3RhdGVDaGFuZ2VkKFFBYnN0
cmFjdEFuaW1hdGkKICAgICBzd2l0Y2ggKG5ld1N0YXRlKSB7CiAgICAgY2FzZSBRQWJzdHJhY3RB
bmltYXRpb246OlJ1bm5pbmc6CiAgICAgICAgIG1fdmlld3BvcnRJdGVtLT5jYW5jZWxGbGljaygp
OwotICAgICAgICBBU1NFUlQoIW1fYW5pbWF0aW9uVXBkYXRlRGVmZXJyZXIpOwotICAgICAgICBt
X2FuaW1hdGlvblVwZGF0ZURlZmVycmVyLnJlc2V0KG5ldyBWaWV3cG9ydFVwZGF0ZURlZmVycmVy
KG1fY29udHJvbGxlciwgVmlld3BvcnRVcGRhdGVEZWZlcnJlcjo6RGVmZXJVcGRhdGVBbmRTdXNw
ZW5kQ29udGVudCkpOworICAgICAgICBtX2NvbnRyb2xsZXItPnN1c3BlbmRDb250ZW50KCk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUFic3RyYWN0QW5pbWF0aW9uOjpTdG9wcGVkOgotICAg
ICAgICBtX2FuaW1hdGlvblVwZGF0ZURlZmVycmVyLnJlc2V0KCk7CisgICAgICAgIG1fY29udHJv
bGxlci0+cmVzdW1lQ29udGVudCgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKQEAgLTE3MiwxMiArMTcxLDEyIEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0Ojp0b3VjaEJlZ2luKCkKIAogICAgIC8vIFByZXZlbnRzIHJlc3VtaW5nIHRo
ZSBwYWdlIGJldHdlZW4gdGhlIHVzZXIncyBmbGlja3Mgb2YgdGhlIHBhZ2Ugd2hpbGUgdGhlIGFu
aW1hdGlvbiBpcyBydW5uaW5nLgogICAgIGlmIChzY3JvbGxBbmltYXRpb25BY3RpdmUoKSkKLSAg
ICAgICAgbV90b3VjaFVwZGF0ZURlZmVycmVyLnJlc2V0KG5ldyBWaWV3cG9ydFVwZGF0ZURlZmVy
cmVyKG1fY29udHJvbGxlciwgVmlld3BvcnRVcGRhdGVEZWZlcnJlcjo6RGVmZXJVcGRhdGVBbmRT
dXNwZW5kQ29udGVudCkpOworICAgICAgICBtX2lzVXNlckludGVyYWN0aW5nID0gdHJ1ZTsKIH0K
IAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnRvdWNoRW5kKCkKIHsKLSAg
ICBtX3RvdWNoVXBkYXRlRGVmZXJyZXIucmVzZXQoKTsKKyAgICBtX2lzVXNlckludGVyYWN0aW5n
ID0gZmFsc2U7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpmb2N1
c0VkaXRhYmxlQXJlYShjb25zdCBRUmVjdEYmIGNhcmV0QXJlYSwgY29uc3QgUVJlY3RGJiB0YXJn
ZXRBcmVhKQpAQCAtMzI2LDkgKzMyNSw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudFF0OjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IGxvY2FsU2NhbGUsIGJvb2wgdHJlCiAKIHZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpzZXRDb250ZW50c1JlY3RUb05lYXJl
c3RWYWxpZEJvdW5kcygpCiB7Ci0gICAgVmlld3BvcnRVcGRhdGVEZWZlcnJlciBndWFyZChtX2Nv
bnRyb2xsZXIpOwogICAgIGZsb2F0IHRhcmdldFNjYWxlID0gbV9jb250cm9sbGVyLT5pbm5lckJv
dW5kZWRWaWV3cG9ydFNjYWxlKG1fcGFnZUl0ZW0tPmNvbnRlbnRzU2NhbGUoKSk7CiAgICAgc2V0
Q29udGVudFJlY3RWaXNpYmxlUG9zaXRpb25BdFNjYWxlKG5lYXJlc3RWYWxpZFZpc2libGVDb250
ZW50c1JlY3QoKS50b3BMZWZ0KCksIHRhcmdldFNjYWxlKTsKKyAgICB1cGRhdGVWaWV3cG9ydENv
bnRyb2xsZXIoKTsKIH0KIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmRp
ZFJlc3VtZUNvbnRlbnQoKQpAQCAtNDIxLDcgKzQyMCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVTdGFydGVkKGNvbnN0IFFQb2ludEYmIHBpbmNo
Q2VuCiAgICAgbV9zY2FsZVN0YWNrLmNsZWFyKCk7CiAgICAgbV96b29tT3V0U2NhbGUgPSAwLjA7
CiAKLSAgICBtX3NjYWxlVXBkYXRlRGVmZXJyZXIucmVzZXQobmV3IFZpZXdwb3J0VXBkYXRlRGVm
ZXJyZXIobV9jb250cm9sbGVyLCBWaWV3cG9ydFVwZGF0ZURlZmVycmVyOjpEZWZlclVwZGF0ZUFu
ZFN1c3BlbmRDb250ZW50KSk7CisgICAgbV9jb250cm9sbGVyLT5zdXNwZW5kQ29udGVudCgpOwog
CiAgICAgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXMgPSBwaW5jaENlbnRl
ckluVmlld3BvcnRDb29yZGluYXRlczsKICAgICBtX3BpbmNoU3RhcnRTY2FsZSA9IG1fcGFnZUl0
ZW0tPmNvbnRlbnRzU2NhbGUoKTsKQEAgLTQ1OCwxMyArNDU3LDEyIEBAIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVFbmRlZCgpCiAgICAgbV9waW5jaFN0
YXJ0U2NhbGUgPSAtMTsKIAogICAgIGFuaW1hdGVDb250ZW50UmVjdFZpc2libGUobmVhcmVzdFZh
bGlkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKLSAgICBtX3NjYWxlVXBkYXRlRGVmZXJyZXIucmVz
ZXQoKTsgLy8gQ2xlYXIgYWZ0ZXIgc3RhcnRpbmcgcG90ZW50aWFsIGFuaW1hdGlvbiwgd2hpY2gg
dGFrZXMgb3ZlciBkZWZlcnJpbmcuCiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudFF0OjpwaW5jaEdlc3R1cmVDYW5jZWxsZWQoKQogewogICAgIG1fcGluY2hTdGFydFNjYWxl
ID0gLTE7Ci0gICAgbV9zY2FsZVVwZGF0ZURlZmVycmVyLnJlc2V0KCk7CisgICAgbV9jb250cm9s
bGVyLT5yZXN1bWVDb250ZW50KCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudFF0OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50UXQuaAppbmRleCA3YzVjZWVhNTg1ZjNlOWQzNWZlYjE3M2U2NWY3NThi
OTNiYzIwMGY3Li42MjU1Zjk0MjlkMTJlMWU3MDU1YjRmZWIzNjM2NzQ2MTVhMzNkMDI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdC5oCkBAIC0xMjksMTEgKzEyOSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBhbmltYXRlQ29udGVudFJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgY29udGVudFJlY3Qp
OwogICAgIHZvaWQgc2NhbGVDb250ZW50KHFyZWFsIGl0ZW1TY2FsZSwgY29uc3QgUVBvaW50RiYg
Y2VudGVySW5DU1NDb29yZGluYXRlcyA9IFFQb2ludEYoKSk7CiAKLSAgICBRU2NvcGVkUG9pbnRl
cjxWaWV3cG9ydFVwZGF0ZURlZmVycmVyPiBtX3NjYWxlVXBkYXRlRGVmZXJyZXI7Ci0gICAgUVNj
b3BlZFBvaW50ZXI8Vmlld3BvcnRVcGRhdGVEZWZlcnJlcj4gbV9zY3JvbGxVcGRhdGVEZWZlcnJl
cjsKLSAgICBRU2NvcGVkUG9pbnRlcjxWaWV3cG9ydFVwZGF0ZURlZmVycmVyPiBtX3RvdWNoVXBk
YXRlRGVmZXJyZXI7Ci0gICAgUVNjb3BlZFBvaW50ZXI8Vmlld3BvcnRVcGRhdGVEZWZlcnJlcj4g
bV9hbmltYXRpb25VcGRhdGVEZWZlcnJlcjsKLQogICAgIFNjYWxlQW5pbWF0aW9uKiBtX3NjYWxl
QW5pbWF0aW9uOwogICAgIFFQb2ludEYgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRp
bmF0ZXM7CiAgICAgUVBvaW50RiBtX2xhc3RTY3JvbGxQb3NpdGlvbjsKQEAgLTE0MSw2ICsxMzYs
NyBAQCBwcml2YXRlOgogICAgIHFyZWFsIG1fbGFzdENvbW1pdHRlZFNjYWxlOwogICAgIHFyZWFs
IG1fem9vbU91dFNjYWxlOwogICAgIFFMaXN0PFNjYWxlU3RhY2tJdGVtPiBtX3NjYWxlU3RhY2s7
CisgICAgYm9vbCBtX2lzVXNlckludGVyYWN0aW5nOwogICAgIGJvb2wgbV9pZ25vcmVWaWV3cG9y
dENoYW5nZXM7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171281</attachid>
            <date>2012-10-29 10:43:07 -0700</date>
            <delta_ts>2012-10-30 05:39:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100665-20121029184139.patch</filename>
            <type>text/plain</type>
            <size>12217</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTA5OTA0ZDhkNjBlYmM0
OThmZjgxYzgwYzVjYjkxNWYzNzMwYzJiOS4uZjYwMTNhMjE0MmNmOTUwZTFlYmVjOGQwNjVhY2Fm
NmE4ODJhYmQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTI5ICBBbmRy
YXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBS
ZW1vdmUgVmlld3BvcnRVcGRhdGVEZWZlcnJlciBmcm9tIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDY2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHRo
ZSBvcmlnaW5hbCB1c2UgY2FzZSBvZiBkZWxheWVkIHZpZXdwb3J0IHVwZGF0ZXMgYW5kIHRoZSBp
c3N1ZQorICAgICAgICBvZiBpbmZpbml0ZSBsb29wIGNvbmRpdGlvbnMgYmV0d2VlbiB0aGUgcHJv
Z3JhbW1hdGljIGFkanVzdG1ldCBvZiB0aGUKKyAgICAgICAgdmlld3BvcnQgYW5kIHRoZSBRdCBu
b3RpZmljYXRpb24gc2lnbmFscyBhcmUgbm90IHByZXNlbnQgYW55IG1vcmUgdGhlCisgICAgICAg
IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIgYmVjYW1lIGFuIHVubmVjZXNzYXJ5IGxlZ2FjeSBhbmQg
Y2FuIGJlIHJlbW92ZWQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQYWdlVmlld3Bv
cnRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmFuaW1hdGVDb250ZW50UmVjdFZp
c2libGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6
OmZsaWNrTW92ZVN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50UXQ6OmZsaWNrTW92ZUVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0OjpzY2FsZUFuaW1hdGlvblN0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6dG91Y2hCZWdpbik6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6dG91Y2hF
bmQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNl
dENvbnRlbnRzUmVjdFRvTmVhcmVzdFZhbGlkQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVTdGFydGVkKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVF
bmRlZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
cGluY2hHZXN0dXJlQ2FuY2VsbGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0Lmg6CisgICAgICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50UXQpOgorCiAyMDEyLTEwLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl1bV0tUUl0gRW5hYmxlIFNoYWRvdyBET00g
YXQgcnVudGltZSBpZiBjb21waWxlZCB3aXRoIFNIQURPV19ET00gc3VwcG9ydApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4
IGRiYjc0NTQyODlmODczNDkzYTZkZjgxMThjNjFjODhiYTRjOGFiNTkuLmM3MTBkNmFiZTJjYzY5
Y2M1YTFiMzJmZTQ3NGViYTI1OWUxZmY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTM5LDMxICszOSwxMSBAQCBi
b29sIGZ1enp5Q29tcGFyZShmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBlcHNpbG9uKQogICAgIHJl
dHVybiBzdGQ6OmFicyhhIC0gYikgPCBlcHNpbG9uOwogfQogCi1WaWV3cG9ydFVwZGF0ZURlZmVy
cmVyOjpWaWV3cG9ydFVwZGF0ZURlZmVycmVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIsIFN1c3BlbmRDb250ZW50RmxhZyBzdXNwZW5kQ29udGVudEZsYWcp
Ci0gICAgOiBtX2NvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlcikKLXsKLSAgICBtX2Nv
bnRyb2xsZXItPm1fYWN0aXZlRGVmZXJyZXJDb3VudCsrOwotCi0gICAgLy8gVGhlcmUgaXMgbm8g
bmVlZCB0byBzdXNwZW5kIGNvbnRlbnQgZm9yIGltbWVkaWF0ZSB1cGRhdGVzCi0gICAgLy8gb25s
eSBkdXJpbmcgYW5pbWF0aW9ucyBvciBsb25nZXIgZ2VzdHVyZXMuCi0gICAgaWYgKHN1c3BlbmRD
b250ZW50RmxhZyA9PSBEZWZlclVwZGF0ZUFuZFN1c3BlbmRDb250ZW50KQotICAgICAgICBtX2Nv
bnRyb2xsZXItPnN1c3BlbmRDb250ZW50KCk7Ci19Ci0KLVZpZXdwb3J0VXBkYXRlRGVmZXJyZXI6
On5WaWV3cG9ydFVwZGF0ZURlZmVycmVyKCkKLXsKLSAgICBpZiAoLS0obV9jb250cm9sbGVyLT5t
X2FjdGl2ZURlZmVycmVyQ291bnQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NvbnRyb2xs
ZXItPnJlc3VtZUNvbnRlbnQoKTsKLX0KLQogUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fd2ViUGFnZVByb3h5KHByb3h5KQog
ICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9hbGxvd3NVc2VyU2NhbGluZyhmYWxzZSkK
ICAgICAsIG1fbWluaW11bVNjYWxlVG9GaXQoMSkKLSAgICAsIG1fYWN0aXZlRGVmZXJyZXJDb3Vu
dCgwKQogICAgICwgbV9oYXNTdXNwZW5kZWRDb250ZW50KGZhbHNlKQogICAgICwgbV9oYWRVc2Vy
SW50ZXJhY3Rpb24oZmFsc2UpCiAgICAgLCBtX2VmZmVjdGl2ZVNjYWxlKDEpCkBAIC0xNzIsNyAr
MTUyLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdw
b3J0UmVhZHkoKQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBJbnRQb2ludCYgY3NzUG9zaXRpb24pCiB7CiAgICAgLy8gSWdub3JlIHRoZSBy
ZXF1ZXN0IGlmIHN1c3BlbmRlZC4gQ2FuIG9ubHkgaGFwcGVuIGR1ZSB0byBkZWxheSBpbiBldmVu
dCBkZWxpdmVyeS4KLSAgICBpZiAobV9hY3RpdmVEZWZlcnJlckNvdW50KQorICAgIGlmIChtX2hh
c1N1c3BlbmRlZENvbnRlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UmVjdCBlbmRW
aXNpYmxlQ29udGVudFJlY3QoY2xhbXBWaWV3cG9ydFRvQ29udGVudHMoY3NzUG9zaXRpb24sIG1f
ZWZmZWN0aXZlU2NhbGUpLCB2aWV3cG9ydFNpemVJbkNvbnRlbnRzQ29vcmRpbmF0ZXMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaApp
bmRleCAzODA4OGRiMzk4YTgxMzhjZjUxNWVkM2Q4NzBlYTcwZGVhY2M2NDA0Li45NzQ2MzIxNmI5
ODc0Y2E1YzM5YTgwNDNkNjg5MzY4YTkzNzAxZjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKQEAgLTQwLDMyICs0MCw2IEBAIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiBjbGFzcyBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OwogCi0vLyBXaGVuIGludGVyYWN0aW5nIHdpdGgg
dGhlIGNvbnRlbnQsIGVpdGhlciBieSBhbmltYXRpbmcgb3IgYnkgdGhlIGhhbmQgb2YgdGhlIHVz
ZXIsCi0vLyBpdCBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHNtb290aCBhbmltYXRpb25zIG9mIGF0
IGxlYXN0IDYwZnBzIGluIG9yZGVyIHRvIGdpdmUgYQotLy8gZ29vZCB1c2VyIGV4cGVyaWVuY2Uu
Ci0vLwotLy8gSW4gb3JkZXIgdG8gZG8gdGhpcyB3ZSBuZWVkIHRvIGdldCByaWQgb2YgdW5rbm93
biBmYWN0b3JzLiBUaGVzZSBpbmNsdWRlIGRldmljZQotLy8gc2Vuc29ycyAoZ2VvbG9jYXRpb24s
IG9yaWVudGF0aW9uIHVwZGF0ZXMgZXRjKSwgQ1NTMyBhbmltYXRpb25zLCBKYXZhU2NyaXB0Ci0v
LyBleGVjdHV0aW9uLCBzdWIgcmVzb3VyY2UgbG9hZHMgZXRjLgotLy8gV2UgZG8gdGhpcyBieSBz
ZW5kaW5nIHN1c3BlbmQgYW5kIHJlc3VtZSBub3RpZmljYXRpb25zIHRvIHRoZSB3ZWIgcHJvY2Vz
cy4KLS8vCi0vLyBGb3IgdGhpcyBwdXJwb3NlIHRoZSBWaWV3cG9ydFVwZGF0ZURlZmVycmVyIGd1
YXJkIGNhbiBiZSB1c2VkIHdoZW4gaW50ZXJhY3RpbmcKLS8vIHdpdGggb3IgYW5pbWF0aW5nIHRo
ZSBjb250ZW50IHRvIHNjb3BlIHN1c3BlbmQgLyByZXN1bWUgYW5kIGRlZmVyIHVwZGF0ZQotLy8g
bm90aWZpY2F0aW9ucy4KLS8vCi0vLyBJZiBzb21ldGhpbmcgc2hvdWxkIG9ubHkgYmUgZXhlY3V0
ZWQgd2hlbiB0aGUgY29udGVudCBpcyBzdXNwZW5kZWQsIGl0IGlzIHBvc3NpYmxlCi0vLyB0byBj
aGVjayBmb3IgdGhhdCB1c2luZyBBU1NFUlQoaGFzU3VzcGVuZGVkQ29udGVudCgpKS4KLQotY2xh
c3MgVmlld3BvcnRVcGRhdGVEZWZlcnJlciB7Ci1wdWJsaWM6Ci0gICAgZW51bSBTdXNwZW5kQ29u
dGVudEZsYWcgeyBEZWZlclVwZGF0ZSwgRGVmZXJVcGRhdGVBbmRTdXNwZW5kQ29udGVudCB9Owot
ICAgIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciosIFN1c3Bl
bmRDb250ZW50RmxhZyA9IERlZmVyVXBkYXRlKTsKLSAgICB+Vmlld3BvcnRVcGRhdGVEZWZlcnJl
cigpOwotCi1wcml2YXRlOgotICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnN0IG1fY29u
dHJvbGxlcjsKLX07Ci0KIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOwogCkBAIC0xMjEsNyArOTUs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NVc2VyU2NhbGluZzsKICAgICBmbG9hdCBt
X21pbmltdW1TY2FsZVRvRml0OwogCi0gICAgaW50IG1fYWN0aXZlRGVmZXJyZXJDb3VudDsKICAg
ICBib29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBib29sIG1faGFkVXNlckludGVyYWN0
aW9uOwogCkBAIC0xMzQsOCArMTA3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fdmlld3BvcnRQ
b3NJc0xvY2tlZDsKICAgICBib29sIG1fZWZmZWN0aXZlU2NhbGVJc0xvY2tlZDsKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV9sYXN0RnJhbWVDb3ZlcmVkUmVjdDsKLQotICAgIGZyaWVuZCBjbGFz
cyBWaWV3cG9ydFVwZGF0ZURlZmVycmVyOwogfTsKIAogYm9vbCBmdXp6eUNvbXBhcmUoZmxvYXQs
IGZsb2F0LCBmbG9hdCBlcHNpbG9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5jcHAKaW5kZXgg
YmZiODdhYmMzZmVmZDRjM2I0ZDhlZDZjOWI4ZGJiOWExNGUxMWE1Yi4uNDk2MmQzYjllODY1MDJm
ZWQwZmNlZWRiNmI0OTdhYTg4MTkxNzdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5jcHAK
QEAgLTQ1LDYgKzQ1LDcgQEAgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQoUVF1aWNrV2ViVmlldyogdmkKICAgICAsIG1fcGluY2hT
dGFydFNjYWxlKC0xKQogICAgICwgbV9sYXN0Q29tbWl0dGVkU2NhbGUoLTEpCiAgICAgLCBtX3pv
b21PdXRTY2FsZSgwKQorICAgICwgbV9pc1VzZXJJbnRlcmFjdGluZyhmYWxzZSkKICAgICAsIG1f
aWdub3JlVmlld3BvcnRDaGFuZ2VzKHRydWUpCiB7CiAgICAgbV9zY2FsZUFuaW1hdGlvbi0+c2V0
RHVyYXRpb24oa1NjYWxlQW5pbWF0aW9uRHVyYXRpb25NaWxsaXMpOwpAQCAtMTAyLDcgKzEwMyw3
IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjphbmltYXRlQ29udGVudFJl
Y3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgY29uCiAKICAgICBRUmVjdEYgdmlld3BvcnRSZWN0SW5D
b250ZW50Q29vcmRzID0gbV92aWV3cG9ydEl0ZW0tPm1hcFJlY3RUb1dlYkNvbnRlbnQobV92aWV3
cG9ydEl0ZW0tPmJvdW5kaW5nUmVjdCgpKTsKICAgICBpZiAoY29udGVudFJlY3QgPT0gdmlld3Bv
cnRSZWN0SW5Db250ZW50Q29vcmRzKSB7Ci0gICAgICAgIHVwZGF0ZVZpZXdwb3J0Q29udHJvbGxl
cigpOworICAgICAgICBtX2NvbnRyb2xsZXItPnJlc3VtZUNvbnRlbnQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTIwLDggKzEyMSw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0OjphbmltYXRlQ29udGVudFJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgY29u
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpmbGlja01vdmVTdGFydGVk
KCkKIHsKLSAgICBRX0FTU0VSVChtX3ZpZXdwb3J0SXRlbS0+aXNNb3ZpbmcoKSk7Ci0gICAgbV9z
Y3JvbGxVcGRhdGVEZWZlcnJlci5yZXNldChuZXcgVmlld3BvcnRVcGRhdGVEZWZlcnJlcihtX2Nv
bnRyb2xsZXIsIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXI6OkRlZmVyVXBkYXRlQW5kU3VzcGVuZENv
bnRlbnQpKTsKKyAgICBtX2NvbnRyb2xsZXItPnN1c3BlbmRDb250ZW50KCk7CiAKICAgICBtX2xh
c3RTY3JvbGxQb3NpdGlvbiA9IG1fdmlld3BvcnRJdGVtLT5jb250ZW50UG9zKCk7CiAKQEAgLTEz
MCwxMiArMTMwLDEyIEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpmbGlj
a01vdmVTdGFydGVkKCkKIAogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmZs
aWNrTW92ZUVuZGVkKCkKIHsKLSAgICBRX0FTU0VSVCghbV92aWV3cG9ydEl0ZW0tPmlzTW92aW5n
KCkpOwogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgZW5kIG9mIHRoZSBwYW4g
b3IgcGFuIGtpbmV0aWMgYW5pbWF0aW9uLgogCiAgICAgbV9pZ25vcmVWaWV3cG9ydENoYW5nZXMg
PSB0cnVlOwogCi0gICAgbV9zY3JvbGxVcGRhdGVEZWZlcnJlci5yZXNldCgpOworICAgIGlmICgh
bV9pc1VzZXJJbnRlcmFjdGluZykKKyAgICAgICAgbV9jb250cm9sbGVyLT5yZXN1bWVDb250ZW50
KCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpwYWdlSXRlbVBv
c2l0aW9uQ2hhbmdlZCgpCkBAIC0xNTUsMTEgKzE1NSwxMCBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRRdDo6c2NhbGVBbmltYXRpb25TdGF0ZUNoYW5nZWQoUUFic3RyYWN0QW5p
bWF0aQogICAgIHN3aXRjaCAobmV3U3RhdGUpIHsKICAgICBjYXNlIFFBYnN0cmFjdEFuaW1hdGlv
bjo6UnVubmluZzoKICAgICAgICAgbV92aWV3cG9ydEl0ZW0tPmNhbmNlbEZsaWNrKCk7Ci0gICAg
ICAgIEFTU0VSVCghbV9hbmltYXRpb25VcGRhdGVEZWZlcnJlcik7Ci0gICAgICAgIG1fYW5pbWF0
aW9uVXBkYXRlRGVmZXJyZXIucmVzZXQobmV3IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIobV9jb250
cm9sbGVyLCBWaWV3cG9ydFVwZGF0ZURlZmVycmVyOjpEZWZlclVwZGF0ZUFuZFN1c3BlbmRDb250
ZW50KSk7CisgICAgICAgIG1fY29udHJvbGxlci0+c3VzcGVuZENvbnRlbnQoKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBRQWJzdHJhY3RBbmltYXRpb246OlN0b3BwZWQ6Ci0gICAgICAgIG1f
YW5pbWF0aW9uVXBkYXRlRGVmZXJyZXIucmVzZXQoKTsKKyAgICAgICAgbV9jb250cm9sbGVyLT5y
ZXN1bWVDb250ZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTcxLDEzICsxNzAsMTIgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50UXQ6OnRvdWNoQmVnaW4oKQogICAgIG1fY29udHJvbGxlci0+c2V0SGFkVXNlckludGVyYWN0
aW9uKHRydWUpOwogCiAgICAgLy8gUHJldmVudHMgcmVzdW1pbmcgdGhlIHBhZ2UgYmV0d2VlbiB0
aGUgdXNlcidzIGZsaWNrcyBvZiB0aGUgcGFnZSB3aGlsZSB0aGUgYW5pbWF0aW9uIGlzIHJ1bm5p
bmcuCi0gICAgaWYgKHNjcm9sbEFuaW1hdGlvbkFjdGl2ZSgpKQotICAgICAgICBtX3RvdWNoVXBk
YXRlRGVmZXJyZXIucmVzZXQobmV3IFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIobV9jb250cm9sbGVy
LCBWaWV3cG9ydFVwZGF0ZURlZmVycmVyOjpEZWZlclVwZGF0ZUFuZFN1c3BlbmRDb250ZW50KSk7
CisgICAgbV9pc1VzZXJJbnRlcmFjdGluZyA9IHRydWU7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0Ojp0b3VjaEVuZCgpCiB7Ci0gICAgbV90b3VjaFVwZGF0ZURlZmVy
cmVyLnJlc2V0KCk7CisgICAgbV9pc1VzZXJJbnRlcmFjdGluZyA9IGZhbHNlOwogfQogCiB2b2lk
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6Zm9jdXNFZGl0YWJsZUFyZWEoY29uc3Qg
UVJlY3RGJiBjYXJldEFyZWEsIGNvbnN0IFFSZWN0RiYgdGFyZ2V0QXJlYSkKQEAgLTMyNiw5ICsz
MjQsOSBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6c2V0Q29udGVudHNT
Y2FsZShmbG9hdCBsb2NhbFNjYWxlLCBib29sIHRyZQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRRdDo6c2V0Q29udGVudHNSZWN0VG9OZWFyZXN0VmFsaWRCb3VuZHMoKQogewot
ICAgIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIgZ3VhcmQobV9jb250cm9sbGVyKTsKICAgICBmbG9h
dCB0YXJnZXRTY2FsZSA9IG1fY29udHJvbGxlci0+aW5uZXJCb3VuZGVkVmlld3BvcnRTY2FsZSht
X3BhZ2VJdGVtLT5jb250ZW50c1NjYWxlKCkpOwogICAgIHNldENvbnRlbnRSZWN0VmlzaWJsZVBv
c2l0aW9uQXRTY2FsZShuZWFyZXN0VmFsaWRWaXNpYmxlQ29udGVudHNSZWN0KCkudG9wTGVmdCgp
LCB0YXJnZXRTY2FsZSk7CisgICAgdXBkYXRlVmlld3BvcnRDb250cm9sbGVyKCk7CiB9CiAKIHZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpkaWRSZXN1bWVDb250ZW50KCkKQEAg
LTQyMSw3ICs0MTksNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGlu
Y2hHZXN0dXJlU3RhcnRlZChjb25zdCBRUG9pbnRGJiBwaW5jaENlbgogICAgIG1fc2NhbGVTdGFj
ay5jbGVhcigpOwogICAgIG1fem9vbU91dFNjYWxlID0gMC4wOwogCi0gICAgbV9zY2FsZVVwZGF0
ZURlZmVycmVyLnJlc2V0KG5ldyBWaWV3cG9ydFVwZGF0ZURlZmVycmVyKG1fY29udHJvbGxlciwg
Vmlld3BvcnRVcGRhdGVEZWZlcnJlcjo6RGVmZXJVcGRhdGVBbmRTdXNwZW5kQ29udGVudCkpOwor
ICAgIG1fY29udHJvbGxlci0+c3VzcGVuZENvbnRlbnQoKTsKIAogICAgIG1fbGFzdFBpbmNoQ2Vu
dGVySW5WaWV3cG9ydENvb3JkaW5hdGVzID0gcGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0
ZXM7CiAgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSBtX3BhZ2VJdGVtLT5jb250ZW50c1NjYWxlKCk7
CkBAIC00NTcsMTQgKzQ1NSwxNCBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRR
dDo6cGluY2hHZXN0dXJlRW5kZWQoKQogCiAgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSAtMTsKIAor
ICAgIC8vIFNob3VsZCBhbHdheXMgcmVzdW1lIHRoZSBjb250ZW50LCBldmVuIGlmIG5vIGFuaW1h
dGlvbiB3YXMgcGVyZm9ybWVkLgogICAgIGFuaW1hdGVDb250ZW50UmVjdFZpc2libGUobmVhcmVz
dFZhbGlkVmlzaWJsZUNvbnRlbnRzUmVjdCgpKTsKLSAgICBtX3NjYWxlVXBkYXRlRGVmZXJyZXIu
cmVzZXQoKTsgLy8gQ2xlYXIgYWZ0ZXIgc3RhcnRpbmcgcG90ZW50aWFsIGFuaW1hdGlvbiwgd2hp
Y2ggdGFrZXMgb3ZlciBkZWZlcnJpbmcuCiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0OjpwaW5jaEdlc3R1cmVDYW5jZWxsZWQoKQogewogICAgIG1fcGluY2hTdGFydFNj
YWxlID0gLTE7Ci0gICAgbV9zY2FsZVVwZGF0ZURlZmVycmVyLnJlc2V0KCk7CisgICAgbV9jb250
cm9sbGVyLT5yZXN1bWVDb250ZW50KCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudFF0OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQuaAppbmRleCA3YzVjZWVhNTg1ZjNlOWQzNWZlYjE3M2U2NWY3
NThiOTNiYzIwMGY3Li42MjU1Zjk0MjlkMTJlMWU3MDU1YjRmZWIzNjM2NzQ2MTVhMzNkMDI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdC5oCkBAIC0xMjksMTEgKzEyOSw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBhbmltYXRlQ29udGVudFJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYgY29udGVudFJl
Y3QpOwogICAgIHZvaWQgc2NhbGVDb250ZW50KHFyZWFsIGl0ZW1TY2FsZSwgY29uc3QgUVBvaW50
RiYgY2VudGVySW5DU1NDb29yZGluYXRlcyA9IFFQb2ludEYoKSk7CiAKLSAgICBRU2NvcGVkUG9p
bnRlcjxWaWV3cG9ydFVwZGF0ZURlZmVycmVyPiBtX3NjYWxlVXBkYXRlRGVmZXJyZXI7Ci0gICAg
UVNjb3BlZFBvaW50ZXI8Vmlld3BvcnRVcGRhdGVEZWZlcnJlcj4gbV9zY3JvbGxVcGRhdGVEZWZl
cnJlcjsKLSAgICBRU2NvcGVkUG9pbnRlcjxWaWV3cG9ydFVwZGF0ZURlZmVycmVyPiBtX3RvdWNo
VXBkYXRlRGVmZXJyZXI7Ci0gICAgUVNjb3BlZFBvaW50ZXI8Vmlld3BvcnRVcGRhdGVEZWZlcnJl
cj4gbV9hbmltYXRpb25VcGRhdGVEZWZlcnJlcjsKLQogICAgIFNjYWxlQW5pbWF0aW9uKiBtX3Nj
YWxlQW5pbWF0aW9uOwogICAgIFFQb2ludEYgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29v
cmRpbmF0ZXM7CiAgICAgUVBvaW50RiBtX2xhc3RTY3JvbGxQb3NpdGlvbjsKQEAgLTE0MSw2ICsx
MzYsNyBAQCBwcml2YXRlOgogICAgIHFyZWFsIG1fbGFzdENvbW1pdHRlZFNjYWxlOwogICAgIHFy
ZWFsIG1fem9vbU91dFNjYWxlOwogICAgIFFMaXN0PFNjYWxlU3RhY2tJdGVtPiBtX3NjYWxlU3Rh
Y2s7CisgICAgYm9vbCBtX2lzVXNlckludGVyYWN0aW5nOwogICAgIGJvb2wgbV9pZ25vcmVWaWV3
cG9ydENoYW5nZXM7CiB9OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>