<?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>105652</bug_id>
          
          <creation_ts>2012-12-21 12:41:17 -0800</creation_ts>
          <short_desc>RenderLayerCompositor should let ScrollingCoordinator update main thread scrolling reasons after change of layers</short_desc>
          <delta_ts>2013-01-11 10:59:11 -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>Layout and Rendering</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="Xianzhu Wang">wangxianzhu</reporter>
          <assigned_to name="Xianzhu Wang">wangxianzhu</assigned_to>
          <cc>andersca</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796425</commentid>
    <comment_count>0</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-21 12:41:17 -0800</bug_when>
    <thetext>On Chromium ScrollingCoordinator will force main thread scrolling if there are any viewport-constrained objects not composited. However, sometimes (e.g. when the page is loading) the main thread scrolling reasons are not updated immediately after RLC promotes some fixed position elements to composited layers. This causes slow scrolling before the main thread scrolling reasons are correctly updated.

crbug.com/167312 describes the slow scrolling case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796565</commentid>
    <comment_count>1</comment_count>
      <attachid>180578</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2012-12-21 17:32:20 -0800</bug_when>
    <thetext>Created attachment 180578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799243</commentid>
    <comment_count>2</comment_count>
      <attachid>180578</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-02 21:37:39 -0800</bug_when>
    <thetext>Comment on attachment 180578
Patch

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

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:473
&gt; +        if (scrollingCoordinator &amp;&amp; m_fixedPositionLayerNotCompositedReasonMap != originalFixedPositionLayerNotCompositedReasonMap)

I don&apos;t really like m_fixedPositionLayerNotCompositedReasonMap, and the fact that you&apos;re comparing two HashMaps here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801717</commentid>
    <comment_count>3</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-07 15:23:24 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 180578 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180578&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:473
&gt; &gt; +        if (scrollingCoordinator &amp;&amp; m_fixedPositionLayerNotCompositedReasonMap != originalFixedPositionLayerNotCompositedReasonMap)
&gt; 
&gt; I don&apos;t really like m_fixedPositionLayerNotCompositedReasonMap, and the fact that you&apos;re comparing two HashMaps here.

(I thought I posted the following on last Friday, but just found I made it lost somehow)

How about moving the reason information map into individual RenderLayers or RenderLayerModelObjects as a new field?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802668</commentid>
    <comment_count>4</comment_count>
      <attachid>181770</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-08 14:35:46 -0800</bug_when>
    <thetext>Created attachment 181770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802716</commentid>
    <comment_count>5</comment_count>
      <attachid>181770</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 15:17:26 -0800</bug_when>
    <thetext>Comment on attachment 181770
Patch

Attachment 181770 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15758280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802740</commentid>
    <comment_count>6</comment_count>
      <attachid>181789</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-08 15:37:37 -0800</bug_when>
    <thetext>Created attachment 181789
Fix mac break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804447</commentid>
    <comment_count>7</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-10 09:32:05 -0800</bug_when>
    <thetext>Simon, do you like the latest patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805345</commentid>
    <comment_count>8</comment_count>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-11 09:55:16 -0800</bug_when>
    <thetext>Kindly ping reviewers...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805363</commentid>
    <comment_count>9</comment_count>
      <attachid>181789</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-11 10:18:56 -0800</bug_when>
    <thetext>Comment on attachment 181789
Fix mac break

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

Nice cleanup, thanks!

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:636
&gt; +        if (layerChanged)
&gt; +            if (ScrollingCoordinator* scrollingCoordinator = this-&gt;scrollingCoordinator())
&gt; +                scrollingCoordinator-&gt;frameViewFixedObjectsDidChange(m_renderView-&gt;frameView());

We put {} around multi-line conditional blocks like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805385</commentid>
    <comment_count>10</comment_count>
      <attachid>182365</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-11 10:35:54 -0800</bug_when>
    <thetext>Created attachment 182365
for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805387</commentid>
    <comment_count>11</comment_count>
      <attachid>181789</attachid>
    <who name="Xianzhu Wang">wangxianzhu</who>
    <bug_when>2013-01-11 10:36:34 -0800</bug_when>
    <thetext>Comment on attachment 181789
Fix mac break

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

&gt;&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:636
&gt;&gt; +                scrollingCoordinator-&gt;frameViewFixedObjectsDidChange(m_renderView-&gt;frameView());
&gt; 
&gt; We put {} around multi-line conditional blocks like this.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805419</commentid>
    <comment_count>12</comment_count>
      <attachid>182365</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 10:59:06 -0800</bug_when>
    <thetext>Comment on attachment 182365
for landing

Clearing flags on attachment: 182365

Committed r139461: &lt;http://trac.webkit.org/changeset/139461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805420</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 10:59:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180578</attachid>
            <date>2012-12-21 17:32:20 -0800</date>
            <delta_ts>2013-01-08 14:35:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105652-20121222012935.patch</filename>
            <type>text/plain</type>
            <size>12652</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZiNTY5NDFkYjk3NTNk
MTA1YzJiNGEzNWYxNjhiYjA5YWRiYjc4Zi4uOTQ4NmE3MjhmYmE0MTMzZGQzMzgyZmIwOTA5MDMw
ZjI0OTk4MTc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTIxICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yIHNob3VsZCBsZXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgdXBkYXRlIG1haW4g
dGhyZWFkIHNjcm9sbGluZyByZWFzb25zIGFmdGVyIGNoYW5nZSBvZiBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY1MgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3
LWR5bmFtaWMuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5odG1sCisKKyAgICAgICAgTGV0IFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIGtub3cgdGhlIGNoYW5nZSBvZiBGaXhlZFBvc2l0aW9uTGF5ZXJO
b3RDb21wb3NpdGVkUmVhc29uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKTogTGV0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGtub3cgdGhl
IGNoYW5nZSBvZiBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5nKTogQWRkIGxh
eWVyTmVlZHNUb0JlQ29tcG9zaXRlZCBwYXJhbWV0ZXIgdG8gYXZvaWQgcmVjYWxjdWxhdGluZyBs
YXllciBjb21wb3NpdGluZyByZXF1aXJlbWVudHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JQb3NpdGlvbik6IFNldCBtX3JlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVy
TGF5b3V0IHRvIGZvcmNlIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gdG8g
YmUgdXBkYXRlZCBpbiB0aGUgbmV4dCB1cGRhdGVDb21wb3NpdGluZ0xheWVycygpLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwogMjAxMi0xMi0yMSAgS2Vu
bmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgRXhwb3NlIEFycmF5QnVm
ZmVyVmlldyBjb25zdHJ1Y3RvciBvbiBET01XaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZjBkNTNlMmU5NWUzOGM2
MDY5NzVmMzI5OGVlNjBiNjA1NTdmODVkMC4uYzY2NzgwMjRiMGJjZTk2YTZiODE4ZGIwNjI3NTA4
YWM2YzcyN2VhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTQ1NCw3ICs0NTQsMTMgQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlVHlwZSB1
cGRhdGUKICAgICAgICAgQ29tcG9zaXRpbmdTdGF0ZSBjb21wU3RhdGUodXBkYXRlUm9vdCwgbV9j
b21wb3NpdGluZ0NvbnN1bHRzT3ZlcmxhcCk7CiAgICAgICAgIGJvb2wgbGF5ZXJzQ2hhbmdlZCA9
IGZhbHNlOwogICAgICAgICBib29sIHNhdzNEVHJhbnNmb3JtID0gZmFsc2U7CisKKyAgICAgICAg
Rml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCBvcmlnaW5hbEZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CisgICAgICAgIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCk7CisgICAgICAgIGlmIChzY3JvbGxpbmdDb29yZGluYXRvcikKKyAgICAgICAgICAgIG9yaWdp
bmFsRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCA9IG1fZml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcDsKICAgICAgICAgbV9maXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uTWFwLmNsZWFyKCk7CisKICAgICAgICAgaWYgKG1fY29t
cG9zaXRpbmdDb25zdWx0c092ZXJsYXApIHsKICAgICAgICAgICAgIE92ZXJsYXBNYXAgb3Zlcmxh
cFRlc3RSZXF1ZXN0TWFwOwogICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzKDAsIHVwZGF0ZVJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RNYXAsIGNvbXBTdGF0ZSwgbGF5
ZXJzQ2hhbmdlZCwgc2F3M0RUcmFuc2Zvcm0pOwpAQCAtNDYyLDYgKzQ2OCwxMCBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdV
cGRhdGVUeXBlIHVwZGF0ZQogICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzKDAsIHVwZGF0ZVJvb3QsIDAsIGNvbXBTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgc2F3M0RUcmFu
c2Zvcm0pOwogICAgICAgICAKICAgICAgICAgbmVlZEhpZXJhcmNoeVVwZGF0ZSB8PSBsYXllcnND
aGFuZ2VkOworCisgICAgICAgIC8vIFRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IgbmVlZHMgdG8g
cmVjYWxjdWxhdGUgd2hldGhlciBpdCBjYW4gZG8gZmFzdCBzY3JvbGxpbmcuCisgICAgICAgIGlm
IChzY3JvbGxpbmdDb29yZGluYXRvciAmJiBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0
ZWRSZWFzb25NYXAgIT0gb3JpZ2luYWxGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVh
c29uTWFwKQorICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0ZpeGVk
T2JqZWN0c0RpZENoYW5nZShtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKTsKICAgICB9CiAKICNp
ZiAhTE9HX0RJU0FCTEVECkBAIC01NDcsMTEgKzU1NywxMSBAQCB2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6bG9nTGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHRo
KQogfQogI2VuZGlmCiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5n
KFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50IHNob3VsZFJlcGFp
bnQpCitib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXll
ciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludCBzaG91bGRSZXBhaW50LCBib29sIGxh
eWVyTmVlZHNUb0JlQ29tcG9zaXRlZCkKIHsKICAgICBib29sIGxheWVyQ2hhbmdlZCA9IGZhbHNl
OwogCi0gICAgaWYgKG5lZWRzVG9CZUNvbXBvc2l0ZWQobGF5ZXIpKSB7CisgICAgaWYgKGxheWVy
TmVlZHNUb0JlQ29tcG9zaXRlZCkgewogICAgICAgICBlbmFibGVDb21wb3NpdGluZ01vZGUoKTsK
ICAgICAgICAgCiAgICAgICAgIGlmICghbGF5ZXItPmJhY2tpbmcoKSkgewpAQCAtNjI4LDcgKzYz
OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNraW5nKFJlbmRlckxh
eWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAgICAgIGlmIChTY3JvbGxpbmdDb29y
ZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRv
cigpKQogICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0ZpeGVkT2Jq
ZWN0c0RpZENoYW5nZShtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAobGF5ZXItPmJhY2tpbmcoKSkKICAgICAgICAgbGF5ZXItPmJhY2tpbmcoKS0+dXBk
YXRlRGVidWdJbmRpY2F0b3JzKG1fc2hvd0RlYnVnQm9yZGVycywgbV9zaG93UmVwYWludENvdW50
ZXIpOwogCkBAIC02MzcsNyArNjQ3LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVIKIAogYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZShSZW5k
ZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludCBzaG91bGRSZXBhaW50KQog
ewotICAgIGJvb2wgbGF5ZXJDaGFuZ2VkID0gdXBkYXRlQmFja2luZyhsYXllciwgc2hvdWxkUmVw
YWludCk7CisgICAgYm9vbCBsYXllckNoYW5nZWQgPSB1cGRhdGVCYWNraW5nKGxheWVyLCBzaG91
bGRSZXBhaW50LCBuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyKSk7CiAKICAgICAvLyBTZWUgaWYg
d2UgbmVlZCBjb250ZW50IG9yIGNsaXBwaW5nIGxheWVycy4gTWV0aG9kcyBjYWxsZWQgaGVyZSBz
aG91bGQgYXNzdW1lCiAgICAgLy8gdGhhdCB0aGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgZGVzY2Vu
ZGFudCBsYXllcnMgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgeWV0LgpAQCAtOTgwLDcgKzk5MCw3IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVu
dHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgICAgIHJlcGFpbnRPbkNvbXBvc2l0aW5nQ2hh
bmdlKGxheWVyKTsKIAogICAgIC8vIFVwZGF0ZSBiYWNraW5nIG5vdywgc28gdGhhdCB3ZSBjYW4g
dXNlIGlzQ29tcG9zaXRlZCgpIHJlbGlhYmx5IGR1cmluZyB0cmVlIHRyYXZlcnNhbCBpbiByZWJ1
aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKS4KLSAgICBpZiAodXBkYXRlQmFja2luZyhsYXllciwg
Q29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50Tm93KSkKKyAgICBpZiAodXBkYXRlQmFja2luZyhsYXll
ciwgQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50Tm93LCB3aWxsQmVDb21wb3NpdGVkKSkKICAgICAg
ICAgbGF5ZXJzQ2hhbmdlZCA9IHRydWU7CiAKICAgICBpZiAobGF5ZXItPnJlZmxlY3Rpb25MYXll
cigpICYmIHVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZShsYXllci0+cmVmbGVjdGlvbkxheWVy
KCksIENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludE5vdykpCkBAIC0yMDAwLDExICsyMDEwLDEzIEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICAvLyBEb24ndCBwcm9tb3RlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGRl
c2NlbmRhbnRzIG9mIHRyYW5zZm9ybWVkIGVsZW1lbnRzLgotICAgIC8vIFRoZXkgd2lsbCBzdGF5
IGZpeGVkIHdydCB0aGUgdHJhbnNmb3JtZWQgZWxlbWVudCByYXRoZXIgdGhhbiB0aGUgZW5jbG9z
aW5nIGZyYW1lLgorICAgIC8vIERvbid0IHByb21vdGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMg
dGhhdCBhcmUgZGVzY2VuZGFudHMgb2YgYSBub24tdmlldyBjb250YWluZXIsIGUuZy4gdHJhbnNm
b3JtZWQgZWxlbWVudHMuCisgICAgLy8gVGhleSB3aWxsIHN0YXkgZml4ZWQgd3J0IHRoZSBjb250
YWluZXIgcmF0aGVyIHRoYW4gdGhlIGVuY2xvc2luZyBmcmFtZS4KICAgICBpZiAoY29udGFpbmVy
ICE9IG1fcmVuZGVyVmlldykgewogICAgICAgICBpZiAoZml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbikKLSAgICAgICAgICAgICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3Np
dGVkUmVhc29uID0gRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50OworICAgICAgICAgICAg
KmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBDb250YWluZXJJc05vdEFW
aWV3OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3JlZXZhbHVhdGVDb21wb3NpdGluZ0Fm
dGVyTGF5b3V0ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAx
Nyw2ICsyMDI5LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICAgICAgaWYgKCF2aWV3
Qm91bmRzLmludGVyc2VjdHMoZW5jbG9zaW5nSW50UmVjdChsYXllckJvdW5kcykpKSB7CiAgICAg
ICAgICAgICBpZiAoZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikKICAgICAg
ICAgICAgICAgICAqZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiA9IExheWVy
Qm91bmRzT3V0T2ZWaWV3OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcmVl
dmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGNmMDU3OTVhMGI5MjgwN2Y1MDFiMTYxNWUy
MDBjMTRhZmJjNjA5MjQuLmZlYzE3MWFhMDBmOTNjZDM1Njg5YzYyN2VmZDNiNTZkMmJiMTMxYTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgZW51bSBGaXhlZFBvc2l0aW9uTGF5
ZXJOb3RDb21wb3NpdGVkUmVhc29uIHsKICAgICAgICAgTm9SZWFzb24sCiAgICAgICAgIExheWVy
Qm91bmRzT3V0T2ZWaWV3LAotICAgICAgICBEZXNjZW5kYW50T2ZUcmFuc2Zvcm1lZEVsZW1lbnQs
CisgICAgICAgIENvbnRhaW5lcklzTm90QVZpZXcsCiAgICAgfTsKIAogICAgIEZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRl
ZFJlYXNvbihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fZml4ZWRQ
b3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5nZXQobGF5ZXIpOyB9CkBAIC0yNTgs
NyArMjU4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGNhbkJlQ29tcG9zaXRlZChjb25zdCBSZW5k
ZXJMYXllciopIGNvbnN0OwogCiAgICAgLy8gTWFrZSBvciBkZXN0cm95IHRoZSBiYWNraW5nIGZv
ciB0aGlzIGxheWVyOyByZXR1cm5zIHRydWUgaWYgYmFja2luZyBjaGFuZ2VkLgotICAgIGJvb2wg
dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciosIENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludCBzaG91
bGRSZXBhaW50KTsKKyAgICBib29sIHVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqLCBDb21wb3Np
dGluZ0NoYW5nZVJlcGFpbnQgc2hvdWxkUmVwYWludCwgYm9vbCBsYXllck5lZWRzVG9CZUNvbXBv
c2l0ZWQpOwogCiAgICAgdm9pZCBjbGVhckJhY2tpbmdGb3JMYXllckluY2x1ZGluZ0Rlc2NlbmRh
bnRzKFJlbmRlckxheWVyKik7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZDIyNGVlMDVkNzQxMDkxOGZkMGJiMWUwZjdk
OWE1NTVlODNiMjEyLi4xMzhiNjc1YTY3ZGRkM2YwMjJiNTMwOWNiMGJjNDE0YWJiYjg1ZWQ0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMjEgIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFu
emh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3Igc2hvdWxk
IGxldCBTY3JvbGxpbmdDb29yZGluYXRvciB1cGRhdGUgbWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJl
YXNvbnMgYWZ0ZXIgY2hhbmdlIG9mIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjUyCisKKyAgICAgICAgVGVzdHMgdG8gZW5zdXJlIG1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIGFyZSBjb3JyZWN0bHkgdXBkYXRlZCBhZnRlciBhIGZp
eGVkIGVsZW1lbnQgaXMgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHRyZWUuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhl
ZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMuaHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9u
L2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMuaHRtbDogQWRkZWQuCisKIDIwMTIt
MTItMjEgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIEV4cG9z
ZSBBcnJheUJ1ZmZlclZpZXcgY29uc3RydWN0b3Igb24gRE9NV2luZG93CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12
aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42OWNmYzVhOThkYjc0ZmJlMzJhYzliNjc4YTYxMzRhZjk3MzZkZDU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1BB
U1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MDlmYTFjODE2OWU2OTRjMGM4MTE2NDBkZmQ3ODc4OThlNDk0NmI2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAuZml4ZWQgeworICAg
ICAgcG9zaXRpb246IGZpeGVkOworICAgICAgd2lkdGg6IDEwcHg7CisgICAgICBoZWlnaHQ6IDEw
cHg7CisgICAgICB0b3A6IDEwMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVl
KTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNr
aW5nQ29udGV4dCh0cnVlKTsKKworICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgZml4ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaXhlZCk7IAorICAgICAgICBk
b2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsKKyAgICAgICAgZml4ZWQuY2xhc3NOYW1lID0gImZp
eGVkIjsKKyAgICAgICAgdmFyIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zID0gaW50ZXJuYWxz
Lm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVyVGV4dCA9ICFtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29ucyA/ICJQQVNTIiA6ICJGQUlMOiAiICsgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnM7
CisgICAgICB9LCBmYWxzZSk7CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisgIDxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LW91dC1vZi12aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjljZmM1YTk4ZGI3NGZiZTMyYWM5YjY3OGE2MTM0YWY5NzM2
ZGQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNy
ZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMiBAQAorUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLmh0bWwg
Yi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1v
dXQtb2Ytdmlldy1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWUzNTRiZmMzZDBhMDhhMGUyMzg3
YTRkOGFiYjliZjk0NWI0YWZiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4K
KyAgPHN0eWxlPgorICAgIC5maXhlZCB7CisgICAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgICB3
aWR0aDogMTBweDsKKyAgICAgIGhlaWdodDogMTBweDsKKyAgICAgIHRvcDogLTEwMHB4OworICAg
IH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEVuYWJsZUNv
bXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbih0cnVlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKKworICAgICAg
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZml4ZWQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChmaXhlZCk7IAorICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsK
KyAgICAgICAgZml4ZWQuY2xhc3NOYW1lID0gImZpeGVkIjsKKyAgICAgICAgdmFyIG1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25z
KGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVyVGV4dCA9ICFtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyA/ICJQQVNTIiA6ICJGQUlMOiAi
ICsgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnM7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworICAgICAgfSwgZmFsc2UpOworICAgIH0KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
Kzxib2R5PgorICA8cHJlIGlkPSJyZXN1bHQiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181770</attachid>
            <date>2013-01-08 14:35:46 -0800</date>
            <delta_ts>2013-01-08 15:37:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105652-20130108223250.patch</filename>
            <type>text/plain</type>
            <size>27237</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA5NWQ3YjZjMjkxNmU5
