<?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>109290</bug_id>
          
          <creation_ts>2013-02-08 05:27:24 -0800</creation_ts>
          <short_desc>[Qt][WK2] Replace suspend/resume internal API usage with C API in the PageViewportController</short_desc>
          <delta_ts>2014-02-03 03:24:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>108471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andras Becsi">abecsi</reporter>
          <assigned_to name="Andras Becsi">abecsi</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>menard</cc>
    
    <cc>michael.bruning</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828468</commentid>
    <comment_count>0</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-08 05:27:24 -0800</bug_when>
    <thetext>[Qt][WK2] Replace suspend/resume internal API usage with C API in the PageViewportController</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828469</commentid>
    <comment_count>1</comment_count>
      <attachid>187298</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-08 05:29:09 -0800</bug_when>
    <thetext>Created attachment 187298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828477</commentid>
    <comment_count>2</comment_count>
      <attachid>187298</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-08 05:40:29 -0800</bug_when>
    <thetext>Comment on attachment 187298
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:77
&gt; +WK_EXPORT bool WKPageAreActiveDOMObjectsAndAnimationsSuspended(WKPageRef page);
&gt; +WK_EXPORT void WKPageSuspendActiveDOMObjectsAndAnimations(WKPageRef page);
&gt; +WK_EXPORT void WKPageResumeActiveDOMObjectsAndAnimations(WKPageRef page);

These are very view specific... we added similar methods to the EFL WKView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828496</commentid>
    <comment_count>3</comment_count>
      <attachid>187298</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-08 06:03:43 -0800</bug_when>
    <thetext>Comment on attachment 187298
Patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:43
&gt; +PageViewportController::PageViewportController(WKPageRef pageRef, PageViewportControllerClient* client)

It&apos;s called pageRef within the WK* C API implementation, but from the client side, we can name the variable &quot;page&quot;.

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:45
&gt; +    : m_webPageProxy(toImpl(pageRef))
&gt; +    , m_wkPage(pageRef)

I didn&apos;t understand why we did that in QQuickWebView as well, but why do we need to store two types of the same value?
Can&apos;t we just call toImpl/toAPI when needed?

&gt; Source/WebKit2/UIProcess/PageViewportController.cpp:-322
&gt; -    if (!m_hasSuspendedContent)
&gt; -        return;

This reverts the work done in bug #80294. Is this what we want?

&gt; Source/WebKit2/UIProcess/PageViewportController.h:96
&gt; +    WKRetainPtr&lt;WKPageRef&gt; m_wkPage;

Is this a normal practice to increase the refcount for this kind of case?
Technically only the QQuickWebView should need to retain it, maybe we want this for safety. In any case, I&apos;m just asking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828511</commentid>
    <comment_count>4</comment_count>
      <attachid>187298</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-08 06:22:05 -0800</bug_when>
    <thetext>Comment on attachment 187298
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:77
&gt;&gt; +WK_EXPORT void WKPageResumeActiveDOMObjectsAndAnimations(WKPageRef page);
&gt; 
&gt; These are very view specific... we added similar methods to the EFL WKView.

How are they view specific if all they do is operate on a WebPageProxy and send a message to the WebPage in the WebProcess? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828517</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-08 06:25:46 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 187298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187298&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:77
&gt; &gt;&gt; +WK_EXPORT void WKPageResumeActiveDOMObjectsAndAnimations(WKPageRef page);
&gt; &gt; 
&gt; &gt; These are very view specific... we added similar methods to the EFL WKView.
&gt; 
&gt; How are they view specific if all they do is operate on a WebPageProxy and send a message to the WebPage in the WebProcess? :)

Well there is no view class for IPC so it has to go through the web page proxy. But I more mean that this is probably something you would do per view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828531</commentid>
    <comment_count>6</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-08 06:45:30 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 187298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187298&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:43
&gt; &gt; +PageViewportController::PageViewportController(WKPageRef pageRef, PageViewportControllerClient* client)
&gt; 
&gt; It&apos;s called pageRef within the WK* C API implementation, but from the client side, we can name the variable &quot;page&quot;.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:45
&gt; &gt; +    : m_webPageProxy(toImpl(pageRef))
&gt; &gt; +    , m_wkPage(pageRef)
&gt; 
&gt; I didn&apos;t understand why we did that in QQuickWebView as well, but why do we need to store two types of the same value?
&gt; Can&apos;t we just call toImpl/toAPI when needed?

I think the webPageProxy member should be removed as soon as everything is moved to the C API, we could use toAPI, and change everything to WKPage in one go at the end if you think that would be better.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:-322
&gt; &gt; -    if (!m_hasSuspendedContent)
&gt; &gt; -        return;
&gt; 
&gt; This reverts the work done in bug #80294. Is this what we want?

There is a check for that in WebPageProxy, so the call does not end up in an IPC message if the page is already suspended.
In fact I think the issue of #80294 has already been reintroduced when the update guard was removed. I have to look into that.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.h:96
&gt; &gt; +    WKRetainPtr&lt;WKPageRef&gt; m_wkPage;
&gt; 
&gt; Is this a normal practice to increase the refcount for this kind of case?
&gt; Technically only the QQuickWebView should need to retain it, maybe we want this for safety. In any case, I&apos;m just asking.

I think we want this for safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828541</commentid>
    <comment_count>7</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-08 07:09:40 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 187298 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187298&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:45
&gt; &gt; &gt; +    : m_webPageProxy(toImpl(pageRef))
&gt; &gt; &gt; +    , m_wkPage(pageRef)
&gt; &gt; 
&gt; &gt; I didn&apos;t understand why we did that in QQuickWebView as well, but why do we need to store two types of the same value?
&gt; &gt; Can&apos;t we just call toImpl/toAPI when needed?
&gt; 
&gt; I think the webPageProxy member should be removed as soon as everything is moved to the C API, we could use toAPI, and change everything to WKPage in one go at the end if you think that would be better.

You could also replace the WebPageProxy* with a WKPageRef now and wrap references that you can&apos;t change with toImpl, as you wish.
If you keep it, could you also name the member m_page instead of m_wkPage? No need to repeat a prefix whose purpose is to avoid clashes of the API in the global namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828547</commentid>
    <comment_count>8</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-08 07:18:32 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 187298 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187298&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/UIProcess/PageViewportController.cpp:45
&gt; &gt; &gt; &gt; +    : m_webPageProxy(toImpl(pageRef))
&gt; &gt; &gt; &gt; +    , m_wkPage(pageRef)
&gt; &gt; &gt; 
&gt; &gt; &gt; I didn&apos;t understand why we did that in QQuickWebView as well, but why do we need to store two types of the same value?
&gt; &gt; &gt; Can&apos;t we just call toImpl/toAPI when needed?
&gt; &gt; 
&gt; &gt; I think the webPageProxy member should be removed as soon as everything is moved to the C API, we could use toAPI, and change everything to WKPage in one go at the end if you think that would be better.
&gt; 
&gt; You could also replace the WebPageProxy* with a WKPageRef now and wrap references that you can&apos;t change with toImpl, as you wish.
&gt; If you keep it, could you also name the member m_page instead of m_wkPage? No need to repeat a prefix whose purpose is to avoid clashes of the API in the global namespace.