MTE4MmZlZDhiODgzYTNmNGFmMjM2ZTc3ZS4uNWY1NjE0ZDU0Mzg4ZmRiMTIzMTYxNTYzNDJhYzFj
MzAxYzg3Njc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTA4ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yIHNob3VsZCBsZXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgdXBkYXRlIG1haW4g
dGhyZWFkIHNjcm9sbGluZyByZWFzb25zIGFmdGVyIGNoYW5nZSBvZiBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBTY3JvbGxpbmdDb29y
ZGluYXRvciBrbm93IHRoZSBjaGFuZ2Ugb2YgVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0
ZWRSZWFzb24gaW4gdGltZS4KKyAgICAgICAgQnkgdGhlIHdheSBtb3ZlZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OkZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gdG8gUmVuZGVy
TGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3
LWR5bmFtaWMuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5odG1sCisKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFp
bnRMYXllcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChS
ZW5kZXJMYXllcik6IE1vdmVkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Rml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbiB0byBoZXJlIGFuZCByZW5hbWVkIGl0IHRvIFZpZXdwb3J0
Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnNldFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRl
ZFJlYXNvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQmFja2luZyk6IE5vdyB1cGRhdGVzIFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVk
UmVhc29uIGhlcmUgaW5zdGVhZCBvZiBpbiBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMg
YmVmb3JlIHNvIHRoYXQgdGhlIHJlYXNvbiBpcyB1cGRhdGVkIGluIHRpbWUuCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9C
ZUNvbXBvc2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZWFzb25Gb3JDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcG9ydE1lbW9yeVVzYWdlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChS
ZW5kZXJMYXllckNvbXBvc2l0b3IpOgorCiAyMDEzLTAxLTA4ICBBbmRyZWFzIEtsaW5nICA8YWts
aW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBIZWFwLXVzZS1hZnRlci1mcmVlIGluIGJvb2wgV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4
IGZkMDY5MjhmYTRlMmY0NDQxYzFmOTA1MDFiZjk0OTUxNWEyYTBkNjIuLjIyYzMwOTJiZjJlZDc2
NzE4ZjliZjJjMjhmODhkMzU2MjdjN2IzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYW5kbGVXaGVlbEV2ZW50UGhhc2UoUGxh
dGZvcm1XaGVlbEV2ZW50UGhhc2UgcGhhc2UpCiB9CiAjZW5kaWYKIAotYm9vbCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKEZyYW1lVmlldyog
ZnJhbWVWaWV3KSBjb25zdAorYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNs
b3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFtZVZpZXcp
IGNvbnN0CiB7CiAgICAgY29uc3QgRnJhbWVWaWV3OjpWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
U2V0KiB2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyA9IGZyYW1lVmlldy0+dmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMoKTsKICAgICBpZiAoIXZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQpA
QCAtNDAxLDcgKzQwMSw3IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVT
bG93UmVwYWludEZpeGVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmllCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2Rl
bE9iamVjdCh2aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KS0+bGF5ZXIoKTsKICAgICAgICAgLy8g
QW55IGV4cGxpY2l0IHJlYXNvbiB0aGF0IGEgZml4ZWQgcG9zaXRpb24gZWxlbWVudCBpcyBub3Qg
Y29tcG9zaXRlZCBzaG91bGRuJ3QgY2F1c2Ugc2xvdyBzY3JvbGxpbmcuCi0gICAgICAgIGlmICgh
bGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmIGxheWVyLT5jb21wb3NpdG9yKCktPmZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24obGF5ZXIpID09IFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Tm9SZWFzb24pCisgICAgICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgpICYmIGxheWVy
LT52aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbigpID09IFJlbmRlckxheWVy
OjpOb05vdENvbXBvc2l0ZWRSZWFzb24pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDIyLDggKzQyMiw4IEBAIE1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cygpIGNvCiAgICAgICAgIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHw9IEhhc1Nsb3dSZXBh
aW50T2JqZWN0czsKICAgICBpZiAoIXN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGZy
YW1lVmlldy0+aGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSkKICAgICAgICAgbWFpblRo
cmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRo
b3V0U3VwcG9ydGluZ0ZpeGVkTGF5ZXJzOwotICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9zaXRpb25M
YXllcnMoKSAmJiBoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoZnJhbWVWaWV3KSkK
LSAgICAgICAgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzTm9uTGF5ZXJGaXhlZE9i
amVjdHM7CisgICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc1Zpc2li
bGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGZyYW1lVmlldykpCisgICAg
ICAgIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHw9IEhhc05vbkxheWVyVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHM7CiAgICAgaWYgKG1fcGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkt
PmlzSW1hZ2VEb2N1bWVudCgpKQogICAgICAgICBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB8
PSBJc0ltYWdlRG9jdW1lbnQ7CiAKQEAgLTQ2NSw4ICs0NjUsOCBAQCBTdHJpbmcgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zQXNUZXh0KE1haW5UaHJlYWRT
Y3JvbGxpbgogICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIHNsb3cgcmVwYWludCBv
YmplY3RzLCAiKTsKICAgICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMpCiAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgdmlld3BvcnQgY29uc3RyYWluZWQgb2Jq
ZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiKTsKLSAgICBpZiAocmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKLSAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIik7
CisgICAgaWYgKHJlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJWaWV3
cG9ydENvbnN0cmFpbmVkT2JqZWN0cykKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhh
cyBub24tbGF5ZXIgdmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywgIik7CiAgICAgaWYgKHJl
YXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQogICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSXMgaW1hZ2UgZG9jdW1lbnQsICIpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRl
eCA5YzA2NzE3OTI3NzAyZjM5OWNlNGM1YTQ4MTBhYzgxMzcxMTNiODkxLi43ZWYyNzYxMWQ2MDY2
N2U4OTQ5NDM4NTdmYWY4NTU3NWQ1NDg4NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTEzNyw3ICsxMzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEZvcmNlZE9uTWFpblRocmVhZCA9IDEgPDwgMCwKICAgICAgICAg
SGFzU2xvd1JlcGFpbnRPYmplY3RzID0gMSA8PCAxLAogICAgICAgICBIYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnMgPSAxIDw8IDIsCi0gICAg
ICAgIEhhc05vbkxheWVyRml4ZWRPYmplY3RzID0gMSA8PCAzLAorICAgICAgICBIYXNOb25MYXll
clZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gMSA8PCAzLAogICAgICAgICBJc0ltYWdlRG9j
dW1lbnQgPSAxIDw8IDQKICAgICB9OwogCkBAIC0xNzQsNyArMTc0LDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmll
dyhGcmFtZVZpZXcqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChNYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucykgeyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4ZWRPYmplY3RzKEZy
YW1lVmlldyopIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqKSBjb25zdDsKICAgICB2b2lkIHVw
ZGF0ZVNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKTsKICAgICAK
ICAgICB2b2lkIHVwZGF0ZU1haW5GcmFtZVNjcm9sbFBvc2l0aW9uVGltZXJGaXJlZChUaW1lcjxT
Y3JvbGxpbmdDb29yZGluYXRvcj4qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKaW5kZXggM2MzODQ5
ZTIzZTZkMDIzNDAyMWNlMDBhY2RkNjQ1MmMyYzZiOTVjNy4uN2Q0NDM5MTNjMGRlOTUyNTFjMDFk
NTkzZDQwODQ3ZGY0M2IzMDhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgKQEAgLTg5LDcgKzg5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRlV2hlZWxFdmVudEhhbmRs
ZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChNYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Rml4
ZWRPYmplY3RzKEZyYW1lVmlldyopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKEZy
YW1lVmlldyopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2b2lkIGVuc3VyZVJvb3RT
dGF0ZU5vZGVGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CiAgICAgU2Nyb2xsaW5nU3RhdGVOb2Rl
KiBzdGF0ZU5vZGVGb3JJRChTY3JvbGxpbmdOb2RlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggZGRmNWQzNzk1YzY4YWIxYTYwYTkwMWY3MWY0MDU4YzIw
ZWYxOGY0Yy4uNTM1OWVhZWQwN2Q1YjdmZGUxZGJiZjhiNGJiNjE0ZDlmNDljNmI0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNjYsNiArMTY2LDcgQEAg
UmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVy
KQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIG1faGFzQ29tcG9zaXRp
bmdEZXNjZW5kYW50KGZhbHNlKQogICAgICwgbV9pbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKE5v
SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbikKKyAgICAsIG1fdmlld3BvcnRDb25zdHJhaW5lZE5v
dENvbXBvc2l0ZWRSZWFzb24oTm9Ob3RDb21wb3NpdGVkUmVhc29uKQogI2VuZGlmCiAgICAgLCBt
X2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyhmYWxzZSkKICAgICAsIG1fdXBkYXRpbmdN
YXJxdWVlUG9zaXRpb24oZmFsc2UpCkBAIC0zNDI1LDggKzM0MjYsOCBAQCB2b2lkIFJlbmRlckxh
eWVyOjpwYWludExheWVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mCiAgICAgICAgICAgICAvLyBJZiB0aGlzIFJlbmRlckxheWVyIHNob3VsZCBwYWlu
dCBpbnRvIGl0cyBiYWNraW5nLCB0aGF0IHdpbGwgYmUgZG9uZSB2aWEgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpwYWludEludG9MYXllcigpLgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmIChjb21wb3NpdG9yKCktPmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0
ZWRSZWFzb24odGhpcykgPT0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpMYXllckJvdW5kc091dE9m
VmlldykgewotICAgICAgICAvLyBEb24ndCBwYWludCBvdXQtb2YtdmlldyBmaXhlZCBwb3NpdGlv
biBsYXllcnMgKHdoZW4gZG9pbmcgcHJlcGFpbnRpbmcpIGJlY2F1c2UgdGhleSB3aWxsIG5ldmVy
IGJlIHZpc2libGUKKyAgICB9IGVsc2UgaWYgKHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3Np
dGVkUmVhc29uKCkgPT0gTm90Q29tcG9zaXRlZEZvckJvdW5kc091dE9mVmlldykgeworICAgICAg
ICAvLyBEb24ndCBwYWludCBvdXQtb2YtdmlldyB2aWV3cG9ydCBjb25zdHJhaW5lZCBsYXllcnMg
KHdoZW4gZG9pbmcgcHJlcGFpbnRpbmcpIGJlY2F1c2UgdGhleSB3aWxsIG5ldmVyIGJlIHZpc2li
bGUKICAgICAgICAgLy8gdW5sZXNzIHRoZWlyIHBvc2l0aW9uIG9yIHZpZXdwb3J0IHNpemUgaXMg
Y2hhbmdlZC4KICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKaW5kZXggZGY0OTIwMTg0NGJhYjhlMGFlYjRlZGM2N2E3MDMxNzE4NjNlN2I3
Zi4uZjkzZmJlYWI3M2RkYjNlYjk3ZjE2Njc4ODZkYTI2MmQwZWU0ODkyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTcyNyw2ICs3MjcsMTcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdCBPVkVSUklERTsKIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBl
bnVtIFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIHsKKyAgICAgICAgTm9O
b3RDb21wb3NpdGVkUmVhc29uLAorICAgICAgICBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0T2ZW
aWV3LAorICAgICAgICBOb3RDb21wb3NpdGVkRm9yTm9uVmlld0NvbnRhaW5lciwKKyAgICB9Owor
CisgICAgdm9pZCBzZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihWaWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiByZWFzb24pIHsgbV92aWV3cG9ydENv
bnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiA9IHJlYXNvbjsgfQorICAgIFZpZXdwb3J0Q29u
c3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3Np
dGVkUmVhc29uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Vmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24+KG1fdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24pOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVpPcmRlckxpc3Rz
KCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKQEAgLTEwMzYsNiArMTA0Nyw3IEBA
IHByb3RlY3RlZDoKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBt
X2hhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCA6IDE7IC8vIEluIHRoZSB6LW9yZGVyIHRyZWUuCiAg
ICAgdW5zaWduZWQgbV9pbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uIDogMzsKKyAgICB1bnNpZ25l
ZCBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIDogMjsKICNlbmRpZgog
CiAgICAgYm9vbCBtX2NvbnRhaW5zRGlydHlPdmVybGF5U2Nyb2xsYmFycyA6IDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4
IDJhNWFlMTI0N2YyZjNmMzQ3NGFlODE5Y2MyM2UwODY5ZGE5NGI3ZWMuLjVjZjEwZDgxNTlhNzNl
Zjg4ZjczMzVjMjRlOWYyMzY0N2UxNDhjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC00NTUsNyArNDU1LDYgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0
aW5nVXBkYXRlVHlwZSB1cGRhdGUKICAgICAgICAgQ29tcG9zaXRpbmdTdGF0ZSBjb21wU3RhdGUo
dXBkYXRlUm9vdCwgbV9jb21wb3NpdGluZ0NvbnN1bHRzT3ZlcmxhcCk7CiAgICAgICAgIGJvb2wg
bGF5ZXJzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBib29sIHNhdzNEVHJhbnNmb3JtID0gZmFs
c2U7Ci0gICAgICAgIG1fZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5j
bGVhcigpOwogICAgICAgICBpZiAobV9jb21wb3NpdGluZ0NvbnN1bHRzT3ZlcmxhcCkgewogICAg
ICAgICAgICAgT3ZlcmxhcE1hcCBvdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAgICAgICAgICAgICBj
b21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoMCwgdXBkYXRlUm9vdCwgJm92ZXJsYXBUZXN0
UmVxdWVzdE1hcCwgY29tcFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBzYXczRFRyYW5zZm9ybSk7CkBA
IC01NTEsOCArNTUwLDkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxvZ0xheWVySW5m
byhjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGludCBkZXB0aCkKIGJvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVCYWNraW5nKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdD
aGFuZ2VSZXBhaW50IHNob3VsZFJlcGFpbnQpCiB7CiAgICAgYm9vbCBsYXllckNoYW5nZWQgPSBm
YWxzZTsKKyAgICBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24gdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gPSBSZW5kZXJMYXll
cjo6Tm9Ob3RDb21wb3NpdGVkUmVhc29uOwogCi0gICAgaWYgKG5lZWRzVG9CZUNvbXBvc2l0ZWQo
bGF5ZXIpKSB7CisgICAgaWYgKG5lZWRzVG9CZUNvbXBvc2l0ZWQobGF5ZXIsICZ2aWV3cG9ydENv
bnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikpIHsKICAgICAgICAgZW5hYmxlQ29tcG9zaXRp
bmdNb2RlKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWxheWVyLT5iYWNraW5nKCkpIHsKQEAg
LTYyNCwxMCArNjI0LDE2IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVCYWNr
aW5nKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAgaWYgKGxheWVy
Q2hhbmdlZCkKICAgICAgICAgbGF5ZXItPmNsZWFyQ2xpcFJlY3RzSW5jbHVkaW5nRGVzY2VuZGFu
dHMoUGFpbnRpbmdDbGlwUmVjdHMpOwogCi0gICAgLy8gSWYgYSBmaXhlZCBwb3NpdGlvbiBsYXll
ciBnYWluZWQvbG9zdCBhIGJhY2tpbmcsIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IgbmVlZHMg
dG8gcmVjYWxjdWxhdGUgd2hldGhlciBpdCBjYW4gZG8gZmFzdCBzY3JvbGxpbmcuCi0gICAgaWYg
KGxheWVyQ2hhbmdlZCAmJiBsYXllci0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9
PSBGaXhlZFBvc2l0aW9uKSB7Ci0gICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQotICAgICAg
ICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5n
ZShtX3JlbmRlclZpZXctPmZyYW1lVmlldygpKTsKKyAgICAvLyBJZiBhIGZpeGVkIHBvc2l0aW9u
IGxheWVyIGdhaW5lZC9sb3N0IGEgYmFja2luZyBvciB0aGUgcmVhc29uIG5vdCBjb21wb3NpdGlu
ZyBpdCBjaGFuZ2VkLAorICAgIC8vIHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IgbmVlZHMgdG8g
cmVjYWxjdWxhdGUgd2hldGhlciBpdCBjYW4gZG8gZmFzdCBzY3JvbGxpbmcuCisgICAgaWYgKGxh
eWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsK
KyAgICAgICAgaWYgKGxheWVyLT52aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
bigpICE9IHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSB7CisgICAgICAg
ICAgICBsYXllci0+c2V0Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24odmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pOworICAgICAgICAgICAgbGF5ZXJD
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGF5ZXJDaGFuZ2VkKQorICAg
ICAgICAgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCisgICAgICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0RpZENoYW5nZShtX3JlbmRlclZpZXct
PmZyYW1lVmlldygpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKGxheWVyLT5iYWNraW5nKCkpCkBA
IC04NDYsOCArODUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21w
b3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICBDb21wb3NpdGlu
Z1N0YXRlIGNoaWxkU3RhdGUoY29tcG9zaXRpbmdTdGF0ZSk7CiAgICAgY2hpbGRTdGF0ZS5tX3N1
YnRyZWVJc0NvbXBvc2l0aW5nID0gZmFsc2U7CiAKLSAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RD
b21wb3NpdGVkUmVhc29uIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBO
b1JlYXNvbjsKLSAgICBib29sIHdpbGxCZUNvbXBvc2l0ZWQgPSBuZWVkc1RvQmVDb21wb3NpdGVk
KGxheWVyLCAmZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbik7CisgICAgYm9v
bCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNUb0JlQ29tcG9zaXRlZChsYXllcik7CiAgICAgaWYg
KHdpbGxCZUNvbXBvc2l0ZWQpIHsKICAgICAgICAgLy8gVGVsbCB0aGUgcGFyZW50IGl0IGhhcyBj
b21wb3NpdGluZyBkZXNjZW5kYW50cy4KICAgICAgICAgY29tcG9zaXRpbmdTdGF0ZS5tX3N1YnRy
ZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKQEAgLTg1Niw4ICs4NjEsNyBAQCB2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVy
KiBhbmNlc3RvcgogCiAgICAgICAgIGlmIChvdmVybGFwTWFwKQogICAgICAgICAgICAgb3Zlcmxh
cE1hcC0+cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7Ci0gICAgfSBlbHNlIGlmIChmaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uICE9IE5vUmVhc29uKQotICAgICAgICBtX2Zp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuc2V0KGxheWVyLCBmaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKTsKKyAgICB9CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5
ZXIpOwpAQCAtMTU2NSwxOCArMTU2OSwxOCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVD
b21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90
Q29tcG9zaXRlZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikg
Y29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVkKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKiB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
bikgY29uc3QKIHsKICAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChsYXllcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIs
IGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIHx8IGxheWVyLT5tdXN0Q29t
cG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkgfHwgKGluQ29tcG9zaXRpbmdNb2RlKCkgJiYgbGF5
ZXItPmlzUm9vdExheWVyKCkpOworICAgIHJldHVybiByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIo
bGF5ZXIsIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSB8fCBsYXllci0+
bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpIHx8IChpbkNvbXBvc2l0aW5nTW9kZSgp
ICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsKIH0KIAogLy8gTm90ZTogdGhpcyBzcGVjaWZpZXMg
d2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllciBmb3IgaW50cmluc2ljIHJl
YXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29tcG9zaXRlZCgpIHRvIGRldGVybWluZSBpZiBhIFJM
IGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCiAvLyBzdGF0aWMKLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVy
TGF5ZXIqIGxheWVyLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiBmaXhl
ZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAorYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciog
bGF5ZXIsIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
biogdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxheWVyLT5yZW5kZXJlcigpOwogICAgIC8vIFRoZSBj
b21wb3NpdGluZyBzdGF0ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRz
IHJlZmxlY3RlZCBsYXllci4KQEAgLTE1OTQsNyArMTU5OCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxh
eWVyLCBGCiAgICAgICAgIHx8IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikKICAg
ICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihyZW5kZXJlcikKICAgICAg
ICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpCi0gICAgICAgIHx8
IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIsIGZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIsIHZpZXdwb3J0Q29uc3RyYWluZWROb3RD
b21wb3NpdGVkUmVhc29uKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZs
b3dTY3JvbGxpbmcobGF5ZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVu
ZGluZyhyZW5kZXJlcik7CiB9CkBAIC0xNjgyLDcgKzE2ODYsNyBAQCBjb25zdCBjaGFyKiBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllcgogICAgICAgICByZXR1cm4gImZpbHRlcnMiOwogCiAgICAgaWYgKHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpKQotICAgICAgICByZXR1cm4gInBv
c2l0aW9uOiBmaXhlZCI7CisgICAgICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRp
b24oKSA9PSBGaXhlZFBvc2l0aW9uID8gInBvc2l0aW9uOiBmaXhlZCIgOiAicG9zaXRpb246IHN0
aWNreSI7CiAKICAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5n
KGxheWVyKSkKICAgICAgICAgcmV0dXJuICItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91
Y2giOwpAQCAtMTk3OCw3ICsxOTgyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmUKICNlbmRp
ZgogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXll
ciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVh
c29uKSBjb25zdAogewogICAgIC8vIHBvc2l0aW9uOmZpeGVkIGVsZW1lbnRzIHRoYXQgY3JlYXRl
IHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0IChlLmcuIGhhdmUgYW4gZXhwbGljaXQgei1pbmRl
eCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zvcm0pIGNhbiBnZXQgdGhlaXIgb3duIGNvbXBvc2l0
ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4dCBpcyByZXF1aXJlZCBvdGhlcndpc2UKQEAgLTIw
MTAsMTEgKzIwMTQsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIERvbid0IHByb21vdGUgZml4ZWQgcG9zaXRpb24gZWxl
bWVudHMgdGhhdCBhcmUgZGVzY2VuZGFudHMgb2YgdHJhbnNmb3JtZWQgZWxlbWVudHMuCi0gICAg
Ly8gVGhleSB3aWxsIHN0YXkgZml4ZWQgd3J0IHRoZSB0cmFuc2Zvcm1lZCBlbGVtZW50IHJhdGhl
ciB0aGFuIHRoZSBlbmNsb3NpbmcgZnJhbWUuCisgICAgLy8gRG9uJ3QgcHJvbW90ZSBmaXhlZCBw
b3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiBhIG5vbi12aWV3IGNvbnRh
aW5lciwgZS5nLiB0cmFuc2Zvcm1lZCBlbGVtZW50cy4KKyAgICAvLyBUaGV5IHdpbGwgc3RheSBm
aXhlZCB3cnQgdGhlIGNvbnRhaW5lciByYXRoZXIgdGhhbiB0aGUgZW5jbG9zaW5nIGZyYW1lLgog
ICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5kZXJWaWV3KSB7Ci0gICAgICAgIGlmIChmaXhlZFBv
c2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQotICAgICAgICAgICAgKmZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBEZXNjZW5kYW50T2ZUcmFuc2Zvcm1lZEVsZW1l
bnQ7CisgICAgICAgIGlmICh2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikK
KyAgICAgICAgICAgICp2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiA9IFJl
bmRlckxheWVyOjpOb3RDb21wb3NpdGVkRm9yTm9uVmlld0NvbnRhaW5lcjsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAyNSw4ICsyMDI5LDggQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3Qq
IHJlbmRlcmUKICAgICAgICAgICAgIHwgUmVuZGVyTGF5ZXI6OkV4Y2x1ZGVIaWRkZW5EZXNjZW5k
YW50cyB8IFJlbmRlckxheWVyOjpEb250Q29uc3RyYWluRm9yTWFzayB8IFJlbmRlckxheWVyOjpJ
bmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRzKTsKICAgICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUo
ZnJhbWVWaWV3LT5mcmFtZSgpLT5mcmFtZVNjYWxlRmFjdG9yKCkpOwogICAgICAgICBpZiAoIXZp
ZXdCb3VuZHMuaW50ZXJzZWN0cyhlbmNsb3NpbmdJbnRSZWN0KGxheWVyQm91bmRzKSkpIHsKLSAg
ICAgICAgICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQotICAg
ICAgICAgICAgICAgICpmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uID0gTGF5
ZXJCb3VuZHNPdXRPZlZpZXc7CisgICAgICAgICAgICBpZiAodmlld3BvcnRDb25zdHJhaW5lZE5v
dENvbXBvc2l0ZWRSZWFzb24pCisgICAgICAgICAgICAgICAgKnZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uID0gUmVuZGVyTGF5ZXI6Ok5vdENvbXBvc2l0ZWRGb3JCb3VuZHNP
dXRPZlZpZXc7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBA
IC0yODIwLDcgKzI4MjQsNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbwogICAgIGluZm8uYWRk
TWVtYmVyKG1fY29udGVudFNoYWRvd0xheWVyKTsKICNlbmRpZgogICAgIGluZm8uYWRkTWVtYmVy
KG1fbGF5ZXJVcGRhdGVyKTsKLSAgICBpbmZvLmFkZE1lbWJlcihtX2ZpeGVkUG9zaXRpb25MYXll
ck5vdENvbXBvc2l0ZWRSZWFzb25NYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggY2YwNTc5NWEwYjkyODA3ZjUwMWIxNjE1ZTIwMGMxNGFmYmM2MDkyNC4uZjk0YmIxYTZkZGIy
MmQxY2YyYjE3ODQ5ZGM3M2JjMjhkYWE2NWVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMjI5LDE0ICsyMjksNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CiAgICAgdm9pZCBzZXRTaG91bGRSZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCgpIHsg
bV9yZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCA9IHRydWU7IH0KIAotICAgIGVudW0g
Rml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiB7Ci0gICAgICAgIE5vUmVhc29u
LAotICAgICAgICBMYXllckJvdW5kc091dE9mVmlldywKLSAgICAgICAgRGVzY2VuZGFudE9mVHJh
bnNmb3JtZWRFbGVtZW50LAotICAgIH07Ci0KLSAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21w
b3NpdGVkUmVhc29uIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24oY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkUG9zaXRpb25MYXllck5v
dENvbXBvc2l0ZWRSZWFzb25NYXAuZ2V0KGxheWVyKTsgfQotCiBwcml2YXRlOgogICAgIGNsYXNz
IE92ZXJsYXBNYXA7CiAKQEAgLTI1MSw5ICsyNDMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBmbHVzaExheWVycyhHcmFwaGljc0xheWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIAog
ICAgIC8vIFdoZXRoZXIgdGhlIGdpdmVuIFJMIG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0g
ICAgYm9vbCBuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKKyAgICBib29sIG5lZWRz
VG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRD
b25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAgICAgLy8gV2hldGhl
ciB0aGUgbGF5ZXIgaGFzIGFuIGludHJpbnNpYyBuZWVkIGZvciBjb21wb3NpdGluZyBsYXllci4K
LSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciosIEZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CisgICAgYm9v
bCByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXll
cjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAg
ICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgY291bGQgZXZlciBiZSBjb21wb3NpdGVkLgogICAgIGJv
b2wgY2FuQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAKQEAgLTMxOCw3
ICszMTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRl
cnMoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
QmxlbmRpbmcoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJl
c0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lKCkgY29uc3Q7Ci0gICAgYm9vbCByZXF1aXJl
c0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyTGF5ZXIq
LCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OworICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0
IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3Np
dGVkUmVhc29uKiA9IDApIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92
ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CiAgICAgYm9vbCByZXF1
aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24oUmVuZGVyT2JqZWN0KiwgYm9vbCBoYXND
b21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBS
ZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogCkBAIC0zOTks
OSArMzkxLDYgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9vYmxpZ2F0b3J5QmFja2luZ1N0b3Jl
Qnl0ZXM7CiAgICAgZG91YmxlIG1fc2Vjb25kYXJ5QmFja2luZ1N0b3JlQnl0ZXM7CiAjZW5kaWYK
LQotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24+IEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRS
ZWFzb25NYXA7Ci0gICAgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCBt
X2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7CiB9OwogCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAyNThhZjIzY2U0ZDg2ZTc2MjRiMDdmZjgxMjkwNmQxOTdhY2NlOWFkLi5hMjAwYjNhMGEyODJh
NGUzMWI2YjNjODU4NDVjNmY3ZDg4YTZiMTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMt
MDEtMDggIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZW5kZXJMYXllckNvbXBvc2l0b3Igc2hvdWxkIGxldCBTY3JvbGxpbmdDb29yZGluYXRvciB1
cGRhdGUgbWFpbiB0aHJlYWQgc2Nyb2xsaW5nIHJlYXNvbnMgYWZ0ZXIgY2hhbmdlIG9mIGxheWVy
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjUy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMg
dG8gZW5zdXJlIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIGFyZSBjb3JyZWN0bHkgdXBkYXRl
ZCBhZnRlciBhIGZpeGVkIGVsZW1lbnQgaXMgZHluYW1pY2FsbHkgaW5zZXJ0ZWQgaW50byB0aGUg
RE9NIHRyZWUuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1w
b3NpdGlvbi1pbi12aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMu
aHRtbDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQt
cG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3
LWR5bmFtaWMuaHRtbDogQWRkZWQuCisKIDIwMTMtMDEtMDggIERpbWl0cmkgR2xhemtvdiAgPGRn
bGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVcGRhdGUgZXhwZWN0YXRpb25zIGZvciB2
YXJpb3VzIHRlc3RzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXIt
Y3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWluLXZp
ZXctZHluYW1pYy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjljZmM1YTk4ZGI3NGZiZTMyYWM5
YjY3OGE2MTM0YWY5NzM2ZGQ1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWluLXZpZXctZHluYW1pYy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWluLXZpZXctZHluYW1p
Yy5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24taW4tdmlldy1keW5hbWljLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGI2NWZlYzFmYzE3ZmIzNGZi
ZjkzNTA3NGMwZDJmNWYyMDUyZjYxNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWluLXZpZXctZHluYW1pYy5o
dG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgor
ICA8c3R5bGU+CisgICAgLmZpeGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIHdp
ZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgICAgdG9wOiAxMDBweDsKKyAgICB9
CisgIDwvc3R5bGU+CisKKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICBpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQodHJ1ZSk7
CisKKyAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
dmFyIGZpeGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoZml4ZWQpOworICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNl
dEhlaWdodDsKKyAgICAgICAgZml4ZWQuY2xhc3NOYW1lID0gImZpeGVkIjsKKyAgICAgICAgdmFy
IG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zID0gaW50ZXJuYWxzLm1haW5UaHJlYWRTY3JvbGxp
bmdSZWFzb25zKGRvY3VtZW50KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVyVGV4dCA9ICFtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyA/ICJQQVNTIiA6
ICJGQUlMOiAiICsgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnM7CisgICAgICB9LCBmYWxzZSk7
CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxwcmUgaWQ9InJlc3Vs
dCI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFt
aWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjljZmM1YTk4ZGI3NGZiZTMyYWM5YjY3OGE2MTM0YWY5NzM2ZGQ1OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0
aW9uLW91dC1vZi12aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMiBAQAorUEFT
UworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9m
aXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21w
b3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWlj
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTAwNmE3M2VjN2JjMDAyMGY1OWU3ZjgxOGFiODJhZTNmNDZlYTVi
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0
aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMuaHRtbApAQCAtMCwwICsxLDM3
IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIC5m
aXhlZCB7CisgICAgICBwb3NpdGlvbjogZml4ZWQ7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAg
IGhlaWdodDogMTBweDsKKyAgICAgIHRvcDogLTEwMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKwor
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JG
aXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRG
aXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsKKworICAgICAgYWRkRXZl
bnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgZml4ZWQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChmaXhlZCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAg
ICBmaXhlZC5jbGFzc05hbWUgPSAiZml4ZWQiOworICAgICAgICB2YXIgbWFpblRocmVhZFNjcm9s
bGluZ1JlYXNvbnMgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1l
bnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0
ID0gIW1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zID8gIlBBU1MiIDogIkZBSUw6ICIgKyBtYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29uczsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgICB9LCBmYWxzZSk7CisgICAgfQorICA8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+
CisgIDxwcmUgaWQ9InJlc3VsdCI+PC9wcmU+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181789</attachid>
            <date>2013-01-08 15:37:37 -0800</date>
            <delta_ts>2013-01-11 10:36:34 -0800</delta_ts>
            <desc>Fix mac break</desc>
            <filename>bug-105652-20130108153441.patch</filename>
            <type>text/plain</type>
            <size>28508</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzA5NWQ3YjZjMjkxNmU5