I think changing everything reference to WKPageRef would make the patch less compact, and make the places which still need to be moved to the C API harder to spot, so I would rather keep the WebPageProxy member yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828555</commentid>
    <comment_count>9</comment_count>
      <attachid>187318</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-08 07:28:40 -0800</bug_when>
    <thetext>Created attachment 187318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828567</commentid>
    <comment_count>10</comment_count>
      <attachid>187318</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-08 07:45:15 -0800</bug_when>
    <thetext>Comment on attachment 187318
Patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.h:95
&gt;      WebPageProxy* const m_webPageProxy;
&gt; +

This might have slipped in.

Other that that the patch looks fine to me, as long as you can get the added C API approved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828578</commentid>
    <comment_count>11</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-08 07:54:58 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 187298 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=187298&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPagePrivate.h:77
&gt; &gt; +WK_EXPORT bool WKPageAreActiveDOMObjectsAndAnimationsSuspended(WKPageRef page);
&gt; &gt; +WK_EXPORT void WKPageSuspendActiveDOMObjectsAndAnimations(WKPageRef page);
&gt; &gt; +WK_EXPORT void WKPageResumeActiveDOMObjectsAndAnimations(WKPageRef page);
&gt; 
&gt; These are very view specific... we added similar methods to the EFL WKView.

It&apos;s true that this could be better abstracted behind the view with some kind of isMoving/beginMove/endMove method calls and visible rect updated in-between.

This is where it is going to be difficult to have a dumb fixedLayout view with the viewport interaction being handled outside of the C API.
By thinking a bit more about it, I&apos;m not sure either if bluntly exposing those WebPageProxy functions is the right way to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828586</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-08 08:11:12 -0800</bug_when>
    <thetext>EFL added these methods to our WKView (similar to your QRawWebView), but ofcourse that way we cannot share</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828603</commentid>
    <comment_count>13</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-08 08:46:08 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; EFL added these methods to our WKView (similar to your QRawWebView), but ofcourse that way we cannot share

How about sharing a platform agnostic view that takes care of handling events and rendering through OpenGL? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828614</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-08 08:55:54 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; EFL added these methods to our WKView (similar to your QRawWebView), but ofcourse that way we cannot share
&gt; 
&gt; How about sharing a platform agnostic view that takes care of handling events and rendering through OpenGL? :)

I am up for that. We now have a very limited (but growing) WKView C API. I have some local patches making it possible to actually draw using this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835767</commentid>
    <comment_count>15</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-18 14:55:00 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; EFL added these methods to our WKView (similar to your QRawWebView), but ofcourse that way we cannot share
&gt; 
&gt; How about sharing a platform agnostic view that takes care of handling events and rendering through OpenGL? :)

Wow, this pretty much describes what is the WebView in WebKitNix! I&apos;m working a patch transforming our NIXView into a WKView for Coordinated Graphics. As soon as it looks nice I&apos;ll post it for you and Kenneth to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837511</commentid>
    <comment_count>16</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2013-02-20 09:21:33 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; EFL added these methods to our WKView (similar to your QRawWebView), but ofcourse that way we cannot share
&gt; &gt; 
&gt; &gt; How about sharing a platform agnostic view that takes care of handling events and rendering through OpenGL? :)
&gt; 
&gt; Wow, this pretty much describes what is the WebView in WebKitNix! I&apos;m working a patch transforming our NIXView into a WKView for Coordinated Graphics. As soon as it looks nice I&apos;ll post it for you and Kenneth to review.

This is already happening as part of https://bugs.webkit.org/show_bug.cgi?id=107662. MPozdnyakov is working on patches toward that direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840846</commentid>
    <comment_count>17</comment_count>
      <attachid>187318</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2013-02-25 03:46:44 -0800</bug_when>
    <thetext>Comment on attachment 187318
Patch

Removing the patch from the review queue. Revisiting this as soon as we have a shared WebView and its responsibilities are sorted out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975674</commentid>
    <comment_count>18</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:24:59 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187298</attachid>
            <date>2013-02-08 05:29:09 -0800</date>
            <delta_ts>2013-02-08 07:28:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109290-20130208142347.patch</filename>
            <type>text/plain</type>
            <size>16870</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjk5YTI3NzVlZDU3NDU4
OTU1ODFjNjBmMzMzOThjYzA3M2NkMDBmMy4uMGRlMTIzMjNjMDFiYmE5M2FjZjQzYzI4ZTFjNWUy
MzA2ZWZhNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTA4ICBBbmRy
YXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBS
ZXBsYWNlIHN1c3BlbmQvcmVzdW1lIGludGVybmFsIEFQSSB1c2FnZSB3aXRoIEMgQVBJIGluIHRo
ZSBQYWdlVmlld3BvcnRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgcHJpdmF0ZSBDIEFQSSBmb3Ig
dGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9uYWxpdHkgYW5kCisgICAgICAgIG1vdmVzIHRoZSBs
b2dpYyBpbiBQYWdlVmlld3BvcnRDb250cm9sbGVyIG9uIHRvcCBvZiB0aGlzIEMgQVBJIGFzIGEg
Zmlyc3Qgc3RlcAorICAgICAgICB0byBtb3ZlIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgYXdheSBm
cm9tIHVzaW5nIGludGVybmFsIEFQSS4KKyAgICAgICAgVGhpcyBhbHNvIGFsbG93cyB0byBkbyBz
b21lIGNsZWFuLXVwIGluIHRoZSBjbGllbnRzIGFuZCByZW1vdmUgbGVmdG92ZXIgY29kZQorICAg
ICAgICB0byBzaW1wbGlmeSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBQYWdlVmlld3BvcnRDb250
cm9sbGVyIGFuZCBjbGllbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VBcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXS1BhZ2VTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMpOgorICAgICAgICAoV0tQYWdlUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlOjpvbkNvbXBvbmVudENvbXBsZXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6Omhhc1N1c3BlbmRlZENvbnRlbnQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzdXNwZW5kQ29udGVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRl
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmg6CisgICAg
ICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudC5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0SW1wbDo6dXBkYXRlVmlld3Bv
cnRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
YW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdDo6ZmxpY2tNb3ZlRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxlQW5pbWF0aW9uU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpyZXN1
bWVBbmRVcGRhdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdCk6CisKIDIwMTMtMDItMDcgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNDIyMTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmlu
ZGV4IDU1MGQ3YmVlM2QwMjc1ZmFmOWI4ZjBiZTEyNzZlYTc3MjJmYWVhNTAuLmUxMWIyZjMyZTU0
ZDIwODNmNzYwNDQ2YmYzMzdkMWY5OWQxZDdjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0zNzQsNiArMzc0LDIxIEBAIGJvb2wgV0tQYWdlQXJlU2Ny
b2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+YXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoKTsKIH0K
IAorYm9vbCBXS1BhZ2VBcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZChX
S1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5hcmVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpOworfQorCit2b2lkIFdLUGFnZVN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZVJlZikKK3sK
KyAgICB0b0ltcGwocGFnZVJlZiktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOworfQorCit2b2lkIFdLUGFnZVJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30KKwogYm9vbCBXS1BhZ2VJc1Bpbm5lZFRvTGVm
dFNpZGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+
aXNQaW5uZWRUb0xlZnRTaWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaAppbmRleCAyNDE1ZjI2MzM0YzYwZjdmMWUzNzM1OTUxNzczY2I3MDQw
MGViYzllLi4zZmVmNjVjNDljNjMxNjliM2YzNmY4NTJkYzllZDE5NzU0ODEyZjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKQEAgLTcyLDYg
KzcyLDEwIEBAIFdLX0VYUE9SVCBkb3VibGUgV0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFn
ZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIHVuc2lnbmVkIFdLUGFnZUdldFBhZ2VDb3VudChXS1Bh
Z2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBib29sIFdLUGFnZUFyZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zU3VzcGVuZGVkKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdL
UGFnZVN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZSk7
CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cyhXS1BhZ2VSZWYgcGFnZSk7CisKIHN0cnVjdCBXS1ByaW50SW5mbyB7CiAgICAgZmxvYXQgcGFn
ZVNldHVwU2NhbGVGYWN0b3I7CiAgICAgZmxvYXQgYXZhaWxhYmxlUGFwZXJXaWR0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4
IDNhODAxMGE4YmQ3MmI2OGRhNTUzZGM1NzRmMjE1MmFkMjI5YjBiYzEuLjk1NDEyNTQ2YjBjOTVk
YWQyMzdmNzY5ZjM4OGY0NWJkOWViZmY3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtOTYxLDcgKzk2MSw3IEBAIHZvaWQg
UVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Om9uQ29tcG9uZW50Q29tcGxldGUoKQogCiAg
ICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dC5yZXNldChuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0KHEsIHBhZ2VWaWV3LmRh
dGEoKSkpOwotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5yZXNldChuZXcgUGFnZVZpZXdw
b3J0Q29udHJvbGxlcih3ZWJQYWdlUHJveHkuZ2V0KCksIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC5kYXRhKCkpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIucmVzZXQobmV3
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIod2ViUGFnZS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50LmRhdGEoKSkpOwogICAgIHBhZ2VWaWV3LT5ldmVudEhhbmRsZXIoKS0+c2V0
Vmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5kYXRhKCkp
OwogCiAgICAgLy8gVHJpZ2dlciBzZXR0aW5nIG9mIGNvcnJlY3QgdmlzaWJpbGl0eSBmbGFncyBh
ZnRlciBldmVyeXRoaW5nIHdhcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4
IDFhOWJkZTZkZTVjNzUzMmIzYjhjN2Y5MWNkNDVjMDY4NmVkNTZkMzAuLjkzM2JlZjA2ZDgzMDJi
ZGFiNTViNTA2NTMxNTk5YmRjZmM4MTA1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0zOSwxMyArNDAsMTMgQEAgYm9vbCBmdXp6eUNvbXBhcmUoZmxvYXQgYSwg
ZmxvYXQgYiwgZmxvYXQgZXBzaWxvbikKICAgICByZXR1cm4gc3RkOjphYnMoYSAtIGIpIDwgZXBz
aWxvbjsKIH0KIAotUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fd2ViUGFnZVByb3h5KHByb3h5KQorUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcihXS1BhZ2VSZWYgcGFnZVJlZiwgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJQYWdlUHJveHkodG9J
bXBsKHBhZ2VSZWYpKQorICAgICwgbV93a1BhZ2UocGFnZVJlZikKICAgICAsIG1fY2xpZW50KGNs
aWVudCkKICAgICAsIG1fYWxsb3dzVXNlclNjYWxpbmcoZmFsc2UpCiAgICAgLCBtX21pbmltdW1T
Y2FsZVRvRml0KDEpCiAgICAgLCBtX2luaXRpYWxseUZpdFRvVmlld3BvcnQodHJ1ZSkKLSAgICAs
IG1faGFzU3VzcGVuZGVkQ29udGVudChmYWxzZSkKICAgICAsIG1faGFkVXNlckludGVyYWN0aW9u
KGZhbHNlKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKICAgICAsIG1fcGVuZGluZ1Bvc2l0
aW9uQ2hhbmdlKGZhbHNlKQpAQCAtMjI2LDcgKzIyNyw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlcjo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIGNzc1Bvc2l0
aW9uKQogewogICAgIC8vIElnbm9yZSB0aGUgcmVxdWVzdCBpZiBzdXNwZW5kZWQuIENhbiBvbmx5
IGhhcHBlbiBkdWUgdG8gZGVsYXkgaW4gZXZlbnQgZGVsaXZlcnkuCi0gICAgaWYgKG1faGFzU3Vz
cGVuZGVkQ29udGVudCkKKyAgICBpZiAoaGFzU3VzcGVuZGVkQ29udGVudCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBGbG9hdFBvaW50IGJvdW5kUG9zaXRpb24gPSBib3VuZENvbnRlbnRzUG9z
aXRpb24oRmxvYXRQb2ludChjc3NQb3NpdGlvbikpOwpAQCAtMzA1LDI0ICszMDYsMTkgQEAgRmxv
YXRTaXplIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnZpc2libGVDb250ZW50c1NpemUoKSBjb25z
dAogICAgIHJldHVybiBGbG9hdFNpemUobV92aWV3cG9ydFNpemUud2lkdGgoKSAvIG1fcGFnZVNj
YWxlRmFjdG9yLCBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAvIG1fcGFnZVNjYWxlRmFjdG9yKTsK
IH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzdXNwZW5kQ29udGVudCgpCitib29s
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6Omhhc1N1c3BlbmRlZENvbnRlbnQoKSBjb25zdAogewot
ICAgIGlmIChtX2hhc1N1c3BlbmRlZENvbnRlbnQpCi0gICAgICAgIHJldHVybjsKKyAgICByZXR1
cm4gV0tQYWdlQXJlQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQobV93a1Bh
Z2UuZ2V0KCkpOworfQogCi0gICAgbV9oYXNTdXNwZW5kZWRDb250ZW50ID0gdHJ1ZTsKLSAgICBt
X3dlYlBhZ2VQcm94eS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Cit2
b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnN1c3BlbmRDb250ZW50KCkKK3sKKyAgICBXS1Bh
Z2VTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMobV93a1BhZ2UuZ2V0KCkpOwog
fQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRlbnQoKQogewotICAg
IG1fY2xpZW50LT5kaWRSZXN1bWVDb250ZW50KCk7Ci0KLSAgICBpZiAoIW1faGFzU3VzcGVuZGVk
Q29udGVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9oYXNTdXNwZW5kZWRDb250ZW50ID0g
ZmFsc2U7Ci0gICAgbV93ZWJQYWdlUHJveHktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCk7CisgICAgV0tQYWdlUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
bV93a1BhZ2UuZ2V0KCkpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OmFwcGx5
U2NhbGVBZnRlclJlbmRlcmluZ0NvbnRlbnRzKGZsb2F0IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKaW5kZXggMzVkNGI1MzNk
MjA3MDJlYjI5YTJjMjJkNzM0MjkwYmQyNGJiZDYwMy4uNzQyYzcxNmIwOTczZDdhNjkzYzYyOGZj
MmZlMjNhZGZhOTA2NDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZVZpZXdwb3J0Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW50UG9pbnQ7CkBAIC00NCw3ICs0Niw3IEBAIGNsYXNzIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIpOwogCiBwdWJsaWM6Ci0gICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihXZWJLaXQ6OldlYlBh
Z2VQcm94eSosIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQqKTsKKyAgICBQYWdlVmlld3Bv
cnRDb250cm9sbGVyKFdLUGFnZVJlZiwgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCopOwog
ICAgIHZpcnR1YWwgflBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKSB7IH0KIAogICAgIHZvaWQgc3Vz
cGVuZENvbnRlbnQoKTsKQEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgogCiAgICAgV2ViQ29yZTo6
RmxvYXRTaXplIHZpc2libGVDb250ZW50c1NpemUoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzU3Vz
cGVuZGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3VzcGVuZGVkQ29udGVudDsgfQor
ICAgIGJvb2wgaGFzU3VzcGVuZGVkQ29udGVudCgpIGNvbnN0OwogICAgIGJvb2wgaGFkVXNlcklu
dGVyYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYWRVc2VySW50ZXJhY3Rpb247IH0KICAgICBi
b29sIGFsbG93c1VzZXJTY2FsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NVc2VyU2NhbGlu
ZzsgfQogCkBAIC05MSw2ICs5Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVNaW5pbXVt
U2NhbGVUb0ZpdChib29sIHVzZXJJbml0aWF0ZWRVcGRhdGUpOwogCiAgICAgV2ViUGFnZVByb3h5
KiBjb25zdCBtX3dlYlBhZ2VQcm94eTsKKyAgICBXS1JldGFpblB0cjxXS1BhZ2VSZWY+IG1fd2tQ
YWdlOworCiAgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCogbV9jbGllbnQ7CiAKICAg
ICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgbV9yYXdBdHRyaWJ1dGVzOwpAQCAtOTksNyAr
MTAzLDYgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pbmltdW1TY2FsZVRvRml0OwogICAgIGJv
b2wgbV9pbml0aWFsbHlGaXRUb1ZpZXdwb3J0OwogCi0gICAgYm9vbCBtX2hhc1N1c3BlbmRlZENv
bnRlbnQ7CiAgICAgYm9vbCBtX2hhZFVzZXJJbnRlcmFjdGlvbjsKIAogICAgIFdlYkNvcmU6OkZs
b2F0UG9pbnQgbV9jb250ZW50c1Bvc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmgKaW5kZXggZTU1ZGJkYjQ2
ZDRlY2I4ODk4NzlkZDk3ODg3MGRmYzI2NzYwYmY5Ny4uMTVkOWE1ZTVkY2UwZGEyYTdiM2RlMTA0
ZTI1MzFjM2JlOTI5MDRmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oCkBAIC00MSw3ICs0MSw2IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBjb250ZW50c1BvaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VT
Y2FsZUZhY3RvcihmbG9hdCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZUNvbnRl
bnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxl
Q29udGVudHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcygpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAw
ZjYwZTdkZTZlOGFhMGJiOGI3ZGYwNDk0OWQ2ZGQwMDc2YmRhNWZiLi5kMWJlNTI4YTllYzQ3YmU2
MTcyYmNlNjc3ZmE3NGNjNGMyYzcwMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC00NDksNiArNDQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9t
VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3VzdG9tVGV4dEVu
Y29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4dEVuY29kaW5nTmFtZTsgfQog
CisgICAgYm9vbCBhcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIHsg
cmV0dXJuIG1faXNQYWdlU3VzcGVuZGVkOyB9CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAppbmRleCA1YTkyMjE5YzQ3NmE5Nzc4MjExYzUwYmRk
NDkyNmY4ZmQ5MGJhOWJlLi4xM2U3MzhmNTE0MjM0N2M4NTgyN2Y1Y2M5NDhhMmE2YmRiZGFlNTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZh
dWx0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
RGVmYXVsdEltcGwuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgUGFnZUNsaWVudERlZmF1bHRJ
bXBsOjp1cGRhdGVWaWV3cG9ydFNpemUoKQogewogICAgIGlmICghbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50KSB7CiAgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZShtX3ZpZXcpOwotICAgICAg
ICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcihtX3ZpZXctPnBhZ2UoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50Lmdl
dCgpKSk7CisgICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQ
YWdlVmlld3BvcnRDb250cm9sbGVyKG1fdmlldy0+d2tQYWdlKCksIG1fcGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudC5nZXQoKSkpOwogICAgIH0KICAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQtPnVwZGF0ZVZpZXdwb3J0U2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5jcHAKaW5kZXggMWZmNmM2OTFmYzZjZmRkNzljNDcxMDc1YWY3M2UzNDJlMTFhMzM2ZC4u
MzZkMGUzZGFkNjhhMjU0NTUzYmIwZWRmZTAwNmNmZjU0YzRiMzFhZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwCkBAIC04OSwxMiArODksNiBAQCB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OnNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBuZXdTY2FsZSkKICAg
ICBtX3ZpZXctPnNldFBhZ2VTY2FsZUZhY3RvcihuZXdTY2FsZSk7CiB9CiAKLXZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCgpCi17Ci0gICAgQVNT
RVJUKG1fY29udHJvbGxlcik7Ci0gICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zp
c2liaWxpdHkobV9jb250ZW50UG9zaXRpb24sIG1fdmlldy0+cGFnZVNjYWxlRmFjdG9yKCkpOwot
fQotCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZVZpc2li
bGVDb250ZW50cygpCiB7CiAgICAgbV92aWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsLmgKaW5kZXggNWMxOWMyNzU5ODMzMWZlMWY3MDU3MTUxNTE1
ZTc1ZWVjY2QzNTVjYS4uZjBjNTNiZmIyMmUwYWU1NmJjODc5NTRmNDMxYjgzMDlkMmYwNjMzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgKQEAgLTUxLDcgKzUxLDYgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmIGNvbnRlbnRzUG9pbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYWdlU2NhbGVGYWN0
b3IoZmxvYXQpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3VtZUNvbnRlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudFF0LmNwcAppbmRleCBlOTE0NWI2MTc3YThmYjAwNzQxMWJjNjI1MDc4MjFhNGRmNWZhMDIx
Li43ZjU0NDBiZGZkZjJmZmRiNjYwMTc3MDQ3OTQwNGY4NThjYmE0NjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudFF0OjphbmltYXRlQ29udGVudFJlY3RWaXNpYmxlKGNvbnN0IFFSZWN0RiYg
Y29uCiAKICAgICBRUmVjdEYgdmlld3BvcnRSZWN0SW5Db250ZW50Q29vcmRzID0gbV92aWV3cG9y
dEl0ZW0tPm1hcFJlY3RUb1dlYkNvbnRlbnQobV92aWV3cG9ydEl0ZW0tPmJvdW5kaW5nUmVjdCgp
KTsKICAgICBpZiAoY29udGVudFJlY3QgPT0gdmlld3BvcnRSZWN0SW5Db250ZW50Q29vcmRzKSB7
Ci0gICAgICAgIG1fY29udHJvbGxlci0+cmVzdW1lQ29udGVudCgpOworICAgICAgICByZXN1bWVB
bmRVcGRhdGVDb250ZW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNCw3ICsx
MzQsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6ZmxpY2tNb3ZlRW5k
ZWQoKQogCiAgICAgbV9pZ25vcmVWaWV3cG9ydENoYW5nZXMgPSB0cnVlOwogICAgIGlmICghbV9p
c1VzZXJJbnRlcmFjdGluZykKLSAgICAgICAgbV9jb250cm9sbGVyLT5yZXN1bWVDb250ZW50KCk7
CisgICAgICAgIHJlc3VtZUFuZFVwZGF0ZUNvbnRlbnQoKTsKIH0KIAogdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50UXQ6OnBhZ2VJdGVtUG9zaXRpb25DaGFuZ2VkKCkKQEAgLTE1Nyw3
ICsxNTcsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6c2NhbGVBbmlt
YXRpb25TdGF0ZUNoYW5nZWQoUUFic3RyYWN0QW5pbWF0aQogICAgICAgICBtX2NvbnRyb2xsZXIt
PnN1c3BlbmRDb250ZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUUFic3RyYWN0QW5p
bWF0aW9uOjpTdG9wcGVkOgotICAgICAgICBtX2NvbnRyb2xsZXItPnJlc3VtZUNvbnRlbnQoKTsK
KyAgICAgICAgcmVzdW1lQW5kVXBkYXRlQ29udGVudCgpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTMzNCw4ICszMzQsOSBAQCB2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6c2V0Q29udGVudHNSZWN0VG9OZWFyZXN0VmFsaWRCb3Vu
ZHMoKQogICAgIHVwZGF0ZVZpZXdwb3J0Q29udHJvbGxlcigpOwogfQogCi12b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6ZGlkUmVzdW1lQ29udGVudCgpCit2b2lkIFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cmVzdW1lQW5kVXBkYXRlQ29udGVudCgpCiB7CisgICAg
bV9jb250cm9sbGVyLT5yZXN1bWVDb250ZW50KCk7CiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGls
ZXMgYWxsIGFyb3VuZCB0aGUgdmlld3BvcnQgd2lsbCBiZSByZXF1ZXN0ZWQuCiAgICAgdXBkYXRl
Vmlld3BvcnRDb250cm9sbGVyKCk7CiB9CkBAIC00NjYsNyArNDY3LDcgQEAgdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnBpbmNoR2VzdHVyZUVuZGVkKCkKIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVDYW5jZWxsZWQoKQogewogICAg
IG1fcGluY2hTdGFydFNjYWxlID0gLTE7Ci0gICAgbV9jb250cm9sbGVyLT5yZXN1bWVDb250ZW50
KCk7CisgICAgcmVzdW1lQW5kVXBkYXRlQ29udGVudCgpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IEludFNpemUm
IG5ld1NpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmgKaW5kZXggZTVjZmVlZTYxMzhmMmQ1Zjhm
YWM1ZTJiZGUzNWZhZTU1N2E0OTAwOS4uZjg1ZTliZDAwMzBiZTM5MDk2NGMwMTE5OWFiMzI2MzI4
M2M5NTc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuaApAQCAtNTAsNyArNTAsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgY29udGVudHNQb2ludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2Fs
ZUZhY3RvcihmbG9hdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lQ29udGVudCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCk7CkBAIC0xMjksNiAr
MTI4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFuaW1hdGVDb250ZW50UmVjdFZpc2libGUoY29u
c3QgUVJlY3RGJiBjb250ZW50UmVjdCk7CiAgICAgdm9pZCBzY2FsZUNvbnRlbnQocXJlYWwgaXRl
bVNjYWxlLCBjb25zdCBRUG9pbnRGJiBjZW50ZXJJbkNTU0Nvb3JkaW5hdGVzID0gUVBvaW50Rigp
KTsKICAgICB2b2lkIGNsZWFyUmVsYXRpdmVab29tU3RhdGUoKTsKKyAgICB2b2lkIHJlc3VtZUFu
ZFVwZGF0ZUNvbnRlbnQoKTsKIAogICAgIFNjYWxlQW5pbWF0aW9uKiBtX3NjYWxlQW5pbWF0aW9u
OwogICAgIFFQb2ludEYgbV9sYXN0UGluY2hDZW50ZXJJblZpZXdwb3J0Q29vcmRpbmF0ZXM7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187318</attachid>
            <date>2013-02-08 07:28:40 -0800</date>
            <delta_ts>2013-02-25 03:46:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109290-20130208162318.patch</filename>
            <type>text/plain</type>
            <size>16788</size>
            <attacher name="Andras Becsi">abecsi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNjk5YTI3NzVlZDU3NDU4