MTE4MmZlZDhiODgzYTNmNGFmMjM2ZTc3ZS4uZDEwODI2MGY1NDNjYzIzYmY0YWJiYjI0YzYzNGUw
ZWRmZGE5MmEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAxLTA4ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yIHNob3VsZCBsZXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgdXBkYXRlIG1haW4g
dGhyZWFkIHNjcm9sbGluZyByZWFzb25zIGFmdGVyIGNoYW5nZSBvZiBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBTY3JvbGxpbmdDb29y
ZGluYXRvciBrbm93IHRoZSBjaGFuZ2Ugb2YgVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0
ZWRSZWFzb24gaW4gdGltZS4KKyAgICAgICAgQnkgdGhlIHdheSBtb3ZlZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OkZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gdG8gUmVuZGVy
TGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uLgorCisgICAgICAg
IFRlc3RzOiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3
LWR5bmFtaWMuaHRtbAorICAgICAgICAgICAgICAgY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24v
Zml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5odG1sCisKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1h
aW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjptYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uc0FzVGV4dCk6CisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
OjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlTWFjLm1t
OgorICAgICAgICAoV2ViQ29yZTo6bG9nVGhyZWFkZWRTY3JvbGxpbmdNb2RlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OlJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExh
eWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRl
ckxheWVyKTogTW92ZWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpGaXhlZFBvc2l0aW9uTGF5ZXJO
b3RDb21wb3NpdGVkUmVhc29uIHRvIGhlcmUgYW5kIHJlbmFtZWQgaXQgdG8gVmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
cjo6c2V0Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVh
c29uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdM
YXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVC
YWNraW5nKTogTm93IHVwZGF0ZXMgVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24gaGVyZSBpbnN0ZWFkIG9mIGluIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyBiZWZv
cmUgc28gdGhhdCB0aGUgcmVhc29uIGlzIHVwZGF0ZWQgaW4gdGltZS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNUb0JlQ29t
cG9zaXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlYXNvbkZvckNvbXBvc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKyAgICAgICAgKFJlbmRl
ckxheWVyQ29tcG9zaXRvcik6CisKIDIwMTMtMDEtMDggIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEhlYXAtdXNlLWFmdGVyLWZyZWUgaW4gYm9vbCBXZWJDb3Jl
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZmQw
NjkyOGZhNGUyZjQ0NDFjMWY5MDUwMWJmOTQ5NTE1YTJhMGQ2Mi4uMjJjMzA5MmJmMmVkNzY3MThm
OWJmMmMyOGY4OGQzNTYyN2M3YjM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMzg4LDcgKzM4OCw3IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIH0KICNlbmRpZgogCi1ib29sIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpIGNvbnN0Citib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1Jl
cGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29u
c3QKIHsKICAgICBjb25zdCBGcmFtZVZpZXc6OlZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQq
IHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gZnJhbWVWaWV3LT52aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cygpOwogICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCkBAIC00
MDEsNyArNDAxLDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dS
ZXBhaW50Rml4ZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWUKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOwogICAgICAgICAvLyBBbnkg
ZXhwbGljaXQgcmVhc29uIHRoYXQgYSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IGlzIG5vdCBjb21w
b3NpdGVkIHNob3VsZG4ndCBjYXVzZSBzbG93IHNjcm9sbGluZy4KLSAgICAgICAgaWYgKCFsYXll
ci0+aXNDb21wb3NpdGVkKCkgJiYgbGF5ZXItPmNvbXBvc2l0b3IoKS0+Zml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbihsYXllcikgPT0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpO
b1JlYXNvbikKKyAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgJiYgbGF5ZXItPnZp
ZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKCkgPT0gUmVuZGVyTGF5ZXI6Ok5v
Tm90Q29tcG9zaXRlZFJlYXNvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MjIsOCArNDIyLDggQEAgTWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkg
Y28KICAgICAgICAgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzU2xvd1JlcGFpbnRP
YmplY3RzOwogICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVW
aWV3LT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQogICAgICAgICBtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRT
dXBwb3J0aW5nRml4ZWRMYXllcnM7Ci0gICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVy
cygpICYmIGhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQotICAg
ICAgICBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNOb25MYXllckZpeGVkT2JqZWN0
czsKKyAgICBpZiAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzVmlzaWJsZVNs
b3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoZnJhbWVWaWV3KSkKKyAgICAgICAg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0czsKICAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNJ
bWFnZURvY3VtZW50KCkpCiAgICAgICAgIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHw9IElz
SW1hZ2VEb2N1bWVudDsKIApAQCAtNDY1LDggKzQ2NSw4IEBAIFN0cmluZyBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9s
bGluCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVj
dHMsICIpOwogICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3Rz
IHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOwotICAgIGlmIChyZWFzb25zICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAg
ICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllclZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5v
bi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCAiKTsKICAgICBpZiAocmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDlj
MDY3MTc5Mjc3MDJmMzk5Y2U0YzVhNDgxMGFjODEzNzExM2I4OTEuLjdlZjI3NjExZDYwNjY3ZTg5
NDk0Mzg1N2ZhZjg1NTc1ZDU0ODg0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkID0gMSA8PCAwLAogICAgICAgICBIYXNT
bG93UmVwYWludE9iamVjdHMgPSAxIDw8IDEsCiAgICAgICAgIEhhc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycyA9IDEgPDwgMiwKLSAgICAgICAg
SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMgPSAxIDw8IDMsCisgICAgICAgIEhhc05vbkxheWVyVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSAxIDw8IDMsCiAgICAgICAgIElzSW1hZ2VEb2N1bWVu
dCA9IDEgPDwgNAogICAgIH07CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZy
YW1lVmlldyopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKSB7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVW
aWV3KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lVmlldyopIGNvbnN0OwogICAgIHZvaWQgdXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwogICAgIAogICAg
IHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb25UaW1lckZpcmVkKFRpbWVyPFNjcm9s
bGluZ0Nvb3JkaW5hdG9yPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAppbmRleCAzYzM4NDllMjNl
NmQwMjM0MDIxY2UwMGFjZGQ2NDUyYzJjNmI5NWM3Li43ZDQ0MzkxM2MwZGU5NTI1MWMwMWQ1OTNk
NDA4NDdkZjQzYjMwOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApAQCAtODksNyArODksNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNv
dW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKE1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9i
amVjdHMoRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVW
aWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgZW5zdXJlUm9vdFN0YXRl
Tm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIHN0
YXRlTm9kZUZvcklEKFNjcm9sbGluZ05vZGVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVNYWMubW0KaW5kZXggY2FjMzhkNjYyMGZmMzhjNzdkMzYzNGFkYjllZGVkOTlmYTA0Y2I3ZS4u
YWY2OWYzMDJhOWRiNmRlNTU4MTdiOWZhMjUyNTk0ZmFiNDc0NTNmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyB2b2lkIGxv
Z1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cykKICAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoInNsb3ctcmVwYWludCBv
YmplY3RzLCIpOwogICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3Vw
cG9ydGluZ0ZpeGVkTGF5ZXJzKQogICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVu
ZCgidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICAgICAgaWYgKG1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4
ZWRPYmplY3RzKQorICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykK
ICAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoIm5vbi1sYXllciB2aWV3cG9y
dC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOwogICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQogICAgICAg
ICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiaW1hZ2UgZG9jdW1lbnQsIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkZGY1ZDM3OTVjNjhhYjFh
NjBhOTAxZjcxZjQwNThjMjBlZjE4ZjRjLi41MzU5ZWFlZDA3ZDViN2ZkZTFkYmJmOGI0YmI2MTRk
OWY0OWM2YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTE2Niw2ICsxNjYsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVuZGVyZXIpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
ICwgbV9oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoZmFsc2UpCiAgICAgLCBtX2luZGlyZWN0Q29t
cG9zaXRpbmdSZWFzb24oTm9JbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKQorICAgICwgbV92aWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihOb05vdENvbXBvc2l0ZWRSZWFzb24p
CiAjZW5kaWYKICAgICAsIG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKGZhbHNlKQog
ICAgICwgbV91cGRhdGluZ01hcnF1ZWVQb3NpdGlvbihmYWxzZSkKQEAgLTM0MjUsOCArMzQyNiw4
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYKICAgICAgICAgICAgIC8vIElmIHRoaXMgUmVuZGVy
TGF5ZXIgc2hvdWxkIHBhaW50IGludG8gaXRzIGJhY2tpbmcsIHRoYXQgd2lsbCBiZSBkb25lIHZp
YSBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKCkuCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGNvbXBvc2l0b3IoKS0+Zml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbih0aGlzKSA9PSBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OkxheWVyQm91bmRzT3V0T2ZWaWV3KSB7Ci0gICAgICAgIC8vIERvbid0IHBhaW50IG91dC1vZi12
aWV3IGZpeGVkIHBvc2l0aW9uIGxheWVycyAod2hlbiBkb2luZyBwcmVwYWludGluZykgYmVjYXVz
ZSB0aGV5IHdpbGwgbmV2ZXIgYmUgdmlzaWJsZQorICAgIH0gZWxzZSBpZiAodmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0
T2ZWaWV3KSB7CisgICAgICAgIC8vIERvbid0IHBhaW50IG91dC1vZi12aWV3IHZpZXdwb3J0IGNv
bnN0cmFpbmVkIGxheWVycyAod2hlbiBkb2luZyBwcmVwYWludGluZykgYmVjYXVzZSB0aGV5IHdp
bGwgbmV2ZXIgYmUgdmlzaWJsZQogICAgICAgICAvLyB1bmxlc3MgdGhlaXIgcG9zaXRpb24gb3Ig
dmlld3BvcnQgc2l6ZSBpcyBjaGFuZ2VkLgogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBkZjQ5MjAxODQ0YmFiOGUwYWViNGVk
YzY3YTcwMzE3MTg2M2U3YjdmLi5mOTNmYmVhYjczZGRiM2ViOTdmMTY2Nzg4NmRhMjYyZDBlZTQ4
OTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNzI3LDYgKzcy
NywxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIGVudW0gVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24geworICAgICAgICBOb05vdENvbXBvc2l0ZWRSZWFzb24sCisgICAgICAgIE5vdENvbXBvc2l0
ZWRGb3JCb3VuZHNPdXRPZlZpZXcsCisgICAgICAgIE5vdENvbXBvc2l0ZWRGb3JOb25WaWV3Q29u
dGFpbmVyLAorICAgIH07CisKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21w
b3NpdGVkUmVhc29uKFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIHJlYXNv
bikgeyBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uID0gcmVhc29uOyB9
CisgICAgVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gdmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbj4obV92aWV3cG9ydENvbnN0cmFp
bmVkTm90Q29tcG9zaXRlZFJlYXNvbik7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlWk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpAQCAt
MTAzNiw2ICsxMDQ3LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBib29sIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50IDogMTsgLy8gSW4gdGhl
IHotb3JkZXIgdHJlZS4KICAgICB1bnNpZ25lZCBtX2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24g
OiAzOworICAgIHVuc2lnbmVkIG1fdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24gOiAyOwogI2VuZGlmCiAKICAgICBib29sIG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxi
YXJzIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMmE1YWUxMjQ3ZjJmM2YzNDc0YWU4MTljYzIzZTA4NjlkYTk0Yjdl
Yy4uNWNmMTBkODE1OWE3M2VmODhmNzMzNWMyNGU5ZjIzNjQ3ZTE0OGNlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQ1
NSw3ICs0NTUsNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogICAgICAgICBDb21wb3NpdGlu
Z1N0YXRlIGNvbXBTdGF0ZSh1cGRhdGVSb290LCBtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFw
KTsKICAgICAgICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgc2F3
M0RUcmFuc2Zvcm0gPSBmYWxzZTsKLSAgICAgICAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21w
b3NpdGVkUmVhc29uTWFwLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX2NvbXBvc2l0aW5nQ29uc3Vs
dHNPdmVybGFwKSB7CiAgICAgICAgICAgICBPdmVybGFwTWFwIG92ZXJsYXBUZXN0UmVxdWVzdE1h
cDsKICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygwLCB1cGRhdGVS
b290LCAmb3ZlcmxhcFRlc3RSZXF1ZXN0TWFwLCBjb21wU3RhdGUsIGxheWVyc0NoYW5nZWQsIHNh
dzNEVHJhbnNmb3JtKTsKQEAgLTU1MSw4ICs1NTAsOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6bG9nTGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHRoKQog
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxh
eWVyLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnQgc2hvdWxkUmVwYWludCkKIHsKICAgICBib29s
IGxheWVyQ2hhbmdlZCA9IGZhbHNlOworICAgIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFp
bmVkTm90Q29tcG9zaXRlZFJlYXNvbiB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJl
YXNvbiA9IFJlbmRlckxheWVyOjpOb05vdENvbXBvc2l0ZWRSZWFzb247CiAKLSAgICBpZiAobmVl
ZHNUb0JlQ29tcG9zaXRlZChsYXllcikpIHsKKyAgICBpZiAobmVlZHNUb0JlQ29tcG9zaXRlZChs
YXllciwgJnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSkgewogICAgICAg
ICBlbmFibGVDb21wb3NpdGluZ01vZGUoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghbGF5ZXIt
PmJhY2tpbmcoKSkgewpAQCAtNjI0LDEwICs2MjQsMTYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5n
ZVIKICAgICBpZiAobGF5ZXJDaGFuZ2VkKQogICAgICAgICBsYXllci0+Y2xlYXJDbGlwUmVjdHNJ
bmNsdWRpbmdEZXNjZW5kYW50cyhQYWludGluZ0NsaXBSZWN0cyk7CiAKLSAgICAvLyBJZiBhIGZp
eGVkIHBvc2l0aW9uIGxheWVyIGdhaW5lZC9sb3N0IGEgYmFja2luZywgdGhlIHNjcm9sbGluZyBj
b29yZGluYXRvciBuZWVkcyB0byByZWNhbGN1bGF0ZSB3aGV0aGVyIGl0IGNhbiBkbyBmYXN0IHNj
cm9sbGluZy4KLSAgICBpZiAobGF5ZXJDaGFuZ2VkICYmIGxheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpOworICAgIC8vIElm
IGEgZml4ZWQgcG9zaXRpb24gbGF5ZXIgZ2FpbmVkL2xvc3QgYSBiYWNraW5nIG9yIHRoZSByZWFz
b24gbm90IGNvbXBvc2l0aW5nIGl0IGNoYW5nZWQsCisgICAgLy8gdGhlIHNjcm9sbGluZyBjb29y
ZGluYXRvciBuZWVkcyB0byByZWNhbGN1bGF0ZSB3aGV0aGVyIGl0IGNhbiBkbyBmYXN0IHNjcm9s
bGluZy4KKyAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbikgeworICAgICAgICBpZiAobGF5ZXItPnZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKCkgIT0gdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24pIHsKKyAgICAgICAgICAgIGxheWVyLT5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29t
cG9zaXRlZFJlYXNvbih2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbik7Cisg
ICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChs
YXllckNoYW5nZWQpCisgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKKyAgICAgICAg
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4ZWRPYmplY3RzRGlkQ2hh
bmdlKG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpOwogICAgIH0KICAgICAKICAgICBpZiAobGF5
ZXItPmJhY2tpbmcoKSkKQEAgLTg0Niw4ICs4NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3Rv
cgogICAgIENvbXBvc2l0aW5nU3RhdGUgY2hpbGRTdGF0ZShjb21wb3NpdGluZ1N0YXRlKTsKICAg
ICBjaGlsZFN0YXRlLm1fc3VidHJlZUlzQ29tcG9zaXRpbmcgPSBmYWxzZTsKIAotICAgIEZpeGVk
UG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gZml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiA9IE5vUmVhc29uOwotICAgIGJvb2wgd2lsbEJlQ29tcG9zaXRlZCA9IG5l
ZWRzVG9CZUNvbXBvc2l0ZWQobGF5ZXIsICZmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVk
UmVhc29uKTsKKyAgICBib29sIHdpbGxCZUNvbXBvc2l0ZWQgPSBuZWVkc1RvQmVDb21wb3NpdGVk
KGxheWVyKTsKICAgICBpZiAod2lsbEJlQ29tcG9zaXRlZCkgewogICAgICAgICAvLyBUZWxsIHRo
ZSBwYXJlbnQgaXQgaGFzIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRzLgogICAgICAgICBjb21wb3Np
dGluZ1N0YXRlLm1fc3VidHJlZUlzQ29tcG9zaXRpbmcgPSB0cnVlOwpAQCAtODU2LDggKzg2MSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAKICAgICAgICAgaWYgKG92ZXJsYXBNYXApCiAg
ICAgICAgICAgICBvdmVybGFwTWFwLT5wdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKTsKLSAgICB9
IGVsc2UgaWYgKGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gIT0gTm9SZWFz
b24pCi0gICAgICAgIG1fZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5z
ZXQobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pOworICAgIH0K
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11
dGF0aW9uQ2hlY2tlcihsYXllcik7CkBAIC0xNTY1LDE4ICsxNTY5LDE4IEBAIGJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpzaG91bGRQcm9wYWdhdGVDb21wb3NpdGluZ1RvRW5jbG9zaW5nRnJh
bWUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6Om5lZWRzVG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBGaXhl
ZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RD
b21wb3NpdGVkUmVhc29uKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRz
VG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJMYXllcjo6Vmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAogewogICAgIGlmICghY2FuQmVDb21wb3NpdGVkKGxh
eWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHJlcXVpcmVzQ29tcG9z
aXRpbmdMYXllcihsYXllciwgZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikg
fHwgbGF5ZXItPm11c3RDb21wb3NpdGVGb3JJbmRpcmVjdFJlYXNvbnMoKSB8fCAoaW5Db21wb3Np
dGluZ01vZGUoKSAmJiBsYXllci0+aXNSb290TGF5ZXIoKSk7CisgICAgcmV0dXJuIHJlcXVpcmVz
Q29tcG9zaXRpbmdMYXllcihsYXllciwgdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24pIHx8IGxheWVyLT5tdXN0Q29tcG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkgfHwgKGlu
Q29tcG9zaXRpbmdNb2RlKCkgJiYgbGF5ZXItPmlzUm9vdExheWVyKCkpOwogfQogCiAvLyBOb3Rl
OiB0aGlzIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBSTCBuZWVkcyBhIGNvbXBvc2l0aW5nIGxheWVy
IGZvciBpbnRyaW5zaWMgcmVhc29ucy4KIC8vIFVzZSBuZWVkc1RvQmVDb21wb3NpdGVkKCkgdG8g
ZGV0ZXJtaW5lIGlmIGEgUkwgYWN0dWFsbHkgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KIC8v
IHN0YXRpYwotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdM
YXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb24qIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0
Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKiB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
bikgY29uc3QKIHsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbGF5ZXItPnJlbmRlcmVy
KCk7CiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVjdGlvbiBzaG91bGQg
bWF0Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgpAQCAtMTU5NCw3ICsxNTk4LDcgQEAg
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25z
dCBSZW5kZXJMYXllciogbGF5ZXIsIEYKICAgICAgICAgfHwgY2xpcHNDb21wb3NpdGluZ0Rlc2Nl
bmRhbnRzKGxheWVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9u
KHJlbmRlcmVyKQogICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhyZW5k
ZXJlcikKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJlbmRlcmVy
LCBsYXllciwgZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikKKyAgICAgICAg
fHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJlbmRlcmVyLCBsYXllciwgdmlld3Bv
cnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pCiAgICAgICAgIHx8IHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckJsZW5kaW5nKHJlbmRlcmVyKTsKIH0KQEAgLTE2ODIsNyArMTY4Niw3IEBA
IGNvbnN0IGNoYXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVhc29uRm9yQ29tcG9zaXRpbmco
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyCiAgICAgICAgIHJldHVybiAiZmlsdGVycyI7CiAKICAg
ICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKHJlbmRlcmVyLCBsYXllcikpCi0g
ICAgICAgIHJldHVybiAicG9zaXRpb246IGZpeGVkIjsKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVy
LT5zdHlsZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24gPyAicG9zaXRpb246IGZpeGVk
IiA6ICJwb3NpdGlvbjogc3RpY2t5IjsKIAogICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIpKQogICAgICAgICByZXR1cm4gIi13ZWJraXQtb3ZlcmZs
b3ctc2Nyb2xsaW5nOiB0b3VjaCI7CkBAIC0xOTc4LDcgKzE5ODIsNyBAQCBib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlck9iamVj
dCogcmVuZGVyZQogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1
aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29u
KiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyOjpW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgLy8gcG9zaXRpb246Zml4ZWQgZWxl
bWVudHMgdGhhdCBjcmVhdGUgdGhlaXIgb3duIHN0YWNraW5nIGNvbnRleHQgKGUuZy4gaGF2ZSBh
biBleHBsaWNpdCB6LWluZGV4LAogICAgIC8vIG9wYWNpdHksIHRyYW5zZm9ybSkgY2FuIGdldCB0
aGVpciBvd24gY29tcG9zaXRlZCBsYXllci4gQSBzdGFja2luZyBjb250ZXh0IGlzIHJlcXVpcmVk
IG90aGVyd2lzZQpAQCAtMjAxMCwxMSArMjAxNCwxMSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVy
ZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gRG9uJ3QgcHJvbW90ZSBm
aXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBkZXNjZW5kYW50cyBvZiB0cmFuc2Zvcm1l
ZCBlbGVtZW50cy4KLSAgICAvLyBUaGV5IHdpbGwgc3RheSBmaXhlZCB3cnQgdGhlIHRyYW5zZm9y
bWVkIGVsZW1lbnQgcmF0aGVyIHRoYW4gdGhlIGVuY2xvc2luZyBmcmFtZS4KKyAgICAvLyBEb24n
dCBwcm9tb3RlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGRlc2NlbmRhbnRzIG9m
IGEgbm9uLXZpZXcgY29udGFpbmVyLCBlLmcuIHRyYW5zZm9ybWVkIGVsZW1lbnRzLgorICAgIC8v
IFRoZXkgd2lsbCBzdGF5IGZpeGVkIHdydCB0aGUgY29udGFpbmVyIHJhdGhlciB0aGFuIHRoZSBl
bmNsb3NpbmcgZnJhbWUuCiAgICAgaWYgKGNvbnRhaW5lciAhPSBtX3JlbmRlclZpZXcpIHsKLSAg
ICAgICAgaWYgKGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24pCi0gICAgICAg
ICAgICAqZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiA9IERlc2NlbmRhbnRP
ZlRyYW5zZm9ybWVkRWxlbWVudDsKKyAgICAgICAgaWYgKHZpZXdwb3J0Q29uc3RyYWluZWROb3RD
b21wb3NpdGVkUmVhc29uKQorICAgICAgICAgICAgKnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21w
b3NpdGVkUmVhc29uID0gUmVuZGVyTGF5ZXI6Ok5vdENvbXBvc2l0ZWRGb3JOb25WaWV3Q29udGFp
bmVyOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yMDI1LDggKzIwMjksOCBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0
aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZQogICAgICAgICAgICAgfCBSZW5kZXJMYXllcjo6RXhj
bHVkZUhpZGRlbkRlc2NlbmRhbnRzIHwgUmVuZGVyTGF5ZXI6OkRvbnRDb25zdHJhaW5Gb3JNYXNr
IHwgUmVuZGVyTGF5ZXI6OkluY2x1ZGVDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogICAgICAgICBs
YXllckJvdW5kcy5zY2FsZShmcmFtZVZpZXctPmZyYW1lKCktPmZyYW1lU2NhbGVGYWN0b3IoKSk7
CiAgICAgICAgIGlmICghdmlld0JvdW5kcy5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5
ZXJCb3VuZHMpKSkgewotICAgICAgICAgICAgaWYgKGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb24pCi0gICAgICAgICAgICAgICAgKmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb24gPSBMYXllckJvdW5kc091dE9mVmlldzsKKyAgICAgICAgICAgIGlmICh2aWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikKKyAgICAgICAgICAgICAgICAqdmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gPSBSZW5kZXJMYXllcjo6Tm90Q29t
cG9zaXRlZEZvckJvdW5kc091dE9mVmlldzsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI4MjAsNyArMjgyNCw2IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvCiAgICAgaW5mby5hZGRNZW1iZXIobV9jb250ZW50U2hhZG93TGF5ZXIpOwogI2VuZGlmCiAg
ICAgaW5mby5hZGRNZW1iZXIobV9sYXllclVwZGF0ZXIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1f
Zml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaAppbmRleCBjZjA1Nzk1YTBiOTI4MDdmNTAxYjE2MTVlMjAwYzE0YWZiYzYw
OTI0Li5mOTRiYjFhNmRkYjIyZDFjZjJiMTc4NDlkYzczYmMyOGRhYTY1ZWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC0yMjks
MTQgKzIyOSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKICAgICB2b2lkIHNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGlu
Z0FmdGVyTGF5b3V0KCkgeyBtX3JlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1
ZTsgfQogCi0gICAgZW51bSBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIHsK
LSAgICAgICAgTm9SZWFzb24sCi0gICAgICAgIExheWVyQm91bmRzT3V0T2ZWaWV3LAotICAgICAg
ICBEZXNjZW5kYW50T2ZUcmFuc2Zvcm1lZEVsZW1lbnQsCi0gICAgfTsKLQotICAgIEZpeGVkUG9z
aXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9z
aXRlZFJlYXNvbihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0IHsgcmV0dXJuIG1fZml4
ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcC5nZXQobGF5ZXIpOyB9Ci0KIHBy
aXZhdGU6CiAgICAgY2xhc3MgT3ZlcmxhcE1hcDsKIApAQCAtMjUxLDkgKzI0Myw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoTGF5ZXJzKEdyYXBoaWNzTGF5ZXJVcGRhdGVyKikg
T1ZFUlJJREU7CiAgICAgCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gUkwgbmVlZHMgYSBjb21w
b3NpdGluZyBsYXllci4KLSAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0
OworICAgIGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciosIFJlbmRl
ckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25z
dDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBoYXMgYW4gaW50cmluc2ljIG5lZWQgZm9yIGNv
bXBvc2l0aW5nIGxheWVyLgotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0xheWVyKGNvbnN0
IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogPSAw
KSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJM
YXllciosIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
biogPSAwKSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRoZSBsYXllciBjb3VsZCBldmVyIGJlIGNv
bXBvc2l0ZWQuCiAgICAgYm9vbCBjYW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBj
b25zdDsKIApAQCAtMzE4LDcgKzMxMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdDsK
ICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25zdDsK
LSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqLCBj
b25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24q
ID0gMCkgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJl
c0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25z
dDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihSZW5kZXJP
YmplY3QqLCBib29sIGhhc0NvbXBvc2l0ZWREZXNjZW5kYW50cywgYm9vbCBoYXMzRFRyYW5zZm9y
bWVkRGVzY2VuZGFudHMsIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uJikg
Y29uc3Q7CiAKQEAgLTM5OSw5ICszOTEsNiBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX29ibGln
YXRvcnlCYWNraW5nU3RvcmVCeXRlczsKICAgICBkb3VibGUgbV9zZWNvbmRhcnlCYWNraW5nU3Rv
cmVCeXRlczsKICNlbmRpZgotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVy
KiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbj4gRml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcDsKLSAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21w
b3NpdGVkUmVhc29uTWFwIG1fZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1h
cDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDI1OGFmMjNjZTRkODZlNzYyNGIwN2ZmODEyOTA2ZDE5N2FjY2U5
YWQuLmEyMDBiM2EwYTI4MmE0ZTMxYjZiM2M4NTg0NWM2ZjdkODhhNmIxMjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxMy0wMS0wOCAgWGlhbnpodSBXYW5nICA8d2FuZ3hpYW56aHVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciBzaG91bGQgbGV0IFNjcm9s
bGluZ0Nvb3JkaW5hdG9yIHVwZGF0ZSBtYWluIHRocmVhZCBzY3JvbGxpbmcgcmVhc29ucyBhZnRl
ciBjaGFuZ2Ugb2YgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDU2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUZXN0cyB0byBlbnN1cmUgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgYXJl
IGNvcnJlY3RseSB1cGRhdGVkIGFmdGVyIGEgZml4ZWQgZWxlbWVudCBpcyBkeW5hbWljYWxseSBp
bnNlcnRlZCBpbnRvIHRoZSBET00gdHJlZS4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVy
LWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLWluLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9u
LWluLXZpZXctZHluYW1pYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXll
ci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9z
aXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0wOCAgRGlt
aXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVwZGF0ZSBl
eHBlY3RhdGlvbnMgZm9yIHZhcmlvdXMgdGVzdHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWNm
YzVhOThkYjc0ZmJlMzJhYzliNjc4YTYxMzRhZjk3MzZkZDU5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4t
dmlldy1keW5hbWljLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1BBU1MKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24taW4tdmlldy1keW5hbWljLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YjY1ZmVjMWZjMTdmYjM0ZmJmOTM1MDc0YzBkMmY1ZjIwNTJmNjE3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
aW4tdmlldy1keW5hbWljLmh0bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+CisK
KzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICAuZml4ZWQgeworICAgICAgcG9zaXRpb246
IGZpeGVkOworICAgICAgd2lkdGg6IDEwcHg7CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgICB0
b3A6IDEwMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCI+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVl
KTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNr
aW5nQ29udGV4dCh0cnVlKTsKKworICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgZml4ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmaXhlZCk7CisgICAgICAgIGRv
Y3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0OworICAgICAgICBmaXhlZC5jbGFzc05hbWUgPSAiZml4
ZWQiOworICAgICAgICB2YXIgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgPSBpbnRlcm5hbHMu
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gIW1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zID8gIlBBU1MiIDogIkZBSUw6ICIgKyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uczsK
KyAgICAgIH0sIGZhbHNlKTsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4K
KyAgPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24t
b3V0LW9mLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42OWNmYzVhOThkYjc0ZmJlMzJhYzliNjc4YTYxMzRhZjk3MzZk
ZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3Jl
YXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwyIEBACitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5n
L2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMuaHRtbCBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91
dC1vZi12aWV3LWR5bmFtaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDA2YTczZWM3YmMwMDIwZjU5ZTdm
ODE4YWI4MmFlM2Y0NmVhNWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5o
dG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgor
ICA8c3R5bGU+CisgICAgLmZpeGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIHdp
ZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgICAgdG9wOiAtMTAwcHg7CisgICAg
fQorICA8L3N0eWxlPgorCisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb25FbmFibGVkKHRydWUpOworICAgICAgaW50ZXJu
YWxzLnNldHRpbmdzLnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHRydWUp
OworCisgICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBmaXhlZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGZpeGVkKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZz
ZXRIZWlnaHQ7CisgICAgICAgIGZpeGVkLmNsYXNzTmFtZSA9ICJmaXhlZCI7CisgICAgICAgIHZh
ciBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyhkb2N1bWVudCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lclRleHQgPSAhbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgPyAiUEFTUyIg
OiAiRkFJTDogIiArIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zOworICAgICAgICB0ZXN0UnVu
bmVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0sIGZhbHNlKTsKKyAgICB9CisgIDwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKyAgPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzwvYm9keT4KKzwv
aHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182365</attachid>
            <date>2013-01-11 10:35:54 -0800</date>
            <delta_ts>2013-01-11 10:59:06 -0800</delta_ts>
            <desc>for landing</desc>
            <filename>bug-105652-20130111183256.patch</filename>
            <type>text/plain</type>
            <size>28547</size>
            <attacher name="Xianzhu Wang">wangxianzhu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGM1MDNlYjU3MjE2ODVh