OTU1ODFjNjBmMzMzOThjYzA3M2NkMDBmMy4uMGRlMTIzMjNjMDFiYmE5M2FjZjQzYzI4ZTFjNWUy
MzA2ZWZhNzNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAyLTA4ICBBbmRy
YXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAZGlnaWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBS
ZXBsYWNlIHN1c3BlbmQvcmVzdW1lIGludGVybmFsIEFQSSB1c2FnZSB3aXRoIEMgQVBJIGluIHRo
ZSBQYWdlVmlld3BvcnRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkyOTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgcHJpdmF0ZSBDIEFQSSBmb3Ig
dGhlIHN1c3BlbmQvcmVzdW1lIGZ1bmN0aW9uYWxpdHkgYW5kCisgICAgICAgIG1vdmVzIHRoZSBs
b2dpYyBpbiBQYWdlVmlld3BvcnRDb250cm9sbGVyIG9uIHRvcCBvZiB0aGlzIEMgQVBJIGFzIGEg
Zmlyc3Qgc3RlcAorICAgICAgICB0byBtb3ZlIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgYXdheSBm
cm9tIHVzaW5nIGludGVybmFsIEFQSS4KKyAgICAgICAgVGhpcyBhbHNvIGFsbG93cyB0byBkbyBz
b21lIGNsZWFuLXVwIGluIHRoZSBjbGllbnRzIGFuZCByZW1vdmUgbGVmdG92ZXIgY29kZQorICAg
ICAgICB0byBzaW1wbGlmeSB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBQYWdlVmlld3BvcnRDb250
cm9sbGVyIGFuZCBjbGllbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHA6CisgICAgICAgIChXS1BhZ2VBcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCk6CisgICAgICAgIChXS1BhZ2VTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMpOgorICAgICAgICAoV0tQYWdlUmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdGbGlja2FibGVQcml2YXRlOjpvbkNvbXBvbmVudENvbXBsZXRlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXI6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6Omhhc1N1c3BlbmRlZENvbnRlbnQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyOjpzdXNwZW5kQ29udGVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXI6OnJlc3VtZUNvbnRl
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmg6CisgICAg
ICAgIChQYWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudC5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmFyZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0SW1wbDo6dXBkYXRlVmlld3Bv
cnRTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRR
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
YW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRRdDo6ZmxpY2tNb3ZlRW5kZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OnNjYWxlQW5pbWF0aW9uU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpyZXN1
bWVBbmRVcGRhdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudFF0OjpwaW5jaEdlc3R1cmVDYW5jZWxsZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuaDoKKyAgICAgICAgKFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRRdCk6CisKIDIwMTMtMDItMDcgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxNDIyMTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmlu
ZGV4IDU1MGQ3YmVlM2QwMjc1ZmFmOWI4ZjBiZTEyNzZlYTc3MjJmYWVhNTAuLmUxMWIyZjMyZTU0
ZDIwODNmNzYwNDQ2YmYzMzdkMWY5OWQxZDdjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0zNzQsNiArMzc0LDIxIEBAIGJvb2wgV0tQYWdlQXJlU2Ny
b2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiAgICAgcmV0dXJu
IHRvSW1wbChwYWdlUmVmKS0+YXJlU2Nyb2xsYmFyQW5pbWF0aW9uc1N1cHByZXNzZWQoKTsKIH0K
IAorYm9vbCBXS1BhZ2VBcmVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZChX
S1BhZ2VSZWYgcGFnZVJlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5hcmVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpOworfQorCit2b2lkIFdLUGFnZVN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZVJlZikKK3sK
KyAgICB0b0ltcGwocGFnZVJlZiktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOworfQorCit2b2lkIFdLUGFnZVJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KFdLUGFnZVJlZiBwYWdlUmVmKQoreworICAgIHRvSW1wbChwYWdlUmVmKS0+cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30KKwogYm9vbCBXS1BhZ2VJc1Bpbm5lZFRvTGVm
dFNpZGUoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+
aXNQaW5uZWRUb0xlZnRTaWRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaAppbmRleCAyNDE1ZjI2MzM0YzYwZjdmMWUzNzM1OTUxNzczY2I3MDQw
MGViYzllLi4zZmVmNjVjNDljNjMxNjliM2YzNmY4NTJkYzllZDE5NzU0ODEyZjllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKQEAgLTcyLDYg
KzcyLDEwIEBAIFdLX0VYUE9SVCBkb3VibGUgV0tQYWdlR2V0R2FwQmV0d2VlblBhZ2VzKFdLUGFn
ZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JUIHVuc2lnbmVkIFdLUGFnZUdldFBhZ2VDb3VudChXS1Bh
Z2VSZWYgcGFnZSk7CiAKK1dLX0VYUE9SVCBib29sIFdLUGFnZUFyZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zU3VzcGVuZGVkKFdLUGFnZVJlZiBwYWdlKTsKK1dLX0VYUE9SVCB2b2lkIFdL
UGFnZVN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1BhZ2VSZWYgcGFnZSk7
CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cyhXS1BhZ2VSZWYgcGFnZSk7CisKIHN0cnVjdCBXS1ByaW50SW5mbyB7CiAgICAgZmxvYXQgcGFn
ZVNldHVwU2NhbGVGYWN0b3I7CiAgICAgZmxvYXQgYXZhaWxhYmxlUGFwZXJXaWR0aDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4
IDNhODAxMGE4YmQ3MmI2OGRhNTUzZGM1NzRmMjE1MmFkMjI5YjBiYzEuLjk1NDEyNTQ2YjBjOTVk
YWQyMzdmNzY5ZjM4OGY0NWJkOWViZmY3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtOTYxLDcgKzk2MSw3IEBAIHZvaWQg
UVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Om9uQ29tcG9uZW50Q29tcGxldGUoKQogCiAg
ICAgUV9RKFFRdWlja1dlYlZpZXcpOwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dC5yZXNldChuZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0KHEsIHBhZ2VWaWV3LmRh
dGEoKSkpOwotICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci5yZXNldChuZXcgUGFnZVZpZXdw
b3J0Q29udHJvbGxlcih3ZWJQYWdlUHJveHkuZ2V0KCksIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC5kYXRhKCkpKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIucmVzZXQobmV3
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIod2ViUGFnZS5nZXQoKSwgbV9wYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50LmRhdGEoKSkpOwogICAgIHBhZ2VWaWV3LT5ldmVudEhhbmRsZXIoKS0+c2V0
Vmlld3BvcnRDb250cm9sbGVyKG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5kYXRhKCkp
OwogCiAgICAgLy8gVHJpZ2dlciBzZXR0aW5nIG9mIGNvcnJlY3QgdmlzaWJpbGl0eSBmbGFncyBh
ZnRlciBldmVyeXRoaW5nIHdhcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCmluZGV4
IDFhOWJkZTZkZTVjNzUzMmIzYjhjN2Y5MWNkNDVjMDY4NmVkNTZkMzAuLmNjMWM2ZGQzMDFjYjM3
ZmIyZDM5Y2ZjYjU2ZjEyZDFhN2NhMzkwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VQ
cml2YXRlLmg+CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0zOSwxMyArNDAsMTIgQEAgYm9vbCBmdXp6eUNvbXBhcmUoZmxvYXQgYSwg
ZmxvYXQgYiwgZmxvYXQgZXBzaWxvbikKICAgICByZXR1cm4gc3RkOjphYnMoYSAtIGIpIDwgZXBz
aWxvbjsKIH0KIAotUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSogcHJveHksIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQqIGNsaWVudCkKLSAgICA6IG1fd2ViUGFnZVByb3h5KHByb3h5KQorUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcjo6UGFnZVZpZXdwb3J0Q29udHJvbGxlcihXS1BhZ2VSZWYgcGFnZSwgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJQYWdlUHJveHkodG9JbXBs
KHBhZ2UpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9hbGxvd3NVc2VyU2NhbGlu
ZyhmYWxzZSkKICAgICAsIG1fbWluaW11bVNjYWxlVG9GaXQoMSkKICAgICAsIG1faW5pdGlhbGx5
Rml0VG9WaWV3cG9ydCh0cnVlKQotICAgICwgbV9oYXNTdXNwZW5kZWRDb250ZW50KGZhbHNlKQog
ICAgICwgbV9oYWRVc2VySW50ZXJhY3Rpb24oZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3Rv
cigxKQogICAgICwgbV9wZW5kaW5nUG9zaXRpb25DaGFuZ2UoZmFsc2UpCkBAIC0yMjYsNyArMjI2
LDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0
UmVhZHkoKQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyOjpwYWdlRGlkUmVxdWVzdFNjcm9s
bChjb25zdCBJbnRQb2ludCYgY3NzUG9zaXRpb24pCiB7CiAgICAgLy8gSWdub3JlIHRoZSByZXF1
ZXN0IGlmIHN1c3BlbmRlZC4gQ2FuIG9ubHkgaGFwcGVuIGR1ZSB0byBkZWxheSBpbiBldmVudCBk
ZWxpdmVyeS4KLSAgICBpZiAobV9oYXNTdXNwZW5kZWRDb250ZW50KQorICAgIGlmIChoYXNTdXNw
ZW5kZWRDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEZsb2F0UG9pbnQgYm91bmRQ
b3NpdGlvbiA9IGJvdW5kQ29udGVudHNQb3NpdGlvbihGbG9hdFBvaW50KGNzc1Bvc2l0aW9uKSk7
CkBAIC0zMDUsMjQgKzMwNSwxOSBAQCBGbG9hdFNpemUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6
dmlzaWJsZUNvbnRlbnRzU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEZsb2F0U2l6ZShtX3ZpZXdw
b3J0U2l6ZS53aWR0aCgpIC8gbV9wYWdlU2NhbGVGYWN0b3IsIG1fdmlld3BvcnRTaXplLmhlaWdo
dCgpIC8gbV9wYWdlU2NhbGVGYWN0b3IpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OnN1c3BlbmRDb250ZW50KCkKK2Jvb2wgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6aGFzU3Vz
cGVuZGVkQ29udGVudCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1faGFzU3VzcGVuZGVkQ29udGVudCkK
LSAgICAgICAgcmV0dXJuOworICAgIHJldHVybiBXS1BhZ2VBcmVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc1N1c3BlbmRlZCh0b0FQSShtX3dlYlBhZ2VQcm94eSkpOworfQogCi0gICAgbV9o
YXNTdXNwZW5kZWRDb250ZW50ID0gdHJ1ZTsKLSAgICBtX3dlYlBhZ2VQcm94eS0+c3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Cit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXI6OnN1c3BlbmRDb250ZW50KCkKK3sKKyAgICBXS1BhZ2VTdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnModG9BUEkobV93ZWJQYWdlUHJveHkpKTsKIH0KIAogdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyOjpyZXN1bWVDb250ZW50KCkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVz
dW1lQ29udGVudCgpOwotCi0gICAgaWYgKCFtX2hhc1N1c3BlbmRlZENvbnRlbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1faGFzU3VzcGVuZGVkQ29udGVudCA9IGZhbHNlOwotICAgIG1fd2Vi
UGFnZVByb3h5LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgIFdL
UGFnZVJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKHRvQVBJKG1fd2ViUGFnZVBy
b3h5KSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlcjo6YXBwbHlTY2FsZUFmdGVy
UmVuZGVyaW5nQ29udGVudHMoZmxvYXQgc2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAppbmRleCAzNWQ0YjUzM2QyMDcwMmViMjlh
MmMyMmQ3MzQyOTBiZDI0YmJkNjAzLi5hNGI3Y2U2ZTM4NmYwMjUxM2I5NTZjZmY4MWIxMmE3NmYy
NzMxM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRD
b250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9W
aWV3cG9ydEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEludFBvaW50OwpAQCAtNDQsNyArNDUsNyBAQCBjbGFzcyBQ
YWdlVmlld3BvcnRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlVmll
d3BvcnRDb250cm9sbGVyKTsKIAogcHVibGljOgotICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIo
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50Kik7Cisg
ICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihXS1BhZ2VSZWYsIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5QYWdlVmlld3BvcnRDb250cm9sbGVyKCkgeyB9CiAK
ICAgICB2b2lkIHN1c3BlbmRDb250ZW50KCk7CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAog
ICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aXNpYmxlQ29udGVudHNTaXplKCkgY29uc3Q7CiAKLSAg
ICBib29sIGhhc1N1c3BlbmRlZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1N1c3BlbmRl
ZENvbnRlbnQ7IH0KKyAgICBib29sIGhhc1N1c3BlbmRlZENvbnRlbnQoKSBjb25zdDsKICAgICBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFkVXNlckludGVyYWN0
aW9uOyB9CiAgICAgYm9vbCBhbGxvd3NVc2VyU2NhbGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dzVXNlclNjYWxpbmc7IH0KIApAQCAtOTEsNiArOTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
dXBkYXRlTWluaW11bVNjYWxlVG9GaXQoYm9vbCB1c2VySW5pdGlhdGVkVXBkYXRlKTsKIAogICAg
IFdlYlBhZ2VQcm94eSogY29uc3QgbV93ZWJQYWdlUHJveHk7CisKICAgICBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50KiBtX2NsaWVudDsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyBtX3Jhd0F0dHJpYnV0ZXM7CkBAIC05OSw3ICsxMDEsNiBAQCBwcml2YXRlOgogICAgIGZs
b2F0IG1fbWluaW11bVNjYWxlVG9GaXQ7CiAgICAgYm9vbCBtX2luaXRpYWxseUZpdFRvVmlld3Bv
cnQ7CiAKLSAgICBib29sIG1faGFzU3VzcGVuZGVkQ29udGVudDsKICAgICBib29sIG1faGFkVXNl
ckludGVyYWN0aW9uOwogCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBtX2NvbnRlbnRzUG9zaXRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQuaAppbmRleCBlNTVkYmRiNDZkNGVjYjg4OTg3OWRkOTc4ODcwZGZjMjY3
NjBiZjk3Li4xNWQ5YTVlNWRjZTBkYTJhN2IzZGUxMDRlMjUzMWMzYmU5MjkwNGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50LmgKQEAgLTQxLDcgKzQxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
aWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0KSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lQ29udGVudCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpc2libGVDb250ZW50cygpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDBmNjBlN2RlNmU4YWEwYmI4YjdkZjA0OTQ5
ZDZkZDAwNzZiZGE1ZmIuLmQxYmU1MjhhOWVjNDdiZTYxNzJiY2U2NzdmYTc0Y2M0YzJjNzAwODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQ0OSw2ICs0NDks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0
cmluZyYpOwogICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9jdXN0b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKKyAgICBib29sIGFyZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkgeyByZXR1cm4gbV9pc1BhZ2VTdXNwZW5kZWQ7
IH0KICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAg
dm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3Bw
CmluZGV4IDVhOTIyMTljNDc2YTk3NzgyMTFjNTBiZGQ0OTI2ZjhmZDkwYmE5YmUuLjEzZTczOGY1
MTQyMzQ3Yzg1ODI3ZjVjYzk0OGEyYTZiZGJkYWU1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTUyLDcg
KzUyLDcgQEAgdm9pZCBQYWdlQ2xpZW50RGVmYXVsdEltcGw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSgp
CiB7CiAgICAgaWYgKCFtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQpIHsKICAgICAgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50ID0gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6Y3JlYXRlKG1fdmlldyk7Ci0gICAgICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ciA9IGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyKG1fdmlldy0+cGFnZSgpLCBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKKyAgICAgICAgbV9wYWdlVmll
d3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIobV92
aWV3LT53a1BhZ2UoKSwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CiAg
ICAgfQogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC0+dXBkYXRlVmlld3BvcnRT
aXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAppbmRleCAxZmY2YzY5MWZj
NmNmZGQ3OWM0NzEwNzVhZjczZTM0MmUxMWEzMzZkLi4zNmQwZTNkYWQ2OGEyNTQ1NTNiYjBlZGZl
MDA2Y2ZmNTRjNGIzMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAKQEAgLTg5
LDEyICs4OSw2IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0UGFn
ZVNjYWxlRmFjdG9yKGZsb2F0IG5ld1NjYWxlKQogICAgIG1fdmlldy0+c2V0UGFnZVNjYWxlRmFj
dG9yKG5ld1NjYWxlKTsKIH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpkaWRSZXN1bWVDb250ZW50KCkKLXsKLSAgICBBU1NFUlQobV9jb250cm9sbGVyKTsKLSAgICBt
X2NvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX2NvbnRlbnRQb3NpdGlv
biwgbV92aWV3LT5wYWdlU2NhbGVGYWN0b3IoKSk7Ci19Ci0KIHZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCkKIHsKICAgICBtX3Zp
ZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaApp
bmRleCA1YzE5YzI3NTk4MzMxZmUxZjcwNTcxNTE1MTVlNzVlZWNjZDM1NWNhLi5mMGM1M2JmYjIy
ZTBhZTU2YmM4Nzk1NGY0MzFiODMwOWQyZjA2MzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
ZmwuaApAQCAtNTEsNyArNTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpZXdw
b3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFBhZ2VTY2FsZUZhY3RvcihmbG9hdCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVzdW1lQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VWaXNpYmxlQ29udGVudHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCmluZGV4IGU5MTQ1YjYx
NzdhOGZiMDA3NDExYmM2MjUwNzgyMWE0ZGY1ZmEwMjEuLjdmNTQ0MGJkZmRmMmZmZGI2NjAxNzcw
NDc5NDA0Zjg1OGNiYTQ2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQuY3BwCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6OmFuaW1hdGVD
b250ZW50UmVjdFZpc2libGUoY29uc3QgUVJlY3RGJiBjb24KIAogICAgIFFSZWN0RiB2aWV3cG9y
dFJlY3RJbkNvbnRlbnRDb29yZHMgPSBtX3ZpZXdwb3J0SXRlbS0+bWFwUmVjdFRvV2ViQ29udGVu
dChtX3ZpZXdwb3J0SXRlbS0+Ym91bmRpbmdSZWN0KCkpOwogICAgIGlmIChjb250ZW50UmVjdCA9
PSB2aWV3cG9ydFJlY3RJbkNvbnRlbnRDb29yZHMpIHsKLSAgICAgICAgbV9jb250cm9sbGVyLT5y
ZXN1bWVDb250ZW50KCk7CisgICAgICAgIHJlc3VtZUFuZFVwZGF0ZUNvbnRlbnQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudFF0OjpmbGlja01vdmVFbmRlZCgpCiAKICAgICBtX2lnbm9yZVZpZXdw
b3J0Q2hhbmdlcyA9IHRydWU7CiAgICAgaWYgKCFtX2lzVXNlckludGVyYWN0aW5nKQotICAgICAg
ICBtX2NvbnRyb2xsZXItPnJlc3VtZUNvbnRlbnQoKTsKKyAgICAgICAgcmVzdW1lQW5kVXBkYXRl
Q29udGVudCgpOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6cGFn
ZUl0ZW1Qb3NpdGlvbkNoYW5nZWQoKQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudFF0OjpzY2FsZUFuaW1hdGlvblN0YXRlQ2hhbmdlZChRQWJzdHJh
Y3RBbmltYXRpCiAgICAgICAgIG1fY29udHJvbGxlci0+c3VzcGVuZENvbnRlbnQoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBRQWJzdHJhY3RBbmltYXRpb246OlN0b3BwZWQ6Ci0gICAgICAg
IG1fY29udHJvbGxlci0+cmVzdW1lQ29udGVudCgpOworICAgICAgICByZXN1bWVBbmRVcGRhdGVD
b250ZW50KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpA
QCAtMzM0LDggKzMzNCw5IEBAIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpz
ZXRDb250ZW50c1JlY3RUb05lYXJlc3RWYWxpZEJvdW5kcygpCiAgICAgdXBkYXRlVmlld3BvcnRD
b250cm9sbGVyKCk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpk
aWRSZXN1bWVDb250ZW50KCkKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0Ojpy
ZXN1bWVBbmRVcGRhdGVDb250ZW50KCkKIHsKKyAgICBtX2NvbnRyb2xsZXItPnJlc3VtZUNvbnRl
bnQoKTsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9y
dCB3aWxsIGJlIHJlcXVlc3RlZC4KICAgICB1cGRhdGVWaWV3cG9ydENvbnRyb2xsZXIoKTsKIH0K
QEAgLTQ2Niw3ICs0NjcsNyBAQCB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRRdDo6
cGluY2hHZXN0dXJlRW5kZWQoKQogdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQ6
OnBpbmNoR2VzdHVyZUNhbmNlbGxlZCgpCiB7CiAgICAgbV9waW5jaFN0YXJ0U2NhbGUgPSAtMTsK
LSAgICBtX2NvbnRyb2xsZXItPnJlc3VtZUNvbnRlbnQoKTsKKyAgICByZXN1bWVBbmRVcGRhdGVD
b250ZW50KCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0OjpkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50UXQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50UXQuaAppbmRleCBlNWNmZWVlNjEzOGYyZDVmOGZhYzVlMmJkZTM1ZmFlNTU3YTQ5MDA5Li5m
ODVlOWJkMDAzMGJlMzkwOTY0YzAxMTk5YWIzMjYzMjgzYzk1NzU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudFF0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRRdC5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Vmlld3BvcnRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBjb250ZW50c1BvaW50
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0KTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXN1bWVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVZpc2libGVDb250ZW50cygpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VW
aWV3cG9ydEF0dHJpYnV0ZXMoKTsKQEAgLTEyOSw2ICsxMjgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgYW5pbWF0ZUNvbnRlbnRSZWN0VmlzaWJsZShjb25zdCBRUmVjdEYmIGNvbnRlbnRSZWN0KTsK
ICAgICB2b2lkIHNjYWxlQ29udGVudChxcmVhbCBpdGVtU2NhbGUsIGNvbnN0IFFQb2ludEYmIGNl
bnRlckluQ1NTQ29vcmRpbmF0ZXMgPSBRUG9pbnRGKCkpOwogICAgIHZvaWQgY2xlYXJSZWxhdGl2
ZVpvb21TdGF0ZSgpOworICAgIHZvaWQgcmVzdW1lQW5kVXBkYXRlQ29udGVudCgpOwogCiAgICAg
U2NhbGVBbmltYXRpb24qIG1fc2NhbGVBbmltYXRpb247CiAgICAgUVBvaW50RiBtX2xhc3RQaW5j
aENlbnRlckluVmlld3BvcnRDb29yZGluYXRlczsK
</data>

          </attachment>
      

    </bug>

</bugzilla>