ZGVhZTEyZjRlOGIxNGM3Y2FkY2ZjOWEzYy4uZjI5MmU2NzY1Nzc2YmMyODVkZWRkYTkwNzkxZmU1
ZDNjZDkyYjhkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEzLTAxLTA4ICBYaWFu
emh1IFdhbmcgIDx3YW5neGlhbnpodUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yIHNob3VsZCBsZXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgdXBkYXRlIG1haW4g
dGhyZWFkIHNjcm9sbGluZyByZWFzb25zIGFmdGVyIGNoYW5nZSBvZiBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTY1MgorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBMZXQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3Iga25vdyB0aGUgY2hhbmdlIG9mIFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVk
UmVhc29uIGluIHRpbWUuCisgICAgICAgIEJ5IHRoZSB3YXkgbW92ZWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIHRvIFJlbmRlckxh
eWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbi4KKworICAgICAgICBU
ZXN0czogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1k
eW5hbWljLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2Zp
eGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMuaHRtbAorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Omhhc1Zpc2libGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptYWlu
VGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQpOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChTY3JvbGxpbmdD
b29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6
aGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpOgorICAgICAg
ICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmxvZ1RocmVhZGVkU2Nyb2xsaW5nTW9kZSk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXll
cik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChSZW5kZXJM
YXllcik6IE1vdmVkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Rml4ZWRQb3NpdGlvbkxheWVyTm90
Q29tcG9zaXRlZFJlYXNvbiB0byBoZXJlIGFuZCByZW5hbWVkIGl0IHRvIFZpZXdwb3J0Q29uc3Ry
YWluZWROb3RDb21wb3NpdGVkUmVhc29uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNldFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nTGF5
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFj
a2luZyk6IE5vdyB1cGRhdGVzIFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29u
IGhlcmUgaW5zdGVhZCBvZiBpbiBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMgYmVmb3Jl
IHNvIHRoYXQgdGhlIHJlYXNvbiBpcyB1cGRhdGVkIGluIHRpbWUuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzVG9CZUNvbXBv
c2l0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZWFzb25Gb3JDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgIChSZW5kZXJM
YXllckNvbXBvc2l0b3IpOgorCiAyMDEzLTAxLTExICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1NWR10gU3VwcHJlc3MgcmVzb3VyY2UgcmVidWlsZGlu
ZyBmb3IgdW5hdHRhY2hlZCBhbmQgc2hhZG93IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5kZXggZmM4
NzlhZDdkNjkyOWIwNTU1YjE5OWRlZTc4NzQzNTEwOTc0MDEzYy4uYWM5M2YxOWM1ZDY1NmI3ZTM2
ODljNDgzYzZkMTI3ZTUxYjA4MmVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMzk1LDcgKzM5NSw3IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9y
bVdoZWVsRXZlbnRQaGFzZSBwaGFzZSkKIH0KICNlbmRpZgogCi1ib29sIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpIGNvbnN0Citib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpoYXNWaXNpYmxlU2xvd1Jl
cGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhGcmFtZVZpZXcqIGZyYW1lVmlldykgY29u
c3QKIHsKICAgICBjb25zdCBGcmFtZVZpZXc6OlZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQq
IHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzID0gZnJhbWVWaWV3LT52aWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0cygpOwogICAgIGlmICghdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMpCkBAIC00
MDgsNyArNDA4LDcgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6aGFzVmlzaWJsZVNsb3dS
ZXBhaW50Rml4ZWRPYmplY3RzKEZyYW1lVmlldyogZnJhbWVWaWUKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2Jq
ZWN0KHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3QpLT5sYXllcigpOwogICAgICAgICAvLyBBbnkg
ZXhwbGljaXQgcmVhc29uIHRoYXQgYSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50IGlzIG5vdCBjb21w
b3NpdGVkIHNob3VsZG4ndCBjYXVzZSBzbG93IHNjcm9sbGluZy4KLSAgICAgICAgaWYgKCFsYXll
ci0+aXNDb21wb3NpdGVkKCkgJiYgbGF5ZXItPmNvbXBvc2l0b3IoKS0+Zml4ZWRQb3NpdGlvbkxh
eWVyTm90Q29tcG9zaXRlZFJlYXNvbihsYXllcikgPT0gUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpO
b1JlYXNvbikKKyAgICAgICAgaWYgKCFsYXllci0+aXNDb21wb3NpdGVkKCkgJiYgbGF5ZXItPnZp
ZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKCkgPT0gUmVuZGVyTGF5ZXI6Ok5v
Tm90Q29tcG9zaXRlZFJlYXNvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MjksOCArNDI5LDggQEAgTWFpblRocmVhZFNjcm9sbGluZ1Jl
YXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKCkg
Y28KICAgICAgICAgbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzU2xvd1JlcGFpbnRP
YmplY3RzOwogICAgIGlmICghc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgZnJhbWVW
aWV3LT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpKQogICAgICAgICBtYWluVGhyZWFk
U2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRT
dXBwb3J0aW5nRml4ZWRMYXllcnM7Ci0gICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVy
cygpICYmIGhhc1Zpc2libGVTbG93UmVwYWludEZpeGVkT2JqZWN0cyhmcmFtZVZpZXcpKQotICAg
ICAgICBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNOb25MYXllckZpeGVkT2JqZWN0
czsKKyAgICBpZiAoc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgJiYgaGFzVmlzaWJsZVNs
b3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoZnJhbWVWaWV3KSkKKyAgICAgICAg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgfD0gSGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0czsKICAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+aXNJ
bWFnZURvY3VtZW50KCkpCiAgICAgICAgIG1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zIHw9IElz
SW1hZ2VEb2N1bWVudDsKIApAQCAtNDcyLDggKzQ3Miw4IEBAIFN0cmluZyBTY3JvbGxpbmdDb29y
ZGluYXRvcjo6bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnNBc1RleHQoTWFpblRocmVhZFNjcm9s
bGluCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJIYXMgc2xvdyByZXBhaW50IG9iamVj
dHMsICIpOwogICAgIGlmIChyZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycykKICAgICAg
ICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3Rz
IHdpdGhvdXQgc3VwcG9ydGluZyBmaXhlZCBsYXllcnMsICIpOwotICAgIGlmIChyZWFzb25zICYg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQotICAgICAgICBz
dHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5vbi1sYXllciBmaXhlZCBvYmplY3RzLCAiKTsKKyAg
ICBpZiAocmVhc29ucyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllclZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQorICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiSGFzIG5v
bi1sYXllciB2aWV3cG9ydC1jb25zdHJhaW5lZCBvYmplY3RzLCAiKTsKICAgICBpZiAocmVhc29u
cyAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCiAgICAgICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJJcyBpbWFnZSBkb2N1bWVudCwgIik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDlj
MDY3MTc5Mjc3MDJmMzk5Y2U0YzVhNDgxMGFjODEzNzExM2I4OTEuLjdlZjI3NjExZDYwNjY3ZTg5
NDk0Mzg1N2ZhZjg1NTc1ZDU0ODg0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgRm9yY2VkT25NYWluVGhyZWFkID0gMSA8PCAwLAogICAgICAgICBIYXNT
bG93UmVwYWludE9iamVjdHMgPSAxIDw8IDEsCiAgICAgICAgIEhhc1ZpZXdwb3J0Q29uc3RyYWlu
ZWRPYmplY3RzV2l0aG91dFN1cHBvcnRpbmdGaXhlZExheWVycyA9IDEgPDwgMiwKLSAgICAgICAg
SGFzTm9uTGF5ZXJGaXhlZE9iamVjdHMgPSAxIDw8IDMsCisgICAgICAgIEhhc05vbkxheWVyVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgPSAxIDw8IDMsCiAgICAgICAgIElzSW1hZ2VEb2N1bWVu
dCA9IDEgPDwgNAogICAgIH07CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNvdW50Rm9yRnJhbWVWaWV3KEZy
YW1lVmlldyopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXll
clBvc2l0aW9uT25NYWluVGhyZWFkKE1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zKSB7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9iamVjdHMoRnJhbWVW
aWV3KikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc1Zpc2libGVTbG93UmVwYWludFZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzKEZyYW1lVmlldyopIGNvbnN0OwogICAgIHZvaWQgdXBkYXRl
U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCgpOwogICAgIAogICAg
IHZvaWQgdXBkYXRlTWFpbkZyYW1lU2Nyb2xsUG9zaXRpb25UaW1lckZpcmVkKFRpbWVyPFNjcm9s
bGluZ0Nvb3JkaW5hdG9yPiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAppbmRleCAzYzM4NDllMjNl
NmQwMjM0MDIxY2UwMGFjZGQ2NDUyYzJjNmI5NWM3Li43ZDQ0MzkxM2MwZGU5NTI1MWMwMWQ1OTNk
NDA4NDdkZjQzYjMwOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaApAQCAtODksNyArODksNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWNvbXB1dGVXaGVlbEV2ZW50SGFuZGxlckNv
dW50Rm9yRnJhbWVWaWV3KEZyYW1lVmlldyopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKE1haW5UaHJlYWRTY3JvbGxpbmdS
ZWFzb25zKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRGaXhlZE9i
amVjdHMoRnJhbWVWaWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVmlzaWJsZVNsb3dSZXBhaW50Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoRnJhbWVW
aWV3KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgZW5zdXJlUm9vdFN0YXRl
Tm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIHN0
YXRlTm9kZUZvcklEKFNjcm9sbGluZ05vZGVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVNYWMubW0KaW5kZXggY2FjMzhkNjYyMGZmMzhjNzdkMzYzNGFkYjllZGVkOTlmYTA0Y2I3ZS4u
YWY2OWYzMDJhOWRiNmRlNTU4MTdiOWZhMjUyNTk0ZmFiNDc0NTNmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZU1hYy5tbQpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyB2b2lkIGxv
Z1RocmVhZGVkU2Nyb2xsaW5nTW9kZSh1bnNpZ25lZCBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29u
cykKICAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoInNsb3ctcmVwYWludCBv
YmplY3RzLCIpOwogICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3Vw
cG9ydGluZ0ZpeGVkTGF5ZXJzKQogICAgICAgICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVu
ZCgidmlld3BvcnQtY29uc3RyYWluZWQgb2JqZWN0cywiKTsKLSAgICAgICAgaWYgKG1haW5UaHJl
YWRTY3JvbGxpbmdSZWFzb25zICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4
ZWRPYmplY3RzKQorICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgJiBTY3Jv
bGxpbmdDb29yZGluYXRvcjo6SGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cykK
ICAgICAgICAgICAgIHJlYXNvbnNEZXNjcmlwdGlvbi5hcHBlbmQoIm5vbi1sYXllciB2aWV3cG9y
dC1jb25zdHJhaW5lZCBvYmplY3RzLCIpOwogICAgICAgICBpZiAobWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQogICAgICAg
ICAgICAgcmVhc29uc0Rlc2NyaXB0aW9uLmFwcGVuZCgiaW1hZ2UgZG9jdW1lbnQsIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBkMmZmOGQzMjI4NzcyMWZh
YjAwZDY1ZDJiMDk3YmJiZWE1MGRiYmMzLi5mNWVlMmM5OGVhNDllMTk0NTI0MzFiMDc2NmY3MGFm
Yzk5N2IwMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTE2Niw2ICsxNjYsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVuZGVyZXIpCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
ICwgbV9oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoZmFsc2UpCiAgICAgLCBtX2luZGlyZWN0Q29t
cG9zaXRpbmdSZWFzb24oTm9JbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKQorICAgICwgbV92aWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbihOb05vdENvbXBvc2l0ZWRSZWFzb24p
CiAjZW5kaWYKICAgICAsIG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxiYXJzKGZhbHNlKQog
ICAgICwgbV91cGRhdGluZ01hcnF1ZWVQb3NpdGlvbihmYWxzZSkKQEAgLTM0MjUsOCArMzQyNiw4
IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYKICAgICAgICAgICAgIC8vIElmIHRoaXMgUmVuZGVy
TGF5ZXIgc2hvdWxkIHBhaW50IGludG8gaXRzIGJhY2tpbmcsIHRoYXQgd2lsbCBiZSBkb25lIHZp
YSBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKCkuCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGNvbXBvc2l0b3IoKS0+Zml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbih0aGlzKSA9PSBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OkxheWVyQm91bmRzT3V0T2ZWaWV3KSB7Ci0gICAgICAgIC8vIERvbid0IHBhaW50IG91dC1vZi12
aWV3IGZpeGVkIHBvc2l0aW9uIGxheWVycyAod2hlbiBkb2luZyBwcmVwYWludGluZykgYmVjYXVz
ZSB0aGV5IHdpbGwgbmV2ZXIgYmUgdmlzaWJsZQorICAgIH0gZWxzZSBpZiAodmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSA9PSBOb3RDb21wb3NpdGVkRm9yQm91bmRzT3V0
T2ZWaWV3KSB7CisgICAgICAgIC8vIERvbid0IHBhaW50IG91dC1vZi12aWV3IHZpZXdwb3J0IGNv
bnN0cmFpbmVkIGxheWVycyAod2hlbiBkb2luZyBwcmVwYWludGluZykgYmVjYXVzZSB0aGV5IHdp
bGwgbmV2ZXIgYmUgdmlzaWJsZQogICAgICAgICAvLyB1bmxlc3MgdGhlaXIgcG9zaXRpb24gb3Ig
dmlld3BvcnQgc2l6ZSBpcyBjaGFuZ2VkLgogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBiYjliZjEyNjAwNmIyZGYxNmU1OWFi
Y2Y1NjZhNDJhYmRkOTE2YTFhLi5hZGIzMTk3YmIyMGM2NmQ5NjJlMGY4NjI3ZmJlYWEzZWI0ZDUz
OTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNzM4LDYgKzcz
OCwxNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorICAgIGVudW0gVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24geworICAgICAgICBOb05vdENvbXBvc2l0ZWRSZWFzb24sCisgICAgICAgIE5vdENvbXBvc2l0
ZWRGb3JCb3VuZHNPdXRPZlZpZXcsCisgICAgICAgIE5vdENvbXBvc2l0ZWRGb3JOb25WaWV3Q29u
dGFpbmVyLAorICAgIH07CisKKyAgICB2b2lkIHNldFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21w
b3NpdGVkUmVhc29uKFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uIHJlYXNv
bikgeyBtX3ZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uID0gcmVhc29uOyB9
CisgICAgVmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24gdmlld3BvcnRDb25z
dHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbj4obV92aWV3cG9ydENvbnN0cmFp
bmVkTm90Q29tcG9zaXRlZFJlYXNvbik7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQg
dXBkYXRlWk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOwpAQCAt
MTA0Nyw2ICsxMDU4LDcgQEAgcHJvdGVjdGVkOgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKICAgICBib29sIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50IDogMTsgLy8gSW4gdGhl
IHotb3JkZXIgdHJlZS4KICAgICB1bnNpZ25lZCBtX2luZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24g
OiAzOworICAgIHVuc2lnbmVkIG1fdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24gOiAyOwogI2VuZGlmCiAKICAgICBib29sIG1fY29udGFpbnNEaXJ0eU92ZXJsYXlTY3JvbGxi
YXJzIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAKaW5kZXggMjBhZTVkMjhjY2M3YzUwMzEyYzg2OTUyNTYwMDAwMGI4YzczMDg5
ZS4uYjAzOTcyNzA2MDY2MTY1NDcxNjhiYWM3NjQ3MmViZjg3MzU1OTVkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTQ1
OSw3ICs0NTksNiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogICAgICAgICBDb21wb3NpdGlu
Z1N0YXRlIGNvbXBTdGF0ZSh1cGRhdGVSb290LCBtX2NvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFw
KTsKICAgICAgICAgYm9vbCBsYXllcnNDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGJvb2wgc2F3
M0RUcmFuc2Zvcm0gPSBmYWxzZTsKLSAgICAgICAgbV9maXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21w
b3NpdGVkUmVhc29uTWFwLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX2NvbXBvc2l0aW5nQ29uc3Vs
dHNPdmVybGFwKSB7CiAgICAgICAgICAgICBPdmVybGFwTWFwIG92ZXJsYXBUZXN0UmVxdWVzdE1h
cDsKICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygwLCB1cGRhdGVS
b290LCAmb3ZlcmxhcFRlc3RSZXF1ZXN0TWFwLCBjb21wU3RhdGUsIGxheWVyc0NoYW5nZWQsIHNh
dzNEVHJhbnNmb3JtKTsKQEAgLTU1NSw4ICs1NTQsOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6bG9nTGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHRoKQog
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxh
eWVyLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnQgc2hvdWxkUmVwYWludCkKIHsKICAgICBib29s
IGxheWVyQ2hhbmdlZCA9IGZhbHNlOworICAgIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFp
bmVkTm90Q29tcG9zaXRlZFJlYXNvbiB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJl
YXNvbiA9IFJlbmRlckxheWVyOjpOb05vdENvbXBvc2l0ZWRSZWFzb247CiAKLSAgICBpZiAobmVl
ZHNUb0JlQ29tcG9zaXRlZChsYXllcikpIHsKKyAgICBpZiAobmVlZHNUb0JlQ29tcG9zaXRlZChs
YXllciwgJnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSkgewogICAgICAg
ICBlbmFibGVDb21wb3NpdGluZ01vZGUoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghbGF5ZXIt
PmJhY2tpbmcoKSkgewpAQCAtNjI4LDEwICs2MjgsMTcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIqIGxheWVyLCBDb21wb3NpdGluZ0NoYW5n
ZVIKICAgICBpZiAobGF5ZXJDaGFuZ2VkKQogICAgICAgICBsYXllci0+Y2xlYXJDbGlwUmVjdHNJ
bmNsdWRpbmdEZXNjZW5kYW50cyhQYWludGluZ0NsaXBSZWN0cyk7CiAKLSAgICAvLyBJZiBhIGZp
eGVkIHBvc2l0aW9uIGxheWVyIGdhaW5lZC9sb3N0IGEgYmFja2luZywgdGhlIHNjcm9sbGluZyBj
b29yZGluYXRvciBuZWVkcyB0byByZWNhbGN1bGF0ZSB3aGV0aGVyIGl0IGNhbiBkbyBmYXN0IHNj
cm9sbGluZy4KLSAgICBpZiAobGF5ZXJDaGFuZ2VkICYmIGxheWVyLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5wb3NpdGlvbigpID09IEZpeGVkUG9zaXRpb24pIHsKLSAgICAgICAgaWYgKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCi0gICAgICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+ZnJhbWVWaWV3Rml4
ZWRPYmplY3RzRGlkQ2hhbmdlKG1fcmVuZGVyVmlldy0+ZnJhbWVWaWV3KCkpOworICAgIC8vIElm
IGEgZml4ZWQgcG9zaXRpb24gbGF5ZXIgZ2FpbmVkL2xvc3QgYSBiYWNraW5nIG9yIHRoZSByZWFz
b24gbm90IGNvbXBvc2l0aW5nIGl0IGNoYW5nZWQsCisgICAgLy8gdGhlIHNjcm9sbGluZyBjb29y
ZGluYXRvciBuZWVkcyB0byByZWNhbGN1bGF0ZSB3aGV0aGVyIGl0IGNhbiBkbyBmYXN0IHNjcm9s
bGluZy4KKyAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0g
Rml4ZWRQb3NpdGlvbikgeworICAgICAgICBpZiAobGF5ZXItPnZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKCkgIT0gdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRS
ZWFzb24pIHsKKyAgICAgICAgICAgIGxheWVyLT5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29t
cG9zaXRlZFJlYXNvbih2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbik7Cisg
ICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChs
YXllckNoYW5nZWQpIHsKKyAgICAgICAgICAgIGlmIChTY3JvbGxpbmdDb29yZGluYXRvciogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKQorICAgICAg
ICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5mcmFtZVZpZXdGaXhlZE9iamVjdHNEaWRD
aGFuZ2UobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKSk7CisgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgaWYgKGxheWVyLT5iYWNraW5nKCkpCkBAIC04NTIsOCArODU5LDcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJM
YXllciogYW5jZXN0b3IKICAgICBDb21wb3NpdGluZ1N0YXRlIGNoaWxkU3RhdGUoY29tcG9zaXRp
bmdTdGF0ZSk7CiAgICAgY2hpbGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nID0gZmFsc2U7
CiAKLSAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZpeGVkUG9zaXRp
b25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24gPSBOb1JlYXNvbjsKLSAgICBib29sIHdpbGxCZUNv
bXBvc2l0ZWQgPSBuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyLCAmZml4ZWRQb3NpdGlvbkxheWVy
Tm90Q29tcG9zaXRlZFJlYXNvbik7CisgICAgYm9vbCB3aWxsQmVDb21wb3NpdGVkID0gbmVlZHNU
b0JlQ29tcG9zaXRlZChsYXllcik7CiAgICAgaWYgKHdpbGxCZUNvbXBvc2l0ZWQpIHsKICAgICAg
ICAgLy8gVGVsbCB0aGUgcGFyZW50IGl0IGhhcyBjb21wb3NpdGluZyBkZXNjZW5kYW50cy4KICAg
ICAgICAgY29tcG9zaXRpbmdTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKQEAg
LTg2Miw4ICs4NjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBv
c2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogCiAgICAgICAgIGlmIChv
dmVybGFwTWFwKQogICAgICAgICAgICAgb3ZlcmxhcE1hcC0+cHVzaENvbXBvc2l0aW5nQ29udGFp
bmVyKCk7Ci0gICAgfSBlbHNlIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVh
c29uICE9IE5vUmVhc29uKQotICAgICAgICBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0
ZWRSZWFzb25NYXAuc2V0KGxheWVyLCBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVh
c29uKTsKKyAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0TXV0YXRp
b25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwpAQCAtMTU3MSwxOCArMTU3NiwxOCBA
QCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdU
b0VuY2xvc2luZ0ZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbiogZml4ZWRQb3Np
dGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpuZWVkc1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVu
ZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKiB2aWV3cG9y
dENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsKICAgICBpZiAoIWNhbkJl
Q29tcG9zaXRlZChsYXllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBy
ZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb24pIHx8IGxheWVyLT5tdXN0Q29tcG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkg
fHwgKGluQ29tcG9zaXRpbmdNb2RlKCkgJiYgbGF5ZXItPmlzUm9vdExheWVyKCkpOworICAgIHJl
dHVybiByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIobGF5ZXIsIHZpZXdwb3J0Q29uc3RyYWluZWRO
b3RDb21wb3NpdGVkUmVhc29uKSB8fCBsYXllci0+bXVzdENvbXBvc2l0ZUZvckluZGlyZWN0UmVh
c29ucygpIHx8IChpbkNvbXBvc2l0aW5nTW9kZSgpICYmIGxheWVyLT5pc1Jvb3RMYXllcigpKTsK
IH0KIAogLy8gTm90ZTogdGhpcyBzcGVjaWZpZXMgd2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21w
b3NpdGluZyBsYXllciBmb3IgaW50cmluc2ljIHJlYXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29t
cG9zaXRlZCgpIHRvIGRldGVybWluZSBpZiBhIFJMIGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRp
bmcgbGF5ZXIuCiAvLyBzdGF0aWMKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBGaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKiBmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVk
UmVhc29uKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyOjpWaWV3cG9y
dENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5lZE5vdENv
bXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGxh
eWVyLT5yZW5kZXJlcigpOwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBhIHJlZmxl
Y3Rpb24gc2hvdWxkIG1hdGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXllci4KQEAgLTE2MDAs
NyArMTYwNSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBGCiAgICAgICAgIHx8IGNsaXBzQ29t
cG9zaXRpbmdEZXNjZW5kYW50cyhsYXllcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvckFuaW1hdGlvbihyZW5kZXJlcikKICAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
ckZpbHRlcnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3Np
dGlvbihyZW5kZXJlciwgbGF5ZXIsIGZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFz
b24pCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwg
bGF5ZXIsIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKQogICAgICAgICB8
fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIpCiAgICAgICAg
IHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhyZW5kZXJlcik7CiB9CkBAIC0xNjg4
LDcgKzE2OTMsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbkZv
ckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcgogICAgICAgICByZXR1cm4gImZp
bHRlcnMiOwogCiAgICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJl
ciwgbGF5ZXIpKQotICAgICAgICByZXR1cm4gInBvc2l0aW9uOiBmaXhlZCI7CisgICAgICAgIHJl
dHVybiByZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uID8gInBv
c2l0aW9uOiBmaXhlZCIgOiAicG9zaXRpb246IHN0aWNreSI7CiAKICAgICBpZiAocmVxdWlyZXND
b21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGxheWVyKSkKICAgICAgICAgcmV0dXJuICIt
d2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2giOwpAQCAtMTk4NCw3ICsxOTg5LDcgQEAg
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGlu
ZyhSZW5kZXJPYmplY3QqIHJlbmRlcmUKICNlbmRpZgogfQogCi1ib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29t
cG9zaXRlZFJlYXNvbiogZml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbikgY29u
c3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9z
aXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBS
ZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdw
b3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSBjb25zdAogewogICAgIC8vIHBvc2l0
aW9uOmZpeGVkIGVsZW1lbnRzIHRoYXQgY3JlYXRlIHRoZWlyIG93biBzdGFja2luZyBjb250ZXh0
IChlLmcuIGhhdmUgYW4gZXhwbGljaXQgei1pbmRleCwKICAgICAvLyBvcGFjaXR5LCB0cmFuc2Zv
cm0pIGNhbiBnZXQgdGhlaXIgb3duIGNvbXBvc2l0ZWQgbGF5ZXIuIEEgc3RhY2tpbmcgY29udGV4
dCBpcyByZXF1aXJlZCBvdGhlcndpc2UKQEAgLTIwMTYsMTEgKzIwMjEsMTEgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJP
YmplY3QqIHJlbmRlcmUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIERv
bid0IHByb21vdGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudHMgdGhhdCBhcmUgZGVzY2VuZGFudHMg
b2YgdHJhbnNmb3JtZWQgZWxlbWVudHMuCi0gICAgLy8gVGhleSB3aWxsIHN0YXkgZml4ZWQgd3J0
IHRoZSB0cmFuc2Zvcm1lZCBlbGVtZW50IHJhdGhlciB0aGFuIHRoZSBlbmNsb3NpbmcgZnJhbWUu
CisgICAgLy8gRG9uJ3QgcHJvbW90ZSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50cyB0aGF0IGFyZSBk
ZXNjZW5kYW50cyBvZiBhIG5vbi12aWV3IGNvbnRhaW5lciwgZS5nLiB0cmFuc2Zvcm1lZCBlbGVt
ZW50cy4KKyAgICAvLyBUaGV5IHdpbGwgc3RheSBmaXhlZCB3cnQgdGhlIGNvbnRhaW5lciByYXRo
ZXIgdGhhbiB0aGUgZW5jbG9zaW5nIGZyYW1lLgogICAgIGlmIChjb250YWluZXIgIT0gbV9yZW5k
ZXJWaWV3KSB7Ci0gICAgICAgIGlmIChmaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVh
c29uKQotICAgICAgICAgICAgKmZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24g
PSBEZXNjZW5kYW50T2ZUcmFuc2Zvcm1lZEVsZW1lbnQ7CisgICAgICAgIGlmICh2aWV3cG9ydENv
bnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikKKyAgICAgICAgICAgICp2aWV3cG9ydENvbnN0
cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiA9IFJlbmRlckxheWVyOjpOb3RDb21wb3NpdGVkRm9y
Tm9uVmlld0NvbnRhaW5lcjsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjAz
MSw4ICsyMDM2LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKICAgICAgICAgICAgIHwgUmVu
ZGVyTGF5ZXI6OkV4Y2x1ZGVIaWRkZW5EZXNjZW5kYW50cyB8IFJlbmRlckxheWVyOjpEb250Q29u
c3RyYWluRm9yTWFzayB8IFJlbmRlckxheWVyOjpJbmNsdWRlQ29tcG9zaXRlZERlc2NlbmRhbnRz
KTsKICAgICAgICAgbGF5ZXJCb3VuZHMuc2NhbGUoZnJhbWVWaWV3LT5mcmFtZSgpLT5mcmFtZVNj
YWxlRmFjdG9yKCkpOwogICAgICAgICBpZiAoIXZpZXdCb3VuZHMuaW50ZXJzZWN0cyhlbmNsb3Np
bmdJbnRSZWN0KGxheWVyQm91bmRzKSkpIHsKLSAgICAgICAgICAgIGlmIChmaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uKQotICAgICAgICAgICAgICAgICpmaXhlZFBvc2l0aW9u
TGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uID0gTGF5ZXJCb3VuZHNPdXRPZlZpZXc7CisgICAgICAg
ICAgICBpZiAodmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pCisgICAgICAg
ICAgICAgICAgKnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uID0gUmVuZGVy
TGF5ZXI6Ok5vdENvbXBvc2l0ZWRGb3JCb3VuZHNPdXRPZlZpZXc7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0yODI2LDcgKzI4MzEsNiBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbwogICAgIGluZm8uYWRkTWVtYmVyKG1fY29udGVudFNoYWRvd0xheWVy
KTsKICNlbmRpZgogICAgIGluZm8uYWRkTWVtYmVyKG1fbGF5ZXJVcGRhdGVyKTsKLSAgICBpbmZv
LmFkZE1lbWJlcihtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXApOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggY2YwNTc5NWEwYjkyODA3ZjUwMWIxNjE1
ZTIwMGMxNGFmYmM2MDkyNC4uZjk0YmIxYTZkZGIyMmQxY2YyYjE3ODQ5ZGM3M2JjMjhkYWE2NWVk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuaApAQCAtMjI5LDE0ICsyMjksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgdm9pZCBzZXRTaG91bGRSZWV2YWx1
YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCgpIHsgbV9yZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRl
ckxheW91dCA9IHRydWU7IH0KIAotICAgIGVudW0gRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9z
aXRlZFJlYXNvbiB7Ci0gICAgICAgIE5vUmVhc29uLAotICAgICAgICBMYXllckJvdW5kc091dE9m
VmlldywKLSAgICAgICAgRGVzY2VuZGFudE9mVHJhbnNmb3JtZWRFbGVtZW50LAotICAgIH07Ci0K
LSAgICBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21wb3NpdGVkUmVhc29uIGZpeGVkUG9zaXRpb25M
YXllck5vdENvbXBvc2l0ZWRSZWFzb24oY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdCB7
IHJldHVybiBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXAuZ2V0KGxh
eWVyKTsgfQotCiBwcml2YXRlOgogICAgIGNsYXNzIE92ZXJsYXBNYXA7CiAKQEAgLTI1MSw5ICsy
NDMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVycyhHcmFwaGljc0xh
eWVyVXBkYXRlciopIE9WRVJSSURFOwogICAgIAogICAgIC8vIFdoZXRoZXIgdGhlIGdpdmVuIFJM
IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgYm9vbCBuZWVkc1RvQmVDb21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyKiwgRml4ZWRQb3NpdGlvbkxheWVyTm90Q29tcG9zaXRlZFJlYXNv
biogPSAwKSBjb25zdDsKKyAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVy
TGF5ZXIqLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24qID0gMCkgY29uc3Q7CiAgICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgaGFzIGFuIGludHJpbnNp
YyBuZWVkIGZvciBjb21wb3NpdGluZyBsYXllci4KLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRp
bmdMYXllcihjb25zdCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0
ZWRSZWFzb24qID0gMCkgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIo
Y29uc3QgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENv
bXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7CiAgICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgY291
bGQgZXZlciBiZSBjb21wb3NpdGVkLgogICAgIGJvb2wgY2FuQmVDb21wb3NpdGVkKGNvbnN0IFJl
bmRlckxheWVyKikgY29uc3Q7CiAKQEAgLTMxOCw3ICszMTAsNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAg
ICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZy
YW1lKCkgY29uc3Q7Ci0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyTGF5ZXIqLCBGaXhlZFBvc2l0aW9uTGF5ZXJOb3RDb21w
b3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zv
clBvc2l0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXI6
OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OwogICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRl
ckxheWVyKikgY29uc3Q7CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RS
ZWFzb24oUmVuZGVyT2JqZWN0KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wg
aGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbiYpIGNvbnN0OwogCkBAIC0zOTksOSArMzkxLDYgQEAgcHJpdmF0ZToKICAgICBk
b3VibGUgbV9vYmxpZ2F0b3J5QmFja2luZ1N0b3JlQnl0ZXM7CiAgICAgZG91YmxlIG1fc2Vjb25k
YXJ5QmFja2luZ1N0b3JlQnl0ZXM7CiAjZW5kaWYKLQotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIEZpeGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb24+IEZp
eGVkUG9zaXRpb25MYXllck5vdENvbXBvc2l0ZWRSZWFzb25NYXA7Ci0gICAgRml4ZWRQb3NpdGlv
bkxheWVyTm90Q29tcG9zaXRlZFJlYXNvbk1hcCBtX2ZpeGVkUG9zaXRpb25MYXllck5vdENvbXBv
c2l0ZWRSZWFzb25NYXA7CiB9OwogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZDk3ZGM0MzNmNTZlMzYzYjViMDVjOTAz
OTllOGVhN2QxMzAxMDQzLi45M2QwMDVkZDA4NjlhYjZjZTA0YjAzZTAwYTFjNGFlY2Q5MDFlYzM3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDEtMDggIFhpYW56aHUgV2FuZyAgPHdhbmd4
aWFuemh1QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3Igc2hv
dWxkIGxldCBTY3JvbGxpbmdDb29yZGluYXRvciB1cGRhdGUgbWFpbiB0aHJlYWQgc2Nyb2xsaW5n
IHJlYXNvbnMgYWZ0ZXIgY2hhbmdlIG9mIGxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1NjUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgIFRlc3RzIHRvIGVuc3VyZSBtYWluVGhyZWFkU2Nyb2xsaW5n
UmVhc29ucyBhcmUgY29ycmVjdGx5IHVwZGF0ZWQgYWZ0ZXIgYSBmaXhlZCBlbGVtZW50IGlzIGR5
bmFtaWNhbGx5IGluc2VydGVkIGludG8gdGhlIERPTSB0cmVlLgorCisgICAgICAgICogY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4
ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9sYXllci1jcmVhdGlv
bi9maXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLmh0bWw6IEFkZGVkLgorCiAyMDEz
LTAxLTExICBGbG9yaW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W1NWR10gU3VwcHJlc3MgcmVzb3VyY2UgcmVidWlsZGluZyBmb3IgdW5hdHRhY2hlZCBhbmQgc2hh
ZG93IGVsZW1lbnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9maXhlZC1wb3NpdGlvbi1pbi12aWV3LWR5bmFtaWMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmll
dy1keW5hbWljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OWNmYzVhOThkYjc0ZmJlMzJhYzli
Njc4YTYxMzRhZjk3MzZkZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDIgQEAKK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWlj
Lmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9maXhlZC1wb3Np
dGlvbi1pbi12aWV3LWR5bmFtaWMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjY1ZmVjMWZjMTdmYjM0ZmJm
OTM1MDc0YzBkMmY1ZjIwNTJmNjE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24taW4tdmlldy1keW5hbWljLmh0
bWwKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGhlYWQ+Cisg
IDxzdHlsZT4KKyAgICAuZml4ZWQgeworICAgICAgcG9zaXRpb246IGZpeGVkOworICAgICAgd2lk
dGg6IDEwcHg7CisgICAgICBoZWlnaHQ6IDEwcHg7CisgICAgICB0b3A6IDEwMHB4OworICAgIH0K
KyAgPC9zdHlsZT4KKworICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgIGludGVybmFs
cy5zZXR0aW5ncy5zZXRGaXhlZFBvc2l0aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dCh0cnVlKTsK
KworICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICB2
YXIgZml4ZWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChmaXhlZCk7CisgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0
SGVpZ2h0OworICAgICAgICBmaXhlZC5jbGFzc05hbWUgPSAiZml4ZWQiOworICAgICAgICB2YXIg
bWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgPSBpbnRlcm5hbHMubWFpblRocmVhZFNjcm9sbGlu
Z1JlYXNvbnMoZG9jdW1lbnQpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJUZXh0ID0gIW1haW5UaHJlYWRTY3JvbGxpbmdSZWFzb25zID8gIlBBU1MiIDog
IkZBSUw6ICIgKyBtYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29uczsKKyAgICAgIH0sIGZhbHNlKTsK
KyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKyAgPHByZSBpZD0icmVzdWx0
Ij48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1p
Yy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9m
aXhlZC1wb3NpdGlvbi1vdXQtb2Ytdmlldy1keW5hbWljLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42OWNmYzVhOThkYjc0ZmJlMzJhYzliNjc4YTYxMzRhZjk3MzZkZDU5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vZml4ZWQtcG9zaXRp
b24tb3V0LW9mLXZpZXctZHluYW1pYy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBACitQQVNT
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL2Zp
eGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL2ZpeGVkLXBvc2l0aW9uLW91dC1vZi12aWV3LWR5bmFtaWMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MDA2YTczZWM3YmMwMDIwZjU5ZTdmODE4YWI4MmFlM2Y0NmVhNWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRp
b24vZml4ZWQtcG9zaXRpb24tb3V0LW9mLXZpZXctZHluYW1pYy5odG1sCkBAIC0wLDAgKzEsMzcg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGU+CisgICAgLmZp
eGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIHdpZHRoOiAxMHB4OworICAgICAg
aGVpZ2h0OiAxMHB4OworICAgICAgdG9wOiAtMTAwcHg7CisgICAgfQorICA8L3N0eWxlPgorCisg
IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZvckZp
eGVkUG9zaXRpb25FbmFibGVkKHRydWUpOworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEZp
eGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHRydWUpOworCisgICAgICBhZGRFdmVu
dExpc3RlbmVyKCJsb2FkIiwgZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBmaXhlZCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGZpeGVkKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQ7CisgICAgICAg
IGZpeGVkLmNsYXNzTmFtZSA9ICJmaXhlZCI7CisgICAgICAgIHZhciBtYWluVGhyZWFkU2Nyb2xs
aW5nUmVhc29ucyA9IGludGVybmFscy5tYWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyhkb2N1bWVu
dCk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQg
PSAhbWFpblRocmVhZFNjcm9sbGluZ1JlYXNvbnMgPyAiUEFTUyIgOiAiRkFJTDogIiArIG1haW5U
aHJlYWRTY3JvbGxpbmdSZWFzb25zOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
KyAgICAgIH0sIGZhbHNlKTsKKyAgICB9CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4K
KyAgPHByZSBpZD0icmVzdWx0Ij48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>