<?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>129569</bug_id>
          
          <creation_ts>2014-03-01 19:15:06 -0800</creation_ts>
          <short_desc>Make Length functions take viewport size instead of RenderView*</short_desc>
          <delta_ts>2014-05-21 15:12:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mario</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986033</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 19:15:06 -0800</bug_when>
    <thetext>int minimumIntValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
int intValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
LayoutUnit minimumValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
LayoutUnit valueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0, bool roundPercentages = false);
float floatValueForLength(const Length&amp;, LayoutUnit maximumValue, RenderView* = 0);
float floatValueForLength(const Length&amp;, float maximumValue, RenderView* = 0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986035</commentid>
    <comment_count>1</comment_count>
      <attachid>225581</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 19:32:22 -0800</bug_when>
    <thetext>Created attachment 225581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986045</commentid>
    <comment_count>2</comment_count>
      <attachid>225585</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:12:39 -0800</bug_when>
    <thetext>Created attachment 225585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986046</commentid>
    <comment_count>3</comment_count>
      <attachid>225585</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:12:58 -0800</bug_when>
    <thetext>Comment on attachment 225585
Patch

EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986052</commentid>
    <comment_count>4</comment_count>
      <attachid>225588</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:57:46 -0800</bug_when>
    <thetext>Created attachment 225588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986053</commentid>
    <comment_count>5</comment_count>
      <attachid>225588</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-03-01 20:57:57 -0800</bug_when>
    <thetext>Comment on attachment 225588
Patch

EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>988653</commentid>
    <comment_count>6</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-03-08 16:26:47 -0800</bug_when>
    <thetext>viewportSize() call can still be a bit expensive on some platforms. WebKit is not ready for this change yet.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225581</attachid>
            <date>2014-03-01 19:32:22 -0800</date>
            <delta_ts>2014-03-01 20:12:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129569-20140301193225.patch</filename>
            <type>text/plain</type>
            <size>72501</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE4ZDc1OWFlYjIzMDgw
NmVlMTNkNjZhZDg0NDZiNTgwNGMyMDQwMC4uMmMwYTRmNzUwMTcxY2UwOWYxMTU1NGVlODFmMmJl
ZWU5Y2I3MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMZW5ndGggZnVuY3Rp
b25zIHRha2Ugdmlld3BvcnQgc2l6ZSBpbnN0ZWFkIG9mIFJlbmRlclZpZXcqCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRQb3NpdGlvbk9mZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpsaW5lSGVpZ2h0RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVk
U3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6aW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZhbHVlRm9y
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmdldFJl
Z2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bm9k
ZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Qm9yZGVySW1hZ2VTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE5pbmVQaWVjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNldHVwQ2xpcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lSGVpZ2h0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojph
c2NlbnRBbmREZXNjZW50Rm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUluZm88UmVuZGVyVHlwZT46OmNvbXB1
dGVkU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNvbXB1dGVkTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQpOgorCiAyMDE0LTAyLTI4ICBNYXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByb3VuZGVkSW50UG9pbnQocmVuZGVy
ZXJNYXBwZWRSZXN1bHQpID09IHJvdW5kZWRJbnRQb2ludChyZXN1bHQpIGluIFdlYkNvcmU6OlJl
bmRlckdlb21ldHJ5TWFwOjptYXBUb0NvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggNmJh
ZDIyNzg4ODk5ZTIyNmI5MmQ4YTFhOGMwYmFhMzc0MTQyYzM1Yy4uZDhhNmZjYTA2Nzg5MTQwMThj
YjU5MzU4ZmJkYzM3NjBiOGYwMTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMTAxLDcgKzIx
MDEsNyBAQCBfX1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDExYm9yZGVyUmlnaHRF
dgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gyMnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhFdgogX19a
Tks3V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxMXBhZGRpbmdMZWZ0RXYKIF9fWk5LN1dl
YkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MThjb21wdXRlZENTU1BhZGRpbmdFTlNfNkxlbmd0
aEUKLV9fWk43V2ViQ29yZTIxbWluaW11bVZhbHVlRm9yTGVuZ3RoRVJLTlNfNkxlbmd0aEVOU18x
MExheW91dFVuaXRFUE5TXzEwUmVuZGVyVmlld0ViCitfX1pON1dlYkNvcmUyMW1pbmltdW1WYWx1
ZUZvckxlbmd0aEVSS05TXzZMZW5ndGhFTlNfMTBMYXlvdXRVbml0RVJLTlNfN0ludFNpemVFCiBf
X1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDEycGFkZGluZ1JpZ2h0RXYKIF9fWk43
V2ViQ29yZTEwUmVuZGVyVmlldzE4dXBkYXRlTG9naWNhbFdpZHRoRXYKIF9fWk43V2ViQ29yZTEw
UmVuZGVyVmlldzE1Y2FsY0NvbHVtbldpZHRoRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggODY3ZjkyMTBhNjhmZDlkOGU1
ZjU4ZTI2YzMyZTUxMDY4OTMwYjZkMC4uYjk4ZThiMTZkOWVjYWQ5Y2JkYzg3OWYxYjUyNTRkM2Vi
NTY3ZDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1
ZUxpc3Q+IGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVyKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RAogICAgIHJldHVybiBwb3NpdGlvbkxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsK
ICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY4Myw3ICs2ODMsNyBAQCBz
dGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShSZW5kZXJT
dHlsZSogc3R5bGUsIENTU1Byb3BlcgogICAgICAgICBpZiAobC50eXBlKCkgPT0gV2ViQ29yZTo6
Rml4ZWQpCiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShsLnZhbHVl
KCksIHN0eWxlKTsKICAgICAgICAgZWxzZSBpZiAobC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgo
bCwgMCwgcmVuZGVyVmlldyksIHN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGwsIDAsIHZpZXdwb3J0U2l6ZSksIHN0eWxlKTsK
ICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGwpOwogICAgIH0KIApA
QCAtNzA1LDMxICs3MDUsMzEgQEAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKFIKICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlQ29sb3JWYWx1ZShjb2xvci5yZ2IoKSk7CiB9CiAKLXN0YXRp
YyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0
IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBhdXRvIGxpc3Qg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKHJhZGl1cy53
aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50KQogICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwogICAgIGVsc2UKLSAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lk
dGgoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5k
KHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgocmFkaXVzLndpZHRoKCksIDAs
IHZpZXdwb3J0U2l6ZSksIHN0eWxlKSk7CiAgICAgaWYgKHJhZGl1cy5oZWlnaHQoKS50eXBlKCkg
PT0gUGVyY2VudCkKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUocmFkaXVzLmhlaWdodCgpLnBlcmNlbnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQotICAgICAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy5oZWlnaHQoKSwgMCwgcmVu
ZGVyVmlldyksIHN0eWxlKSk7CisgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgocmFkaXVzLmhlaWdodCgpLCAwLCB2aWV3cG9ydFNp
emUpLCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0OwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NW
YWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVz
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0
aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVu
Z3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUm
IHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAocmFkaXVzLndpZHRoKCkgPT0gcmFkaXVzLmhlaWdo
dCgpKSB7CiAgICAgICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2VudCkKICAg
ICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyYWRpdXMud2lkdGgo
KS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAg
IHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0
aCgpLCAwLCByZW5kZXJWaWV3KSwgc3R5bGUpOworICAgICAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgdmlld3BvcnRTaXpl
KSwgc3R5bGUpOwogICAgIH0KLSAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KHJhZGl1cywgc3R5bGUsIHJlbmRlclZpZXcpOworICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXND
b3JuZXJWYWx1ZXMocmFkaXVzLCBzdHlsZSwgdmlld3BvcnRTaXplKTsKIH0KIAotc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIGF1dG8g
bGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsKICAgICBib29sIHNo
b3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLndp
ZHRoKCkgIT0gc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS53aWR0aCgpOwpAQCAtNzQw
LDEwICs3NDAsMTAgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRp
dXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3QKICAgICBib29sIHNob3dWZXJ0
aWNhbEJvdHRvbVJpZ2h0ID0gc2hvd1ZlcnRpY2FsQm90dG9tTGVmdCB8fCAoc3R5bGUtPmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUtPmJvcmRlclRvcExlZnRSYWRp
dXMoKS5oZWlnaHQoKSk7CiAgICAgYm9vbCBzaG93VmVydGljYWxUb3BSaWdodCA9IHNob3dWZXJ0
aWNhbEJvdHRvbVJpZ2h0IHx8IChzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQo
KSAhPSBzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLmhlaWdodCgpKTsKIAotICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZXMoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUsIHJlbmRlclZpZXcpOwotICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcFJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCBzdHlsZSwgcmVuZGVyVmll
dyk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90dG9tUmlnaHRSYWRpdXMgPSBnZXRCb3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0
eWxlLCByZW5kZXJWaWV3KTsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21MZWZ0UmFk
aXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0
b3BMZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJU
b3BMZWZ0UmFkaXVzKCksIHN0eWxlLCB2aWV3cG9ydFNpemUpOworICAgIFJlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHRvcFJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxl
LT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCBzdHlsZSwgdmlld3BvcnRTaXplKTsKKyAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBib3R0b21SaWdodFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5l
clZhbHVlcyhzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUsIHZpZXdwb3J0
U2l6ZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90dG9tTGVmdFJhZGl1cyA9IGdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBz
dHlsZSwgdmlld3BvcnRTaXplKTsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGhvcml6b250
YWxSYWRpaSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBob3Jp
em9udGFsUmFkaWktPmFwcGVuZCh0b3BMZWZ0UmFkaXVzLT5pdGVtKDApKTsKQEAgLTk2MCw3ICs5
NjAsNyBAQCBQYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZv
ckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NT
X0dSSURfTEFZT1VUKQotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9y
R3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkTGVuZ3RoJiB0cmFja0JyZWFkdGgsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgoY29uc3QgR3JpZExl
bmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIXRyYWNrQnJlYWR0aC5pc0xlbmd0aCgpKQog
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUodHJhY2tCcmVhZHRoLmZs
ZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19GUik7CkBAIC05NjksMTkgKzk2OSwxOSBAQCBz
dGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRo
KGNvbnN0IEdyaWRMZW5ndGgmIHRyYQogICAgIGlmICh0cmFja0JyZWFkdGhMZW5ndGguaXNBdXRv
KCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUo
Q1NTVmFsdWVBdXRvKTsKICAgICBpZiAodHJhY2tCcmVhZHRoTGVuZ3RoLmlzVmlld3BvcnRQZXJj
ZW50YWdlKCkpCi0gICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9y
TGVuZ3RoKHRyYWNrQnJlYWR0aExlbmd0aCwgMCwgcmVuZGVyVmlldyksIHN0eWxlKTsKKyAgICAg
ICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgodHJhY2tCcmVh
ZHRoTGVuZ3RoLCAwLCB2aWV3cG9ydFNpemUpLCBzdHlsZSk7CiAgICAgcmV0dXJuIHpvb21BZGp1
c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgodHJhY2tCcmVhZHRoTGVuZ3RoLCBzdHlsZSk7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1Np
emUoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXplLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKGNvbnN0IEdyaWRUcmFja1NpemUmIHRyYWNr
U2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiB7CiAgICAgc3dpdGNoICh0cmFja1NpemUudHlwZSgpKSB7CiAgICAgY2FzZSBMZW5ndGhU
cmFja1NpemluZzoKLSAgICAgICAgcmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJl
YWR0aCh0cmFja1NpemUubGVuZ3RoKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKKyAgICAgICAgcmV0
dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUubGVuZ3RoKCks
IHN0eWxlLCB2aWV3cG9ydFNpemUpOwogICAgIGNhc2UgTWluTWF4VHJhY2tTaXppbmc6CiAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1pbk1heFRyYWNrQnJlYWR0aHMgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgIG1pbk1heFRyYWNrQnJlYWR0aHMt
PmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tTaXplLm1pblRy
YWNrQnJlYWR0aCgpLCBzdHlsZSwgcmVuZGVyVmlldykpOwotICAgICAgICBtaW5NYXhUcmFja0Jy
ZWFkdGhzLT5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6
ZS5tYXhUcmFja0JyZWFkdGgoKSwgc3R5bGUsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgbWluTWF4
VHJhY2tCcmVhZHRocy0+YXBwZW5kKHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0
cmFja1NpemUubWluVHJhY2tCcmVhZHRoKCksIHN0eWxlLCB2aWV3cG9ydFNpemUpKTsKKyAgICAg
ICAgbWluTWF4VHJhY2tCcmVhZHRocy0+YXBwZW5kKHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNr
QnJlYWR0aCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRoKCksIHN0eWxlLCB2aWV3cG9ydFNpemUp
KTsKICAgICAgICAgcmV0dXJuIENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSgibWlubWF4KCIsIG1p
bk1heFRyYWNrQnJlYWR0aHMpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAg
LTEwMDYsNyArMTAwNiw3IEBAIHN0YXRpYyB2b2lkIGFkZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVz
QXRJbmRleChjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFtZWRHcmlkCiAgICAgfQogfQogCi1z
dGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1Np
emluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVm
PENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9u
IGRpcmVjdGlvbiwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgY29uc3QgVmVjdG9yPEdy
aWRUcmFja1NpemU+JiB0cmFja1NpemVzID0gZGlyZWN0aW9uID09IEZvckNvbHVtbnMgPyBzdHls
ZS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxlLT5ncmlkUm93cygpOwogICAgIGNvbnN0IE5hbWVkR3Jp
ZExpbmVzTWFwJiBuYW1lZEdyaWRMaW5lcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3R5
bGUtPm5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHlsZS0+bmFtZWRHcmlkUm93TGluZXMoKTsK
QEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdy
aWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvCiAgICAgfSBlbHNl
IHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRyYWNrU2l6ZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgIGFkZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChuYW1l
ZEdyaWRMaW5lcywgaSwgbGlzdC5nZXQoKSk7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUodHJhY2tTaXplc1tpXSwgc3R5bGUsIHJl
bmRlclZpZXcpKTsKKyAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHNwZWNpZmllZFZhbHVl
Rm9yR3JpZFRyYWNrU2l6ZSh0cmFja1NpemVzW2ldLCBzdHlsZSwgdmlld3BvcnRTaXplKSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTE0NTYsNyArMTQ1Niw3IEBAIHN0YXRpYyBQYXNzUmVmPENT
U1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUpCiAgICAg
cmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5l
SGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmll
dykKK3N0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxl
KFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAg
IExlbmd0aCBsZW5ndGggPSBzdHlsZS0+bGluZUhlaWdodCgpOwogICAgIGlmIChsZW5ndGguaXNO
ZWdhdGl2ZSgpKQpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXIK
ICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHNpbmNlIGZvbnQtc2l6ZSBkb2Vzbid0IGlu
Y2x1ZGUgdGhlIHpvb20gZmFjdG9yLCB3ZSByZWFsbHkgY2FuJ3QgZG8KICAgICAgICAgLy8gdGhh
dCBoZXJlIGVpdGhlci4KICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICogc3R5bGUtPmZvbnREZXNjcmlwdGlvbigp
LnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIHN0eWxlKTsKLSAgICByZXR1cm4gem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCwgcmVuZGVyVmlldyksIHN0
eWxlKTsKKyAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUpOwogfQogCiBzdGF0aWMgUGFzc1Jl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxl
KQpAQCAtMTg5OSw3ICsxODk5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoKICAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0KCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgotICAgICAgICAgICAgcmV0dXJuIGdl
dFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Qm90dG9tLCBtX25v
ZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQb3Np
dGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUJvdHRvbSwgbV9ub2RlLT5k
b2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkt
PnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJveEFsaWduOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKHN0eWxlLT5ib3hBbGlnbigpKTsKICNpZiBFTkFCTEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLKQpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRT
dHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAg
ICAgICAgIGNvbXB1dGVkRm9udC0+dmFyaWFudCA9IGZvbnRWYXJpYW50RnJvbVN0eWxlKHN0eWxl
LmdldCgpKTsKICAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+d2VpZ2h0ID0gZm9udFdlaWdodEZy
b21TdHlsZShzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICBjb21wdXRlZEZvbnQtPnNpemUgPSBm
b250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSk7Ci0gICAgICAgICAgICBjb21wdXRlZEZvbnQt
PmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+bGluZUhl
aWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9y
dFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgICAgICBjb21wdXRlZEZvbnQtPmZhbWlseSA9
IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIGNv
bXB1dGVkRm9udC5yZWxlYXNlKCk7CiAgICAgICAgIH0KQEAgLTIwODQsMTQgKzIwODQsMTQgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHRoZSBzaXpl
IG9mIHRoZSBleHBsaWNpdCBncmlkIG9yIHRoZSBudW1iZXIgb2YgaW1wbGljaXQgdHJhY2tzIGFk
ZGVkIHRvIHRoZSBncmlkLiBTZWUKICAgICAgICAgLy8gaHR0cDovL2xpc3RzLnczLm9yZy9BcmNo
aXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTNOb3YvMDAxNC5odG1sCiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRHcmlkQXV0b0NvbHVtbnM6Ci0gICAgICAgICAgICByZXR1cm4gc3BlY2lm
aWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHN0eWxlLT5ncmlkQXV0b0NvbHVtbnMoKSwgc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0
dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZShzdHlsZS0+Z3JpZEF1dG9Db2x1bW5z
KCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2Rl
LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZEF1dG9Sb3dzOgotICAgICAgICAgICAg
cmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZShzdHlsZS0+Z3JpZEF1dG9Sb3dz
KCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAg
ICAgICAgIHJldHVybiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoc3R5bGUtPmdyaWRB
dXRvUm93cygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/
IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6
ZSgpKTsKIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFRlbXBsYXRlQ29sdW1u
czoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoRm9yQ29sdW1ucywg
cmVuZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoRm9yQ29sdW1ucywgcmVu
ZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9u
b2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3JpZFRlbXBsYXRlUm93czoKLSAgICAg
ICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoRm9yUm93cywgcmVuZGVyZXIsIHN0
eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAg
IHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoRm9yUm93cywgcmVuZGVyZXIsIHN0eWxlLmdl
dCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgp
LnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogCiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uU3RhcnQ6CiAgICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUtPmdyaWRJdGVtQ29sdW1uU3RhcnQoKSk7CkBAIC0y
MTU4LDcgKzIxNTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5pbWFnZVJlc29sdXRpb24oKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICNlbmRpZgogICAgICAgICBjYXNlIENTU1By
b3BlcnR5TGVmdDoKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0
eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUxlZnQsIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3
KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0
KCksIENTU1Byb3BlcnR5TGVmdCwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1f
bm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CiAgICAgICAgICAgICBp
ZiAoIXN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1Zh
bHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7CkBAIC0yMTY4
LDcgKzIxNjgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIHJl
dHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+bGlu
ZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUtPmxpbmVDbGFtcCgpLmlzUGVyY2VudGFnZSgpID8gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIDogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGluZUhlaWdodDoKLSAgICAgICAgICAg
IHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxl
KHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5k
b2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2U6CiAgICAgICAgICAgICBpZiAoc3R5
bGUtPmxpc3RTdHlsZUltYWdlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0eWxlLT5saXN0
U3R5bGVJbWFnZSgpLT5jc3NWYWx1ZSgpOwpAQCAtMjE5Miw3ICsyMTkyLDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICAvLyBSZW5kZXJCb3ggZ2l2ZXMgYSBtYXJn
aW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHJpZ2h0LWVkZ2Ugb2Yg
dGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgcmlnaHQtZWRnZSBvZiB0
aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBCTE9DSy4gTGV0J3MgY2FsY3VsYXRl
IHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8vIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQg
bWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIFJlbmRlckJveCdzIG1hcmdpblJp
Z2h0KCkgdmFsdWUuCi0gICAgICAgICAgICAgICAgdmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9n
aWNhbFdpZHRoRm9yQ29udGVudCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5SaWdo
dCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JD
b250ZW50KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b1JlbmRlckJveChyZW5kZXJlcikt
Pm1hcmdpblJpZ2h0KCk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh2YWx1ZSwgc3R5bGUuZ2V0KCkpOwpAQCAtMjI4Myw3ICsyMjgzLDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0
eUlEIHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOgogICAgICAgICAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5wb3NpdGlvbigpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0OgotICAgICAgICAgICAgcmV0dXJuIGdldFBv
c2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5UmlnaHQsIG1fbm9kZS0+
ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9u
T2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5UmlnaHQsIG1fbm9kZS0+ZG9jdW1l
bnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3
cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRS
dWJ5UG9zaXRpb246CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUoc3R5bGUtPnJ1YnlQb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxl
TGF5b3V0OgpAQCAtMjM4NCw3ICsyMzg0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm06CiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnRleHRUcmFuc2Zvcm0oKSk7CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25P
ZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlUb3AsIG1fbm9kZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFs
dWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5VG9wLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVy
VmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkg
OiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CiAgICAg
ICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnVuaWNvZGVC
aWRpKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKQEAgLTI2NTAs
OSArMjY1MCw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJv
eChyZW5kZXJlciktPmJvcmRlckJveFJlY3QoKTsKIAotICAgICAgICAgICAgICAgIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcgPSBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpOwotICAgICAg
ICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1
ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIGJveC53aWR0aCgpLCByZW5k
ZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0
aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCksIHJlbmRlclZpZXcpLCBzdHlsZS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9IG1fbm9kZS0+ZG9j
dW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52
aWV3cG9ydFNpemUoKSA6IEludFNpemUoKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNw
ZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgdmlld3BvcnRTaXplKSwgc3R5bGUuZ2V0KCkp
KTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSht
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3guaGVp
Z2h0KCksIHZpZXdwb3J0U2l6ZSksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVk
UGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmlnaW5YKCksIHN0eWxlLmdl
dCgpKSk7CkBAIC0yNjgyLDEzICsyNjgyLDEzIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgogICAgICAgICAgICAgcmV0
dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyU2VsZWN0KCkpOwogICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKLSAgICAgICAgICAg
IHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVm
dFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7
CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJv
cmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNp
emUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21S
aWdodFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+
ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJh
ZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCBzdHlsZS5n
ZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwgc3R5
bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAg
cmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFk
aXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9u
b2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXM6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJp
Z2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNp
emUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlDbGlwOiB7CiAgICAg
ICAgICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOwpAQCAtMjcx
MCw5ICsyNzEwLDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICBp
ZiAocmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgICAgIGJveCA9IHRvUmVuZGVy
Qm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpOwogCi0gICAgICAgICAgICAgICAgUmVuZGVy
VmlldyogcmVuZGVyVmlldyA9IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCk7Ci0gICAg
ICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgpLCByZW5k
ZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9y
bU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAg
ICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUgPSBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmll
d3BvcnRTaXplKCkgOiBJbnRTaXplKCk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zv
cm1PcmlnaW5YKCksIGJveC53aWR0aCgpLCB2aWV3cG9ydFNpemUpLCBzdHlsZS5nZXQoKSkpOwor
ICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWSgpLCBib3guaGVpZ2h0KCks
IHZpZXdwb3J0U2l6ZSksIHN0eWxlLmdldCgpKSk7CiAgICAgICAgICAgICAgICAgaWYgKHN0eWxl
LT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblooKSwgc3R5
bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0yODg1LDcgKzI4ODUsNyBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2U6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JOaW5lUGllY2VJbWFnZShzdHlsZS0+Ym9y
ZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6Ci0gICAg
ICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoc3R5bGUuZ2V0KCks
IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdl
dEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3Bv
cnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmln
aHQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hvcnRoYW5kKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyU3R5bGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRl
ZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVp
bGRlci5jcHAKaW5kZXggYzA2MjczNmIzY2M4YzkwMGU1NjYyODQ4NWU4MDdiZmU5ZmYzZjhlMC4u
MGE4MmExNjRjODU0ZTg4MzEyOTllOWU3MmRmYTNjZGZlNDZkNWIwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAtODg2LDcgKzg4Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0
ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICAgICAgICAgIHNpemUgPSBwcmltaXRp
dmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1ZhbHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVu
dFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5bGUoKSktPmV2YWx1YXRlKHBh
cmVudFNpemUpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzVmlld3Bv
cnRQZXJjZW50YWdlTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHZhbHVlRm9yTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSwgMCwgc3R5bGVS
ZXNvbHZlci0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgICAgIHNpemUg
PSB2YWx1ZUZvckxlbmd0aChwcmltaXRpdmVWYWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCksIDAsIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gc3R5bGVSZXNv
bHZlci0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgp
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKaW5kZXggNTc0OWM4OTQ2NjRjMmJj
NmVlYmFiMDgyZjYyMjk0YmQ5YmI1NDA1NC4uYjBiZjQ2ZmMzNTA5NWRmMGFjODg2ODA0MTg0Y2Jk
YzAyZmMzOGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9u
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKQEAgLTI0
LDIzICsyNCwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0
aW9ucy5oIgogCisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5o
IgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK2ludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKIHsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8aW50PihtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVt
VmFsdWUsIHJlbmRlclZpZXcsIHJvdW5kUGVyY2VudGFnZXMpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZp
ZXdwb3J0U2l6ZSwgcm91bmRQZXJjZW50YWdlcykpOwogfQogCi1pbnQgaW50VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2VudGFnZXMpCitpbnQgaW50VmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKIHsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1
ZSwgcmVuZGVyVmlldywgcm91bmRQZXJjZW50YWdlcykpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3cG9ydFNpemUs
IHJvdW5kUGVyY2VudGFnZXMpKTsKIH0KIAotTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2VudGFnZXMpCitMYXlvdXRVbml0IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVt
VmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2Vz
KQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAgIGNhc2UgRml4ZWQ6CkBAIC01
MywyNSArNTMsMTMgQEAgTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLAogICAgIGNhc2UgQ2FsY3VsYXRl
ZDoKICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZh
bHVlKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZVdpZHRoOgotICAgICAgICBpZiAocmVu
ZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHJlbmRlclZpZXctPnZpZXdw
b3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQodmll
d3BvcnRTaXplLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgotICAgICAgICBpZiAo
cmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHJlbmRlclZpZXctPnZp
ZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgp
IC8gMTAwLjBmKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0
KHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgo
KSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46Ci0gICAgICAgIGlm
IChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRl
clZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3Rk
OjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGQ6Om1pbih2aWV3cG9y
dFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBl
cmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VN
YXg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdw
b3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJu
IExheW91dFVuaXQoc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5o
ZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChz
dGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxl
bmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBGaWxs
QXZhaWxhYmxlOgogICAgIGNhc2UgQXV0bzoKICAgICAgICAgcmV0dXJuIDA7CkBAIC04OSw3ICs3
Nyw3IEBAIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVu
Z3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwKICAgICByZXR1cm4gMDsKIH0KIAotTGF5b3V0
VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykK
K0xheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVu
aXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcykKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZp
eGVkOgpAQCAtOTksNyArODcsNyBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVgogICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWlu
OgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgotICAgICAgICByZXR1cm4gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByZW5kZXJWaWV3LCByb3VuZFBl
cmNlbnRhZ2VzKTsKKyAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgs
IG1heGltdW1WYWx1ZSwgdmlld3BvcnRTaXplLCByb3VuZFBlcmNlbnRhZ2VzKTsKICAgICBjYXNl
IEZpbGxBdmFpbGFibGU6CiAgICAgY2FzZSBBdXRvOgogICAgICAgICByZXR1cm4gbWF4aW11bVZh
bHVlOwpAQCAtMTE4LDcgKzEwNiw3IEBAIExheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWCiB9CiAKIC8v
IEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBzdXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZs
b2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4gYmUgcmVtb3ZlZC4gU2VlIGJ1ZyA3MTE0My4KLWZsb2F0
IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4
aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorZmxvYXQgZmxvYXRWYWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0
IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBzd2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsK
ICAgICBjYXNlIEZpeGVkOgpAQCAtMTMxLDI1ICsxMTksMTMgQEAgZmxvYXQgZmxvYXRWYWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJl
bmRlclYKICAgICBjYXNlIENhbGN1bGF0ZWQ6CiAgICAgICAgIHJldHVybiBsZW5ndGgubm9uTmFu
Q2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7ICAgICAgICAgICAgICAgIAogICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlV2lkdGg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCku
d2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2aWV3cG9y
dFNpemUud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6Ci0gICAgICAgIGlmIChyZW5k
ZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+
dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCkgLyAxMDAuMGYpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4odmlld3BvcnRTaXplLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKLSAg
ICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXpl
ID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhl
aWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkp
ICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNl
IFZpZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAg
ICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7
Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCh2aWV3cG9ydFNp
emUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0
aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxl
bmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFJlbGF0aXZlOgogICAgIGNhc2UgSW50cmluc2lj
OgogICAgIGNhc2UgTWluSW50cmluc2ljOgpAQCAtMTY0LDcgKzE0MCw3IEBAIGZsb2F0IGZsb2F0
VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZh
bHVlLCBSZW5kZXJWCiAgICAgcmV0dXJuIDA7CiB9CiAKLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyog
cmVuZGVyVmlldykKK2Zsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5n
dGgsIGZsb2F0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewog
ICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAgIGNhc2UgRml4ZWQ6CkBAIC0xNzcsMjUg
KzE1MywxMyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqCiAgICAgY2FzZSBDYWxjdWxhdGVkOgog
ICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUp
OwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlV2lkdGg6Ci0gICAgICAgIGlmIChyZW5kZXJW
aWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmll
d3BvcnRTaXplKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50Pih2aWV3cG9ydFNpemUud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5n
dGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQ6Ci0gICAg
ICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
cmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJj
ZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4odmlld3BvcnRTaXplLmhlaWdodCgpICogbGVuZ3RoLnZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2Vu
dGFnZU1pbjoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUg
dmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmll
d3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNp
emUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBm
KTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAgICAgaWYgKHJlbmRlclZp
ZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmll
d3BvcnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1h
eCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52
aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWF4KHZpZXdw
b3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFJlbGF0aXZlOgogICAgIGNh
c2UgSW50cmluc2ljOgogICAgIGNhc2UgTWluSW50cmluc2ljOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0
aEZ1bmN0aW9ucy5oCmluZGV4IDZiNDEwMjkxODY0YmJiMzdjN2IzMTFjYTkwMmYwN2I5N2JmNmRk
NjIuLjU2MDIyYjNhYzY2MzczOWMxMzg4MTZkOTNiNjFlNmJkNzAwMDk1NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKQEAgLTI0LDIwICsyNCwyMSBAQAogI2lmbmRlZiBMZW5n
dGhGdW5jdGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5jdGlvbnNfaAogCisjaW5jbHVkZSAiSW50
U2l6ZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNz
IExheW91dFVuaXQ7Ci1jbGFzcyBSZW5kZXJWaWV3Owogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBM
ZW5ndGhTaXplOwogCi1pbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYs
IExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQZXJj
ZW50YWdlcyA9IGZhbHNlKTsKLWludCBpbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBM
YXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwLCBib29sIHJvdW5kUGVyY2Vu
dGFnZXMgPSBmYWxzZSk7Ci1MYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBM
ZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwLCBib29sIHJv
dW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7Ci1MYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0
IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wg
cm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29u
c3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCk7Ci1m
bG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIGZsb2F0IG1heGltdW1WYWx1
ZSwgUmVuZGVyVmlldyogPSAwKTsKK2ludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmID0gSW50U2l6
ZSgpLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitpbnQgaW50VmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUm
ID0gSW50U2l6ZSgpLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitMYXlvdXRVbml0
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1W
YWx1ZSwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCksIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9
IGZhbHNlKTsKK0xheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpLCBib29sIHJvdW5k
UGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUo
KSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIGZsb2F0IG1heGlt
dW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOwogRmxvYXRTaXplIGZsb2F0U2l6
ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4Y2ExMGU5
NmI5ZTZjZjg1Yzc3MTNhZWNiNTYxNTA0MTM4YTcwYWExLi42ZGNlY2NhMWQwNDYzNzMwNmEzNTcx
ODdjZDhjMzIwNWFhNWI1Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE4OTgsNyAr
MTg5OCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzUGFnZUJveFZpc2libGUoaW50IHBhZ2VJbmRleCkK
IHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgs
IEludFNpemUmIHBhZ2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50
JiBtYXJnaW5Cb3R0b20sIGludCYgbWFyZ2luTGVmdCkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5
bGU+IHN0eWxlID0gZW5zdXJlU3R5bGVSZXNvbHZlcigpLnN0eWxlRm9yUGFnZShwYWdlSW5kZXgp
OwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJWaWV3KCk7CisgICAgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldygpID8gcmVuZGVyVmlldygpLT52aWV3cG9ydFNp
emUoKSA6IEludFNpemUoKTsKIAogICAgIGludCB3aWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAg
ICAgaW50IGhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCgpOwpAQCAtMTkxNyw4ICsxOTE3LDggQEAg
dm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwg
SW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICAgICAgTGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUt
PnBhZ2VTaXplKCk7CiAgICAgICAgIEFTU0VSVChzaXplLndpZHRoKCkuaXNGaXhlZCgpKTsKICAg
ICAgICAgQVNTRVJUKHNpemUuaGVpZ2h0KCkuaXNGaXhlZCgpKTsKLSAgICAgICAgd2lkdGggPSB2
YWx1ZUZvckxlbmd0aChzaXplLndpZHRoKCksIDAsIHZpZXcpOwotICAgICAgICBoZWlnaHQgPSB2
YWx1ZUZvckxlbmd0aChzaXplLmhlaWdodCgpLCAwLCB2aWV3KTsKKyAgICAgICAgd2lkdGggPSB2
YWx1ZUZvckxlbmd0aChzaXplLndpZHRoKCksIDAsIHZpZXdwb3J0U2l6ZSk7CisgICAgICAgIGhl
aWdodCA9IHZhbHVlRm9yTGVuZ3RoKHNpemUuaGVpZ2h0KCksIDAsIHZpZXdwb3J0U2l6ZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMTkyOCwxMCArMTkyOCwxMCBA
QCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4
LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogCiAgICAgLy8gVGhlIHBlcmNlbnRhZ2UgaXMgY2Fs
Y3VsYXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpZHRoIGV2ZW4gZm9yIG1hcmdpbiB0b3AgYW5k
IGJvdHRvbS4KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyL2JveC5odG1sI21hcmdp
bi1wcm9wZXJ0aWVzCi0gICAgbWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRvcCgpLmlzQXV0bygp
ID8gbWFyZ2luVG9wIDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblRvcCgpLCB3aWR0
aCwgdmlldyk7Ci0gICAgbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8o
KSA/IG1hcmdpblJpZ2h0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJpZ2h0KCks
IHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5Cb3R0b20gPSBzdHlsZS0+bWFyZ2luQm90dG9tKCku
aXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2lu
Qm90dG9tKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxl
ZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFy
Z2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CisgICAgbWFyZ2luVG9wID0gc3R5bGUtPm1hcmdpblRv
cCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdp
blRvcCgpLCB3aWR0aCwgdmlld3BvcnRTaXplKTsKKyAgICBtYXJnaW5SaWdodCA9IHN0eWxlLT5t
YXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmlnaHQgOiBpbnRWYWx1ZUZvckxlbmd0aChz
dHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSk7CisgICAgbWFyZ2luQm90
dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0bygpID8gbWFyZ2luQm90dG9tIDogaW50
VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkJvdHRvbSgpLCB3aWR0aCwgdmlld3BvcnRTaXpl
KTsKKyAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdp
bkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmll
d3BvcnRTaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVSZXNvbHZlcigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggNWVlYjMxZTQ2Zjg1MWY3
NGI3Mzg1ZGNjMGJmYWM5OWM3NTkxNDIxNy4uYThjNWY3MzY1MzU0YmVjY2VlZTNlYmIwMGY4OGQ2
ODcwNzE5NmE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAt
MTQzLDMwICsxNDMsMzAgQEAgUGF0aCBIVE1MQXJlYUVsZW1lbnQ6OmdldFJlZ2lvbihjb25zdCBM
YXlvdXRTaXplJiBzaXplKSBjb25zdAogICAgIH0KIAogICAgIFBhdGggcGF0aDsKLSAgICBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCk7CisgICAgY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplID0gZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBkb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCk7CiAgICAgc3dpdGNo
IChzaGFwZSkgewogICAgICAgICBjYXNlIFBvbHk6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNM
ZW4gPj0gNikgewogICAgICAgICAgICAgICAgIGludCBudW1Qb2ludHMgPSBtX2Nvb3Jkc0xlbiAv
IDI7Ci0gICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCByZW5kZXJWaWV3KSwgbWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpKSk7CisgICAgICAgICAgICAg
ICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNb
MF0sIHdpZHRoLCB2aWV3cG9ydFNpemUpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNb
MV0sIGhlaWdodCwgdmlld3BvcnRTaXplKSkpOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAxOyBpIDwgbnVtUG9pbnRzOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIHBhdGguYWRkTGlu
ZVRvKEZsb2F0UG9pbnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kgKiAyXSwgd2lk
dGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAx
XSwgaGVpZ2h0LCByZW5kZXJWaWV3KSkpOworICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZExp
bmVUbyhGbG9hdFBvaW50KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1tpICogMl0sIHdp
ZHRoLCB2aWV3cG9ydFNpemUpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDIg
KyAxXSwgaGVpZ2h0LCB2aWV3cG9ydFNpemUpKSk7CiAgICAgICAgICAgICAgICAgcGF0aC5jbG9z
ZVN1YnBhdGgoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENpcmNsZToKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSAzKSB7CiAgICAgICAg
ICAgICAgICAgTGVuZ3RoIHJhZGl1cyA9IG1fY29vcmRzWzJdOwotICAgICAgICAgICAgICAgIGlu
dCByID0gc3RkOjptaW4obWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgd2lkdGgsIHJlbmRl
clZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCBoZWlnaHQsIHJlbmRlclZpZXcp
KTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1
ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lkdGgsIHJlbmRlclZpZXcpIC0gciwgbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpIC0gciwgMiAqIHIs
IDIgKiByKSk7CisgICAgICAgICAgICAgICAgaW50IHIgPSBzdGQ6Om1pbihtaW5pbXVtVmFsdWVG
b3JMZW5ndGgocmFkaXVzLCB3aWR0aCwgdmlld3BvcnRTaXplKSwgbWluaW11bVZhbHVlRm9yTGVu
Z3RoKHJhZGl1cywgaGVpZ2h0LCB2aWV3cG9ydFNpemUpKTsKKyAgICAgICAgICAgICAgICBwYXRo
LmFkZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwg
d2lkdGgsIHZpZXdwb3J0U2l6ZSkgLSByLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNb
MV0sIGhlaWdodCwgdmlld3BvcnRTaXplKSAtIHIsIDIgKiByLCAyICogcikpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVjdDoKICAgICAgICAgICAg
IGlmIChtX2Nvb3Jkc0xlbiA+PSA0KSB7Ci0gICAgICAgICAgICAgICAgaW50IHgwID0gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCwgcmVuZGVyVmlldyk7Ci0gICAgICAg
ICAgICAgICAgaW50IHkwID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWln
aHQsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgICAgIGludCB4MSA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtX2Nvb3Jkc1syXSwgd2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgICAg
IGludCB5MSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1szXSwgaGVpZ2h0LCByZW5k
ZXJWaWV3KTsKKyAgICAgICAgICAgICAgICBpbnQgeDAgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
bV9jb29yZHNbMF0sIHdpZHRoLCB2aWV3cG9ydFNpemUpOworICAgICAgICAgICAgICAgIGludCB5
MCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1sxXSwgaGVpZ2h0LCB2aWV3cG9ydFNp
emUpOworICAgICAgICAgICAgICAgIGludCB4MSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nv
b3Jkc1syXSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSk7CisgICAgICAgICAgICAgICAgaW50IHkxID0g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNdLCBoZWlnaHQsIHZpZXdwb3J0U2l6ZSk7
CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KEZsb2F0UmVjdCh4MCwgeTAsIHgxIC0geDAs
IHkxIC0geTApKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggY2I4MTU0MmIwY2NhNzU5Mjg4Njg1
MzNmOGVkOTBjNGJhM2QzNTk5NC4uNTZhOWZmZDg1NTc2NmQ5NGRjODU3YjVjYTY3YjlkNDA1ODJh
ZjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0zMjAw
LDcgKzMyMDAsNyBAQCBib29sIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdQogICAgIGlmICghaXNSZW5kZXJW
aWV3KCkgJiYgc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAgICAgICBMYXlvdXRSZWN0
IGJvcmRlclJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CiAgICAgICAgIGJvcmRlclJlY3QubW92ZUJ5
KGFkanVzdGVkTG9jYXRpb24pOwotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgp
LmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgJnZpZXcoKSk7CisgICAgICAgIFJvdW5k
ZWRSZWN0IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCB2
aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgICAgICBpZiAoIWxvY2F0aW9uSW5Db250YWluZXIu
aW50ZXJzZWN0cyhib3JkZXIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAg
LTQ0ODYsMTEgKzQ0ODYsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLAogICAgIGlmIChmaXJz
dExpbmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLnVzZXNGaXJzdExpbmVS
dWxlcygpKSB7CiAgICAgICAgIFJlbmRlclN0eWxlJiBzID0gZmlyc3RMaW5lID8gZmlyc3RMaW5l
U3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgICAgIGlmICgmcyAhPSAmc3R5bGUoKSkKLSAgICAgICAg
ICAgIHJldHVybiBzLmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBzLmNvbXB1dGVkTGluZUhlaWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgIH0K
ICAgICAKICAgICBpZiAobV9saW5lSGVpZ2h0ID09IC0xKQotICAgICAgICBtX2xpbmVIZWlnaHQg
PSBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICAgICAgbV9saW5lSGVp
Z2h0ID0gc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQodmlldygpLnZpZXdwb3J0U2l6ZSgpKTsK
IAogICAgIHJldHVybiBtX2xpbmVIZWlnaHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJlZTVhZmJhZWJhODkxMzQxNDU0NGNlNDAu
LjgxNTBjMzIwMzdhZDIyYjEzOGI2ZmY5NTdjZWU2YmYzNTVjNTgxMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjA5LDcgKzEyMDksNyBAQCB2b2lkIFJlbmRl
ckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5
b3V0UG9pbnQmIHBhaQogICAgICAgICAvLyBUbyBhdm9pZCB0aGUgYmFja2dyb3VuZCBjb2xvciBi
bGVlZGluZyBvdXQgYmVoaW5kIHRoZSBib3JkZXIsIHdlJ2xsIHJlbmRlciBiYWNrZ3JvdW5kIGFu
ZCBib3JkZXIKICAgICAgICAgLy8gaW50byBhIHRyYW5zcGFyZW5jeSBsYXllciwgYW5kIHRoZW4g
Y2xpcCB0aGF0IGluIG9uZSBnbyAod2hpY2ggcmVxdWlyZXMgc2V0dGluZyB1cCB0aGUgY2xpcCBi
ZWZvcmUKICAgICAgICAgLy8gYmVnaW5uaW5nIHRoZSBsYXllcikuCi0gICAgICAgIFJvdW5kZWRS
ZWN0IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QsICZ2aWV3
KCkpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3Jk
ZXJGb3IocGFpbnRSZWN0LCB2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgICAgICBzdGF0ZVNh
dmVyLnNhdmUoKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXBSb3VuZGVkUmVjdChi
b3JkZXIpOwogICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cigxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCmluZGV4IDVhMGMyZGM5MWVhZGRiNjhlMDJlMjYzMmE2NTM3NTkwNThjNjczOTUuLmQ3
MTg4M2Q5OWU3NDg5MmM5MTUwYTVmOWJlYjhlNGRiMmUxNjA2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNDg5LDkgKzQ4
OSw5IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGlu
Zyhjb25zdCBMZW5ndGgmIHBhZGRpbmcpIGNvbnN0CiBSb3VuZGVkUmVjdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0KGNvbnN0IExheW91dFJlY3QmIGJvcmRl
clJlY3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5
b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdl
LCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewotICAgIFJvdW5kZWRSZWN0
IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCAmdmlldygp
LCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAg
Um91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKGJvcmRlclJl
Y3QsIHZpZXcoKS52aWV3cG9ydFNpemUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGlmIChib3ggJiYgKGJveC0+bmV4dExpbmVCb3goKSB8
fCBib3gtPnByZXZMaW5lQm94KCkpKSB7Ci0gICAgICAgIFJvdW5kZWRSZWN0IHNlZ21lbnRCb3Jk
ZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdCgwLCAwLCBpbmxpbmVC
b3hXaWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgJnZpZXcoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRn
ZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICBSb3VuZGVkUmVjdCBzZWdtZW50
Qm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKExheW91dFJlY3QoMCwgMCwgaW5s
aW5lQm94V2lkdGgsIGlubGluZUJveEhlaWdodCksIHZpZXcoKS52aWV3cG9ydFNpemUoKSwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgICAgICBi
b3JkZXIuc2V0UmFkaWkoc2VnbWVudEJvcmRlci5yYWRpaSgpKTsKICAgICB9CiAgICAgcmV0dXJu
IGJvcmRlcjsKQEAgLTEyMTksMTMgKzEyMTksMTMgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8K
ICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0KCk7CiB9CiAKLXN0YXRpYyBMYXlvdXRV
bml0IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUoTGVuZ3RoIGJvcmRlclNsaWNlLCBMYXlvdXRVbml0
IGJvcmRlclNpZGUsIExheW91dFVuaXQgaW1hZ2VTaWRlLCBMYXlvdXRVbml0IGJveEV4dGVudCwg
UmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJJ
bWFnZVNpZGUoTGVuZ3RoIGJvcmRlclNsaWNlLCBMYXlvdXRVbml0IGJvcmRlclNpZGUsIExheW91
dFVuaXQgaW1hZ2VTaWRlLCBMYXlvdXRVbml0IGJveEV4dGVudCwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQogewogICAgIGlmIChib3JkZXJTbGljZS5pc1JlbGF0aXZlKCkpCiAgICAgICAg
IHJldHVybiBib3JkZXJTbGljZS52YWx1ZSgpICogYm9yZGVyU2lkZTsKICAgICBpZiAoYm9yZGVy
U2xpY2UuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBpbWFnZVNpZGU7Ci0gICAgcmV0dXJuIHZh
bHVlRm9yTGVuZ3RoKGJvcmRlclNsaWNlLCBib3hFeHRlbnQsIHJlbmRlclZpZXcpOworICAgIHJl
dHVybiB2YWx1ZUZvckxlbmd0aChib3JkZXJTbGljZSwgYm94RXh0ZW50LCB2aWV3cG9ydFNpemUp
OwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCkBAIC0xMjU0LDcgKzEyNTQsNiBAQCBib29sIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LAogCiAgICAgaW50IGltYWdlV2lkdGggPSBpbWFnZVNpemUud2lkdGgoKTsK
ICAgICBpbnQgaW1hZ2VIZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0KCk7Ci0gICAgUmVuZGVyVmll
dyogcmVuZGVyVmlldyA9ICZ2aWV3KCk7CiAKICAgICBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yID0g
c3R5bGVJbWFnZS0+aW1hZ2VTY2FsZUZhY3RvcigpOwogICAgIGludCB0b3BTbGljZSA9IHN0ZDo6
bWluPGludD4oaW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVuZ3RoKG5pbmVQaWVjZUltYWdlLmltYWdl
U2xpY2VzKCkudG9wKCksIGltYWdlSGVpZ2h0KSkgKiBpbWFnZVNjYWxlRmFjdG9yOwpAQCAtMTI2
NCwxMSArMTI2MywxMiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVj
ZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgRU5pbmVQaWVj
ZUltYWdlUnVsZSBoUnVsZSA9IG5pbmVQaWVjZUltYWdlLmhvcml6b250YWxSdWxlKCk7CiAgICAg
RU5pbmVQaWVjZUltYWdlUnVsZSB2UnVsZSA9IG5pbmVQaWVjZUltYWdlLnZlcnRpY2FsUnVsZSgp
OwotCi0gICAgaW50IHRvcFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJ
bWFnZS5ib3JkZXJTbGljZXMoKS50b3AoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHRvcFNs
aWNlLCBib3JkZXJJbWFnZVJlY3QuaGVpZ2h0KCksIHJlbmRlclZpZXcpOwotICAgIGludCByaWdo
dFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGlj
ZXMoKS5yaWdodCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCByaWdodFNsaWNlLCBib3Jk
ZXJJbWFnZVJlY3Qud2lkdGgoKSwgcmVuZGVyVmlldyk7Ci0gICAgaW50IGJvdHRvbVdpZHRoID0g
Y29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0
b20oKSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCksIGJvdHRvbVNsaWNlLCBib3JkZXJJbWFn
ZVJlY3QuaGVpZ2h0KCksIHJlbmRlclZpZXcpOwotICAgIGludCBsZWZ0V2lkdGggPSBjb21wdXRl
Qm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJvcmRlclNsaWNlcygpLmxlZnQoKSwgc3R5
bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBsZWZ0U2xpY2UsIGJvcmRlckltYWdlUmVjdC53aWR0aCgp
LCByZW5kZXJWaWV3KTsKKyAgICAKKyAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUgPSB2
aWV3KCkudmlld3BvcnRTaXplKCk7CisgICAgaW50IHRvcFdpZHRoID0gY29tcHV0ZUJvcmRlcklt
YWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS50b3AoKSwgc3R5bGUtPmJvcmRl
clRvcFdpZHRoKCksIHRvcFNsaWNlLCBib3JkZXJJbWFnZVJlY3QuaGVpZ2h0KCksIHZpZXdwb3J0
U2l6ZSk7CisgICAgaW50IHJpZ2h0V2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQ
aWVjZUltYWdlLmJvcmRlclNsaWNlcygpLnJpZ2h0KCksIHN0eWxlLT5ib3JkZXJSaWdodFdpZHRo
KCksIHJpZ2h0U2xpY2UsIGJvcmRlckltYWdlUmVjdC53aWR0aCgpLCB2aWV3cG9ydFNpemUpOwor
ICAgIGludCBib3R0b21XaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1h
Z2UuYm9yZGVyU2xpY2VzKCkuYm90dG9tKCksIHN0eWxlLT5ib3JkZXJCb3R0b21XaWR0aCgpLCBi
b3R0b21TbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdodCgpLCB2aWV3cG9ydFNpemUpOworICAg
IGludCBsZWZ0V2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJv
cmRlclNsaWNlcygpLmxlZnQoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBsZWZ0U2xpY2Us
IGJvcmRlckltYWdlUmVjdC53aWR0aCgpLCB2aWV3cG9ydFNpemUpOwogICAgIAogICAgIC8vIFJl
ZHVjZSB0aGUgd2lkdGhzIGlmIHRoZXkncmUgdG9vIGxhcmdlLgogICAgIC8vIFRoZSBzcGVjIHNh
eXM6IEdpdmVuIEx3aWR0aCBhcyB0aGUgd2lkdGggb2YgdGhlIGJvcmRlciBpbWFnZSBhcmVhLCBM
aGVpZ2h0IGFzIGl0cyBoZWlnaHQsIGFuZCBXc2lkZSBhcyB0aGUgYm9yZGVyIGltYWdlIHdpZHRo
CkBAIC0xODIzLDcgKzE4MjMsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJv
cmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlY3QmCiAKICAgICBCb3Jk
ZXJFZGdlIGVkZ2VzWzRdOwogICAgIGdldEJvcmRlckVkZ2VJbmZvKGVkZ2VzLCBzdHlsZSwgaW5j
bHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwotICAgIFJvdW5k
ZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgJnZp
ZXcoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwor
ICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5bGUtPmdldFJvdW5kZWRCb3JkZXJGb3Io
cmVjdCwgdmlldygpLnZpZXdwb3J0U2l6ZSgpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91bmRlZFJlY3QgaW5uZXJCb3JkZXIgPSBzdHls
ZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRlcklubmVyUmVjdEFkanVzdGVkRm9yQmxl
ZWRBdm9pZGFuY2UoKmdyYXBoaWNzQ29udGV4dCwgcmVjdCwgYmxlZWRBdm9pZGFuY2UpLCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAKICAgICBib29s
IGhhdmVBbHBoYUNvbG9yID0gZmFsc2U7CkBAIC0yNDk3LDcgKzI0OTcsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mIGluZm8sIGNv
bnN0IExheW91dFJlYwogCiAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gKHNoYWRvd1N0eWxlID09
IEluc2V0KQogICAgICAgICA/IHMtPmdldFJvdW5kZWRJbm5lckJvcmRlckZvcihwYWludFJlY3Qs
IGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKQotICAgICAg
ICA6IHMtPmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpLCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CisgICAgICAgIDogcy0+Z2V0
Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QsIHZpZXcoKS52aWV3cG9ydFNpemUoKSwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgYm9vbCBo
YXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNCb3JkZXJSYWRpdXMoKTsKICAgICBib29sIGlzSG9yaXpv
bnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYWJlY2VjY2M3MDI5MDY3NzczZWQ1ODlhZjY3
NGE3NzA4M2EyMWFmZS4uOWQ1YjJlYmFhOWIzYzg3NjI1M2IxM2ExOTI5OWJiYzI3MTM5N2NkZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtNzk2LDYg
Kzc5NiwxNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXND
aGlsZHJlbihTdHlsZVByb3BhZ2F0aW9uVHlwZSBwcm9wYQogICAgIH0KIH0KIAorTGF5b3V0VW5p
dCBSZW5kZXJFbGVtZW50Ojp2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5
b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViQ29yZTo6dmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZp
ZXcoKS52aWV3cG9ydFNpemUoKSwgcm91bmRQZXJjZW50YWdlcyk7Cit9CisgICAgCitMYXlvdXRV
bml0IFJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwg
bWF4aW11bVZhbHVlLCB2aWV3KCkudmlld3BvcnRTaXplKCksIHJvdW5kUGVyY2VudGFnZXMpOwor
fQorICAgIAogLy8gT24gbG93LXBvd2VyZWQvbW9iaWxlIGRldmljZXMsIHByZXZlbnRpbmcgYmxp
dHRpbmcgb24gYSBzY3JvbGwgY2FuIGNhdXNlIG5vdGljZWFibGUgZGVsYXlzCiAvLyB3aGVuIHNj
cm9sbGluZyBhIHBhZ2Ugd2l0aCBhIGZpeGVkIGJhY2tncm91bmQgaW1hZ2UuIEFzIGFuIG9wdGlt
aXphdGlvbiwgYXNzdW1pbmcgdGhlcmUgYXJlCiAvLyBubyBmaXhlZCBwb3NpdG9uZWQgZWxlbWVu
dHMgb24gdGhlIHBhZ2UsIHdlIGNhbiBhY2NsZXJhdGUgc2Nyb2xsaW5nICh2aWEgYmxpdHRpbmcp
IGlmIHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCAwMjIz
MDYwNmRiNGI3OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNlMWY5Li43M2I5NDE0ZGI0YzJiMDE2NzZh
ZTIxYjYzNzYxMzk3ZTdkZmQxZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmgKQEAgLTI0OCwxNiArMjQ4LDYgQEAgaW5saW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6
c2V0Q2hpbGROZWVkc0xheW91dChNYXJraW5nQmVoYXZpb3IgbWFya1BhcmVudHMpCiAgICAgICAg
IG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7CiB9CiAKLWlubGluZSBMYXlvdXRVbml0
IFJlbmRlckVsZW1lbnQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKSBjb25zdAotewotICAg
IHJldHVybiBXZWJDb3JlOjp2YWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgJnZp
ZXcoKSwgcm91bmRQZXJjZW50YWdlcyk7Ci19Ci0KLWlubGluZSBMYXlvdXRVbml0IFJlbmRlckVs
ZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVl
LCAmdmlldygpLCByb3VuZFBlcmNlbnRhZ2VzKTsKLX0KLQogaW5saW5lIGJvb2wgUmVuZGVyRWxl
bWVudDo6aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9i
YXNlVHlwZUZsYWdzICYgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdEZsYWc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGI3ZDYzMzJmMDliNGU3ZmVkYzczYzI2
Yjk1MzFmODk1MDI5OTVkY2QuLjI4NGE0YjRjMmJiZTk0MmQ3MGFkZTU0NzAxNTcyZWRjYWQyZWFk
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC03Mjgs
NyArNzI4LDcgQEAgc3RhdGljIExheW91dFVuaXQgY29tcHV0ZU1hcmdpbihjb25zdCBSZW5kZXJJ
bmxpbmUqIHJlbmRlcmVyLCBjb25zdCBMZW5ndGgmIG1hcmcKICAgICBpZiAobWFyZ2luLmlzUGVy
Y2VudCgpKQogICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgc3Rk
OjptYXg8TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpLT5hdmFpbGFi
bGVMb2dpY2FsV2lkdGgoKSkpOwogICAgIGlmIChtYXJnaW4uaXNWaWV3cG9ydFBlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCwgJnJlbmRlcmVyLT52
aWV3KCkpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwLCByZW5kZXJl
ci0+dmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTQwNCwx
MCArMTQwNCwxMCBAQCBMYXlvdXRVbml0IFJlbmRlcklubGluZTo6bGluZUhlaWdodChib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlY3RpbwogICAgIGlmIChmaXJzdExpbmUg
JiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLnVzZXNGaXJzdExpbmVSdWxlcygp
KSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBmaXJzdExpbmVTdHlsZSA9IHRoaXMtPmZp
cnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGlmICgmZmlyc3RMaW5lU3R5bGUgIT0gJnN0eWxlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5lU3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCZ2
aWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlLmNvbXB1dGVkTGluZUhl
aWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgIH0KIAotICAgIHJldHVybiBzdHlsZSgp
LmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICByZXR1cm4gc3R5bGUoKS5jb21wdXRl
ZExpbmVIZWlnaHQodmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKIH0KIAogaW50IFJlbmRlcklubGlu
ZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCA5NzJmZjM2MzFiYjVlNjVjZWRlYzQ5OWQ2MzRlODEzYzYyY2YwNDM3Li43MGUxOGM0
ZTY2NzY5Y2UxYWNkNmI3MWMwM2I0YWM1MDk5NzdiYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM4NzQsNyArMzg3NCw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mCiAgICAgICAgIExheW91dFJlY3QgcmVmZXJlbmNlQm94ID0gY29tcHV0ZVJlZmVy
ZW5jZUJveChyZW5kZXJlcigpLCBjbGlwcGluZ1BhdGgsIG9mZnNldEZyb21Sb290LCByb290UmVs
YXRpdmVCb3VuZHMpOwogICAgICAgICAvLyBGSVhNRSBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGNv
bXB1dGUgdGhlIHJvdW5kZWQgY29ybmVycyBhcyBzcGVjaWZpZWQgaW4gYWxsIGNvbmRpdGlvbnMu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5
ODIKLSAgICAgICAgY29uc3QgUm91bmRlZFJlY3QmIHNoYXBlUmVjdCA9IHJlbmRlcmVyKCkuc3R5
bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlZmVyZW5jZUJveCwgJihyZW5kZXJlcigpLnZpZXco
KSkpOworICAgICAgICBjb25zdCBSb3VuZGVkUmVjdCYgc2hhcGVSZWN0ID0gcmVuZGVyZXIoKS5z
dHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocmVmZXJlbmNlQm94LCByZW5kZXJlcigpLnZpZXco
KS52aWV3cG9ydFNpemUoKSk7CiAKICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICBj
b250ZXh0LT5jbGlwUGF0aChjbGlwcGluZ1BhdGgucGF0aEZvclJlZmVyZW5jZVJlY3Qoc2hhcGVS
ZWN0KSwgUlVMRV9OT05aRVJPKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAKaW5kZXggYTgzMWU0NzhjNzc2NmY2NTZjMDY3OWVlZGZmY2ZkYWM2NDBmOTQx
MC4uNTNiNTM1NmNjYWI4ZjhiMDBlNmQ0MWJiMTY2OTU5NDQ3NTY1ZTIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIK
ICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNs
dWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCiAKQEAg
LTUyLDExICs1MywxMSBAQCBMYXlvdXRVbml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJlYwogICAgIGlmIChmaXJzdExp
bmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLnVzZXNGaXJzdExpbmVSdWxl
cygpKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBmaXJzdExpbmVTdHlsZSA9IHRoaXMt
PmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGlmICgmZmlyc3RMaW5lU3R5bGUgIT0gJnN0eWxl
KCkpCi0gICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5lU3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0
KCZ2aWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlLmNvbXB1dGVkTGlu
ZUhlaWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgIH0KIAogICAgIGlmIChtX2NhY2hl
ZExpbmVIZWlnaHQgPT0gaW52YWxpZExpbmVIZWlnaHQpCi0gICAgICAgIG1fY2FjaGVkTGluZUhl
aWdodCA9IHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCZ2aWV3KCkpOworICAgICAgICBtX2Nh
Y2hlZExpbmVIZWlnaHQgPSBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCh2aWV3KCkudmlld3Bv
cnRTaXplKCkpOwogICAgIAogICAgIHJldHVybiBtX2NhY2hlZExpbmVIZWlnaHQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKaW5kZXgg
MmNmMmY1ZmM2MjVlNGM1MTEzYjYyYWU5ZWJhNmJhMmQ5YzAwY2VkNi4uMmRiOTBhZGQxNzAxMjVj
ZWM3MDEzMzcyNzFiYWMxNDg4MmU1NDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAtNzksMTAgKzc5LDEwIEBAIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyUGFydDo6bGF5b3V0VmVydGljYWxQYXJ0KCkKICAgICB9IAogfQogCi1zdGF0
aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhTaXplVHlwZSBzaXplVHlwZSwgY29u
c3QgTGVuZ3RoJiBsZW5ndGgsIGludCBjb250YWluaW5nTGVuZ3RoLCBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3KQorc3RhdGljIGludCBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoU2l6ZVR5cGUg
c2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBpbnQgY29udGFpbmluZ0xlbmd0aCwgY29u
c3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIGlmICghbGVuZ3RoLmlzSW50cmluc2lj
T3JBdXRvKCkgfHwgKHNpemVUeXBlID09IE1pblNpemUgJiYgbGVuZ3RoLmlzQXV0bygpKSkKLSAg
ICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIGNvbnRhaW5pbmdMZW5n
dGgsIHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxl
bmd0aCwgY29udGFpbmluZ0xlbmd0aCwgdmlld3BvcnRTaXplKTsKICAgICByZXR1cm4gU2Nyb2xs
YmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNrbmVzcygpOwogfQogCkBAIC05MCwzNiAr
OTAsMzYgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgo
KQogewogICAgIGlmICghbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gJnZpZXcoKTsKKyAgICBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUgPSB2aWV3KCkudmlld3BvcnRTaXplKCk7CiAgICAgLy8gRklY
TUU6IFdlIGFyZSBxdWVyeWluZyBsYXlvdXQgaW5mb3JtYXRpb24gYnV0IG5vdGhpbmcgZ3VhcmFu
dGVlcyB0aGF0IGl0J3MgdXAtdG8tZGF0ZSwgZXNwZWNpYWxseSBzaW5jZSB3ZSBhcmUgY2FsbGVk
IGF0IHN0eWxlIGNoYW5nZS4KICAgICAvLyBGSVhNRTogUXVlcnlpbmcgdGhlIHN0eWxlJ3MgYm9y
ZGVyIGluZm9ybWF0aW9uIGRvZXNuJ3Qgd29yayBvbiB0YWJsZSBjZWxscyB3aXRoIGNvbGxhcHNp
bmcgYm9yZGVycy4KICAgICBpbnQgdmlzaWJsZVNpemUgPSBtX3Njcm9sbGJhci0+b3duaW5nUmVu
ZGVyZXIoKS0+d2lkdGgoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5zdHlsZSgp
LmJvcmRlckxlZnRXaWR0aCgpIC0gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPnN0eWxl
KCkuYm9yZGVyUmlnaHRXaWR0aCgpOwotICAgIGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVz
c1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkud2lkdGgoKSwgdmlzaWJsZVNpemUs
IHJlbmRlclZpZXcpOwotICAgIGludCBtaW5XaWR0aCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NV
c2luZyhNaW5TaXplLCBzdHlsZSgpLm1pbldpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3
KTsKLSAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/
IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS5tYXhXaWR0
aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7CisgICAgaW50IHcgPSBjYWxjU2Nyb2xsYmFy
VGhpY2tuZXNzVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS53aWR0aCgpLCB2aXNp
YmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWluV2lkdGggPSBjYWxjU2Nyb2xsYmFy
VGhpY2tuZXNzVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS5taW5XaWR0aCgpLCB2aXNpYmxlU2l6ZSwg
dmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLm1heFdpZHRoKCkuaXNV
bmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWF4U2l6ZSwgc3R5
bGUoKS5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKICAgICBzZXRXaWR0
aChzdGQ6Om1heChtaW5XaWR0aCwgc3RkOjptaW4obWF4V2lkdGgsIHcpKSk7CiAgICAgCiAgICAg
Ly8gQnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzIGNhbiBhbGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRo
ZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuIAotICAgIG1fbWFyZ2luQm94LnNldExlZnQobWluaW11
bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVy
VmlldykpOwotICAgIG1fbWFyZ2luQm94LnNldFJpZ2h0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZSgpLm1hcmdpblJpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7CisgICAgbV9t
YXJnaW5Cb3guc2V0TGVmdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5MZWZ0
KCksIHZpc2libGVTaXplKSk7CisgICAgbV9tYXJnaW5Cb3guc2V0UmlnaHQobWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luUmlnaHQoKSwgdmlzaWJsZVNpemUpKTsKIH0KIAogdm9p
ZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Nyb2xsYmFySGVpZ2h0KCkKIHsKICAgICBp
ZiAoIW1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47Ci0gICAg
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9ICZ2aWV3KCk7CisgICAgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplID12aWV3KCkudmlld3BvcnRTaXplKCk7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBx
dWVyeWluZyBsYXlvdXQgaW5mb3JtYXRpb24gYnV0IG5vdGhpbmcgZ3VhcmFudGVlcyB0aGF0IGl0
J3MgdXAtdG8tZGF0ZSwgZXNwZWNpYWxseSBzaW5jZSB3ZSBhcmUgY2FsbGVkIGF0IHN0eWxlIGNo
YW5nZS4KICAgICAvLyBGSVhNRTogUXVlcnlpbmcgdGhlIHN0eWxlJ3MgYm9yZGVyIGluZm9ybWF0
aW9uIGRvZXNuJ3Qgd29yayBvbiB0YWJsZSBjZWxscyB3aXRoIGNvbGxhcHNpbmcgYm9yZGVycy4K
ICAgICBpbnQgdmlzaWJsZVNpemUgPSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+aGVp
Z2h0KCkgLSAgbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPnN0eWxlKCkuYm9yZGVyVG9w
V2lkdGgoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5zdHlsZSgpLmJvcmRlckJv
dHRvbVdpZHRoKCk7Ci0gICAgaW50IGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWFp
bk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5oZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZp
ZXcpOwotICAgIGludCBtaW5IZWlnaHQgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWlu
U2l6ZSwgc3R5bGUoKS5taW5IZWlnaHQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAg
IGludCBtYXhIZWlnaHQgPSBzdHlsZSgpLm1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDog
Y2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCkubWF4SGVpZ2h0KCks
IHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBpbnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlj
a25lc3NVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBzdHlsZSgpLmhlaWdodCgpLCB2aXNpYmxl
U2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWluSGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRo
aWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCkubWluSGVpZ2h0KCksIHZpc2libGVTaXplLCB2
aWV3cG9ydFNpemUpOworICAgIGludCBtYXhIZWlnaHQgPSBzdHlsZSgpLm1heEhlaWdodCgpLmlz
VW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0
eWxlKCkubWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCB2aWV3cG9ydFNpemUpOwogICAgIHNldEhl
aWdodChzdGQ6Om1heChtaW5IZWlnaHQsIHN0ZDo6bWluKG1heEhlaWdodCwgaCkpKTsKIAogICAg
IC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBtX21hcmdpbkJveC5zZXRUb3AobWluaW11
bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luVG9wKCksIHZpc2libGVTaXplLCByZW5kZXJW
aWV3KSk7Ci0gICAgbV9tYXJnaW5Cb3guc2V0Qm90dG9tKG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZSgpLm1hcmdpbkJvdHRvbSgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOworICAgIG1f
bWFyZ2luQm94LnNldFRvcChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5Ub3Ao
KSwgdmlzaWJsZVNpemUpKTsKKyAgICBtX21hcmdpbkJveC5zZXRCb3R0b20obWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luQm90dG9tKCksIHZpc2libGVTaXplKSk7CiB9CiAKIHZv
aWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IGZhZDMxYzZi
NjUwZjQ1NzBiMzcxOGJmYjM0ZDVmY2NlMGU3MTJlNTkuLmI3YmQ2OGQ5NGI0MTcxNWVjOGFkOTU2
YmRlZGQ3MWE5NmUzOTcyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KQEAgLTExNDMsNyArMTE0Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50
TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluCiAK
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKnBhaW50SW5mby5jb250
ZXh0KTsKIAotICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IG8tPnN0eWxlKCkuZ2V0Um91bmRlZEJv
cmRlckZvcihyLCAmby0+dmlldygpKTsKKyAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBvLT5zdHls
ZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Iociwgby0+dmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAg
ICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlpKCkudG9wTGVmdCgpLndpZHRoKCk7CiAKICAgICBD
R0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdCQ29sb3JTcGFjZVJlZigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDllMTI3MTBkZmM1NTg0
NzQ0ZTA0YmI0MGJiZjdiYThkZWQwNzFlNzUuLjczMWRiYTI2ODQ5ZDE0ZjBjZmI5ZDE0MDVmNDgw
OTZmMTY5NjFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKQEAgLTk2OSw3ICs5NjksNyBAQCBMYXlvdXRVbml0IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2Fs
UG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiBib3gsIFZlcnRpY2FsUG9zaXRpbwogICAgICAgICAg
ICAgICAgIGxpbmVIZWlnaHQgPSByZW5kZXJlci0+c3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQo
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBsaW5lSGVpZ2h0ID0gcmVuZGVy
ZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uKTsKLSAgICAgICAgICAgIHZl
cnRpY2FsUG9zaXRpb24gLT0gdmFsdWVGb3JMZW5ndGgocmVuZGVyZXItPnN0eWxlKCkudmVydGlj
YWxBbGlnbkxlbmd0aCgpLCBsaW5lSGVpZ2h0LCAmcmVuZGVyZXItPnZpZXcoKSk7CisgICAgICAg
ICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHZhbHVlRm9yTGVuZ3RoKHJlbmRlcmVyLT5zdHlsZSgp
LnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgbGluZUhlaWdodCwgcmVuZGVyZXItPnZpZXcoKS52aWV3
cG9ydFNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAppbmRleCA5MTE3MGQ2NDVjZjYzYTM2NmQ2YTkzZDI1
MmEyZmEwZDZlYWMyZTZlLi5jOTIxMmMzMjQ1NTEwYjIzMmQwNTA5YWE1NWYyNmFlZWE5NWMwZGZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCkBA
IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlJlbmRlclZp
ZXcuaCIKICNpbmNsdWRlICJTaGFwZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEs
NyArMTQyLDcgQEAgY29uc3QgU2hhcGUmIFNoYXBlSW5mbzxSZW5kZXJUeXBlPjo6Y29tcHV0ZWRT
aGFwZSgpIGNvbnN0CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpCb3g6IHsKICAgICAgICAgLy8gRklY
TUUgVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBjb21wdXRlIHRoZSByb3VuZGVkIGNvcm5lcnMgYXMg
c3BlY2lmaWVkIGluIGFsbCBjb25kaXRpb25zLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTgyCi0gICAgICAgIGNvbnN0IFJvdW5kZWRSZWN0
JiBzaGFwZVJlY3QgPSBtX3JlbmRlcmVyLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlv
dXRSZWN0KExheW91dFBvaW50KCksIG1fcmVmZXJlbmNlQm94TG9naWNhbFNpemUpLCAmKG1fcmVu
ZGVyZXIudmlldygpKSk7CisgICAgICAgIGNvbnN0IFJvdW5kZWRSZWN0JiBzaGFwZVJlY3QgPSBt
X3JlbmRlcmVyLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KExheW91dFBv
aW50KCksIG1fcmVmZXJlbmNlQm94TG9naWNhbFNpemUpLCBtX3JlbmRlcmVyLnZpZXcoKS52aWV3
cG9ydFNpemUoKSk7CiAgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlTGF5b3V0Qm94U2hh
cGUoc2hhcGVSZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKaW5kZXggZTAxMDdmZDZkOWUzYzRkYzA2ODJlODYzZjY1YTNhYTUxMGZkYTIwYy4uMGZj
NmE0M2VkYzRhNmM2MDFlMGVkZjI0NmQ1OTllOTdkY2Y4OTU0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0xMDUzLDE3ICsxMDUzLDE3
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFNoYWRvdyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93
RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQpCiAgICAgcmFyZURhdGEtPm1fYm94U2hhZG93ID0g
c3RkOjptb3ZlKHNoYWRvd0RhdGEpOwogfQogCi1zdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNh
bGNSYWRpaUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IExheW91dFNpemUmIHNp
emUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNh
bGNSYWRpaUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3JkZXIsIGNvbnN0IExheW91dFNpemUmIHNp
emUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICByZXR1cm4gUm91bmRlZFJl
Y3Q6OlJhZGlpKAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BM
ZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KSwKLSAgICAgICAgICAgIHZh
bHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHJl
bmRlclZpZXcpKSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIudG9w
UmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCksIHJlbmRlclZpZXcpLAotICAgICAgICAgICAg
dmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCks
IHJlbmRlclZpZXcpKSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIu
Ym90dG9tTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgcmVuZGVyVmlldyksCi0gICAgICAg
ICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tTGVmdCgpLmhlaWdodCgpLCBzaXplLmhl
aWdodCgpLCByZW5kZXJWaWV3KSksCi0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgo
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KSwK
LSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21SaWdodCgpLmhlaWdodCgp
LCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSkpOworICAgICAgICBMYXlvdXRTaXplKHZhbHVl
Rm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9y
dFNpemUpLAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcExlZnQoKS5oZWln
aHQoKSwgc2l6ZS5oZWlnaHQoKSwgdmlld3BvcnRTaXplKSksCisgICAgICAgIExheW91dFNpemUo
dmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCB2
aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0
KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSkpLAorICAgICAgICBMYXlv
dXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53
aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVy
LmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSwgdmlld3BvcnRTaXplKSksCisg
ICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lk
dGgoKSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgdmFsdWVGb3JM
ZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHZpZXdw
b3J0U2l6ZSkpKTsKIH0KIAogc3RhdGljIGZsb2F0IGNhbGNDb25zdHJhaW50U2NhbGVGb3IoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUm91bmRlZFJlY3Q6OlJhZGlpJiByYWRpaSkKQEAg
LTExMTUsMTEgKzExMTUsMTEgQEAgc2hvcnQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3Bh
Y2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+dmVydGljYWxfYm8KIHZvaWQgUmVuZGVy
U3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNob3J0IHYpIHsgU0VUX1ZBUihpbmhl
cml0ZWQsIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9CiB2b2lkIFJlbmRlclN0eWxl
OjpzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc2hvcnQgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwg
dmVydGljYWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9CiAKLVJvdW5kZWRSZWN0IFJlbmRlclN0eWxl
OjpnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNs
dWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKK1JvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRS
b3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewogICAgIFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0
KGJvcmRlclJlY3QpOwogICAgIGlmIChoYXNCb3JkZXJSYWRpdXMoKSkgewotICAgICAgICBSb3Vu
ZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9y
ZGVyUmVjdC5zaXplKCksIHJlbmRlclZpZXcpOworICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkg
cmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVyUmVjdC5zaXplKCks
IHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgIHJhZGlpLnNjYWxlKGNhbGNDb25zdHJhaW50U2NhbGVG
b3IoYm9yZGVyUmVjdCwgcmFkaWkpKTsKICAgICAgICAgcm91bmRlZFJlY3QuaW5jbHVkZUxvZ2lj
YWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSwgaW5jbHVkZUxvZ2ljYWxM
ZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIH0KQEAgLTE0MDAsNyArMTQw
MCw3IEBAIExlbmd0aCBSZW5kZXJTdHlsZTo6bGluZUhlaWdodCgpIGNvbnN0CiB9CiB2b2lkIFJl
bmRlclN0eWxlOjpzZXRMaW5lSGVpZ2h0KExlbmd0aCBzcGVjaWZpZWRMaW5lSGVpZ2h0KSB7IFNF
VF9WQVIoaW5oZXJpdGVkLCBsaW5lX2hlaWdodCwgc3BlY2lmaWVkTGluZUhlaWdodCk7IH0KIAot
aW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoUmVuZGVyVmlldyogcmVuZGVyVmll
dykgY29uc3QKK2ludCBSZW5kZXJTdHlsZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KGNvbnN0IEludFNp
emUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKIHsKICAgICBjb25zdCBMZW5ndGgmIGxoID0gbGluZUhl
aWdodCgpOwogCkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBpbnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVk
TGluZUhlaWdodChSZW5kZXJWaWV3KiByZW5kZXJWaWV3KSBjb25zdAogICAgICAgICByZXR1cm4g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGxoLCBmb250U2l6ZSgpKTsKIAogICAgIGlmIChsaC5pc1Zp
ZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGgsIDAs
IHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGgsIDAsIHZpZXdw
b3J0U2l6ZSk7CiAKICAgICByZXR1cm4gbGgudmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYWUwODc1ZDA3ZWQyMjBlZmU2MGM0
ZmRlNzdkZDBjMjZmY2ZjZWFiOS4uMGU4OTkyMGM5Y2I4ZWY4OTBhMzY3MTMwYWQ5ZTQ0YTNhNzY3
Nzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
QEAgLTU4OSw3ICs1ODksNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMZW5ndGgmIHNwZWNpZmll
ZExpbmVIZWlnaHQoKSBjb25zdDsKICAgICBMZW5ndGggbGluZUhlaWdodCgpIGNvbnN0OwotICAg
IGludCBjb21wdXRlZExpbmVIZWlnaHQoUmVuZGVyVmlldyogPSAwKSBjb25zdDsKKyAgICBpbnQg
Y29tcHV0ZWRMaW5lSGVpZ2h0KGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKSBjb25zdDsKIAog
ICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
V2hpdGVTcGFjZT4oaW5oZXJpdGVkX2ZsYWdzLl93aGl0ZV9zcGFjZSk7IH0KICAgICBzdGF0aWMg
Ym9vbCBhdXRvV3JhcChFV2hpdGVTcGFjZSB3cykKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0aFNpemUoTGVuZ3RoKHMud2lkdGgoKSwg
Rml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQpKSk7CiAgICAgfQogICAgIAotICAgIFJv
dW5kZWRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVj
dCwgUmVuZGVyVmlldyogPSAwLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBi
b29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CisgICAgUm91bmRlZFJl
Y3QgZ2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25z
dCBJbnRTaXplJiA9IEludFNpemUoKSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1
ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OwogICAgIFJvdW5k
ZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJS
ZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVk
SW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgTGF5b3V0VW5pdCB0
b3BXaWR0aCwgTGF5b3V0VW5pdCBib3R0b21XaWR0aCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDhlMDVkMGQ2Mzg3YjY4ZjU3MGRjMzRk
NGM2NDE0NjVjOTQ2YmNkNDEuLmE3N2VmMDdiYzc1NmZkNzYwZWI4OGRlMDliZDc2ODE4ZTNlYjdj
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cApAQCAtMTMxLDkgKzEzMSw5IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91
Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGZyYW1lKCku
ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpOwogfQogCi1zdGF0aWMgaW5saW5lIExheW91dFVu
aXQgcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxv
YXQgc2NhbGUsIGZsb2F0IG1heFNpemUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMg
aW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhjb25zdCBMZW5n
dGgmIGxlbmd0aCwgZmxvYXQgc2NhbGUsIGZsb2F0IG1heFNpemUsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSkKIHsKLSAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhTaXpl
LCByZW5kZXJWaWV3KSAqIChsZW5ndGguaXNGaXhlZCgpID8gc2NhbGUgOiAxKTsKKyAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhTaXplLCB2aWV3cG9ydFNpemUpICogKGxlbmd0
aC5pc0ZpeGVkKCkgPyBzY2FsZSA6IDEpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkIHNob3Vs
ZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVBy
ZWZlcnJlZCBzaG8KICAgICAgICAgcmV0dXJuIFJlbmRlclJlcGxhY2VkOjpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGgoc2hvdWxkQ29tcHV0ZVByZWZlcnJlZCk7CiAKICAgICBpZiAoc3ZnU1ZH
RWxlbWVudCgpLndpZHRoQXR0cmlidXRlRXN0YWJsaXNoZXNWaWV3cG9ydCgpKQotICAgICAgICBy
ZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhzdmdTVkdFbGVtZW50KCkuaW50cmlu
c2ljV2lkdGgoU1ZHU1ZHRWxlbWVudDo6SWdub3JlQ1NTUHJvcGVydGllcyksIHN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCks
ICZ2aWV3KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhz
dmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoU1ZHU1ZHRWxlbWVudDo6SWdub3JlQ1NTUHJv
cGVydGllcyksIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+YXZh
aWxhYmxlTG9naWNhbFdpZHRoKCksIHZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAKICAgICAvLyBT
VkcgZW1iZWRkZWQgdGhyb3VnaCBvYmplY3QvZW1iZWQvaWZyYW1lLgogICAgIGlmIChpc0VtYmVk
ZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkpCkBAIC0xNzcsNyArMTc3LDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0
KCkgY29uc3QKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBSZW5kZXJCbG9jazo6cmVtb3Zl
UGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3RfY2FzdDxSZW5kZXJTVkdSb290Jj4oKnRoaXMp
KTsKIAotICAgICAgICByZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhoZWlnaHQs
IHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9n
aWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyksICZ2aWV3KCkpOworICAgICAg
ICByZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhoZWlnaHQsIHN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChJ
bmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyksIHZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAgICAg
fQogCiAgICAgLy8gU1ZHIGVtYmVkZGVkIHRocm91Z2ggb2JqZWN0L2VtYmVkL2lmcmFtZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225585</attachid>
            <date>2014-03-01 20:12:39 -0800</date>
            <delta_ts>2014-03-01 20:57:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129569-20140301201238.patch</filename>
            <type>text/plain</type>
            <size>73456</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE4ZDc1OWFlYjIzMDgw
NmVlMTNkNjZhZDg0NDZiNTgwNGMyMDQwMC4uMmMwYTRmNzUwMTcxY2UwOWYxMTU1NGVlODFmMmJl
ZWU5Y2I3MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMZW5ndGggZnVuY3Rp
b25zIHRha2Ugdmlld3BvcnQgc2l6ZSBpbnN0ZWFkIG9mIFJlbmRlclZpZXcqCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRQb3NpdGlvbk9mZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpsaW5lSGVpZ2h0RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVk
U3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6aW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZhbHVlRm9y
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmdldFJl
Z2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bm9k
ZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Qm9yZGVySW1hZ2VTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE5pbmVQaWVjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNldHVwQ2xpcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lSGVpZ2h0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojph
c2NlbnRBbmREZXNjZW50Rm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUluZm88UmVuZGVyVHlwZT46OmNvbXB1
dGVkU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNvbXB1dGVkTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQpOgorCiAyMDE0LTAyLTI4ICBNYXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByb3VuZGVkSW50UG9pbnQocmVuZGVy
ZXJNYXBwZWRSZXN1bHQpID09IHJvdW5kZWRJbnRQb2ludChyZXN1bHQpIGluIFdlYkNvcmU6OlJl
bmRlckdlb21ldHJ5TWFwOjptYXBUb0NvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggNmJh
ZDIyNzg4ODk5ZTIyNmI5MmQ4YTFhOGMwYmFhMzc0MTQyYzM1Yy4uZDhhNmZjYTA2Nzg5MTQwMThj
YjU5MzU4ZmJkYzM3NjBiOGYwMTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMTAxLDcgKzIx
MDEsNyBAQCBfX1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDExYm9yZGVyUmlnaHRF
dgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gyMnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhFdgogX19a
Tks3V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxMXBhZGRpbmdMZWZ0RXYKIF9fWk5LN1dl
YkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MThjb21wdXRlZENTU1BhZGRpbmdFTlNfNkxlbmd0
aEUKLV9fWk43V2ViQ29yZTIxbWluaW11bVZhbHVlRm9yTGVuZ3RoRVJLTlNfNkxlbmd0aEVOU18x
MExheW91dFVuaXRFUE5TXzEwUmVuZGVyVmlld0ViCitfX1pON1dlYkNvcmUyMW1pbmltdW1WYWx1
ZUZvckxlbmd0aEVSS05TXzZMZW5ndGhFTlNfMTBMYXlvdXRVbml0RVJLTlNfN0ludFNpemVFCiBf
X1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDEycGFkZGluZ1JpZ2h0RXYKIF9fWk43
V2ViQ29yZTEwUmVuZGVyVmlldzE4dXBkYXRlTG9naWNhbFdpZHRoRXYKIF9fWk43V2ViQ29yZTEw
UmVuZGVyVmlldzE1Y2FsY0NvbHVtbldpZHRoRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcAppbmRleCA4NDIyZDcwNDUxNWY0NTMyOGM4ZDZhYjAzYjkyYjgyYThhZGZhM2Y5Li4x
NmY2YmEyNGYyMzRlOWJlZjQ2MTAxZTMwYzdhNzQ1YWRmYWRhNGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgc3RhdGljIEF0a0F0dHJp
YnV0ZVNldCogZ2V0QXR0cmlidXRlU2V0Rm9yQWNjZXNzaWJpbGl0eU9iamVjdChjb25zdCBBY2Nl
c3NpYmlsaXQKICAgICB9CiAKICAgICBpZiAoIXN0eWxlLT50ZXh0SW5kZW50KCkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICBpbnQgaW5kZW50YXRpb24gPSB2YWx1ZUZvckxlbmd0aChzdHlsZS0+
dGV4dEluZGVudCgpLCBvYmplY3QtPnNpemUoKS53aWR0aCgpLCAmcmVuZGVyZXItPnZpZXcoKSk7
CisgICAgICAgIGludCBpbmRlbnRhdGlvbiA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5k
ZW50KCksIG9iamVjdC0+c2l6ZSgpLndpZHRoKCksIHJlbmRlcmVyLT52aWV3KCkudmlld3BvcnRT
aXplKCkpOwogICAgICAgICBidWZmZXIucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCIlaSIsIGluZGVu
dGF0aW9uKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkZFRvQXRrQXR0cmlidXRlU2V0KHJlc3VsdCwg
YXRrX3RleHRfYXR0cmlidXRlX2dldF9uYW1lKEFUS19URVhUX0FUVFJfSU5ERU5UKSwgYnVmZmVy
LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDg2N2Y5MjEwYTY4ZmQ5ZDhlNWY1OGUyNmMzMmU1MTA2
ODkzMGI2ZDAuLmI5OGU4YjE2ZDllY2FkOWNiZGM4NzlmMWI1MjU0ZDNlYjU2N2Q2MGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CkBAIC02NTYsNyArNjU2LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBjcmVhdGVQ
b3NpdGlvbkxpc3RGb3JMYXllcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQKICAgICByZXR1cm4g
cG9zaXRpb25MaXN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UG9zaXRp
b25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBn
ZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRlclN0eWxlKiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlELCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgaWYgKCFzdHls
ZSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02ODMsNyArNjgzLDcgQEAgc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBD
U1NQcm9wZXIKICAgICAgICAgaWYgKGwudHlwZSgpID09IFdlYkNvcmU6OkZpeGVkKQogICAgICAg
ICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobC52YWx1ZSgpLCBzdHlsZSk7CiAg
ICAgICAgIGVsc2UgaWYgKGwuaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGwsIDAsIHJlbmRlclZp
ZXcpLCBzdHlsZSk7CisgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2
YWx1ZUZvckxlbmd0aChsLCAwLCB2aWV3cG9ydFNpemUpLCBzdHlsZSk7CiAgICAgICAgIHJldHVy
biBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShsKTsKICAgICB9CiAKQEAgLTcwNSwzMSArNzA1
LDMxIEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OmN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihSCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZUNvbG9yVmFsdWUoY29sb3IucmdiKCkpOwogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NW
YWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhjb25zdCBMZW5ndGhTaXplJiBy
YWRpdXMsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykK
K3N0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0
OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkg
PT0gUGVyY2VudCkKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUocmFkaXVzLndpZHRoKCkucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpKTsKICAgICBlbHNlCi0gICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21B
ZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgocmFkaXVzLndpZHRoKCksIDAsIHJlbmRl
clZpZXcpLCBzdHlsZSkpOworICAgICAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0aCgpLCAwLCB2aWV3cG9ydFNpemUp
LCBzdHlsZSkpOwogICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkudHlwZSgpID09IFBlcmNlbnQpCiAg
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHJhZGl1
cy5oZWlnaHQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkp
OwogICAgIGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMuaGVpZ2h0KCksIDAsIHJlbmRlclZpZXcpLCBzdHls
ZSkpOworICAgICAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZh
bHVlRm9yTGVuZ3RoKHJhZGl1cy5oZWlnaHQoKSwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUpKTsK
ICAgICByZXR1cm4gbGlzdDsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWU+IGdldEJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWU+IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1
cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUp
CiB7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJhZGl1cy5oZWlnaHQoKSkgewogICAgICAg
ICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQpCiAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocmFkaXVzLndpZHRoKCkucGVyY2VudCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwotICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgcmVuZGVy
VmlldyksIHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFs
dWVGb3JMZW5ndGgocmFkaXVzLndpZHRoKCksIDAsIHZpZXdwb3J0U2l6ZSksIHN0eWxlKTsKICAg
ICB9Ci0gICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhyYWRpdXMsIHN0eWxl
LCByZW5kZXJWaWV3KTsKKyAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHJh
ZGl1cywgc3R5bGUsIHZpZXdwb3J0U2l6ZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
TGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0
PiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUs
IGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgYm9vbCBzaG93SG9yaXpvbnRhbEJv
dHRvbUxlZnQgPSBzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpICE9IHN0eWxl
LT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkud2lkdGgoKTsKQEAgLTc0MCwxMCArNzQwLDEwIEBA
IHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzU2hvcnRoYW5kVmFs
dWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0CiAgICAgYm9vbCBzaG93VmVydGljYWxCb3R0b21SaWdo
dCA9IHNob3dWZXJ0aWNhbEJvdHRvbUxlZnQgfHwgKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJh
ZGl1cygpLmhlaWdodCgpICE9IHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkuaGVpZ2h0KCkp
OwogICAgIGJvb2wgc2hvd1ZlcnRpY2FsVG9wUmlnaHQgPSBzaG93VmVydGljYWxCb3R0b21SaWdo
dCB8fCAoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0gc3R5bGUtPmJv
cmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiB0b3BMZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3Jk
ZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiB0b3BSaWdodFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHls
ZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUsIHJlbmRlclZpZXcpOwotICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbVJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWVzKHN0eWxlLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLCBzdHlsZSwgcmVuZGVyVmll
dyk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90dG9tTGVmdFJhZGl1cyA9IGdldEJvcmRl
clJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHls
ZSwgcmVuZGVyVmlldyk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdG9wTGVmdFJhZGl1cyA9
IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygp
LCBzdHlsZSwgdmlld3BvcnRTaXplKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0b3BSaWdo
dFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyVG9wUmln
aHRSYWRpdXMoKSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gYm90dG9tUmlnaHRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUt
PmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLCB2aWV3cG9ydFNpemUpOworICAgIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IGJvdHRvbUxlZnRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3Ju
ZXJWYWx1ZXMoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUsIHZpZXdwb3J0
U2l6ZSk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBob3Jpem9udGFsUmFkaWkgPSBDU1NW
YWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaG9yaXpvbnRhbFJhZGlpLT5h
cHBlbmQodG9wTGVmdFJhZGl1cy0+aXRlbSgwKSk7CkBAIC05NjAsNyArOTYwLDcgQEAgUGFzc1Jl
ZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIoY29uc3Qg
UmVuZGVyU3R5bGUqIHN0eWwKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
LXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFk
dGgoY29uc3QgR3JpZExlbmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc3Bl
Y2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdyaWRMZW5ndGgmIHRyYWNrQnJl
YWR0aCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCiB7CiAgICAgaWYgKCF0cmFja0JyZWFkdGguaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHRyYWNrQnJlYWR0aC5mbGV4KCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRlIpOwpAQCAtOTY5LDE5ICs5NjksMTkgQEAgc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkTGVu
Z3RoJiB0cmEKICAgICBpZiAodHJhY2tCcmVhZHRoTGVuZ3RoLmlzQXV0bygpKQogICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7
CiAgICAgaWYgKHRyYWNrQnJlYWR0aExlbmd0aC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aCh0cmFja0Jy
ZWFkdGhMZW5ndGgsIDAsIHJlbmRlclZpZXcpLCBzdHlsZSk7CisgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHRyYWNrQnJlYWR0aExlbmd0aCwgMCwg
dmlld3BvcnRTaXplKSwgc3R5bGUpOwogICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
Rm9yTGVuZ3RoKHRyYWNrQnJlYWR0aExlbmd0aCwgc3R5bGUpOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKGNvbnN0IEdyaWRU
cmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHNwZWNpZmllZFZhbHVl
Rm9yR3JpZFRyYWNrU2l6ZShjb25zdCBHcmlkVHJhY2tTaXplJiB0cmFja1NpemUsIGNvbnN0IFJl
bmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIHN3
aXRjaCAodHJhY2tTaXplLnR5cGUoKSkgewogICAgIGNhc2UgTGVuZ3RoVHJhY2tTaXppbmc6Ci0g
ICAgICAgIHJldHVybiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tTaXpl
Lmxlbmd0aCgpLCBzdHlsZSwgcmVuZGVyVmlldyk7CisgICAgICAgIHJldHVybiBzcGVjaWZpZWRW
YWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tTaXplLmxlbmd0aCgpLCBzdHlsZSwgdmlld3Bv
cnRTaXplKTsKICAgICBjYXNlIE1pbk1heFRyYWNrU2l6aW5nOgogICAgICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBtaW5NYXhUcmFja0JyZWFkdGhzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOwotICAgICAgICBtaW5NYXhUcmFja0JyZWFkdGhzLT5hcHBlbmQoc3BlY2lm
aWVkVmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZS5taW5UcmFja0JyZWFkdGgoKSwg
c3R5bGUsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgbWluTWF4VHJhY2tCcmVhZHRocy0+YXBwZW5k
KHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUubWF4VHJhY2tCcmVh
ZHRoKCksIHN0eWxlLCByZW5kZXJWaWV3KSk7CisgICAgICAgIG1pbk1heFRyYWNrQnJlYWR0aHMt
PmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tTaXplLm1pblRy
YWNrQnJlYWR0aCgpLCBzdHlsZSwgdmlld3BvcnRTaXplKSk7CisgICAgICAgIG1pbk1heFRyYWNr
QnJlYWR0aHMtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0JyZWFkdGgodHJhY2tT
aXplLm1heFRyYWNrQnJlYWR0aCgpLCBzdHlsZSwgdmlld3BvcnRTaXplKSk7CiAgICAgICAgIHJl
dHVybiBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoIm1pbm1heCgiLCBtaW5NYXhUcmFja0JyZWFk
dGhzKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xMDA2LDcgKzEwMDYs
NyBAQCBzdGF0aWMgdm9pZCBhZGRWYWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgoY29uc3Qg
TmFtZWRHcmlkTGluZXNNYXAmIG5hbWVkR3JpZAogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWY8
Q1NTVmFsdWU+IHZhbHVlRm9yR3JpZFRyYWNrTGlzdChHcmlkVHJhY2tTaXppbmdEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFs
dWVGb3JHcmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIGNvbnN0IFZlY3RvcjxHcmlkVHJhY2tTaXplPiYg
dHJhY2tTaXplcyA9IGRpcmVjdGlvbiA9PSBGb3JDb2x1bW5zID8gc3R5bGUtPmdyaWRDb2x1bW5z
KCkgOiBzdHlsZS0+Z3JpZFJvd3MoKTsKICAgICBjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYgbmFt
ZWRHcmlkTGluZXMgPSBkaXJlY3Rpb24gPT0gRm9yQ29sdW1ucyA/IHN0eWxlLT5uYW1lZEdyaWRD
b2x1bW5MaW5lcygpIDogc3R5bGUtPm5hbWVkR3JpZFJvd0xpbmVzKCk7CkBAIC0xMDMxLDcgKzEw
MzEsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEdy
aWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3RpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCB0cmFja1NpemVzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBhZGRWYWx1ZXNGb3JOYW1lZEdyaWRMaW5lc0F0SW5kZXgobmFtZWRHcmlkTGluZXMsIGks
IGxpc3QuZ2V0KCkpOwotICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoc3BlY2lmaWVkVmFs
dWVGb3JHcmlkVHJhY2tTaXplKHRyYWNrU2l6ZXNbaV0sIHN0eWxlLCByZW5kZXJWaWV3KSk7Cisg
ICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1Np
emUodHJhY2tTaXplc1tpXSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0xNDU2LDcgKzE0NTYsNyBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGZv
bnRGYW1pbHlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIHJldHVybiBsaXN0Owog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21TdHls
ZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFz
c1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbGluZUhlaWdodEZyb21TdHlsZShSZW5kZXJTdHlsZSog
c3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBMZW5ndGggbGVuZ3Ro
ID0gc3R5bGUtPmxpbmVIZWlnaHQoKTsKICAgICBpZiAobGVuZ3RoLmlzTmVnYXRpdmUoKSkKQEAg
LTE0NjcsNyArMTQ2Nyw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5l
SGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyCiAgICAgICAgIC8vIE9u
IHRoZSBvdGhlciBoYW5kLCBzaW5jZSBmb250LXNpemUgZG9lc24ndCBpbmNsdWRlIHRoZSB6b29t
IGZhY3Rvciwgd2UgcmVhbGx5IGNhbid0IGRvCiAgICAgICAgIC8vIHRoYXQgaGVyZSBlaXRoZXIu
CiAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0YXRpY19jYXN0PGludD4o
bGVuZ3RoLnBlcmNlbnQoKSAqIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5zcGVjaWZpZWRTaXpl
KCkpIC8gMTAwLCBzdHlsZSk7Ci0gICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoZmxv
YXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIDAsIHJlbmRlclZpZXcpLCBzdHlsZSk7CisgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIDAs
IHZpZXdwb3J0U2l6ZSksIHN0eWxlKTsKIH0KIAogc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGZvbnRTaXplRnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSkKQEAgLTE4OTksNyAr
MTg5OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnBy
b3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGg6CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxW
YWx1ZShzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCksIHN0eWxlLmdldCgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvdHRvbToKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNl
dFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUJvdHRvbSwgbV9ub2RlLT5kb2N1bWVudCgp
LnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1
ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlCb3R0b20sIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUo
KSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hBbGlnbjoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+Ym94
QWxpZ24oKSk7CiAjaWYgRU5BQkxFKENTU19CT1hfREVDT1JBVElPTl9CUkVBSykKQEAgLTIwNDMs
NyArMjA0Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICBjb21wdXRl
ZEZvbnQtPnZhcmlhbnQgPSBmb250VmFyaWFudEZyb21TdHlsZShzdHlsZS5nZXQoKSk7CiAgICAg
ICAgICAgICBjb21wdXRlZEZvbnQtPndlaWdodCA9IGZvbnRXZWlnaHRGcm9tU3R5bGUoc3R5bGUu
Z2V0KCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5zaXplID0gZm9udFNpemVGcm9tU3R5
bGUoc3R5bGUuZ2V0KCkpOwotICAgICAgICAgICAgY29tcHV0ZWRGb250LT5saW5lSGVpZ2h0ID0g
bGluZUhlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRl
clZpZXcoKSk7CisgICAgICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVp
Z2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygp
ID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRT
aXplKCkpOwogICAgICAgICAgICAgY29tcHV0ZWRGb250LT5mYW1pbHkgPSBmb250RmFtaWx5RnJv
bVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wdXRlZEZvbnQucmVs
ZWFzZSgpOwogICAgICAgICB9CkBAIC0yMDg0LDE0ICsyMDg0LDE0IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0CiAgICAgICAgIC8vIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgZXhwbGlj
aXQgZ3JpZCBvciB0aGUgbnVtYmVyIG9mIGltcGxpY2l0IHRyYWNrcyBhZGRlZCB0byB0aGUgZ3Jp
ZC4gU2VlCiAgICAgICAgIC8vIGh0dHA6Ly9saXN0cy53My5vcmcvQXJjaGl2ZXMvUHVibGljL3d3
dy1zdHlsZS8yMDEzTm92LzAwMTQuaHRtbAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
R3JpZEF1dG9Db2x1bW5zOgotICAgICAgICAgICAgcmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3Jp
ZFRyYWNrU2l6ZShzdHlsZS0+Z3JpZEF1dG9Db2x1bW5zKCksIHN0eWxlLmdldCgpLCBtX25vZGUt
PmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWZpZWRW
YWx1ZUZvckdyaWRUcmFja1NpemUoc3R5bGUtPmdyaWRBdXRvQ29sdW1ucygpLCBzdHlsZS5nZXQo
KSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEdyaWRBdXRvUm93czoKLSAgICAgICAgICAgIHJldHVybiBzcGVjaWZp
ZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoc3R5bGUtPmdyaWRBdXRvUm93cygpLCBzdHlsZS5nZXQo
KSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4g
c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHN0eWxlLT5ncmlkQXV0b1Jvd3MoKSwgc3R5
bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRUZW1wbGF0ZUNvbHVtbnM6Ci0gICAgICAgICAg
ICByZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEZvckNvbHVtbnMsIHJlbmRlcmVyLCBzdHls
ZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVGb3JHcmlkVHJhY2tMaXN0KEZvckNvbHVtbnMsIHJlbmRlcmVyLCBzdHlsZS5n
ZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEdyaWRUZW1wbGF0ZVJvd3M6Ci0gICAgICAgICAgICByZXR1cm4g
dmFsdWVGb3JHcmlkVHJhY2tMaXN0KEZvclJvd3MsIHJlbmRlcmVyLCBzdHlsZS5nZXQoKSwgbV9u
b2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVG
b3JHcmlkVHJhY2tMaXN0KEZvclJvd3MsIHJlbmRlcmVyLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5k
b2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkt
PnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0R3JpZENvbHVtblN0YXJ0OgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlRm9yR3JpZFBv
c2l0aW9uKHN0eWxlLT5ncmlkSXRlbUNvbHVtblN0YXJ0KCkpOwpAQCAtMjE1OCw3ICsyMTU4LDcg
QEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlW
YWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+aW1hZ2VSZXNvbHV0aW9uKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBQWCk7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NT
UHJvcGVydHlMZWZ0LCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAg
ICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0
eUxlZnQsIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgogICAgICAgICAgICAgaWYgKCFzdHlsZS0+bGV0
dGVyU3BhY2luZygpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwpAQCAtMjE2OCw3ICsyMTY4LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQ
b29sKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPmxpbmVDbGFtcCgpLnZhbHVl
KCksIHN0eWxlLT5saW5lQ2xhbXAoKS5pc1BlcmNlbnRhZ2UoKSA/IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSA6IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQ6Ci0gICAgICAgICAgICByZXR1cm4gbGluZUhl
aWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXco
KSk7CisgICAgICAgICAgICByZXR1cm4gbGluZUhlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSwg
bV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUxpc3RTdHlsZUltYWdlOgogICAgICAgICAgICAgaWYgKHN0eWxlLT5saXN0U3R5bGVJ
bWFnZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdHlsZS0+bGlzdFN0eWxlSW1hZ2UoKS0+
Y3NzVmFsdWUoKTsKQEAgLTIxOTIsNyArMjE5Miw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
CiAgICAgICAgICAgICAgICAgLy8gUmVuZGVyQm94IGdpdmVzIGEgbWFyZ2luUmlnaHQoKSB0aGF0
IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjaGlsZCBib3gK
ICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcg
Ym94LCB3aGVuIGRpc3BsYXkgPT0gQkxPQ0suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUK
ICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIG1hcmdpbi1yaWdodCAl
IGluc3RlYWQgb2YgcmVseWluZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5SaWdodCgpIHZhbHVlLgot
ICAgICAgICAgICAgICAgIHZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0
LCB0b1JlbmRlckJveChyZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNv
bnRlbnQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94
KHJlbmRlcmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpLCBtX25v
ZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZp
ZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHZhbHVlID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5SaWdodCgp
OwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUsIHN0eWxl
LmdldCgpKTsKQEAgLTIyODMsNyArMjI4Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQb3NpdGlvbjoKICAgICAgICAgICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+cG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlSaWdodDoKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZh
bHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVJpZ2h0LCBtX25vZGUtPmRvY3VtZW50KCkucmVu
ZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0
eWxlLmdldCgpLCBDU1NQcm9wZXJ0eVJpZ2h0LCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmll
dygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJ
bnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnVieVBvc2l0aW9uOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5ydWJ5
UG9zaXRpb24oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUYWJsZUxheW91dDoKQEAgLTIz
ODQsNyArMjM4NCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VHJhbnNmb3JtOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgp
LmNyZWF0ZVZhbHVlKHN0eWxlLT50ZXh0VHJhbnNmb3JtKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VG9wOgotICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5
bGUuZ2V0KCksIENTU1Byb3BlcnR5VG9wLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygp
KTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgp
LCBDU1NQcm9wZXJ0eVRvcCwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9k
ZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsK
ICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpOgogICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT51bmljb2RlQmlkaSgpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ246CkBAIC0yNjUwLDkgKzI2NTAsOSBAQCBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNC
b3goKSkKICAgICAgICAgICAgICAgICAgICAgYm94ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5i
b3JkZXJCb3hSZWN0KCk7CiAKLSAgICAgICAgICAgICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKTsKLSAgICAgICAgICAgICAgICBsaXN0
LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5
bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVuZGVyVmlldyksIHN0eWxl
LmdldCgpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwg
Ym94LmhlaWdodCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUgPSBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVy
VmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkg
OiBJbnRTaXplKCk7CisgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblgo
KSwgYm94LndpZHRoKCksIHZpZXdwb3J0U2l6ZSksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlLT5wZXJzcGVjdGl2ZU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCB2aWV3cG9y
dFNpemUpLCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBzdHlsZS5nZXQoKSkpOwpAQCAtMjY4
MiwxMyArMjY4MiwxMyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdDoKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+dXNlclNlbGVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5
bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAg
cmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0
UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8g
bV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXpl
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Ci0g
ICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVu
ZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+
ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygp
LT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3BMZWZ0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nv
cm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25v
ZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3Jk
ZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygpLCBzdHlsZS5n
ZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzOgotICAgICAgICAgICAgcmV0dXJuIGdl
dEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCBz
dHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAg
ICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8g
bV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXpl
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q2xpcDogewogICAgICAgICAgICAgaWYgKCFz
dHlsZS0+aGFzQ2xpcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKQEAgLTI3MTAsOSArMjcxMCw5IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5p
c0JveCgpKQogICAgICAgICAgICAgICAgICAgICBib3ggPSB0b1JlbmRlckJveChyZW5kZXJlcikt
PmJvcmRlckJveFJlY3QoKTsKIAotICAgICAgICAgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZp
ZXcgPSBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpOwotICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChz
dHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgcmVuZGVyVmlldyksIHN0eWxl
LmdldCgpKSk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCksIGJv
eC5oZWlnaHQoKSwgcmVuZGVyVmlldyksIHN0eWxlLmdldCgpKSk7CisgICAgICAgICAgICAgICAg
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID0gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZp
ZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDog
SW50U2l6ZSgpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhl
bFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3JtT3JpZ2luWCgpLCBi
b3gud2lkdGgoKSwgdmlld3BvcnRTaXplKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAg
ICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCB2aWV3cG9ydFNpemUp
LCBzdHlsZS5nZXQoKSkpOwogICAgICAgICAgICAgICAgIGlmIChzdHlsZS0+dHJhbnNmb3JtT3Jp
Z2luWigpICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCksIHN0eWxlLmdldCgpKSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtMjg4NSw3ICsyODg1LDcgQEAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgogICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yTmluZVBpZWNlSW1hZ2Uoc3R5bGUtPmJvcmRlckltYWdlKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgotICAgICAgICAgICAgcmV0dXJu
IGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNT
aG9ydGhhbmRWYWx1ZShzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXco
KSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50
U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgogICAgICAgICAg
ICAgcmV0dXJuIGdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhib3Jk
ZXJSaWdodFNob3J0aGFuZCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCmluZGV4
IGMwNjI3MzZiM2NjOGM5MDBlNTY2Mjg0ODVlODA3YmZlOWZmM2Y4ZTAuLjBhODJhMTY0Yzg1NGU4
ODMxMjk5ZTllNzJkZmEzY2RmZTQ2ZDViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTg4Niw3ICs4ODYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdp
dGhMZW5ndGgoKSkKICAgICAgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUtPmNzc0Nh
bGNWYWx1ZSgpLT50b0NhbGNWYWx1ZShzdHlsZVJlc29sdmVyLT5wYXJlbnRTdHlsZSgpLCBzdHls
ZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCkpLT5ldmFsdWF0ZShwYXJlbnRTaXplKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxl
bmd0aCgpKQotICAgICAgICAgICAgICAgIHNpemUgPSB2YWx1ZUZvckxlbmd0aChwcmltaXRpdmVW
YWx1ZS0+dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCksIDAsIHN0eWxlUmVzb2x2ZXItPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgICAgICBzaXplID0gdmFsdWVGb3JMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpLCAwLCBzdHlsZVJl
c29sdmVyLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50
KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9MZW5ndGhGdW5jdGlvbnMuY3BwCmluZGV4IDU3NDljODk0NjY0YzJiYzZlZWJhYjA4MmY2MjI5
NGJkOWJiNTQwNTQuLmIwYmY0NmZjMzUwOTVkZjBhYzg4NjgwNDE4NGNiZGMwMmZjMzhkYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuY3BwCkBAIC0yNCwyMyArMjQsMjMgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKIAorI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKICNpbmNsdWRlICJM
ZW5ndGhTaXplLmgiCi0jaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWludCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgs
IExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJv
dW5kUGVyY2VudGFnZXMpCitpbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4obWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCByZW5kZXJW
aWV3LCByb3VuZFBlcmNlbnRhZ2VzKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obWlu
aW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3cG9ydFNpemUsIHJv
dW5kUGVyY2VudGFnZXMpKTsKIH0KIAotaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmll
dywgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQoraW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCiB7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4odmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHJlbmRlclZpZXcs
IHJvdW5kUGVyY2VudGFnZXMpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZv
ckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgdmlld3BvcnRTaXplLCByb3VuZFBlcmNlbnRh
Z2VzKSk7CiB9CiAKLUxheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmll
dywgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQorTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKIHsKICAgICBzd2l0
Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpAQCAtNTMsMjUgKzUzLDEzIEBA
IExheW91dFVuaXQgbWluaW11bVZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBM
YXlvdXRVbml0IG1heGltdW1WYWx1ZSwKICAgICBjYXNlIENhbGN1bGF0ZWQ6CiAgICAgICAgIHJl
dHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7CiAgICAgY2Fz
ZSBWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpCi0gICAg
ICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS53aWR0
aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHZpZXdwb3J0U2l6ZS53aWR0
aCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBj
YXNlIFZpZXdwb3J0UGVyY2VudGFnZUhlaWdodDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpCi0g
ICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyZW5kZXJWaWV3LT52aWV3cG9ydFNpemUoKS5o
ZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCh2aWV3cG9ydFNpemUu
aGVpZ2h0KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwog
ICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgotICAgICAgICBpZiAocmVuZGVyVmlldykg
ewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5kZXJWaWV3LT52aWV3cG9y
dFNpemUoKTsKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0ZDo6bWluKHZpZXdwb3J0
U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCks
IHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KCkgLyAxMDAuMGYpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4OgotICAgICAgICBp
ZiAocmVuZGVyVmlldykgewotICAgICAgICAgICAgSW50U2l6ZSB2aWV3cG9ydFNpemUgPSByZW5k
ZXJWaWV3LT52aWV3cG9ydFNpemUoKTsKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0
ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVu
Z3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptYXgodmlld3Bv
cnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgRmlsbEF2YWlsYWJsZToKICAg
ICBjYXNlIEF1dG86CiAgICAgICAgIHJldHVybiAwOwpAQCAtODksNyArNzcsNyBAQCBMYXlvdXRV
bml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5p
dCBtYXhpbXVtVmFsdWUsCiAgICAgcmV0dXJuIDA7CiB9CiAKLUxheW91dFVuaXQgdmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5k
ZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2VudGFnZXMpCitMYXlvdXRVbml0IHZh
bHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1
ZSwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplLCBib29sIHJvdW5kUGVyY2VudGFnZXMpCiB7
CiAgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CiAgICAgY2FzZSBGaXhlZDoKQEAgLTk5LDcg
Kzg3LDcgQEAgTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwg
TGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYKICAgICBjYXNlIFZpZXdwb3J0UGVyY2Vu
dGFnZUhlaWdodDoKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKICAgICBjYXNlIFZp
ZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcmVuZGVyVmlldywgcm91bmRQZXJjZW50YWdlcyk7Cisg
ICAgICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUs
IHZpZXdwb3J0U2l6ZSwgcm91bmRQZXJjZW50YWdlcyk7CiAgICAgY2FzZSBGaWxsQXZhaWxhYmxl
OgogICAgIGNhc2UgQXV0bzoKICAgICAgICAgcmV0dXJuIG1heGltdW1WYWx1ZTsKQEAgLTExOCw3
ICsxMDYsNyBAQCBMYXlvdXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3Ro
LCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVgogfQogCiAvLyBGSVhNRTogd2hlbiBz
dWJwaXhlbCBsYXlvdXQgaXMgc3VwcG9ydGVkIHRoaXMgY29weSBvZiBmbG9hdFZhbHVlRm9yTGVu
Z3RoKCkgY2FuIGJlIHJlbW92ZWQuIFNlZSBidWcgNzExNDMuCi1mbG9hdCBmbG9hdFZhbHVlRm9y
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVu
ZGVyVmlldyogcmVuZGVyVmlldykKK2Zsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVu
Z3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUpCiB7CiAgICAgc3dpdGNoIChsZW5ndGgudHlwZSgpKSB7CiAgICAgY2FzZSBGaXhl
ZDoKQEAgLTEzMSwyNSArMTE5LDEzIEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWCiAgICAgY2Fz
ZSBDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1bGF0ZWRWYWx1
ZShtYXhpbXVtVmFsdWUpOyAgICAgICAgICAgICAgICAKICAgICBjYXNlIFZpZXdwb3J0UGVyY2Vu
dGFnZVdpZHRoOgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlld3BvcnRTaXplLndpZHRoKCkg
KiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2Ug
Vmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgp
LmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEw
MC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46Ci0gICAgICAgIGlmIChyZW5k
ZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXct
PnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3Rk
OjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5n
dGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2
aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNl
bnRhZ2VNYXg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXpl
IHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXplLndpZHRoKCksIHZp
ZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkg
LyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7CiAgICAgY2FzZSBSZWxhdGl2ZToKICAgICBjYXNlIEludHJpbnNpYzoKICAgICBjYXNlIE1p
bkludHJpbnNpYzoKQEAgLTE2NCw3ICsxNDAsNyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVgog
ICAgIHJldHVybiAwOwogfQogCi1mbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYgbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitm
bG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtYXhp
bXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBzd2l0Y2ggKGxl
bmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpAQCAtMTc3LDI1ICsxNTMsMTMgQEAgZmxv
YXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgbWF4aW11
bVZhbHVlLCBSZW5kZXJWaWV3KgogICAgIGNhc2UgQ2FsY3VsYXRlZDoKICAgICAgICAgcmV0dXJu
IGxlbmd0aC5ub25OYW5DYWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKICAgICBjYXNlIFZp
ZXdwb3J0UGVyY2VudGFnZVdpZHRoOgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLndp
ZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlld3BvcnRT
aXplLndpZHRoKCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYp
OwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgotICAgICAgICBpZiAocmVuZGVy
VmlldykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJlbmRlclZpZXctPnZp
ZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgp
IC8gMTAwLjBmKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VM
ZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNaW46Ci0gICAg
ICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9
IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWln
aHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAq
IGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBW
aWV3cG9ydFBlcmNlbnRhZ2VNYXg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAg
ICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwot
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oc3RkOjptYXgodmlld3BvcnRTaXpl
LndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgo
KSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5n
dGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBSZWxhdGl2ZToKICAgICBjYXNlIEludHJpbnNpYzoK
ICAgICBjYXNlIE1pbkludHJpbnNpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlvbnMuaApp
bmRleCA2YjQxMDI5MTg2NGJiYjM3YzdiMzExY2E5MDJmMDdiOTdiZjZkZDYyLi41NjAyMmIzYWM2
NjM3MzljMTM4ODE2ZDkzYjYxZTZiZDcwMDA5NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1
bmN0aW9ucy5oCkBAIC0yNCwyMCArMjQsMjEgQEAKICNpZm5kZWYgTGVuZ3RoRnVuY3Rpb25zX2gK
ICNkZWZpbmUgTGVuZ3RoRnVuY3Rpb25zX2gKIAorI2luY2x1ZGUgIkludFNpemUuaCIKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFNpemU7CiBjbGFzcyBMYXlvdXRVbml0Owot
Y2xhc3MgUmVuZGVyVmlldzsKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIAot
aW50IG1pbmltdW1JbnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1h
eGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxz
ZSk7Ci1pbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2Up
OwotTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqID0gMCwgYm9vbCByb3VuZFBlcmNlbnRhZ2Vz
ID0gZmFsc2UpOwotTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlv
dXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFn
ZXMgPSBmYWxzZSk7Ci1mbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExh
eW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiA9IDApOwotZmxvYXQgZmxvYXRWYWx1
ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcq
ID0gMCk7CitpbnQgbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgYm9vbCByb3Vu
ZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworaW50IGludFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0
aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwg
Ym9vbCByb3VuZFBlcmNlbnRhZ2VzID0gZmFsc2UpOworTGF5b3V0VW5pdCBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IElu
dFNpemUmID0gSW50U2l6ZSgpLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitMYXlv
dXRVbml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZh
bHVlLCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzID0g
ZmFsc2UpOworZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRV
bml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOworZmxvYXQgZmxv
YXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBmbG9hdCBtYXhpbXVtVmFsdWUsIGNvbnN0
IEludFNpemUmID0gSW50U2l6ZSgpKTsKIEZsb2F0U2l6ZSBmbG9hdFNpemVGb3JMZW5ndGhTaXpl
KGNvbnN0IExlbmd0aFNpemUmLCBjb25zdCBGbG9hdFNpemUmKTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOGNhMTBlOTZiOWU2Y2Y4NWM3NzEz
YWVjYjU2MTUwNDEzOGE3MGFhMS4uNmRjZWNjYTFkMDQ2MzczMDZhMzU3MTg3Y2Q4YzMyMDVhYTVi
NWNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xODk4LDcgKzE4OTgsNyBAQCBib29s
IERvY3VtZW50Ojppc1BhZ2VCb3hWaXNpYmxlKGludCBwYWdlSW5kZXgpCiB2b2lkIERvY3VtZW50
OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdl
U2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2luQm90dG9t
LCBpbnQmIG1hcmdpbkxlZnQpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IGVu
c3VyZVN0eWxlUmVzb2x2ZXIoKS5zdHlsZUZvclBhZ2UocGFnZUluZGV4KTsKLSAgICBSZW5kZXJW
aWV3KiB2aWV3ID0gcmVuZGVyVmlldygpOworICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSA9IHJlbmRlclZpZXcoKSA/IHJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXpl
KCk7CiAKICAgICBpbnQgd2lkdGggPSBwYWdlU2l6ZS53aWR0aCgpOwogICAgIGludCBoZWlnaHQg
PSBwYWdlU2l6ZS5oZWlnaHQoKTsKQEAgLTE5MTcsOCArMTkxNyw4IEBAIHZvaWQgRG9jdW1lbnQ6
OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VT
aXplLCBpbnQmCiAgICAgICAgIExlbmd0aFNpemUgc2l6ZSA9IHN0eWxlLT5wYWdlU2l6ZSgpOwog
ICAgICAgICBBU1NFUlQoc2l6ZS53aWR0aCgpLmlzRml4ZWQoKSk7CiAgICAgICAgIEFTU0VSVChz
aXplLmhlaWdodCgpLmlzRml4ZWQoKSk7Ci0gICAgICAgIHdpZHRoID0gdmFsdWVGb3JMZW5ndGgo
c2l6ZS53aWR0aCgpLCAwLCB2aWV3KTsKLSAgICAgICAgaGVpZ2h0ID0gdmFsdWVGb3JMZW5ndGgo
c2l6ZS5oZWlnaHQoKSwgMCwgdmlldyk7CisgICAgICAgIHdpZHRoID0gdmFsdWVGb3JMZW5ndGgo
c2l6ZS53aWR0aCgpLCAwLCB2aWV3cG9ydFNpemUpOworICAgICAgICBoZWlnaHQgPSB2YWx1ZUZv
ckxlbmd0aChzaXplLmhlaWdodCgpLCAwLCB2aWV3cG9ydFNpemUpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTE5MjgsMTAgKzE5MjgsMTAgQEAgdm9pZCBEb2N1bWVu
dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFn
ZVNpemUsIGludCYKIAogICAgIC8vIFRoZSBwZXJjZW50YWdlIGlzIGNhbGN1bGF0ZWQgd2l0aCBy
ZXNwZWN0IHRvIHRoZSB3aWR0aCBldmVuIGZvciBtYXJnaW4gdG9wIGFuZCBib3R0b20uCiAgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMi9ib3guaHRtbCNtYXJnaW4tcHJvcGVydGllcwot
ICAgIG1hcmdpblRvcCA9IHN0eWxlLT5tYXJnaW5Ub3AoKS5pc0F1dG8oKSA/IG1hcmdpblRvcCA6
IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Ub3AoKSwgd2lkdGgsIHZpZXcpOwotICAg
IG1hcmdpblJpZ2h0ID0gc3R5bGUtPm1hcmdpblJpZ2h0KCkuaXNBdXRvKCkgPyBtYXJnaW5SaWdo
dCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5SaWdodCgpLCB3aWR0aCwgdmlldyk7
Ci0gICAgbWFyZ2luQm90dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0bygpID8gbWFy
Z2luQm90dG9tIDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkJvdHRvbSgpLCB3aWR0
aCwgdmlldyk7Ci0gICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkg
PyBtYXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lk
dGgsIHZpZXcpOworICAgIG1hcmdpblRvcCA9IHN0eWxlLT5tYXJnaW5Ub3AoKS5pc0F1dG8oKSA/
IG1hcmdpblRvcCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5tYXJnaW5Ub3AoKSwgd2lkdGgs
IHZpZXdwb3J0U2l6ZSk7CisgICAgbWFyZ2luUmlnaHQgPSBzdHlsZS0+bWFyZ2luUmlnaHQoKS5p
c0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblJp
Z2h0KCksIHdpZHRoLCB2aWV3cG9ydFNpemUpOworICAgIG1hcmdpbkJvdHRvbSA9IHN0eWxlLT5t
YXJnaW5Cb3R0b20oKS5pc0F1dG8oKSA/IG1hcmdpbkJvdHRvbSA6IGludFZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLT5tYXJnaW5Cb3R0b20oKSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSk7CisgICAgbWFyZ2lu
TGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogaW50VmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSk7CiB9
CiAKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0eWxlUmVzb2x2ZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuY3BwCmluZGV4IDVlZWIzMWU0NmY4NTFmNzRiNzM4NWRjYzBiZmFj
OTljNzU5MTQyMTcuLmE4YzVmNzM2NTM1NGJlY2NlZWUzZWJiMDBmODhkNjg3MDcxOTZhNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTE0MywzMCArMTQzLDMw
IEBAIFBhdGggSFRNTEFyZWFFbGVtZW50OjpnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYgc2l6
ZSkgY29uc3QKICAgICB9CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IGRvY3VtZW50KCkucmVuZGVyVmlldygpOworICAgIGNvbnN0IEludFNpemUmIHZpZXdw
b3J0U2l6ZSA9IGRvY3VtZW50KCkucmVuZGVyVmlldygpID8gZG9jdW1lbnQoKS5yZW5kZXJWaWV3
KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpOwogICAgIHN3aXRjaCAoc2hhcGUpIHsKICAg
ICAgICAgY2FzZSBQb2x5OgogICAgICAgICAgICAgaWYgKG1fY29vcmRzTGVuID49IDYpIHsKICAg
ICAgICAgICAgICAgICBpbnQgbnVtUG9pbnRzID0gbV9jb29yZHNMZW4gLyAyOwotICAgICAgICAg
ICAgICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29v
cmRzWzBdLCB3aWR0aCwgcmVuZGVyVmlldyksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jk
c1sxXSwgaGVpZ2h0LCByZW5kZXJWaWV3KSkpOworICAgICAgICAgICAgICAgIHBhdGgubW92ZVRv
KEZsb2F0UG9pbnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0aCwgdmll
d3BvcnRTaXplKSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHZp
ZXdwb3J0U2l6ZSkpKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IG51bVBv
aW50czsgKytpKQotICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1tpICogMl0sIHdpZHRoLCByZW5kZXJWaWV3
KSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kgKiAyICsgMV0sIGhlaWdodCwgcmVu
ZGVyVmlldykpKTsKKyAgICAgICAgICAgICAgICAgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2lu
dChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbaSAqIDJdLCB3aWR0aCwgdmlld3BvcnRT
aXplKSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzW2kgKiAyICsgMV0sIGhlaWdodCwg
dmlld3BvcnRTaXplKSkpOwogICAgICAgICAgICAgICAgIHBhdGguY2xvc2VTdWJwYXRoKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDaXJjbGU6CiAg
ICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0gMykgewogICAgICAgICAgICAgICAgIExlbmd0
aCByYWRpdXMgPSBtX2Nvb3Jkc1syXTsKLSAgICAgICAgICAgICAgICBpbnQgciA9IHN0ZDo6bWlu
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIHdpZHRoLCByZW5kZXJWaWV3KSwgbWluaW11
bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgaGVpZ2h0LCByZW5kZXJWaWV3KSk7Ci0gICAgICAgICAg
ICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9j
b29yZHNbMF0sIHdpZHRoLCByZW5kZXJWaWV3KSAtIHIsIG1pbmltdW1WYWx1ZUZvckxlbmd0aCht
X2Nvb3Jkc1sxXSwgaGVpZ2h0LCByZW5kZXJWaWV3KSAtIHIsIDIgKiByLCAyICogcikpOworICAg
ICAgICAgICAgICAgIGludCByID0gc3RkOjptaW4obWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1
cywgd2lkdGgsIHZpZXdwb3J0U2l6ZSksIG1pbmltdW1WYWx1ZUZvckxlbmd0aChyYWRpdXMsIGhl
aWdodCwgdmlld3BvcnRTaXplKSk7CisgICAgICAgICAgICAgICAgcGF0aC5hZGRFbGxpcHNlKEZs
b2F0UmVjdChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCB2aWV3cG9y
dFNpemUpIC0gciwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHZp
ZXdwb3J0U2l6ZSkgLSByLCAyICogciwgMiAqIHIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlY3Q6CiAgICAgICAgICAgICBpZiAobV9jb29yZHNM
ZW4gPj0gNCkgewotICAgICAgICAgICAgICAgIGludCB4MCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0
aChtX2Nvb3Jkc1swXSwgd2lkdGgsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgICAgIGludCB5
MCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1sxXSwgaGVpZ2h0LCByZW5kZXJWaWV3
KTsKLSAgICAgICAgICAgICAgICBpbnQgeDEgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29y
ZHNbMl0sIHdpZHRoLCByZW5kZXJWaWV3KTsKLSAgICAgICAgICAgICAgICBpbnQgeTEgPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbM10sIGhlaWdodCwgcmVuZGVyVmlldyk7CisgICAg
ICAgICAgICAgICAgaW50IHgwID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3
aWR0aCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAgICAgICAgICBpbnQgeTAgPSBtaW5pbXVtVmFs
dWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgdmlld3BvcnRTaXplKTsKKyAgICAgICAg
ICAgICAgICBpbnQgeDEgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMl0sIHdpZHRo
LCB2aWV3cG9ydFNpemUpOworICAgICAgICAgICAgICAgIGludCB5MSA9IG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChtX2Nvb3Jkc1szXSwgaGVpZ2h0LCB2aWV3cG9ydFNpemUpOwogICAgICAgICAgICAg
ICAgIHBhdGguYWRkUmVjdChGbG9hdFJlY3QoeDAsIHkwLCB4MSAtIHgwLCB5MSAtIHkwKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IGNiODE1NDJiMGNjYTc1OTI4ODY4NTMzZjhlZDkwYzRiYTNk
MzU5OTQuLjU2YTlmZmQ4NTU3NjZkOTRkYzg1N2I1Y2E2N2I5ZDQwNTgyYWY1N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMzIwMCw3ICszMjAwLDcgQEAg
Ym9vbCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBpZiAoIWlzUmVuZGVyVmlldygpICYmIHN0eWxl
KCkuaGFzQm9yZGVyUmFkaXVzKCkpIHsKICAgICAgICAgTGF5b3V0UmVjdCBib3JkZXJSZWN0ID0g
Ym9yZGVyQm94UmVjdCgpOwogICAgICAgICBib3JkZXJSZWN0Lm1vdmVCeShhZGp1c3RlZExvY2F0
aW9uKTsKLSAgICAgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9y
ZGVyRm9yKGJvcmRlclJlY3QsICZ2aWV3KCkpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIg
PSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgdmlldygpLnZpZXdwb3J0
U2l6ZSgpKTsKICAgICAgICAgaWYgKCFsb2NhdGlvbkluQ29udGFpbmVyLmludGVyc2VjdHMoYm9y
ZGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NDg2LDExICs0NDg2
LDExIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwKICAgICBpZiAoZmlyc3RMaW5lICYmIGRvY3Vt
ZW50KCkuc3R5bGVTaGVldENvbGxlY3Rpb24oKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkgewogICAg
ICAgICBSZW5kZXJTdHlsZSYgcyA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiBzdHls
ZSgpOwogICAgICAgICBpZiAoJnMgIT0gJnN0eWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcy5j
b21wdXRlZExpbmVIZWlnaHQoJnZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gcy5jb21wdXRl
ZExpbmVIZWlnaHQodmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAgICB9CiAgICAgCiAgICAgaWYg
KG1fbGluZUhlaWdodCA9PSAtMSkKLSAgICAgICAgbV9saW5lSGVpZ2h0ID0gc3R5bGUoKS5jb21w
dXRlZExpbmVIZWlnaHQoJnZpZXcoKSk7CisgICAgICAgIG1fbGluZUhlaWdodCA9IHN0eWxlKCku
Y29tcHV0ZWRMaW5lSGVpZ2h0KHZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAKICAgICByZXR1cm4g
bV9saW5lSGVpZ2h0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRl
eCAzYzY0MTA5MzQ2OGYyMWEyZWU1YWZiYWViYTg5MTM0MTQ1NDRjZTQwLi44MTUwYzMyMDM3YWQy
MmIxMzhiNmZmOTU3Y2VlNmJmMzU1YzU4MTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtMTIwOSw3ICsxMjA5LDcgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWkK
ICAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGJhY2tncm91bmQgY29sb3IgYmxlZWRpbmcgb3V0IGJl
aGluZCB0aGUgYm9yZGVyLCB3ZSdsbCByZW5kZXIgYmFja2dyb3VuZCBhbmQgYm9yZGVyCiAgICAg
ICAgIC8vIGludG8gYSB0cmFuc3BhcmVuY3kgbGF5ZXIsIGFuZCB0aGVuIGNsaXAgdGhhdCBpbiBv
bmUgZ28gKHdoaWNoIHJlcXVpcmVzIHNldHRpbmcgdXAgdGhlIGNsaXAgYmVmb3JlCiAgICAgICAg
IC8vIGJlZ2lubmluZyB0aGUgbGF5ZXIpLgotICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBz
dHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCAmdmlldygpKTsKKyAgICAgICAg
Um91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHBhaW50UmVj
dCwgdmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7CiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jbGlwUm91bmRlZFJlY3QoYm9yZGVyKTsKICAgICAg
ICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1
YTBjMmRjOTFlYWRkYjY4ZTAyZTI2MzJhNjUzNzU5MDU4YzY3Mzk1Li5kNzE4ODNkOTllNzQ4OTJj
OTE1MGE1ZjliZWI4ZTRkYjJlMTYwNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTQ4OSw5ICs0ODksOSBAQCBMYXlvdXRV
bml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmcoY29uc3QgTGVuZ3Ro
JiBwYWRkaW5nKSBjb25zdAogUm91bmRlZFJlY3QgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEJh
Y2tncm91bmRSb3VuZGVkUmVjdChjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBJbmxpbmVG
bG93Qm94KiBib3gsIExheW91dFVuaXQgaW5saW5lQm94V2lkdGgsIExheW91dFVuaXQgaW5saW5l
Qm94SGVpZ2h0LAogICAgIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKIHsKLSAgICBSb3VuZGVkUmVjdCBib3JkZXIgPSBzdHls
ZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwgJnZpZXcoKSwgaW5jbHVkZUxvZ2lj
YWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IGJv
cmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihib3JkZXJSZWN0LCB2aWV3KCkudmll
d3BvcnRTaXplKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKTsKICAgICBpZiAoYm94ICYmIChib3gtPm5leHRMaW5lQm94KCkgfHwgYm94LT5wcmV2TGlu
ZUJveCgpKSkgewotICAgICAgICBSb3VuZGVkUmVjdCBzZWdtZW50Qm9yZGVyID0gc3R5bGUoKS5n
ZXRSb3VuZGVkQm9yZGVyRm9yKExheW91dFJlY3QoMCwgMCwgaW5saW5lQm94V2lkdGgsIGlubGlu
ZUJveEhlaWdodCksICZ2aWV3KCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlKTsKKyAgICAgICAgUm91bmRlZFJlY3Qgc2VnbWVudEJvcmRlciA9IHN0eWxl
KCkuZ2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KDAsIDAsIGlubGluZUJveFdpZHRoLCBp
bmxpbmVCb3hIZWlnaHQpLCB2aWV3KCkudmlld3BvcnRTaXplKCksIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICAgICAgYm9yZGVyLnNldFJhZGlp
KHNlZ21lbnRCb3JkZXIucmFkaWkoKSk7CiAgICAgfQogICAgIHJldHVybiBib3JkZXI7CkBAIC0x
MjE5LDEzICsxMjE5LDEzIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmdldEdlb21ldHJ5
Rm9yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPCiAgICAgZGVzdFJlY3Qg
PSBnZW9tZXRyeS5kZXN0UmVjdCgpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlQm9y
ZGVySW1hZ2VTaWRlKExlbmd0aCBib3JkZXJTbGljZSwgTGF5b3V0VW5pdCBib3JkZXJTaWRlLCBM
YXlvdXRVbml0IGltYWdlU2lkZSwgTGF5b3V0VW5pdCBib3hFeHRlbnQsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcpCitzdGF0aWMgTGF5b3V0VW5pdCBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKExlbmd0
aCBib3JkZXJTbGljZSwgTGF5b3V0VW5pdCBib3JkZXJTaWRlLCBMYXlvdXRVbml0IGltYWdlU2lk
ZSwgTGF5b3V0VW5pdCBib3hFeHRlbnQsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsK
ICAgICBpZiAoYm9yZGVyU2xpY2UuaXNSZWxhdGl2ZSgpKQogICAgICAgICByZXR1cm4gYm9yZGVy
U2xpY2UudmFsdWUoKSAqIGJvcmRlclNpZGU7CiAgICAgaWYgKGJvcmRlclNsaWNlLmlzQXV0bygp
KQogICAgICAgICByZXR1cm4gaW1hZ2VTaWRlOwotICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChi
b3JkZXJTbGljZSwgYm94RXh0ZW50LCByZW5kZXJWaWV3KTsKKyAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgoYm9yZGVyU2xpY2UsIGJveEV4dGVudCwgdmlld3BvcnRTaXplKTsKIH0KIAogYm9vbCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlLApAQCAtMTI1NCw3ICsxMjU0LDYgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwK
IAogICAgIGludCBpbWFnZVdpZHRoID0gaW1hZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGltYWdl
SGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCgpOwotICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcg
PSAmdmlldygpOwogCiAgICAgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciA9IHN0eWxlSW1hZ2UtPmlt
YWdlU2NhbGVGYWN0b3IoKTsKICAgICBpbnQgdG9wU2xpY2UgPSBzdGQ6Om1pbjxpbnQ+KGltYWdl
SGVpZ2h0LCB2YWx1ZUZvckxlbmd0aChuaW5lUGllY2VJbWFnZS5pbWFnZVNsaWNlcygpLnRvcCgp
LCBpbWFnZUhlaWdodCkpICogaW1hZ2VTY2FsZUZhY3RvcjsKQEAgLTEyNjQsMTEgKzEyNjMsMTIg
QEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaFJ1
bGUgPSBuaW5lUGllY2VJbWFnZS5ob3Jpem9udGFsUnVsZSgpOwogICAgIEVOaW5lUGllY2VJbWFn
ZVJ1bGUgdlJ1bGUgPSBuaW5lUGllY2VJbWFnZS52ZXJ0aWNhbFJ1bGUoKTsKLQotICAgIGludCB0
b3BXaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xp
Y2VzKCkudG9wKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0b3BTbGljZSwgYm9yZGVySW1h
Z2VSZWN0LmhlaWdodCgpLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgcmlnaHRXaWR0aCA9IGNvbXB1
dGVCb3JkZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkucmlnaHQoKSwg
c3R5bGUtPmJvcmRlclJpZ2h0V2lkdGgoKSwgcmlnaHRTbGljZSwgYm9yZGVySW1hZ2VSZWN0Lndp
ZHRoKCksIHJlbmRlclZpZXcpOwotICAgIGludCBib3R0b21XaWR0aCA9IGNvbXB1dGVCb3JkZXJJ
bWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkuYm90dG9tKCksIHN0eWxlLT5i
b3JkZXJCb3R0b21XaWR0aCgpLCBib3R0b21TbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdodCgp
LCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbGVmdFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lk
ZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS5sZWZ0KCksIHN0eWxlLT5ib3JkZXJMZWZ0
V2lkdGgoKSwgbGVmdFNsaWNlLCBib3JkZXJJbWFnZVJlY3Qud2lkdGgoKSwgcmVuZGVyVmlldyk7
CisgICAgCisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID0gdmlldygpLnZpZXdwb3J0
U2l6ZSgpOworICAgIGludCB0b3BXaWR0aCA9IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUobmluZVBp
ZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkudG9wKCksIHN0eWxlLT5ib3JkZXJUb3BXaWR0aCgpLCB0
b3BTbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdodCgpLCB2aWV3cG9ydFNpemUpOworICAgIGlu
dCByaWdodFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3Jk
ZXJTbGljZXMoKS5yaWdodCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRXaWR0aCgpLCByaWdodFNsaWNl
LCBib3JkZXJJbWFnZVJlY3Qud2lkdGgoKSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgYm90dG9t
V2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJvcmRlclNsaWNl
cygpLmJvdHRvbSgpLCBzdHlsZS0+Ym9yZGVyQm90dG9tV2lkdGgoKSwgYm90dG9tU2xpY2UsIGJv
cmRlckltYWdlUmVjdC5oZWlnaHQoKSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbGVmdFdpZHRo
ID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS5s
ZWZ0KCksIHN0eWxlLT5ib3JkZXJMZWZ0V2lkdGgoKSwgbGVmdFNsaWNlLCBib3JkZXJJbWFnZVJl
Y3Qud2lkdGgoKSwgdmlld3BvcnRTaXplKTsKICAgICAKICAgICAvLyBSZWR1Y2UgdGhlIHdpZHRo
cyBpZiB0aGV5J3JlIHRvbyBsYXJnZS4KICAgICAvLyBUaGUgc3BlYyBzYXlzOiBHaXZlbiBMd2lk
dGggYXMgdGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgaW1hZ2UgYXJlYSwgTGhlaWdodCBhcyBpdHMg
aGVpZ2h0LCBhbmQgV3NpZGUgYXMgdGhlIGJvcmRlciBpbWFnZSB3aWR0aApAQCAtMTgyMyw3ICsx
ODIzLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRCb3JkZXIoY29uc3QgUGFp
bnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWN0JgogCiAgICAgQm9yZGVyRWRnZSBlZGdlc1s0
XTsKICAgICBnZXRCb3JkZXJFZGdlSW5mbyhlZGdlcywgc3R5bGUsIGluY2x1ZGVMb2dpY2FsTGVm
dEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKLSAgICBSb3VuZGVkUmVjdCBvdXRlckJv
cmRlciA9IHN0eWxlLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QsICZ2aWV3KCksIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKKyAgICBSb3VuZGVkUmVj
dCBvdXRlckJvcmRlciA9IHN0eWxlLT5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlY3QsIHZpZXcoKS52
aWV3cG9ydFNpemUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpOwogICAgIFJvdW5kZWRSZWN0IGlubmVyQm9yZGVyID0gc3R5bGUtPmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihib3JkZXJJbm5lclJlY3RBZGp1c3RlZEZvckJsZWVkQXZvaWRhbmNlKCpn
cmFwaGljc0NvbnRleHQsIHJlY3QsIGJsZWVkQXZvaWRhbmNlKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0
RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogCiAgICAgYm9vbCBoYXZlQWxwaGFDb2xv
ciA9IGZhbHNlOwpAQCAtMjQ5Nyw3ICsyNDk3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFpbnRCb3hTaGFkb3coY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRSZWMK
IAogICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IChzaGFkb3dTdHlsZSA9PSBJbnNldCkKICAgICAg
ICAgPyBzLT5nZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IocGFpbnRSZWN0LCBpbmNsdWRlTG9naWNh
bExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkKLSAgICAgICAgOiBzLT5nZXRSb3Vu
ZGVkQm9yZGVyRm9yKHBhaW50UmVjdCwgJnZpZXcoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwg
aW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgICAgICA6IHMtPmdldFJvdW5kZWRCb3JkZXJG
b3IocGFpbnRSZWN0LCB2aWV3KCkudmlld3BvcnRTaXplKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVk
Z2UsIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKTsKIAogICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVz
ID0gcy0+aGFzQm9yZGVyUmFkaXVzKCk7CiAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzLT5pc0hv
cml6b250YWxXcml0aW5nTW9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IGFiZWNlY2NjNzAyOTA2Nzc3M2VkNTg5YWY2NzRhNzcwODNhMjFhZmUu
LjlkNWIyZWJhYTliM2M4NzYyNTNiMTNhMTkyOTliYmMyNzEzOTdjZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTc5Niw2ICs3OTYsMTYgQEAgdm9p
ZCBSZW5kZXJFbGVtZW50Ojpwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oU3R5bGVQ
cm9wYWdhdGlvblR5cGUgcHJvcGEKICAgICB9CiB9CiAKK0xheW91dFVuaXQgUmVuZGVyRWxlbWVu
dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkNv
cmU6OnZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3KCkudmlld3BvcnRT
aXplKCksIHJvdW5kUGVyY2VudGFnZXMpOworfQorICAgIAorTGF5b3V0VW5pdCBSZW5kZXJFbGVt
ZW50OjptaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVu
aXQgbWF4aW11bVZhbHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdlYkNvcmU6Om1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwg
dmlldygpLnZpZXdwb3J0U2l6ZSgpLCByb3VuZFBlcmNlbnRhZ2VzKTsKK30KKyAgICAKIC8vIE9u
IGxvdy1wb3dlcmVkL21vYmlsZSBkZXZpY2VzLCBwcmV2ZW50aW5nIGJsaXR0aW5nIG9uIGEgc2Ny
b2xsIGNhbiBjYXVzZSBub3RpY2VhYmxlIGRlbGF5cwogLy8gd2hlbiBzY3JvbGxpbmcgYSBwYWdl
IHdpdGggYSBmaXhlZCBiYWNrZ3JvdW5kIGltYWdlLiBBcyBhbiBvcHRpbWl6YXRpb24sIGFzc3Vt
aW5nIHRoZXJlIGFyZQogLy8gbm8gZml4ZWQgcG9zaXRvbmVkIGVsZW1lbnRzIG9uIHRoZSBwYWdl
LCB3ZSBjYW4gYWNjbGVyYXRlIHNjcm9sbGluZyAodmlhIGJsaXR0aW5nKSBpZiB3ZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggMDIyMzA2MDZkYjRiNzk1YjIy
NTFkYzI1Y2EyNTllMjNhMzljZTFmOS4uNzNiOTQxNGRiNGMyYjAxNjc2YWUyMWI2Mzc2MTM5N2U3
ZGZkMWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0y
NDgsMTYgKzI0OCw2IEBAIGlubGluZSB2b2lkIFJlbmRlckVsZW1lbnQ6OnNldENoaWxkTmVlZHNM
YXlvdXQoTWFya2luZ0JlaGF2aW9yIG1hcmtQYXJlbnRzKQogICAgICAgICBtYXJrQ29udGFpbmlu
Z0Jsb2Nrc0ZvckxheW91dCgpOwogfQogCi1pbmxpbmUgTGF5b3V0VW5pdCBSZW5kZXJFbGVtZW50
Ojp2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVt
VmFsdWUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6dmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsICZ2aWV3KCksIHJvdW5kUGVy
Y2VudGFnZXMpOwotfQotCi1pbmxpbmUgTGF5b3V0VW5pdCBSZW5kZXJFbGVtZW50OjptaW5pbXVt
VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZh
bHVlLCBib29sIHJvdW5kUGVyY2VudGFnZXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkNvcmU6
Om1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgJnZpZXcoKSwgcm91
bmRQZXJjZW50YWdlcyk7Ci19Ci0KIGlubGluZSBib29sIFJlbmRlckVsZW1lbnQ6OmlzUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAm
IFJlbmRlckxheWVyTW9kZWxPYmplY3RGbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcAppbmRleCBiN2Q2MzMyZjA5YjRlN2ZlZGM3M2MyNmI5NTMxZjg5NTAyOTk1
ZGNkLi4yODRhNGI0YzJiYmU5NDJkNzBhZGU1NDcwMTU3MmVkY2FkMmVhZDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtNzI4LDcgKzcyOCw3IEBAIHN0
YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVNYXJnaW4oY29uc3QgUmVuZGVySW5saW5lKiByZW5kZXJl
ciwgY29uc3QgTGVuZ3RoJiBtYXJnCiAgICAgaWYgKG1hcmdpbi5pc1BlcmNlbnQoKSkKICAgICAg
ICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW4sIHN0ZDo6bWF4PExheW91dFVu
aXQ+KDAsIHJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRo
KCkpKTsKICAgICBpZiAobWFyZ2luLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgIHJl
dHVybiB2YWx1ZUZvckxlbmd0aChtYXJnaW4sIDAsICZyZW5kZXJlci0+dmlldygpKTsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCwgcmVuZGVyZXItPnZpZXcoKS52aWV3
cG9ydFNpemUoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE0MDQsMTAgKzE0MDQsMTAgQEAg
TGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlIC8qZGlyZWN0aW8KICAgICBpZiAoZmlyc3RMaW5lICYmIGRvY3VtZW50KCku
c3R5bGVTaGVldENvbGxlY3Rpb24oKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkgewogICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgZmlyc3RMaW5lU3R5bGUgPSB0aGlzLT5maXJzdExpbmVTdHlsZSgp
OwogICAgICAgICBpZiAoJmZpcnN0TGluZVN0eWxlICE9ICZzdHlsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIGZpcnN0TGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICAg
ICAgICAgIHJldHVybiBmaXJzdExpbmVTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQodmlldygpLnZp
ZXdwb3J0U2l6ZSgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3R5bGUoKS5jb21wdXRlZExpbmVI
ZWlnaHQoJnZpZXcoKSk7CisgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KHZp
ZXcoKS52aWV3cG9ydFNpemUoKSk7CiB9CiAKIGludCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggOTcyZmYz
NjMxYmI1ZTY1Y2VkZWM0OTlkNjM0ZTgxM2M2MmNmMDQzNy4uNzBlMThjNGU2Njc2OWNlMWFjZDZi
NzFjMDNiNGFjNTA5OTc3YmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC0zODc0LDcgKzM4NzQsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQ
YXRoKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAg
ICAgICBMYXlvdXRSZWN0IHJlZmVyZW5jZUJveCA9IGNvbXB1dGVSZWZlcmVuY2VCb3gocmVuZGVy
ZXIoKSwgY2xpcHBpbmdQYXRoLCBvZmZzZXRGcm9tUm9vdCwgcm9vdFJlbGF0aXZlQm91bmRzKTsK
ICAgICAgICAgLy8gRklYTUUgVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBjb21wdXRlIHRoZSByb3Vu
ZGVkIGNvcm5lcnMgYXMgc3BlY2lmaWVkIGluIGFsbCBjb25kaXRpb25zLgogICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTgyCi0gICAgICAgIGNv
bnN0IFJvdW5kZWRSZWN0JiBzaGFwZVJlY3QgPSByZW5kZXJlcigpLnN0eWxlKCkuZ2V0Um91bmRl
ZEJvcmRlckZvcihyZWZlcmVuY2VCb3gsICYocmVuZGVyZXIoKS52aWV3KCkpKTsKKyAgICAgICAg
Y29uc3QgUm91bmRlZFJlY3QmIHNoYXBlUmVjdCA9IHJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3Vu
ZGVkQm9yZGVyRm9yKHJlZmVyZW5jZUJveCwgcmVuZGVyZXIoKS52aWV3KCkudmlld3BvcnRTaXpl
KCkpOwogCiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgY29udGV4dC0+Y2xpcFBh
dGgoY2xpcHBpbmdQYXRoLnBhdGhGb3JSZWZlcmVuY2VSZWN0KHNoYXBlUmVjdCksIFJVTEVfTk9O
WkVSTyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmlu
ZGV4IGE4MzFlNDc4Yzc3NjZmNjU2YzA2NzllZWRmZmNmZGFjNjQwZjk0MTAuLjUzYjUzNTZjY2Fi
OGY4YjAwZTZkNDFiYjE2Njk1OTQ0NzU2NWUyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbmxpbmVFbGVtZW50Qm94LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQmxvY2suaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUm9vdElubGlu
ZUJveC5oIgogI2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgogCkBAIC01MiwxMSArNTMsMTEg
QEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKICAgICBpZiAoZmlyc3RMaW5lICYmIGRvY3VtZW50
KCkuc3R5bGVTaGVldENvbGxlY3Rpb24oKS51c2VzRmlyc3RMaW5lUnVsZXMoKSkgewogICAgICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgZmlyc3RMaW5lU3R5bGUgPSB0aGlzLT5maXJzdExpbmVTdHls
ZSgpOwogICAgICAgICBpZiAoJmZpcnN0TGluZVN0eWxlICE9ICZzdHlsZSgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZpcnN0TGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmaXJzdExpbmVTdHlsZS5jb21wdXRlZExpbmVIZWlnaHQodmlldygp
LnZpZXdwb3J0U2l6ZSgpKTsKICAgICB9CiAKICAgICBpZiAobV9jYWNoZWRMaW5lSGVpZ2h0ID09
IGludmFsaWRMaW5lSGVpZ2h0KQotICAgICAgICBtX2NhY2hlZExpbmVIZWlnaHQgPSBzdHlsZSgp
LmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAgICAgICAgbV9jYWNoZWRMaW5lSGVpZ2h0
ID0gc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQodmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAg
ICAKICAgICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IDJjZjJmNWZjNjI1ZTRj
NTExM2I2MmFlOWViYTZiYTJkOWMwMGNlZDYuLjJkYjkwYWRkMTcwMTI1Y2VjNzAxMzM3MjcxYmFj
MTQ4ODJlNTQzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBh
cnQ6OmxheW91dFZlcnRpY2FsUGFydCgpCiAgICAgfSAKIH0KIAotc3RhdGljIGludCBjYWxjU2Ny
b2xsYmFyVGhpY2tuZXNzVXNpbmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgbGVu
Z3RoLCBpbnQgY29udGFpbmluZ0xlbmd0aCwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRp
YyBpbnQgY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKFNpemVUeXBlIHNpemVUeXBlLCBjb25z
dCBMZW5ndGgmIGxlbmd0aCwgaW50IGNvbnRhaW5pbmdMZW5ndGgsIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIWxlbmd0aC5pc0ludHJpbnNpY09yQXV0bygpIHx8IChz
aXplVHlwZSA9PSBNaW5TaXplICYmIGxlbmd0aC5pc0F1dG8oKSkpCi0gICAgICAgIHJldHVybiBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBjb250YWluaW5nTGVuZ3RoLCByZW5kZXJWaWV3
KTsKKyAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIGNvbnRhaW5p
bmdMZW5ndGgsIHZpZXdwb3J0U2l6ZSk7CiAgICAgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKTsKIH0KIApAQCAtOTAsMzYgKzkwLDM2IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKCkKIHsKICAgICBpZiAo
IW1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVu
ZGVyVmlldyogcmVuZGVyVmlldyA9ICZ2aWV3KCk7CisgICAgY29uc3QgSW50U2l6ZSYgdmlld3Bv
cnRTaXplID0gdmlldygpLnZpZXdwb3J0U2l6ZSgpOwogICAgIC8vIEZJWE1FOiBXZSBhcmUgcXVl
cnlpbmcgbGF5b3V0IGluZm9ybWF0aW9uIGJ1dCBub3RoaW5nIGd1YXJhbnRlZXMgdGhhdCBpdCdz
IHVwLXRvLWRhdGUsIGVzcGVjaWFsbHkgc2luY2Ugd2UgYXJlIGNhbGxlZCBhdCBzdHlsZSBjaGFu
Z2UuCiAgICAgLy8gRklYTUU6IFF1ZXJ5aW5nIHRoZSBzdHlsZSdzIGJvcmRlciBpbmZvcm1hdGlv
biBkb2Vzbid0IHdvcmsgb24gdGFibGUgY2VsbHMgd2l0aCBjb2xsYXBzaW5nIGJvcmRlcnMuCiAg
ICAgaW50IHZpc2libGVTaXplID0gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPndpZHRo
KCkgLSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+c3R5bGUoKS5ib3JkZXJMZWZ0V2lk
dGgoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5zdHlsZSgpLmJvcmRlclJpZ2h0
V2lkdGgoKTsKLSAgICBpbnQgdyA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYWluT3JQ
cmVmZXJyZWRTaXplLCBzdHlsZSgpLndpZHRoKCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsK
LSAgICBpbnQgbWluV2lkdGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWluU2l6ZSwg
c3R5bGUoKS5taW5XaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7Ci0gICAgaW50IG1h
eFdpZHRoID0gc3R5bGUoKS5tYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkgPyB3IDogY2FsY1Njcm9s
bGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCkubWF4V2lkdGgoKSwgdmlzaWJsZVNp
emUsIHJlbmRlclZpZXcpOworICAgIGludCB3ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5n
KE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxlKCkud2lkdGgoKSwgdmlzaWJsZVNpemUsIHZpZXdw
b3J0U2l6ZSk7CisgICAgaW50IG1pbldpZHRoID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5n
KE1pblNpemUsIHN0eWxlKCkubWluV2lkdGgoKSwgdmlzaWJsZVNpemUsIHZpZXdwb3J0U2l6ZSk7
CisgICAgaW50IG1heFdpZHRoID0gc3R5bGUoKS5tYXhXaWR0aCgpLmlzVW5kZWZpbmVkKCkgPyB3
IDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCkubWF4V2lkdGgo
KSwgdmlzaWJsZVNpemUsIHZpZXdwb3J0U2l6ZSk7CiAgICAgc2V0V2lkdGgoc3RkOjptYXgobWlu
V2lkdGgsIHN0ZDo6bWluKG1heFdpZHRoLCB3KSkpOwogICAgIAogICAgIC8vIEJ1dHRvbnMgYW5k
IHRyYWNrIHBpZWNlcyBjYW4gYWxsIGhhdmUgbWFyZ2lucyBhbG9uZyB0aGUgYXhpcyBvZiB0aGUg
c2Nyb2xsYmFyLiAKLSAgICBtX21hcmdpbkJveC5zZXRMZWZ0KG1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZSgpLm1hcmdpbkxlZnQoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpKTsKLSAgICBt
X21hcmdpbkJveC5zZXRSaWdodChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5S
aWdodCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOworICAgIG1fbWFyZ2luQm94LnNldExl
ZnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCB2aXNpYmxlU2l6
ZSkpOworICAgIG1fbWFyZ2luQm94LnNldFJpZ2h0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZSgpLm1hcmdpblJpZ2h0KCksIHZpc2libGVTaXplKSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xs
YmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhckhlaWdodCgpCiB7CiAgICAgaWYgKCFtX3Njcm9sbGJh
ci0+b3duaW5nUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSAmdmlldygpOworICAgIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSA9dmll
dygpLnZpZXdwb3J0U2l6ZSgpOwogICAgIC8vIEZJWE1FOiBXZSBhcmUgcXVlcnlpbmcgbGF5b3V0
IGluZm9ybWF0aW9uIGJ1dCBub3RoaW5nIGd1YXJhbnRlZXMgdGhhdCBpdCdzIHVwLXRvLWRhdGUs
IGVzcGVjaWFsbHkgc2luY2Ugd2UgYXJlIGNhbGxlZCBhdCBzdHlsZSBjaGFuZ2UuCiAgICAgLy8g
RklYTUU6IFF1ZXJ5aW5nIHRoZSBzdHlsZSdzIGJvcmRlciBpbmZvcm1hdGlvbiBkb2Vzbid0IHdv
cmsgb24gdGFibGUgY2VsbHMgd2l0aCBjb2xsYXBzaW5nIGJvcmRlcnMuCiAgICAgaW50IHZpc2li
bGVTaXplID0gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRlcmVyKCktPmhlaWdodCgpIC0gIG1fc2Ny
b2xsYmFyLT5vd25pbmdSZW5kZXJlcigpLT5zdHlsZSgpLmJvcmRlclRvcFdpZHRoKCkgLSBtX3Nj
cm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+c3R5bGUoKS5ib3JkZXJCb3R0b21XaWR0aCgpOwot
ICAgIGludCBoID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1haW5PclByZWZlcnJlZFNp
emUsIHN0eWxlKCkuaGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQg
bWluSGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCku
bWluSGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWF4SGVpZ2h0
ID0gc3R5bGUoKS5tYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8gaCA6IGNhbGNTY3JvbGxiYXJU
aGlja25lc3NVc2luZyhNYXhTaXplLCBzdHlsZSgpLm1heEhlaWdodCgpLCB2aXNpYmxlU2l6ZSwg
cmVuZGVyVmlldyk7CisgICAgaW50IGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWFp
bk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5oZWlnaHQoKSwgdmlzaWJsZVNpemUsIHZpZXdwb3J0
U2l6ZSk7CisgICAgaW50IG1pbkhlaWdodCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhN
aW5TaXplLCBzdHlsZSgpLm1pbkhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsK
KyAgICBpbnQgbWF4SGVpZ2h0ID0gc3R5bGUoKS5tYXhIZWlnaHQoKS5pc1VuZGVmaW5lZCgpID8g
aCA6IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYXhTaXplLCBzdHlsZSgpLm1heEhlaWdo
dCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKICAgICBzZXRIZWlnaHQoc3RkOjptYXgo
bWluSGVpZ2h0LCBzdGQ6Om1pbihtYXhIZWlnaHQsIGgpKSk7CiAKICAgICAvLyBCdXR0b25zIGFu
ZCB0cmFjayBwaWVjZXMgY2FuIGFsbCBoYXZlIG1hcmdpbnMgYWxvbmcgdGhlIGF4aXMgb2YgdGhl
IHNjcm9sbGJhci4gCi0gICAgbV9tYXJnaW5Cb3guc2V0VG9wKG1pbmltdW1WYWx1ZUZvckxlbmd0
aChzdHlsZSgpLm1hcmdpblRvcCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOwotICAgIG1f
bWFyZ2luQm94LnNldEJvdHRvbShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJnaW5C
b3R0b20oKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpKTsKKyAgICBtX21hcmdpbkJveC5zZXRU
b3AobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luVG9wKCksIHZpc2libGVTaXpl
KSk7CisgICAgbV9tYXJnaW5Cb3guc2V0Qm90dG9tKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHls
ZSgpLm1hcmdpbkJvdHRvbSgpLCB2aXNpYmxlU2l6ZSkpOwogfQogCiB2b2lkIFJlbmRlclNjcm9s
bGJhclBhcnQ6OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCBmYWQzMWM2YjY1MGY0NTcwYjM3MThi
ZmIzNGQ1ZmNjZTBlNzEyZTU5Li5iN2JkNjhkOTRiNDE3MTVlYzhhZDk1NmJkZWRkNzFhOTZlMzk3
MjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC0x
MTQzLDcgKzExNDMsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9u
R3JhZGllbnRzKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbgogCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKCpwYWludEluZm8uY29udGV4dCk7CiAKLSAgICBS
b3VuZGVkUmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IociwgJm8t
PnZpZXcoKSk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gby0+c3R5bGUoKS5nZXRSb3VuZGVk
Qm9yZGVyRm9yKHIsIG8tPnZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAgICAgaW50IHJhZGl1cyA9
IGJvcmRlci5yYWRpaSgpLnRvcExlZnQoKS53aWR0aCgpOwogCiAgICAgQ0dDb2xvclNwYWNlUmVm
IGNzcGFjZSA9IGRldmljZVJHQkNvbG9yU3BhY2VSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCA5ZTEyNzEwZGZjNTU4NDc0NGUwNGJiNDBiYmY3
YmE4ZGVkMDcxZTc1Li43MzFkYmEyNjg0OWQxNGYwY2ZiOWQxNDA1ZjQ4MDk2ZjE2OTYxZjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCkBAIC05NjksNyAr
OTY5LDcgQEAgTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojp2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94
KElubGluZUJveCogYm94LCBWZXJ0aWNhbFBvc2l0aW8KICAgICAgICAgICAgICAgICBsaW5lSGVp
Z2h0ID0gcmVuZGVyZXItPnN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgbGluZUhlaWdodCA9IHJlbmRlcmVyLT5saW5lSGVpZ2h0
KGZpcnN0TGluZSwgbGluZURpcmVjdGlvbik7Ci0gICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9u
IC09IHZhbHVlRm9yTGVuZ3RoKHJlbmRlcmVyLT5zdHlsZSgpLnZlcnRpY2FsQWxpZ25MZW5ndGgo
KSwgbGluZUhlaWdodCwgJnJlbmRlcmVyLT52aWV3KCkpOworICAgICAgICAgICAgdmVydGljYWxQ
b3NpdGlvbiAtPSB2YWx1ZUZvckxlbmd0aChyZW5kZXJlci0+c3R5bGUoKS52ZXJ0aWNhbEFsaWdu
TGVuZ3RoKCksIGxpbmVIZWlnaHQsIHJlbmRlcmVyLT52aWV3KCkudmlld3BvcnRTaXplKCkpOwog
ICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5mby5jcHAKaW5kZXggOTExNzBkNjQ1Y2Y2M2EzNjZkNmE5M2QyNTJhMmZhMGQ2ZWFjMmU2
ZS4uYzkyMTJjMzI0NTUxMGIyMzJkMDUwOWFhNTVmMjZhZWVhOTVjMGRmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU2hhcGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTQxLDcgKzE0Miw3IEBAIGNv
bnN0IFNoYXBlJiBTaGFwZUluZm88UmVuZGVyVHlwZT46OmNvbXB1dGVkU2hhcGUoKSBjb25zdAog
ICAgIGNhc2UgU2hhcGVWYWx1ZTo6Qm94OiB7CiAgICAgICAgIC8vIEZJWE1FIFRoaXMgZG9lcyBu
b3QgcHJvcGVybHkgY29tcHV0ZSB0aGUgcm91bmRlZCBjb3JuZXJzIGFzIHNwZWNpZmllZCBpbiBh
bGwgY29uZGl0aW9ucy4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNzk4MgotICAgICAgICBjb25zdCBSb3VuZGVkUmVjdCYgc2hhcGVSZWN0ID0g
bV9yZW5kZXJlci5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdChMYXlvdXRQ
b2ludCgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplKSwgJihtX3JlbmRlcmVyLnZpZXcoKSkp
OworICAgICAgICBjb25zdCBSb3VuZGVkUmVjdCYgc2hhcGVSZWN0ID0gbV9yZW5kZXJlci5zdHls
ZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoTGF5b3V0UmVjdChMYXlvdXRQb2ludCgpLCBtX3JlZmVy
ZW5jZUJveExvZ2ljYWxTaXplKSwgbV9yZW5kZXJlci52aWV3KCkudmlld3BvcnRTaXplKCkpOwog
ICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZUxheW91dEJveFNoYXBlKHNoYXBlUmVjdCwg
d3JpdGluZ01vZGUsIG1hcmdpbiwgcGFkZGluZyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGUw
MTA3ZmQ2ZDllM2M0ZGMwNjgyZTg2M2Y2NWEzYWE1MTBmZGEyMGMuLjBmYzZhNDNlZGM0YTZjNjAx
ZTBlZGYyNDZkNTk5ZTk3ZGNmODk1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtMTA1MywxNyArMTA1MywxNyBAQCB2b2lkIFJlbmRl
clN0eWxlOjpzZXRCb3hTaGFkb3coc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IHNoYWRvd0Rh
dGEsIGJvb2wgYWRkKQogICAgIHJhcmVEYXRhLT5tX2JveFNoYWRvdyA9IHN0ZDo6bW92ZShzaGFk
b3dEYXRhKTsKIH0KIAotc3RhdGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29u
c3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplLCBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3KQorc3RhdGljIFJvdW5kZWRSZWN0OjpSYWRpaSBjYWxjUmFkaWlGb3IoY29u
c3QgQm9yZGVyRGF0YSYgYm9yZGVyLCBjb25zdCBMYXlvdXRTaXplJiBzaXplLCBjb25zdCBJbnRT
aXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgcmV0dXJuIFJvdW5kZWRSZWN0OjpSYWRpaSgKLSAg
ICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIudG9wTGVmdCgpLndpZHRoKCks
IHNpemUud2lkdGgoKSwgcmVuZGVyVmlldyksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChi
b3JkZXIudG9wTGVmdCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSksCi0g
ICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkud2lkdGgo
KSwgc2l6ZS53aWR0aCgpLCByZW5kZXJWaWV3KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3Ro
KGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSks
Ci0gICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS53
aWR0aCgpLCBzaXplLndpZHRoKCksIHJlbmRlclZpZXcpLAotICAgICAgICAgICAgdmFsdWVGb3JM
ZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSwgcmVuZGVy
VmlldykpLAotICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21S
aWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgcmVuZGVyVmlldyksCi0gICAgICAgICAgICB2
YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tUmlnaHQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQo
KSwgcmVuZGVyVmlldykpKTsKKyAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZvckxlbmd0aChib3Jk
ZXIudG9wTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplKSwKKyAgICAg
ICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkuaGVpZ2h0KCksIHNpemUuaGVp
Z2h0KCksIHZpZXdwb3J0U2l6ZSkpLAorICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3Ro
KGJvcmRlci50b3BSaWdodCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplKSwK
KyAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BSaWdodCgpLmhlaWdodCgpLCBz
aXplLmhlaWdodCgpLCB2aWV3cG9ydFNpemUpKSwKKyAgICAgICAgTGF5b3V0U2l6ZSh2YWx1ZUZv
ckxlbmd0aChib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgoKSwgdmlld3Bv
cnRTaXplKSwKKyAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21MZWZ0KCku
aGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSkpLAorICAgICAgICBMYXlvdXRT
aXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0b21SaWdodCgpLndpZHRoKCksIHNpemUud2lk
dGgoKSwgdmlld3BvcnRTaXplKSwKKyAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5i
b3R0b21SaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpLCB2aWV3cG9ydFNpemUpKSk7CiB9
CiAKIHN0YXRpYyBmbG9hdCBjYWxjQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IExheW91dFJlY3Qm
IHJlY3QsIGNvbnN0IFJvdW5kZWRSZWN0OjpSYWRpaSYgcmFkaWkpCkBAIC0xMTE1LDExICsxMTE1
LDExIEBAIHNob3J0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvCiB2b2lkIFJlbmRlclN0eWxlOjpzZXRIb3Jp
em9udGFsQm9yZGVyU3BhY2luZyhzaG9ydCB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBob3Jpem9u
dGFsX2JvcmRlcl9zcGFjaW5nLCB2KTsgfQogdm9pZCBSZW5kZXJTdHlsZTo6c2V0VmVydGljYWxC
b3JkZXJTcGFjaW5nKHNob3J0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHZlcnRpY2FsX2JvcmRl
cl9zcGFjaW5nLCB2KTsgfQogCi1Sb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJv
cmRlckZvcihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBSZW5kZXJWaWV3KiByZW5kZXJW
aWV3LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdo
dEVkZ2UpIGNvbnN0CitSb3VuZGVkUmVjdCBSZW5kZXJTdHlsZTo6Z2V0Um91bmRlZEJvcmRlckZv
cihjb25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUsIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSkgY29uc3QKIHsKICAgICBSb3VuZGVkUmVjdCByb3VuZGVkUmVjdChib3JkZXJSZWN0KTsK
ICAgICBpZiAoaGFzQm9yZGVyUmFkaXVzKCkpIHsKLSAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlp
IHJhZGlpID0gY2FsY1JhZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIGJvcmRlclJlY3Quc2l6ZSgp
LCByZW5kZXJWaWV3KTsKKyAgICAgICAgUm91bmRlZFJlY3Q6OlJhZGlpIHJhZGlpID0gY2FsY1Jh
ZGlpRm9yKHN1cnJvdW5kLT5ib3JkZXIsIGJvcmRlclJlY3Quc2l6ZSgpLCB2aWV3cG9ydFNpemUp
OwogICAgICAgICByYWRpaS5zY2FsZShjYWxjQ29uc3RyYWludFNjYWxlRm9yKGJvcmRlclJlY3Qs
IHJhZGlpKSk7CiAgICAgICAgIHJvdW5kZWRSZWN0LmluY2x1ZGVMb2dpY2FsRWRnZXMocmFkaWks
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCksIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1
ZGVMb2dpY2FsUmlnaHRFZGdlKTsKICAgICB9CkBAIC0xNDAwLDcgKzE0MDAsNyBAQCBMZW5ndGgg
UmVuZGVyU3R5bGU6OmxpbmVIZWlnaHQoKSBjb25zdAogfQogdm9pZCBSZW5kZXJTdHlsZTo6c2V0
TGluZUhlaWdodChMZW5ndGggc3BlY2lmaWVkTGluZUhlaWdodCkgeyBTRVRfVkFSKGluaGVyaXRl
ZCwgbGluZV9oZWlnaHQsIHNwZWNpZmllZExpbmVIZWlnaHQpOyB9CiAKLWludCBSZW5kZXJTdHls
ZTo6Y29tcHV0ZWRMaW5lSGVpZ2h0KFJlbmRlclZpZXcqIHJlbmRlclZpZXcpIGNvbnN0CitpbnQg
UmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodChjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpIGNvbnN0CiB7CiAgICAgY29uc3QgTGVuZ3RoJiBsaCA9IGxpbmVIZWlnaHQoKTsKIApAQCAt
MTQxMiw3ICsxNDEyLDcgQEAgaW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWlnaHQoUmVu
ZGVyVmlldyogcmVuZGVyVmlldykgY29uc3QKICAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZv
ckxlbmd0aChsaCwgZm9udFNpemUoKSk7CiAKICAgICBpZiAobGguaXNWaWV3cG9ydFBlcmNlbnRh
Z2UoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGxoLCAwLCByZW5kZXJWaWV3KTsK
KyAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGxoLCAwLCB2aWV3cG9ydFNpemUpOwogCiAg
ICAgcmV0dXJuIGxoLnZhbHVlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCmluZGV4IGFlMDg3NWQwN2VkMjIwZWZlNjBjNGZkZTc3ZGQwYzI2ZmNm
Y2VhYjkuLjBlODk5MjBjOWNiOGVmODkwYTM2NzEzMGFkOWU0NGEzYTc2Nzc4NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC01ODksNyArNTg5
LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgTGVuZ3RoJiBzcGVjaWZpZWRMaW5lSGVpZ2h0KCkg
Y29uc3Q7CiAgICAgTGVuZ3RoIGxpbmVIZWlnaHQoKSBjb25zdDsKLSAgICBpbnQgY29tcHV0ZWRM
aW5lSGVpZ2h0KFJlbmRlclZpZXcqID0gMCkgY29uc3Q7CisgICAgaW50IGNvbXB1dGVkTGluZUhl
aWdodChjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSkgY29uc3Q7CiAKICAgICBFV2hpdGVTcGFj
ZSB3aGl0ZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVdoaXRlU3BhY2U+KGlu
aGVyaXRlZF9mbGFncy5fd2hpdGVfc3BhY2UpOyB9CiAgICAgc3RhdGljIGJvb2wgYXV0b1dyYXAo
RVdoaXRlU3BhY2Ugd3MpCkBAIC0xMDkxLDcgKzEwOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHNl
dEJvcmRlclJhZGl1cyhMZW5ndGhTaXplKExlbmd0aChzLndpZHRoKCksIEZpeGVkKSwgTGVuZ3Ro
KHMuaGVpZ2h0KCksIEZpeGVkKSkpOwogICAgIH0KICAgICAKLSAgICBSb3VuZGVkUmVjdCBnZXRS
b3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcq
ID0gMCwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OworICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRC
b3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgY29uc3QgSW50U2l6ZSYgPSBJ
bnRTaXplKCksIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKICAgICBSb3VuZGVkUmVjdCBnZXRSb3Vu
ZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpIGNvbnN0OwogCiAgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZElubmVyQm9yZGVyRm9y
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIExheW91dFVuaXQgdG9wV2lkdGgsIExheW91
dFVuaXQgYm90dG9tV2lkdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcAppbmRleCA4ZTA1ZDBkNjM4N2I2OGY1NzBkYzM0ZDRjNjQxNDY1Yzk0NmJj
ZDQxLi5hNzdlZjA3YmM3NTZmZDc2MGViODhkZTA5YmQ3NjgxOGUzZWI3Y2U0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTEzMSw5ICsx
MzEsOSBAQCBib29sIFJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWlu
aW5nU1ZHRG9jdW1lbnQoKSBjb25zdAogICAgIHJldHVybiBmcmFtZSgpLmRvY3VtZW50KCktPmlz
U1ZHRG9jdW1lbnQoKTsKIH0KIAotc3RhdGljIGlubGluZSBMYXlvdXRVbml0IHJlc29sdmVMZW5n
dGhBdHRyaWJ1dGVGb3JTVkcoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IHNjYWxlLCBmbG9h
dCBtYXhTaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIGlubGluZSBMYXlvdXRV
bml0IHJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZs
b2F0IHNjYWxlLCBmbG9hdCBtYXhTaXplLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7
Ci0gICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4U2l6ZSwgcmVuZGVyVmlldykg
KiAobGVuZ3RoLmlzRml4ZWQoKSA/IHNjYWxlIDogMSk7CisgICAgcmV0dXJuIHZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgbWF4U2l6ZSwgdmlld3BvcnRTaXplKSAqIChsZW5ndGguaXNGaXhlZCgpID8g
c2NhbGUgOiAxKTsKIH0KIAogTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFj
ZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaG91bGRDb21wdXRlUHJlZmVy
cmVkKSBjb25zdApAQCAtMTQ2LDcgKzE0Niw3IEBAIExheW91dFVuaXQgUmVuZGVyU1ZHUm9vdDo6
Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgc2hvCiAg
ICAgICAgIHJldHVybiBSZW5kZXJSZXBsYWNlZDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRo
KHNob3VsZENvbXB1dGVQcmVmZXJyZWQpOwogCiAgICAgaWYgKHN2Z1NWR0VsZW1lbnQoKS53aWR0
aEF0dHJpYnV0ZUVzdGFibGlzaGVzVmlld3BvcnQoKSkKLSAgICAgICAgcmV0dXJuIHJlc29sdmVM
ZW5ndGhBdHRyaWJ1dGVGb3JTVkcoc3ZnU1ZHRWxlbWVudCgpLmludHJpbnNpY1dpZHRoKFNWR1NW
R0VsZW1lbnQ6Oklnbm9yZUNTU1Byb3BlcnRpZXMpLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwg
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxXaWR0aCgpLCAmdmlldygpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoc3ZnU1ZHRWxlbWVudCgp
LmludHJpbnNpY1dpZHRoKFNWR1NWR0VsZW1lbnQ6Oklnbm9yZUNTU1Byb3BlcnRpZXMpLCBzdHls
ZSgpLmVmZmVjdGl2ZVpvb20oKSwgY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCgpLCB2aWV3KCkudmlld3BvcnRTaXplKCkpOwogCiAgICAgLy8gU1ZHIGVtYmVkZGVkIHRo
cm91Z2ggb2JqZWN0L2VtYmVkL2lmcmFtZS4KICAgICBpZiAoaXNFbWJlZGRlZFRocm91Z2hGcmFt
ZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQpAQCAtMTc3LDcgKzE3Nyw3IEBAIExheW91dFVuaXQg
UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgUmVuZGVyQmxvY2s6OnJlbW92ZVBlcmNlbnRIZWlnaHRE
ZXNjZW5kYW50KGNvbnN0X2Nhc3Q8UmVuZGVyU1ZHUm9vdCY+KCp0aGlzKSk7CiAKLSAgICAgICAg
cmV0dXJuIHJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoaGVpZ2h0LCBzdHlsZSgpLmVmZmVj
dGl2ZVpvb20oKSwgY29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoSW5j
bHVkZU1hcmdpbkJvcmRlclBhZGRpbmcpLCAmdmlldygpKTsKKyAgICAgICAgcmV0dXJuIHJlc29s
dmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoaGVpZ2h0LCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSwg
Y29udGFpbmluZ0Jsb2NrKCktPmF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoSW5jbHVkZU1hcmdpbkJv
cmRlclBhZGRpbmcpLCB2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgIH0KIAogICAgIC8vIFNW
RyBlbWJlZGRlZCB0aHJvdWdoIG9iamVjdC9lbWJlZC9pZnJhbWUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225588</attachid>
            <date>2014-03-01 20:57:46 -0800</date>
            <delta_ts>2014-03-01 20:57:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129569-20140301205746.patch</filename>
            <type>text/plain</type>
            <size>73665</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE4ZDc1OWFlYjIzMDgw
NmVlMTNkNjZhZDg0NDZiNTgwNGMyMDQwMC4uMmMwYTRmNzUwMTcxY2UwOWYxMTU1NGVlODFmMmJl
ZWU5Y2I3MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE0LTAzLTAxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBMZW5ndGggZnVuY3Rp
b25zIHRha2Ugdmlld3BvcnQgc2l6ZSBpbnN0ZWFkIG9mIFJlbmRlclZpZXcqCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NjkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUub3JkZXI6Cisg
ICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRQb3NpdGlvbk9mZnNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldEJv
cmRlclJhZGl1c0Nvcm5lclZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRp
dXNDb3JuZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXRCb3JkZXJSYWRpdXNTaG9ydGhh
bmRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja0Jy
ZWFkdGgpOgorICAgICAgICAoV2ViQ29yZTo6c3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpsaW5lSGVpZ2h0RnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVk
U3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUpOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVk
U3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlGb250U2l6
ZTo6YXBwbHlWYWx1ZSk6CisgICAgICAgICogY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29y
ZTo6aW50VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6bWluaW11bVZhbHVlRm9y
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlRm9yTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgpOgorICAgICAgICAqIGNzcy9MZW5ndGhGdW5jdGlv
bnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL0hUTUxB
cmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OmdldFJl
Z2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bm9k
ZUF0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxpbmVIZWlnaHQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpwYWludEJveERlY29yYXRpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmdldEJhY2tncm91bmRSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRl
Qm9yZGVySW1hZ2VTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE5pbmVQaWVjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFpbnRCb3hTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySW5saW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVNYXJnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNldHVwQ2xpcFBhdGgpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFrOjpsaW5lSGVpZ2h0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVNjcm9sbGJhcldpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclBhcnQ6OmNvbXB1dGVTY3JvbGxiYXJIZWlnaHQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uR3JhZGllbnRzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUm9vdElubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94Ojph
c2NlbnRBbmREZXNjZW50Rm9yQm94KToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZUluZm88UmVuZGVyVHlwZT46OmNvbXB1
dGVkU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjYWxjUmFkaWlGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmdldFJvdW5kZWRCb3JkZXJGb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmNvbXB1dGVkTGluZUhlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlcGxhY2VkTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxIZWln
aHQpOgorCiAyMDE0LTAyLTI4ICBNYXJ0aW4gSG9kb3ZhbiAgPG1ob2RvdmFuQGluZi51LXN6ZWdl
ZC5odT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByb3VuZGVkSW50UG9pbnQocmVuZGVy
ZXJNYXBwZWRSZXN1bHQpID09IHJvdW5kZWRJbnRQb2ludChyZXN1bHQpIGluIFdlYkNvcmU6OlJl
bmRlckdlb21ldHJ5TWFwOjptYXBUb0NvbnRhaW5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggNmJh
ZDIyNzg4ODk5ZTIyNmI5MmQ4YTFhOGMwYmFhMzc0MTQyYzM1Yy4uZDhhNmZjYTA2Nzg5MTQwMThj
YjU5MzU4ZmJkYzM3NjBiOGYwMTZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0yMTAxLDcgKzIx
MDEsNyBAQCBfX1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDExYm9yZGVyUmlnaHRF
dgogX19aTks3V2ViQ29yZTlSZW5kZXJCb3gyMnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGhFdgogX19a
Tks3V2ViQ29yZTIwUmVuZGVyQm94TW9kZWxPYmplY3QxMXBhZGRpbmdMZWZ0RXYKIF9fWk5LN1dl
YkNvcmUyMFJlbmRlckJveE1vZGVsT2JqZWN0MThjb21wdXRlZENTU1BhZGRpbmdFTlNfNkxlbmd0
aEUKLV9fWk43V2ViQ29yZTIxbWluaW11bVZhbHVlRm9yTGVuZ3RoRVJLTlNfNkxlbmd0aEVOU18x
MExheW91dFVuaXRFUE5TXzEwUmVuZGVyVmlld0ViCitfX1pON1dlYkNvcmUyMW1pbmltdW1WYWx1
ZUZvckxlbmd0aEVSS05TXzZMZW5ndGhFTlNfMTBMYXlvdXRVbml0RVJLTlNfN0ludFNpemVFCiBf
X1pOSzdXZWJDb3JlMjBSZW5kZXJCb3hNb2RlbE9iamVjdDEycGFkZGluZ1JpZ2h0RXYKIF9fWk43
V2ViQ29yZTEwUmVuZGVyVmlldzE4dXBkYXRlTG9naWNhbFdpZHRoRXYKIF9fWk43V2ViQ29yZTEw
UmVuZGVyVmlldzE1Y2FsY0NvbHVtbldpZHRoRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcAppbmRleCA4NDIyZDcwNDUxNWY0NTMyOGM4ZDZhYjAzYjkyYjgyYThhZGZhM2Y5Li4w
Y2FmYzZmMzVlOTJlNzlhMjc0NDI1MTVhMjFhMjNjYzdkNTliYWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZVRleHQuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
TGlzdEl0ZW0uaCIKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVGV4dC5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJUZXh0RW5jb2Rp
bmcuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlVW5pdHMu
aCIKQEAgLTEyNSw3ICsxMjYsNyBAQCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiBnZXRBdHRyaWJ1
dGVTZXRGb3JBY2Nlc3NpYmlsaXR5T2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdAogICAgIH0KIAog
ICAgIGlmICghc3R5bGUtPnRleHRJbmRlbnQoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGlu
dCBpbmRlbnRhdGlvbiA9IHZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50ZXh0SW5kZW50KCksIG9iamVj
dC0+c2l6ZSgpLndpZHRoKCksICZyZW5kZXJlci0+dmlldygpKTsKKyAgICAgICAgaW50IGluZGVu
dGF0aW9uID0gdmFsdWVGb3JMZW5ndGgoc3R5bGUtPnRleHRJbmRlbnQoKSwgb2JqZWN0LT5zaXpl
KCkud2lkdGgoKSwgcmVuZGVyZXItPnZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIGJ1
ZmZlci5yZXNldChnX3N0cmR1cF9wcmludGYoIiVpIiwgaW5kZW50YXRpb24pKTsKICAgICAgICAg
cmVzdWx0ID0gYWRkVG9BdGtBdHRyaWJ1dGVTZXQocmVzdWx0LCBhdGtfdGV4dF9hdHRyaWJ1dGVf
Z2V0X25hbWUoQVRLX1RFWFRfQVRUUl9JTkRFTlQpLCBidWZmZXIuZ2V0KCkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
aW5kZXggODY3ZjkyMTBhNjhmZDlkOGU1ZjU4ZTI2YzMyZTUxMDY4OTMwYjZkMC4uYjk4ZThiMTZk
OWVjYWQ5Y2JkYzg3OWYxYjUyNTRkM2ViNTY3ZDYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTY1Niw3ICs2NTYsNyBA
QCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGNyZWF0ZVBvc2l0aW9uTGlzdEZvckxheWVy
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRAogICAgIHJldHVybiBwb3NpdGlvbkxpc3Q7CiB9CiAK
LXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKFJlbmRl
clN0eWxlKiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3KQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFBvc2l0aW9uT2Zmc2V0VmFs
dWUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IElu
dFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UG9z
aXRpb25PZmZzZXRWYWx1ZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1Byb3BlcgogICAgICAgICBp
ZiAobC50eXBlKCkgPT0gV2ViQ29yZTo6Rml4ZWQpCiAgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShsLnZhbHVlKCksIHN0eWxlKTsKICAgICAgICAgZWxzZSBpZiAobC5p
c1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUodmFsdWVGb3JMZW5ndGgobCwgMCwgcmVuZGVyVmlldyksIHN0eWxlKTsKKyAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKGwsIDAs
IHZpZXdwb3J0U2l6ZSksIHN0eWxlKTsKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNy
ZWF0ZVZhbHVlKGwpOwogICAgIH0KIApAQCAtNzA1LDMxICs3MDUsMzEgQEAgUGFzc1JlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JW
YWxpZENvbG9yKFIKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlQ29sb3JWYWx1ZShj
b2xvci5yZ2IoKSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYg
cmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0
U2l6ZSkKIHsKICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJh
dGVkKCk7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpLnR5cGUoKSA9PSBQZXJjZW50KQogICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyYWRpdXMud2lk
dGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwogICAg
IGVsc2UKLSAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2
YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7Cisg
ICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JM
ZW5ndGgocmFkaXVzLndpZHRoKCksIDAsIHZpZXdwb3J0U2l6ZSksIHN0eWxlKSk7CiAgICAgaWYg
KHJhZGl1cy5oZWlnaHQoKS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgbGlzdC5nZXQoKS5h
cHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocmFkaXVzLmhlaWdodCgpLnBlcmNlbnQo
KSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQotICAgICAg
ICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3Ro
KHJhZGl1cy5oZWlnaHQoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7CisgICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgocmFkaXVz
LmhlaWdodCgpLCAwLCB2aWV3cG9ydFNpemUpLCBzdHlsZSkpOwogICAgIHJldHVybiBsaXN0Owog
fQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUo
Y29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRl
clZpZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAocmFkaXVz
LndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7CiAgICAgICAgIGlmIChyYWRpdXMud2lkdGgo
KS50eXBlKCkgPT0gUGVyY2VudCkKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSk7Ci0gICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZh
bHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0aCgpLCAwLCByZW5kZXJWaWV3KSwgc3R5bGUpOworICAg
ICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMu
d2lkdGgoKSwgMCwgdmlld3BvcnRTaXplKSwgc3R5bGUpOwogICAgIH0KLSAgICByZXR1cm4gZ2V0
Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHJhZGl1cywgc3R5bGUsIHJlbmRlclZpZXcpOworICAg
IHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMocmFkaXVzLCBzdHlsZSwgdmlld3Bv
cnRTaXplKTsKIH0KIAotc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRp
dXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcpCitzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZUxpc3Q+IGdldEJvcmRlclJhZGl1c1No
b3J0aGFuZFZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hT
ZXBhcmF0ZWQoKTsKICAgICBib29sIHNob3dIb3Jpem9udGFsQm90dG9tTGVmdCA9IHN0eWxlLT5i
b3JkZXJUb3BSaWdodFJhZGl1cygpLndpZHRoKCkgIT0gc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRS
YWRpdXMoKS53aWR0aCgpOwpAQCAtNzQwLDEwICs3NDAsMTAgQEAgc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNTaG9ydGhhbmRWYWx1ZShjb25zdCBSZW5kZXJTdHls
ZSogc3QKICAgICBib29sIHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0ID0gc2hvd1ZlcnRpY2FsQm90
dG9tTGVmdCB8fCAoc3R5bGUtPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkgIT0g
c3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKS5oZWlnaHQoKSk7CiAgICAgYm9vbCBzaG93VmVy
dGljYWxUb3BSaWdodCA9IHNob3dWZXJ0aWNhbEJvdHRvbVJpZ2h0IHx8IChzdHlsZS0+Ym9yZGVy
VG9wUmlnaHRSYWRpdXMoKS5oZWlnaHQoKSAhPSBzdHlsZS0+Ym9yZGVyVG9wTGVmdFJhZGl1cygp
LmhlaWdodCgpKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcExlZnRSYWRpdXMgPSBn
ZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRlclRvcExlZnRSYWRpdXMoKSwg
c3R5bGUsIHJlbmRlclZpZXcpOwotICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcFJpZ2h0UmFk
aXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLCBzdHlsZSwgcmVuZGVyVmlldyk7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gYm90
dG9tUmlnaHRSYWRpdXMgPSBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoc3R5bGUtPmJvcmRl
ckJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKLSAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBib3R0b21MZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KHN0eWxlLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCksIHN0eWxlLCByZW5kZXJWaWV3KTsKKyAg
ICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB0b3BMZWZ0UmFkaXVzID0gZ2V0Qm9yZGVyUmFkaXVzQ29y
bmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlLCB2aWV3cG9ydFNp
emUpOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRvcFJpZ2h0UmFkaXVzID0gZ2V0Qm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWVzKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpLCBzdHlsZSwg
dmlld3BvcnRTaXplKTsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBib3R0b21SaWdodFJhZGl1
cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRS
YWRpdXMoKSwgc3R5bGUsIHZpZXdwb3J0U2l6ZSk7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4g
Ym90dG9tTGVmdFJhZGl1cyA9IGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlcyhzdHlsZS0+Ym9y
ZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZSwgdmlld3BvcnRTaXplKTsKIAogICAgIFJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGhvcml6b250YWxSYWRpaSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKICAgICBob3Jpem9udGFsUmFkaWktPmFwcGVuZCh0b3BMZWZ0UmFkaXVz
LT5pdGVtKDApKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBQYXNzUmVmPENTU1ZhbHVlPiBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckZpbHRlcihjb25zdCBSZW5kZXJTdHlsZSogc3R5bAog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VUKQotc3RhdGljIFBhc3NSZWY8Q1NT
VmFsdWU+IHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aChjb25zdCBHcmlkTGVuZ3Ro
JiB0cmFja0JyZWFkdGgsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVu
ZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzcGVjaWZpZWRWYWx1ZUZvckdyaWRU
cmFja0JyZWFkdGgoY29uc3QgR3JpZExlbmd0aCYgdHJhY2tCcmVhZHRoLCBjb25zdCBSZW5kZXJT
dHlsZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBpZiAoIXRy
YWNrQnJlYWR0aC5pc0xlbmd0aCgpKQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUodHJhY2tCcmVhZHRoLmZsZXgoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19GUik7
CkBAIC05NjksMTkgKzk2OSwxOSBAQCBzdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gc3BlY2lmaWVk
VmFsdWVGb3JHcmlkVHJhY2tCcmVhZHRoKGNvbnN0IEdyaWRMZW5ndGgmIHRyYQogICAgIGlmICh0
cmFja0JyZWFkdGhMZW5ndGguaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKICAgICBpZiAodHJhY2tCcmVh
ZHRoTGVuZ3RoLmlzVmlld3BvcnRQZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiB6b29tQWRq
dXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVuZ3RoKHRyYWNrQnJlYWR0aExlbmd0aCwgMCwgcmVu
ZGVyVmlldyksIHN0eWxlKTsKKyAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUo
dmFsdWVGb3JMZW5ndGgodHJhY2tCcmVhZHRoTGVuZ3RoLCAwLCB2aWV3cG9ydFNpemUpLCBzdHls
ZSk7CiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgodHJhY2tCcmVh
ZHRoTGVuZ3RoLCBzdHlsZSk7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlPiBzcGVj
aWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUoY29uc3QgR3JpZFRyYWNrU2l6ZSYgdHJhY2tTaXpl
LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKGNv
bnN0IEdyaWRUcmFja1NpemUmIHRyYWNrU2l6ZSwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBj
b25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCiB7CiAgICAgc3dpdGNoICh0cmFja1NpemUudHlw
ZSgpKSB7CiAgICAgY2FzZSBMZW5ndGhUcmFja1NpemluZzoKLSAgICAgICAgcmV0dXJuIHNwZWNp
ZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUubGVuZ3RoKCksIHN0eWxlLCBy
ZW5kZXJWaWV3KTsKKyAgICAgICAgcmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJl
YWR0aCh0cmFja1NpemUubGVuZ3RoKCksIHN0eWxlLCB2aWV3cG9ydFNpemUpOwogICAgIGNhc2Ug
TWluTWF4VHJhY2tTaXppbmc6CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1pbk1heFRy
YWNrQnJlYWR0aHMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAg
ICAgIG1pbk1heFRyYWNrQnJlYWR0aHMtPmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFj
a0JyZWFkdGgodHJhY2tTaXplLm1pblRyYWNrQnJlYWR0aCgpLCBzdHlsZSwgcmVuZGVyVmlldykp
OwotICAgICAgICBtaW5NYXhUcmFja0JyZWFkdGhzLT5hcHBlbmQoc3BlY2lmaWVkVmFsdWVGb3JH
cmlkVHJhY2tCcmVhZHRoKHRyYWNrU2l6ZS5tYXhUcmFja0JyZWFkdGgoKSwgc3R5bGUsIHJlbmRl
clZpZXcpKTsKKyAgICAgICAgbWluTWF4VHJhY2tCcmVhZHRocy0+YXBwZW5kKHNwZWNpZmllZFZh
bHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUubWluVHJhY2tCcmVhZHRoKCksIHN0eWxl
LCB2aWV3cG9ydFNpemUpKTsKKyAgICAgICAgbWluTWF4VHJhY2tCcmVhZHRocy0+YXBwZW5kKHNw
ZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrQnJlYWR0aCh0cmFja1NpemUubWF4VHJhY2tCcmVhZHRo
KCksIHN0eWxlLCB2aWV3cG9ydFNpemUpKTsKICAgICAgICAgcmV0dXJuIENTU0Z1bmN0aW9uVmFs
dWU6OmNyZWF0ZSgibWlubWF4KCIsIG1pbk1heFRyYWNrQnJlYWR0aHMpOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHN0YXRpYyB2b2lkIGFk
ZFZhbHVlc0Zvck5hbWVkR3JpZExpbmVzQXRJbmRleChjb25zdCBOYW1lZEdyaWRMaW5lc01hcCYg
bmFtZWRHcmlkCiAgICAgfQogfQogCi1zdGF0aWMgUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JH
cmlkVHJhY2tMaXN0KEdyaWRUcmFja1NpemluZ0RpcmVjdGlvbiBkaXJlY3Rpb24sIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVu
ZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3Qo
R3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uIGRpcmVjdGlvbiwgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUp
CiB7CiAgICAgY29uc3QgVmVjdG9yPEdyaWRUcmFja1NpemU+JiB0cmFja1NpemVzID0gZGlyZWN0
aW9uID09IEZvckNvbHVtbnMgPyBzdHlsZS0+Z3JpZENvbHVtbnMoKSA6IHN0eWxlLT5ncmlkUm93
cygpOwogICAgIGNvbnN0IE5hbWVkR3JpZExpbmVzTWFwJiBuYW1lZEdyaWRMaW5lcyA9IGRpcmVj
dGlvbiA9PSBGb3JDb2x1bW5zID8gc3R5bGUtPm5hbWVkR3JpZENvbHVtbkxpbmVzKCkgOiBzdHls
ZS0+bmFtZWRHcmlkUm93TGluZXMoKTsKQEAgLTEwMzEsNyArMTAzMSw3IEBAIHN0YXRpYyBQYXNz
UmVmPENTU1ZhbHVlPiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoR3JpZFRyYWNrU2l6aW5nRGlyZWN0
aW9uIGRpcmVjdGlvCiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHRyYWNrU2l6ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGFkZFZhbHVlc0Zvck5h
bWVkR3JpZExpbmVzQXRJbmRleChuYW1lZEdyaWRMaW5lcywgaSwgbGlzdC5nZXQoKSk7Ci0gICAg
ICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChzcGVjaWZpZWRWYWx1ZUZvckdyaWRUcmFja1NpemUo
dHJhY2tTaXplc1tpXSwgc3R5bGUsIHJlbmRlclZpZXcpKTsKKyAgICAgICAgICAgIGxpc3QuZ2V0
KCkuYXBwZW5kKHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6ZSh0cmFja1NpemVzW2ldLCBz
dHlsZSwgdmlld3BvcnRTaXplKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE0NTYsNyArMTQ1
Niw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShS
ZW5kZXJTdHlsZSogc3R5bGUpCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBQYXNzUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgY29uc3QgSW50U2l6
ZSYgdmlld3BvcnRTaXplKQogewogICAgIExlbmd0aCBsZW5ndGggPSBzdHlsZS0+bGluZUhlaWdo
dCgpOwogICAgIGlmIChsZW5ndGguaXNOZWdhdGl2ZSgpKQpAQCAtMTQ2Nyw3ICsxNDY3LDcgQEAg
c3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXIKICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhhbmQsIHNp
bmNlIGZvbnQtc2l6ZSBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yLCB3ZSByZWFsbHkg
Y2FuJ3QgZG8KICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2VudCgpICog
c3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIHN0eWxlKTsK
LSAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxl
bmd0aCwgMCwgcmVuZGVyVmlldyksIHN0eWxlKTsKKyAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4
ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgMCwgdmlld3BvcnRTaXplKSwgc3R5
bGUpOwogfQogCiBzdGF0aWMgUGFzc1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZm9udFNpemVGcm9t
U3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQpAQCAtMTg5OSw3ICsxODk5LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aDoK
ICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHN0eWxlLT5ib3JkZXJM
ZWZ0V2lkdGgoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9t
OgotICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCks
IENTU1Byb3BlcnR5Qm90dG9tLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAg
ICAgICAgICAgIHJldHVybiBnZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQ
cm9wZXJ0eUJvdHRvbSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+
ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgogICAgICAgICAgICAgcmV0dXJu
IGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5ib3hBbGlnbigpKTsKICNpZiBFTkFC
TEUoQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKQpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGNvbXB1dGVkRm9udC0+dmFyaWFudCA9IGZv
bnRWYXJpYW50RnJvbVN0eWxlKHN0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGNvbXB1dGVkRm9u
dC0+d2VpZ2h0ID0gZm9udFdlaWdodEZyb21TdHlsZShzdHlsZS5nZXQoKSk7CiAgICAgICAgICAg
ICBjb21wdXRlZEZvbnQtPnNpemUgPSBmb250U2l6ZUZyb21TdHlsZShzdHlsZS5nZXQoKSk7Ci0g
ICAgICAgICAgICBjb21wdXRlZEZvbnQtPmxpbmVIZWlnaHQgPSBsaW5lSGVpZ2h0RnJvbVN0eWxl
KHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAg
ICAgIGNvbXB1dGVkRm9udC0+bGluZUhlaWdodCA9IGxpbmVIZWlnaHRGcm9tU3R5bGUoc3R5bGUu
Z2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgICAg
ICBjb21wdXRlZEZvbnQtPmZhbWlseSA9IGZvbnRGYW1pbHlGcm9tU3R5bGUoc3R5bGUuZ2V0KCkp
OwogICAgICAgICAgICAgcmV0dXJuIGNvbXB1dGVkRm9udC5yZWxlYXNlKCk7CiAgICAgICAgIH0K
QEAgLTIwODQsMTQgKzIwODQsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHls
ZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAg
Ly8gZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBleHBsaWNpdCBncmlkIG9yIHRoZSBudW1i
ZXIgb2YgaW1wbGljaXQgdHJhY2tzIGFkZGVkIHRvIHRoZSBncmlkLiBTZWUKICAgICAgICAgLy8g
aHR0cDovL2xpc3RzLnczLm9yZy9BcmNoaXZlcy9QdWJsaWMvd3d3LXN0eWxlLzIwMTNOb3YvMDAx
NC5odG1sCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQXV0b0NvbHVtbnM6Ci0g
ICAgICAgICAgICByZXR1cm4gc3BlY2lmaWVkVmFsdWVGb3JHcmlkVHJhY2tTaXplKHN0eWxlLT5n
cmlkQXV0b0NvbHVtbnMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJW
aWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNrU2l6
ZShzdHlsZS0+Z3JpZEF1dG9Db2x1bW5zKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3Bv
cnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0R3Jp
ZEF1dG9Sb3dzOgotICAgICAgICAgICAgcmV0dXJuIHNwZWNpZmllZFZhbHVlRm9yR3JpZFRyYWNr
U2l6ZShzdHlsZS0+Z3JpZEF1dG9Sb3dzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBzcGVjaWZpZWRWYWx1ZUZvckdy
aWRUcmFja1NpemUoc3R5bGUtPmdyaWRBdXRvUm93cygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5k
b2N1bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkt
PnZpZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0R3JpZFRlbXBsYXRlQ29sdW1uczoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdy
aWRUcmFja0xpc3QoRm9yQ29sdW1ucywgcmVuZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRU
cmFja0xpc3QoRm9yQ29sdW1ucywgcmVuZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmll
d3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
R3JpZFRlbXBsYXRlUm93czoKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xp
c3QoRm9yUm93cywgcmVuZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVu
ZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUZvckdyaWRUcmFja0xpc3QoRm9y
Um93cywgcmVuZGVyZXIsIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmll
dygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJ
bnRTaXplKCkpOwogCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRHcmlkQ29sdW1uU3Rh
cnQ6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JHcmlkUG9zaXRpb24oc3R5bGUtPmdyaWRJ
dGVtQ29sdW1uU3RhcnQoKSk7CkBAIC0yMTU4LDcgKzIxNTgsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0
eWxlLT5pbWFnZVJlc29sdXRpb24oKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICNl
bmRpZgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKLSAgICAgICAgICAgIHJldHVybiBn
ZXRQb3NpdGlvbk9mZnNldFZhbHVlKHN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUxlZnQsIG1fbm9k
ZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0
aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5TGVmdCwgbV9ub2RlLT5kb2N1
bWVudCgpLnJlbmRlclZpZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZp
ZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRl
clNwYWNpbmc6CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShD
U1NWYWx1ZU5vcm1hbCk7CkBAIC0yMTY4LDcgKzIxNjgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJv
cGVydAogICAgICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlm
aWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS5jcmVhdGVWYWx1ZShzdHlsZS0+bGluZUNsYW1wKCkudmFsdWUoKSwgc3R5bGUtPmxpbmVDbGFt
cCgpLmlzUGVyY2VudGFnZSgpID8gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFIDog
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
TGluZUhlaWdodDoKLSAgICAgICAgICAgIHJldHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxl
LmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJl
dHVybiBsaW5lSGVpZ2h0RnJvbVN0eWxlKHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCku
cmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRT
aXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1h
Z2U6CiAgICAgICAgICAgICBpZiAoc3R5bGUtPmxpc3RTdHlsZUltYWdlKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlLT5saXN0U3R5bGVJbWFnZSgpLT5jc3NWYWx1ZSgpOwpAQCAtMjE5
Miw3ICsyMTkyLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgICAgICAv
LyBSZW5kZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJl
dHdlZW4gdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8v
IGFuZCB0aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9
PSBCTE9DSy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8v
IHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5n
IG9uIFJlbmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCi0gICAgICAgICAgICAgICAgdmFs
dWUgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpLCBtX25vZGUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1pbmltdW1W
YWx1ZUZvckxlbmd0aChtYXJnaW5SaWdodCwgdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb250YWlu
aW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUo
KSA6IEludFNpemUoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUg
PSB0b1JlbmRlckJveChyZW5kZXJlciktPm1hcmdpblJpZ2h0KCk7CiAgICAgICAgICAgICByZXR1
cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2YWx1ZSwgc3R5bGUuZ2V0KCkpOwpAQCAtMjI4Myw3
ICsyMjgzLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBvc2l0aW9uOgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZh
bHVlKHN0eWxlLT5wb3NpdGlvbigpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVJpZ2h0Ogot
ICAgICAgICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENT
U1Byb3BlcnR5UmlnaHQsIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAg
ICAgICAgcmV0dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3Bl
cnR5UmlnaHQsIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdWJ5UG9zaXRpb246CiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUtPnJ1YnlQb3NpdGlvbigpKTsKICAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OgpAQCAtMjM4NCw3ICsyMzg0LDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShD
U1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoc3R5bGUt
PnRleHRUcmFuc2Zvcm0oKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUb3A6Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0UG9zaXRpb25PZmZzZXRWYWx1ZShzdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlUb3AsIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0
dXJuIGdldFBvc2l0aW9uT2Zmc2V0VmFsdWUoc3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5VG9wLCBt
X25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRl
clZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5VW5pY29kZUJpZGk6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCkuY3Jl
YXRlVmFsdWUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbjoKQEAgLTI2NTAsOSArMjY1MCw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAgICAg
ICAgICAgICBib3ggPSB0b1JlbmRlckJveChyZW5kZXJlciktPmJvcmRlckJveFJlY3QoKTsKIAot
ICAgICAgICAgICAgICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpOwotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29tQWRqdXN0
ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3RpdmVPcmln
aW5YKCksIGJveC53aWR0aCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCksIHJlbmRl
clZpZXcpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGNvbnN0IEludFNpemUmIHZp
ZXdwb3J0U2l6ZSA9IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKTsKKyAgICAg
ICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFs
dWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNwZWN0aXZlT3JpZ2luWCgpLCBib3gud2lkdGgoKSwgdmll
d3BvcnRTaXplKSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBlcnNw
ZWN0aXZlT3JpZ2luWSgpLCBib3guaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSksIHN0eWxlLmdldCgp
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3Bl
Y3RpdmVPcmlnaW5YKCksIHN0eWxlLmdldCgpKSk7CkBAIC0yNjgyLDEzICsyNjgyLDEzIEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5VmFsdWUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2Vy
U2VsZWN0OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0
eWxlLT51c2VyU2VsZWN0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
TGVmdFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1
ZShzdHlsZS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5k
b2N1bWVudCgpLnJlbmRlclZpZXcoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFk
aXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0
KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCku
cmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1czoKLSAgICAgICAgICAgIHJldHVybiBn
ZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMo
KSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpOworICAgICAg
ICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVlKHN0eWxlLT5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLCBzdHlsZS5nZXQoKSwgbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZp
ZXcoKSA/IG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZpZXdwb3J0U2l6ZSgpIDog
SW50U2l6ZSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXM6
Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJv
cmRlclRvcExlZnRSYWRpdXMoKSwgc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZhbHVl
KHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmll
d3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVy
VG9wUmlnaHRSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCksIHN0eWxlLmdldCgpLCBtX25vZGUt
PmRvY3VtZW50KCkucmVuZGVyVmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJS
YWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKSwgc3R5bGUuZ2V0
KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkgPyBtX25vZGUtPmRvY3VtZW50KCku
cmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlDbGlwOiB7CiAgICAgICAgICAgICBpZiAoIXN0eWxlLT5oYXNDbGlwKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZUF1dG8pOwpAQCAtMjcxMCw5ICsyNzEwLDkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnQKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzQm94KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Ym9yZGVyQm94UmVjdCgpOwog
Ci0gICAgICAgICAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IG1fbm9kZS0+ZG9jdW1l
bnQoKS5yZW5kZXJWaWV3KCk7Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1
c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1Pcmln
aW5YKCksIGJveC53aWR0aCgpLCByZW5kZXJWaWV3KSwgc3R5bGUuZ2V0KCkpKTsKLSAgICAgICAg
ICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKSwgYm94LmhlaWdodCgpLCByZW5kZXJW
aWV3KSwgc3R5bGUuZ2V0KCkpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBJbnRTaXplJiB2aWV3
cG9ydFNpemUgPSBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1
bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCk7CisgICAgICAg
ICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUobWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCksIGJveC53aWR0aCgpLCB2aWV3cG9y
dFNpemUpLCBzdHlsZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlKG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZS0+dHJhbnNmb3Jt
T3JpZ2luWSgpLCBib3guaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSksIHN0eWxlLmdldCgpKSk7CiAg
ICAgICAgICAgICAgICAgaWYgKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5aKCkgIT0gMCkKICAgICAg
ICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3R5bGUt
PnRyYW5zZm9ybU9yaWdpblooKSwgc3R5bGUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0yODg1LDcgKzI4ODUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxl
RXh0cmFjdG9yOjpwcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CiAgICAgICAgICAgICByZXR1cm4gdmFsdWVGb3JO
aW5lUGllY2VJbWFnZShzdHlsZS0+Ym9yZGVySW1hZ2UoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJSYWRpdXM6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0Qm9yZGVyUmFkaXVzU2hv
cnRoYW5kVmFsdWUoc3R5bGUuZ2V0KCksIG1fbm9kZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkp
OworICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c1Nob3J0aGFuZFZhbHVlKHN0eWxl
LmdldCgpLCBtX25vZGUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpID8gbV9ub2RlLT5kb2N1bWVu
dCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkgOiBJbnRTaXplKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Q1NTUHJv
cGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGJvcmRlclJpZ2h0U2hvcnRoYW5kKCkp
OwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggYzA2MjczNmIzY2M4YzkwMGU1
NjYyODQ4NWU4MDdiZmU5ZmYzZjhlMC4uMGE4MmExNjRjODU0ZTg4MzEyOTllOWU3MmRmYTNjZGZl
NDZkNWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVy
LmNwcApAQCAtODg2LDcgKzg4Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAg
ICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPnRvQ2FsY1Zh
bHVlKHN0eWxlUmVzb2x2ZXItPnBhcmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVt
ZW50U3R5bGUoKSktPmV2YWx1YXRlKHBhcmVudFNpemUpOwogICAgICAgICAgICAgZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUtPmlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgc2l6ZSA9IHZhbHVlRm9yTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT52aWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoKSwgMCwgc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkp
OworICAgICAgICAgICAgICAgIHNpemUgPSB2YWx1ZUZvckxlbmd0aChwcmltaXRpdmVWYWx1ZS0+
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCksIDAsIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCku
cmVuZGVyVmlldygpID8gc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPnZp
ZXdwb3J0U2l6ZSgpIDogSW50U2l6ZSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9M
ZW5ndGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5j
cHAKaW5kZXggNTc0OWM4OTQ2NjRjMmJjNmVlYmFiMDgyZjYyMjk0YmQ5YmI1NDA1NC4uYjBiZjQ2
ZmMzNTA5NWRmMGFjODg2ODA0MTg0Y2JkYzAyZmMzOGRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0xl
bmd0aEZ1bmN0aW9ucy5jcHAKQEAgLTI0LDIzICsyNCwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogCisjaW5jbHVkZSAiRmxvYXRTaXplLmgi
CiAjaW5jbHVkZSAiTGF5b3V0VW5pdC5oIgogI2luY2x1ZGUgIkxlbmd0aFNpemUuaCIKLSNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW50IG1pbmltdW1J
bnRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVt
VmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKK2lu
dCBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVu
aXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHJlbmRlclZpZXcsIHJvdW5kUGVyY2VudGFn
ZXMpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
bGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXdwb3J0U2l6ZSwgcm91bmRQZXJjZW50YWdlcykpOwog
fQogCi1pbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVu
aXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2Vu
dGFnZXMpCitpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91
dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGJvb2wgcm91
bmRQZXJjZW50YWdlcykKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZUZvckxl
bmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgcmVuZGVyVmlldywgcm91bmRQZXJjZW50YWdlcykp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4
aW11bVZhbHVlLCB2aWV3cG9ydFNpemUsIHJvdW5kUGVyY2VudGFnZXMpKTsKIH0KIAotTGF5b3V0
VW5pdCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVu
aXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBib29sIHJvdW5kUGVyY2Vu
dGFnZXMpCitMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxl
bmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6
ZSwgYm9vbCByb3VuZFBlcmNlbnRhZ2VzKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkg
ewogICAgIGNhc2UgRml4ZWQ6CkBAIC01MywyNSArNTMsMTMgQEAgTGF5b3V0VW5pdCBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZh
bHVlLAogICAgIGNhc2UgQ2FsY3VsYXRlZDoKICAgICAgICAgcmV0dXJuIGxlbmd0aC5ub25OYW5D
YWxjdWxhdGVkVmFsdWUobWF4aW11bVZhbHVlKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFn
ZVdpZHRoOgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLndpZHRoKCkgKiBsZW5ndGgudmlld3Bv
cnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQodmlld3BvcnRTaXplLndpZHRoKCkgKiBsZW5ndGgudmlld3Bv
cnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50
YWdlSGVpZ2h0OgotICAgICAgICBpZiAocmVuZGVyVmlldykKLSAgICAgICAgICAgIHJldHVybiBM
YXlvdXRVbml0KHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpICogbGVuZ3RoLnZp
ZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBMYXlvdXRVbml0KHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIGxlbmd0aC52
aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBl
cmNlbnRhZ2VNaW46Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0gICAgICAgICAgICBJbnRT
aXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6ZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptaW4odmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAx
MDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdChzdGQ6Om1pbih2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdo
dCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAg
Y2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VNYXg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KSB7Ci0g
ICAgICAgICAgICBJbnRTaXplIHZpZXdwb3J0U2l6ZSA9IHJlbmRlclZpZXctPnZpZXdwb3J0U2l6
ZSgpOwotICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoc3RkOjptYXgodmlld3BvcnRTaXpl
LndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmll
d3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAv
IDEwMC4wZik7CiAgICAgY2FzZSBGaWxsQXZhaWxhYmxlOgogICAgIGNhc2UgQXV0bzoKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC04OSw3ICs3Nyw3IEBAIExheW91dFVuaXQgbWluaW11bVZhbHVlRm9y
TGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwKICAg
ICByZXR1cm4gMDsKIH0KIAotTGF5b3V0VW5pdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgm
IGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcs
IGJvb2wgcm91bmRQZXJjZW50YWdlcykKK0xheW91dFVuaXQgdmFsdWVGb3JMZW5ndGgoY29uc3Qg
TGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUsIGJvb2wgcm91bmRQZXJjZW50YWdlcykKIHsKICAgICBzd2l0Y2ggKGxlbmd0
aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpAQCAtOTksNyArODcsNyBAQCBMYXlvdXRVbml0
IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1W
YWx1ZSwgUmVuZGVyVgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlSGVpZ2h0OgogICAgIGNh
c2UgVmlld3BvcnRQZXJjZW50YWdlTWluOgogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlTWF4
OgotICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZh
bHVlLCByZW5kZXJWaWV3LCByb3VuZFBlcmNlbnRhZ2VzKTsKKyAgICAgICAgcmV0dXJuIG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChsZW5ndGgsIG1heGltdW1WYWx1ZSwgdmlld3BvcnRTaXplLCByb3Vu
ZFBlcmNlbnRhZ2VzKTsKICAgICBjYXNlIEZpbGxBdmFpbGFibGU6CiAgICAgY2FzZSBBdXRvOgog
ICAgICAgICByZXR1cm4gbWF4aW11bVZhbHVlOwpAQCAtMTE4LDcgKzEwNiw3IEBAIExheW91dFVu
aXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11
bVZhbHVlLCBSZW5kZXJWCiB9CiAKIC8vIEZJWE1FOiB3aGVuIHN1YnBpeGVsIGxheW91dCBpcyBz
dXBwb3J0ZWQgdGhpcyBjb3B5IG9mIGZsb2F0VmFsdWVGb3JMZW5ndGgoKSBjYW4gYmUgcmVtb3Zl
ZC4gU2VlIGJ1ZyA3MTE0My4KLWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3Ro
JiBsZW5ndGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
KQorZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0
VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKICAgICBz
d2l0Y2ggKGxlbmd0aC50eXBlKCkpIHsKICAgICBjYXNlIEZpeGVkOgpAQCAtMTMxLDI1ICsxMTks
MTMgQEAgZmxvYXQgZmxvYXRWYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5
b3V0VW5pdCBtYXhpbXVtVmFsdWUsIFJlbmRlclYKICAgICBjYXNlIENhbGN1bGF0ZWQ6CiAgICAg
ICAgIHJldHVybiBsZW5ndGgubm9uTmFuQ2FsY3VsYXRlZFZhbHVlKG1heGltdW1WYWx1ZSk7ICAg
ICAgICAgICAgICAgIAogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlV2lkdGg6Ci0gICAgICAg
IGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVu
ZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50Pih2aWV3cG9ydFNpemUud2lkdGgoKSAqIGxlbmd0aC52aWV3cG9ydFBl
cmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9ydFBlcmNlbnRhZ2VI
ZWlnaHQ6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0KCkgKiBsZW5ndGgu
dmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlld3BvcnRTaXplLmhlaWdodCgpICog
bGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFZp
ZXdwb3J0UGVyY2VudGFnZU1pbjoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAg
ICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2aWV3cG9ydFNpemUu
d2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKHZpZXdwb3J0U2l6ZS53aWR0aCgp
LCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0
aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1heDoKLSAgICAgICAg
aWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVu
ZGVyVmlldy0+dmlld3BvcnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgp
KSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0
ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVu
Z3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFJlbGF0
aXZlOgogICAgIGNhc2UgSW50cmluc2ljOgogICAgIGNhc2UgTWluSW50cmluc2ljOgpAQCAtMTY0
LDcgKzE0MCw3IEBAIGZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5n
dGgsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJWCiAgICAgcmV0dXJuIDA7CiB9CiAK
LWZsb2F0IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IG1h
eGltdW1WYWx1ZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK2Zsb2F0IGZsb2F0VmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIHN3aXRjaCAobGVuZ3RoLnR5cGUoKSkgewogICAg
IGNhc2UgRml4ZWQ6CkBAIC0xNzcsMjUgKzE1MywxMyBAQCBmbG9hdCBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBmbG9hdCBtYXhpbXVtVmFsdWUsIFJlbmRlclZpZXcq
CiAgICAgY2FzZSBDYWxjdWxhdGVkOgogICAgICAgICByZXR1cm4gbGVuZ3RoLm5vbk5hbkNhbGN1
bGF0ZWRWYWx1ZShtYXhpbXVtVmFsdWUpOwogICAgIGNhc2UgVmlld3BvcnRQZXJjZW50YWdlV2lk
dGg6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkud2lkdGgoKSAqIGxlbmd0aC52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pih2aWV3cG9ydFNpemUud2lkdGgoKSAqIGxlbmd0
aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7CiAgICAgY2FzZSBWaWV3cG9y
dFBlcmNlbnRhZ2VIZWlnaHQ6Ci0gICAgICAgIGlmIChyZW5kZXJWaWV3KQotICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCkuaGVpZ2h0
KCkgKiBsZW5ndGgudmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgLyAxMDAuMGYpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmlld3BvcnRTaXpl
LmhlaWdodCgpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsK
ICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1pbjoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcp
IHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldy0+dmlld3Bv
cnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1pbih2
aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRTaXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3
cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4wZik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHN0ZDo6bWluKHZpZXdwb3J0
U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAgICBjYXNlIFZpZXdwb3J0UGVyY2VudGFnZU1h
eDoKLSAgICAgICAgaWYgKHJlbmRlclZpZXcpIHsKLSAgICAgICAgICAgIEludFNpemUgdmlld3Bv
cnRTaXplID0gcmVuZGVyVmlldy0+dmlld3BvcnRTaXplKCk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8aW50PihzdGQ6Om1heCh2aWV3cG9ydFNpemUud2lkdGgoKSwgdmlld3BvcnRT
aXplLmhlaWdodCgpKSAqIGxlbmd0aC52aWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSAvIDEwMC4w
Zik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KHN0ZDo6bWF4KHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVp
Z2h0KCkpICogbGVuZ3RoLnZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIC8gMTAwLjBmKTsKICAg
ICBjYXNlIFJlbGF0aXZlOgogICAgIGNhc2UgSW50cmluc2ljOgogICAgIGNhc2UgTWluSW50cmlu
c2ljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0xlbmd0aEZ1bmN0aW9ucy5oCmluZGV4IDZiNDEwMjkxODY0YmJi
MzdjN2IzMTFjYTkwMmYwN2I5N2JmNmRkNjIuLjU2MDIyYjNhYzY2MzczOWMxMzg4MTZkOTNiNjFl
NmJkNzAwMDk1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9MZW5ndGhGdW5jdGlv
bnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTGVuZ3RoRnVuY3Rpb25zLmgKQEAgLTI0LDIw
ICsyNCwyMSBAQAogI2lmbmRlZiBMZW5ndGhGdW5jdGlvbnNfaAogI2RlZmluZSBMZW5ndGhGdW5j
dGlvbnNfaAogCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIExheW91dFVuaXQ7Ci1jbGFzcyBSZW5kZXJWaWV3Owog
c3RydWN0IExlbmd0aDsKIHN0cnVjdCBMZW5ndGhTaXplOwogCi1pbnQgbWluaW11bUludFZhbHVl
Rm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBSZW5kZXJW
aWV3KiA9IDAsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLWludCBpbnRWYWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmll
dyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7Ci1MYXlvdXRVbml0IG1pbmlt
dW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwg
UmVuZGVyVmlldyogPSAwLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7Ci1MYXlvdXRV
bml0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVl
LCBSZW5kZXJWaWV3KiA9IDAsIGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKLWZsb2F0
IGZsb2F0VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFs
dWUsIFJlbmRlclZpZXcqID0gMCk7Ci1mbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExl
bmd0aCYsIGZsb2F0IG1heGltdW1WYWx1ZSwgUmVuZGVyVmlldyogPSAwKTsKK2ludCBtaW5pbXVt
SW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUs
IGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxz
ZSk7CitpbnQgaW50VmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhp
bXVtVmFsdWUsIGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpLCBib29sIHJvdW5kUGVyY2VudGFn
ZXMgPSBmYWxzZSk7CitMYXlvdXRVbml0IG1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25zdCBMZW5n
dGgmLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCks
IGJvb2wgcm91bmRQZXJjZW50YWdlcyA9IGZhbHNlKTsKK0xheW91dFVuaXQgdmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGNvbnN0IEludFNpemUm
ID0gSW50U2l6ZSgpLCBib29sIHJvdW5kUGVyY2VudGFnZXMgPSBmYWxzZSk7CitmbG9hdCBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIExheW91dFVuaXQgbWF4aW11bVZhbHVlLCBj
b25zdCBJbnRTaXplJiA9IEludFNpemUoKSk7CitmbG9hdCBmbG9hdFZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYsIGZsb2F0IG1heGltdW1WYWx1ZSwgY29uc3QgSW50U2l6ZSYgPSBJbnRTaXpl
KCkpOwogRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3RoU2l6ZSYs
IGNvbnN0IEZsb2F0U2l6ZSYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA4Y2ExMGU5NmI5ZTZjZjg1Yzc3MTNhZWNiNTYxNTA0MTM4YTcwYWEx
Li42ZGNlY2NhMWQwNDYzNzMwNmEzNTcxODdjZDhjMzIwNWFhNWI1Y2Y3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTE4OTgsNyArMTg5OCw3IEBAIGJvb2wgRG9jdW1lbnQ6OmlzUGFnZUJv
eFZpc2libGUoaW50IHBhZ2VJbmRleCkKIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2lu
c0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmIG1hcmdpblRv
cCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0b20sIGludCYgbWFyZ2luTGVmdCkK
IHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZW5zdXJlU3R5bGVSZXNvbHZlcigp
LnN0eWxlRm9yUGFnZShwYWdlSW5kZXgpOwotICAgIFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJW
aWV3KCk7CisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID0gcmVuZGVyVmlldygpID8g
cmVuZGVyVmlldygpLT52aWV3cG9ydFNpemUoKSA6IEludFNpemUoKTsKIAogICAgIGludCB3aWR0
aCA9IHBhZ2VTaXplLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCgp
OwpAQCAtMTkxNyw4ICsxOTE3LDggQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5z
SW5QaXhlbHMoaW50IHBhZ2VJbmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICAgICAg
TGVuZ3RoU2l6ZSBzaXplID0gc3R5bGUtPnBhZ2VTaXplKCk7CiAgICAgICAgIEFTU0VSVChzaXpl
LndpZHRoKCkuaXNGaXhlZCgpKTsKICAgICAgICAgQVNTRVJUKHNpemUuaGVpZ2h0KCkuaXNGaXhl
ZCgpKTsKLSAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChzaXplLndpZHRoKCksIDAsIHZp
ZXcpOwotICAgICAgICBoZWlnaHQgPSB2YWx1ZUZvckxlbmd0aChzaXplLmhlaWdodCgpLCAwLCB2
aWV3KTsKKyAgICAgICAgd2lkdGggPSB2YWx1ZUZvckxlbmd0aChzaXplLndpZHRoKCksIDAsIHZp
ZXdwb3J0U2l6ZSk7CisgICAgICAgIGhlaWdodCA9IHZhbHVlRm9yTGVuZ3RoKHNpemUuaGVpZ2h0
KCksIDAsIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0
OgpAQCAtMTkyOCwxMCArMTkyOCwxMCBAQCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdp
bnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogCiAgICAg
Ly8gVGhlIHBlcmNlbnRhZ2UgaXMgY2FsY3VsYXRlZCB3aXRoIHJlc3BlY3QgdG8gdGhlIHdpZHRo
IGV2ZW4gZm9yIG1hcmdpbiB0b3AgYW5kIGJvdHRvbS4KICAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9DU1MyL2JveC5odG1sI21hcmdpbi1wcm9wZXJ0aWVzCi0gICAgbWFyZ2luVG9wID0gc3R5
bGUtPm1hcmdpblRvcCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogaW50VmFsdWVGb3JMZW5ndGgo
c3R5bGUtPm1hcmdpblRvcCgpLCB3aWR0aCwgdmlldyk7Ci0gICAgbWFyZ2luUmlnaHQgPSBzdHls
ZS0+bWFyZ2luUmlnaHQoKS5pc0F1dG8oKSA/IG1hcmdpblJpZ2h0IDogaW50VmFsdWVGb3JMZW5n
dGgoc3R5bGUtPm1hcmdpblJpZ2h0KCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJnaW5Cb3R0b20g
PSBzdHlsZS0+bWFyZ2luQm90dG9tKCkuaXNBdXRvKCkgPyBtYXJnaW5Cb3R0b20gOiBpbnRWYWx1
ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luQm90dG9tKCksIHdpZHRoLCB2aWV3KTsKLSAgICBtYXJn
aW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRW
YWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlldyk7CisgICAgbWFy
Z2luVG9wID0gc3R5bGUtPm1hcmdpblRvcCgpLmlzQXV0bygpID8gbWFyZ2luVG9wIDogaW50VmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpblRvcCgpLCB3aWR0aCwgdmlld3BvcnRTaXplKTsKKyAg
ICBtYXJnaW5SaWdodCA9IHN0eWxlLT5tYXJnaW5SaWdodCgpLmlzQXV0bygpID8gbWFyZ2luUmln
aHQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFyZ2luUmlnaHQoKSwgd2lkdGgsIHZpZXdw
b3J0U2l6ZSk7CisgICAgbWFyZ2luQm90dG9tID0gc3R5bGUtPm1hcmdpbkJvdHRvbSgpLmlzQXV0
bygpID8gbWFyZ2luQm90dG9tIDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkJvdHRv
bSgpLCB3aWR0aCwgdmlld3BvcnRTaXplKTsKKyAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdp
bkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+
bWFyZ2luTGVmdCgpLCB3aWR0aCwgdmlld3BvcnRTaXplKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6
Y3JlYXRlU3R5bGVSZXNvbHZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5j
cHAKaW5kZXggNWVlYjMxZTQ2Zjg1MWY3NGI3Mzg1ZGNjMGJmYWM5OWM3NTkxNDIxNy4uYThjNWY3
MzY1MzU0YmVjY2VlZTNlYmIwMGY4OGQ2ODcwNzE5NmE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMTQzLDMwICsxNDMsMzAgQEAgUGF0aCBIVE1MQXJlYUVs
ZW1lbnQ6OmdldFJlZ2lvbihjb25zdCBMYXlvdXRTaXplJiBzaXplKSBjb25zdAogICAgIH0KIAog
ICAgIFBhdGggcGF0aDsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCk7CisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID0gZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCkgPyBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+dmlld3BvcnRTaXplKCkg
OiBJbnRTaXplKCk7CiAgICAgc3dpdGNoIChzaGFwZSkgewogICAgICAgICBjYXNlIFBvbHk6CiAg
ICAgICAgICAgICBpZiAobV9jb29yZHNMZW4gPj0gNikgewogICAgICAgICAgICAgICAgIGludCBu
dW1Qb2ludHMgPSBtX2Nvb3Jkc0xlbiAvIDI7Ci0gICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8o
RmxvYXRQb2ludChtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCByZW5k
ZXJWaWV3KSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRl
clZpZXcpKSk7CisgICAgICAgICAgICAgICAgcGF0aC5tb3ZlVG8oRmxvYXRQb2ludChtaW5pbXVt
VmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCB2aWV3cG9ydFNpemUpLCBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgdmlld3BvcnRTaXplKSkpOwogICAg
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbnVtUG9pbnRzOyArK2kpCi0gICAgICAg
ICAgICAgICAgICAgIHBhdGguYWRkTGluZVRvKEZsb2F0UG9pbnQobWluaW11bVZhbHVlRm9yTGVu
Z3RoKG1fY29vcmRzW2kgKiAyXSwgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0LCByZW5kZXJWaWV3KSkpOworICAgICAg
ICAgICAgICAgICAgICBwYXRoLmFkZExpbmVUbyhGbG9hdFBvaW50KG1pbmltdW1WYWx1ZUZvckxl
bmd0aChtX2Nvb3Jkc1tpICogMl0sIHdpZHRoLCB2aWV3cG9ydFNpemUpLCBtaW5pbXVtVmFsdWVG
b3JMZW5ndGgobV9jb29yZHNbaSAqIDIgKyAxXSwgaGVpZ2h0LCB2aWV3cG9ydFNpemUpKSk7CiAg
ICAgICAgICAgICAgICAgcGF0aC5jbG9zZVN1YnBhdGgoKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENpcmNsZToKICAgICAgICAgICAgIGlmIChtX2Nv
b3Jkc0xlbiA+PSAzKSB7CiAgICAgICAgICAgICAgICAgTGVuZ3RoIHJhZGl1cyA9IG1fY29vcmRz
WzJdOwotICAgICAgICAgICAgICAgIGludCByID0gc3RkOjptaW4obWluaW11bVZhbHVlRm9yTGVu
Z3RoKHJhZGl1cywgd2lkdGgsIHJlbmRlclZpZXcpLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFk
aXVzLCBoZWlnaHQsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlw
c2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lkdGgsIHJl
bmRlclZpZXcpIC0gciwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQs
IHJlbmRlclZpZXcpIC0gciwgMiAqIHIsIDIgKiByKSk7CisgICAgICAgICAgICAgICAgaW50IHIg
PSBzdGQ6Om1pbihtaW5pbXVtVmFsdWVGb3JMZW5ndGgocmFkaXVzLCB3aWR0aCwgdmlld3BvcnRT
aXplKSwgbWluaW11bVZhbHVlRm9yTGVuZ3RoKHJhZGl1cywgaGVpZ2h0LCB2aWV3cG9ydFNpemUp
KTsKKyAgICAgICAgICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KG1pbmltdW1WYWx1
ZUZvckxlbmd0aChtX2Nvb3Jkc1swXSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSkgLSByLCBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMV0sIGhlaWdodCwgdmlld3BvcnRTaXplKSAtIHIsIDIg
KiByLCAyICogcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgUmVjdDoKICAgICAgICAgICAgIGlmIChtX2Nvb3Jkc0xlbiA+PSA0KSB7Ci0gICAgICAg
ICAgICAgICAgaW50IHgwID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzBdLCB3aWR0
aCwgcmVuZGVyVmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHkwID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1fY29vcmRzWzFdLCBoZWlnaHQsIHJlbmRlclZpZXcpOwotICAgICAgICAgICAgICAg
IGludCB4MSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1syXSwgd2lkdGgsIHJlbmRl
clZpZXcpOwotICAgICAgICAgICAgICAgIGludCB5MSA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aCht
X2Nvb3Jkc1szXSwgaGVpZ2h0LCByZW5kZXJWaWV3KTsKKyAgICAgICAgICAgICAgICBpbnQgeDAg
PSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobV9jb29yZHNbMF0sIHdpZHRoLCB2aWV3cG9ydFNpemUp
OworICAgICAgICAgICAgICAgIGludCB5MCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jk
c1sxXSwgaGVpZ2h0LCB2aWV3cG9ydFNpemUpOworICAgICAgICAgICAgICAgIGludCB4MSA9IG1p
bmltdW1WYWx1ZUZvckxlbmd0aChtX2Nvb3Jkc1syXSwgd2lkdGgsIHZpZXdwb3J0U2l6ZSk7Cisg
ICAgICAgICAgICAgICAgaW50IHkxID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1fY29vcmRzWzNd
LCBoZWlnaHQsIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgICAgICAgICAgcGF0aC5hZGRSZWN0KEZs
b2F0UmVjdCh4MCwgeTAsIHgxIC0geDAsIHkxIC0geTApKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5k
ZXggY2I4MTU0MmIwY2NhNzU5Mjg4Njg1MzNmOGVkOTBjNGJhM2QzNTk5NC4uNTZhOWZmZDg1NTc2
NmQ5NGRjODU3YjVjYTY3YjlkNDA1ODJhZjU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0zMjAwLDcgKzMyMDAsNyBAQCBib29sIFJlbmRlckJsb2NrOjpu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYg
cmVzdQogICAgIGlmICghaXNSZW5kZXJWaWV3KCkgJiYgc3R5bGUoKS5oYXNCb3JkZXJSYWRpdXMo
KSkgewogICAgICAgICBMYXlvdXRSZWN0IGJvcmRlclJlY3QgPSBib3JkZXJCb3hSZWN0KCk7CiAg
ICAgICAgIGJvcmRlclJlY3QubW92ZUJ5KGFkanVzdGVkTG9jYXRpb24pOwotICAgICAgICBSb3Vu
ZGVkUmVjdCBib3JkZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IoYm9yZGVyUmVjdCwg
JnZpZXcoKSk7CisgICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRl
ZEJvcmRlckZvcihib3JkZXJSZWN0LCB2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgICAgICBp
ZiAoIWxvY2F0aW9uSW5Db250YWluZXIuaW50ZXJzZWN0cyhib3JkZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ0ODYsMTEgKzQ0ODYsMTEgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJCbG9jazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLAogICAgIGlmIChmaXJzdExpbmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29s
bGVjdGlvbigpLnVzZXNGaXJzdExpbmVSdWxlcygpKSB7CiAgICAgICAgIFJlbmRlclN0eWxlJiBz
ID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHN0eWxlKCk7CiAgICAgICAgIGlmICgm
cyAhPSAmc3R5bGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzLmNvbXB1dGVkTGluZUhlaWdodCgm
dmlldygpKTsKKyAgICAgICAgICAgIHJldHVybiBzLmNvbXB1dGVkTGluZUhlaWdodCh2aWV3KCku
dmlld3BvcnRTaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAobV9saW5lSGVpZ2h0ID09IC0x
KQotICAgICAgICBtX2xpbmVIZWlnaHQgPSBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgmdmll
dygpKTsKKyAgICAgICAgbV9saW5lSGVpZ2h0ID0gc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQo
dmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKIAogICAgIHJldHVybiBtX2xpbmVIZWlnaHQ7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNjNjQxMDkzNDY4ZjIxYTJl
ZTVhZmJhZWJhODkxMzQxNDU0NGNlNDAuLjgxNTBjMzIwMzdhZDIyYjEzOGI2ZmY5NTdjZWU2YmYz
NTVjNTgxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMjA5
LDcgKzEyMDksNyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaQogICAgICAgICAvLyBUbyBhdm9p
ZCB0aGUgYmFja2dyb3VuZCBjb2xvciBibGVlZGluZyBvdXQgYmVoaW5kIHRoZSBib3JkZXIsIHdl
J2xsIHJlbmRlciBiYWNrZ3JvdW5kIGFuZCBib3JkZXIKICAgICAgICAgLy8gaW50byBhIHRyYW5z
cGFyZW5jeSBsYXllciwgYW5kIHRoZW4gY2xpcCB0aGF0IGluIG9uZSBnbyAod2hpY2ggcmVxdWly
ZXMgc2V0dGluZyB1cCB0aGUgY2xpcCBiZWZvcmUKICAgICAgICAgLy8gYmVnaW5uaW5nIHRoZSBs
YXllcikuCi0gICAgICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJv
cmRlckZvcihwYWludFJlY3QsICZ2aWV3KCkpOworICAgICAgICBSb3VuZGVkUmVjdCBib3JkZXIg
PSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRSZWN0LCB2aWV3KCkudmlld3BvcnRT
aXplKCkpOwogICAgICAgICBzdGF0ZVNhdmVyLnNhdmUoKTsKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChib3JkZXIpOwogICAgICAgICBwYWludEluZm8uY29udGV4
dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcigxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDVhMGMyZGM5MWVhZGRiNjhlMDJl
MjYzMmE2NTM3NTkwNThjNjczOTUuLmQ3MTg4M2Q5OWU3NDg5MmM5MTUwYTVmOWJlYjhlNGRiMmUx
NjA2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcApAQCAtNDg5LDkgKzQ4OSw5IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZyhjb25zdCBMZW5ndGgmIHBhZGRpbmcpIGNvbnN0CiBS
b3VuZGVkUmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0QmFja2dyb3VuZFJvdW5kZWRSZWN0
KGNvbnN0IExheW91dFJlY3QmIGJvcmRlclJlY3QsIElubGluZUZsb3dCb3gqIGJveCwgTGF5b3V0
VW5pdCBpbmxpbmVCb3hXaWR0aCwgTGF5b3V0VW5pdCBpbmxpbmVCb3hIZWlnaHQsCiAgICAgYm9v
bCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBj
b25zdAogewotICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9IHN0eWxlKCkuZ2V0Um91bmRlZEJvcmRl
ckZvcihib3JkZXJSZWN0LCAmdmlldygpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRl
TG9naWNhbFJpZ2h0RWRnZSk7CisgICAgUm91bmRlZFJlY3QgYm9yZGVyID0gc3R5bGUoKS5nZXRS
b3VuZGVkQm9yZGVyRm9yKGJvcmRlclJlY3QsIHZpZXcoKS52aWV3cG9ydFNpemUoKSwgaW5jbHVk
ZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOwogICAgIGlmIChib3gg
JiYgKGJveC0+bmV4dExpbmVCb3goKSB8fCBib3gtPnByZXZMaW5lQm94KCkpKSB7Ci0gICAgICAg
IFJvdW5kZWRSZWN0IHNlZ21lbnRCb3JkZXIgPSBzdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Io
TGF5b3V0UmVjdCgwLCAwLCBpbmxpbmVCb3hXaWR0aCwgaW5saW5lQm94SGVpZ2h0KSwgJnZpZXco
KSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAg
ICAgICBSb3VuZGVkUmVjdCBzZWdtZW50Qm9yZGVyID0gc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVy
Rm9yKExheW91dFJlY3QoMCwgMCwgaW5saW5lQm94V2lkdGgsIGlubGluZUJveEhlaWdodCksIHZp
ZXcoKS52aWV3cG9ydFNpemUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwogICAgICAgICBib3JkZXIuc2V0UmFkaWkoc2VnbWVudEJvcmRlci5yYWRp
aSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGJvcmRlcjsKQEAgLTEyMTksMTMgKzEyMTksMTMgQEAg
dm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Z2V0R2VvbWV0cnlGb3JCYWNrZ3JvdW5kSW1hZ2Uo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE8KICAgICBkZXN0UmVjdCA9IGdlb21ldHJ5LmRlc3RSZWN0
KCk7CiB9CiAKLXN0YXRpYyBMYXlvdXRVbml0IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUoTGVuZ3Ro
IGJvcmRlclNsaWNlLCBMYXlvdXRVbml0IGJvcmRlclNpZGUsIExheW91dFVuaXQgaW1hZ2VTaWRl
LCBMYXlvdXRVbml0IGJveEV4dGVudCwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKK3N0YXRpYyBM
YXlvdXRVbml0IGNvbXB1dGVCb3JkZXJJbWFnZVNpZGUoTGVuZ3RoIGJvcmRlclNsaWNlLCBMYXlv
dXRVbml0IGJvcmRlclNpZGUsIExheW91dFVuaXQgaW1hZ2VTaWRlLCBMYXlvdXRVbml0IGJveEV4
dGVudCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIGlmIChib3JkZXJTbGlj
ZS5pc1JlbGF0aXZlKCkpCiAgICAgICAgIHJldHVybiBib3JkZXJTbGljZS52YWx1ZSgpICogYm9y
ZGVyU2lkZTsKICAgICBpZiAoYm9yZGVyU2xpY2UuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiBp
bWFnZVNpZGU7Ci0gICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3RoKGJvcmRlclNsaWNlLCBib3hFeHRl
bnQsIHJlbmRlclZpZXcpOworICAgIHJldHVybiB2YWx1ZUZvckxlbmd0aChib3JkZXJTbGljZSwg
Ym94RXh0ZW50LCB2aWV3cG9ydFNpemUpOwogfQogCiBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsCkBAIC0xMjU0
LDcgKzEyNTQsNiBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUlt
YWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgaW50IGltYWdlV2lk
dGggPSBpbWFnZVNpemUud2lkdGgoKTsKICAgICBpbnQgaW1hZ2VIZWlnaHQgPSBpbWFnZVNpemUu
aGVpZ2h0KCk7Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9ICZ2aWV3KCk7CiAKICAgICBm
bG9hdCBpbWFnZVNjYWxlRmFjdG9yID0gc3R5bGVJbWFnZS0+aW1hZ2VTY2FsZUZhY3RvcigpOwog
ICAgIGludCB0b3BTbGljZSA9IHN0ZDo6bWluPGludD4oaW1hZ2VIZWlnaHQsIHZhbHVlRm9yTGVu
Z3RoKG5pbmVQaWVjZUltYWdlLmltYWdlU2xpY2VzKCkudG9wKCksIGltYWdlSGVpZ2h0KSkgKiBp
bWFnZVNjYWxlRmFjdG9yOwpAQCAtMTI2NCwxMSArMTI2MywxMiBAQCBib29sIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LAogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBoUnVsZSA9IG5pbmVQaWVjZUltYWdl
Lmhvcml6b250YWxSdWxlKCk7CiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSB2UnVsZSA9IG5pbmVQ
aWVjZUltYWdlLnZlcnRpY2FsUnVsZSgpOwotCi0gICAgaW50IHRvcFdpZHRoID0gY29tcHV0ZUJv
cmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS50b3AoKSwgc3R5bGUt
PmJvcmRlclRvcFdpZHRoKCksIHRvcFNsaWNlLCBib3JkZXJJbWFnZVJlY3QuaGVpZ2h0KCksIHJl
bmRlclZpZXcpOwotICAgIGludCByaWdodFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShu
aW5lUGllY2VJbWFnZS5ib3JkZXJTbGljZXMoKS5yaWdodCgpLCBzdHlsZS0+Ym9yZGVyUmlnaHRX
aWR0aCgpLCByaWdodFNsaWNlLCBib3JkZXJJbWFnZVJlY3Qud2lkdGgoKSwgcmVuZGVyVmlldyk7
Ci0gICAgaW50IGJvdHRvbVdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJ
bWFnZS5ib3JkZXJTbGljZXMoKS5ib3R0b20oKSwgc3R5bGUtPmJvcmRlckJvdHRvbVdpZHRoKCks
IGJvdHRvbVNsaWNlLCBib3JkZXJJbWFnZVJlY3QuaGVpZ2h0KCksIHJlbmRlclZpZXcpOwotICAg
IGludCBsZWZ0V2lkdGggPSBjb21wdXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJv
cmRlclNsaWNlcygpLmxlZnQoKSwgc3R5bGUtPmJvcmRlckxlZnRXaWR0aCgpLCBsZWZ0U2xpY2Us
IGJvcmRlckltYWdlUmVjdC53aWR0aCgpLCByZW5kZXJWaWV3KTsKKyAgICAKKyAgICBjb25zdCBJ
bnRTaXplJiB2aWV3cG9ydFNpemUgPSB2aWV3KCkudmlld3BvcnRTaXplKCk7CisgICAgaW50IHRv
cFdpZHRoID0gY29tcHV0ZUJvcmRlckltYWdlU2lkZShuaW5lUGllY2VJbWFnZS5ib3JkZXJTbGlj
ZXMoKS50b3AoKSwgc3R5bGUtPmJvcmRlclRvcFdpZHRoKCksIHRvcFNsaWNlLCBib3JkZXJJbWFn
ZVJlY3QuaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSk7CisgICAgaW50IHJpZ2h0V2lkdGggPSBjb21w
dXRlQm9yZGVySW1hZ2VTaWRlKG5pbmVQaWVjZUltYWdlLmJvcmRlclNsaWNlcygpLnJpZ2h0KCks
IHN0eWxlLT5ib3JkZXJSaWdodFdpZHRoKCksIHJpZ2h0U2xpY2UsIGJvcmRlckltYWdlUmVjdC53
aWR0aCgpLCB2aWV3cG9ydFNpemUpOworICAgIGludCBib3R0b21XaWR0aCA9IGNvbXB1dGVCb3Jk
ZXJJbWFnZVNpZGUobmluZVBpZWNlSW1hZ2UuYm9yZGVyU2xpY2VzKCkuYm90dG9tKCksIHN0eWxl
LT5ib3JkZXJCb3R0b21XaWR0aCgpLCBib3R0b21TbGljZSwgYm9yZGVySW1hZ2VSZWN0LmhlaWdo
dCgpLCB2aWV3cG9ydFNpemUpOworICAgIGludCBsZWZ0V2lkdGggPSBjb21wdXRlQm9yZGVySW1h
Z2VTaWRlKG5pbmVQaWVjZUltYWdlLmJvcmRlclNsaWNlcygpLmxlZnQoKSwgc3R5bGUtPmJvcmRl
ckxlZnRXaWR0aCgpLCBsZWZ0U2xpY2UsIGJvcmRlckltYWdlUmVjdC53aWR0aCgpLCB2aWV3cG9y
dFNpemUpOwogICAgIAogICAgIC8vIFJlZHVjZSB0aGUgd2lkdGhzIGlmIHRoZXkncmUgdG9vIGxh
cmdlLgogICAgIC8vIFRoZSBzcGVjIHNheXM6IEdpdmVuIEx3aWR0aCBhcyB0aGUgd2lkdGggb2Yg
dGhlIGJvcmRlciBpbWFnZSBhcmVhLCBMaGVpZ2h0IGFzIGl0cyBoZWlnaHQsIGFuZCBXc2lkZSBh
cyB0aGUgYm9yZGVyIGltYWdlIHdpZHRoCkBAIC0xODIzLDcgKzE4MjMsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IExheW91dFJlY3QmCiAKICAgICBCb3JkZXJFZGdlIGVkZ2VzWzRdOwogICAgIGdldEJvcmRlckVk
Z2VJbmZvKGVkZ2VzLCBzdHlsZSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2lj
YWxSaWdodEVkZ2UpOwotICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5bGUtPmdldFJv
dW5kZWRCb3JkZXJGb3IocmVjdCwgJnZpZXcoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5j
bHVkZUxvZ2ljYWxSaWdodEVkZ2UpOworICAgIFJvdW5kZWRSZWN0IG91dGVyQm9yZGVyID0gc3R5
bGUtPmdldFJvdW5kZWRCb3JkZXJGb3IocmVjdCwgdmlldygpLnZpZXdwb3J0U2l6ZSgpLCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSk7CiAgICAgUm91bmRl
ZFJlY3QgaW5uZXJCb3JkZXIgPSBzdHlsZS0+Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKGJvcmRl
cklubmVyUmVjdEFkanVzdGVkRm9yQmxlZWRBdm9pZGFuY2UoKmdyYXBoaWNzQ29udGV4dCwgcmVj
dCwgYmxlZWRBdm9pZGFuY2UpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNh
bFJpZ2h0RWRnZSk7CiAKICAgICBib29sIGhhdmVBbHBoYUNvbG9yID0gZmFsc2U7CkBAIC0yNDk3
LDcgKzI0OTcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEJveFNoYWRvdyhj
b25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFJlYwogCiAgICAgUm91bmRlZFJlY3Qg
Ym9yZGVyID0gKHNoYWRvd1N0eWxlID09IEluc2V0KQogICAgICAgICA/IHMtPmdldFJvdW5kZWRJ
bm5lckJvcmRlckZvcihwYWludFJlY3QsIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UsIGluY2x1ZGVM
b2dpY2FsUmlnaHRFZGdlKQotICAgICAgICA6IHMtPmdldFJvdW5kZWRCb3JkZXJGb3IocGFpbnRS
ZWN0LCAmdmlldygpLCBpbmNsdWRlTG9naWNhbExlZnRFZGdlLCBpbmNsdWRlTG9naWNhbFJpZ2h0
RWRnZSk7CisgICAgICAgIDogcy0+Z2V0Um91bmRlZEJvcmRlckZvcihwYWludFJlY3QsIHZpZXco
KS52aWV3cG9ydFNpemUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxS
aWdodEVkZ2UpOwogCiAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXMgPSBzLT5oYXNCb3JkZXJSYWRp
dXMoKTsKICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHMtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggYWJl
Y2VjY2M3MDI5MDY3NzczZWQ1ODlhZjY3NGE3NzA4M2EyMWFmZS4uOWQ1YjJlYmFhOWIzYzg3NjI1
M2IxM2ExOTI5OWJiYzI3MTM5N2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcApAQCAtNzk2LDYgKzc5NiwxNiBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OnBy
b3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihTdHlsZVByb3BhZ2F0aW9uVHlwZSBwcm9w
YQogICAgIH0KIH0KIAorTGF5b3V0VW5pdCBSZW5kZXJFbGVtZW50Ojp2YWx1ZUZvckxlbmd0aChj
b25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQ
ZXJjZW50YWdlcykgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6dmFsdWVGb3JMZW5ndGgo
bGVuZ3RoLCBtYXhpbXVtVmFsdWUsIHZpZXcoKS52aWV3cG9ydFNpemUoKSwgcm91bmRQZXJjZW50
YWdlcyk7Cit9CisgICAgCitMYXlvdXRVbml0IFJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZv
ckxlbmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJv
b2wgcm91bmRQZXJjZW50YWdlcykgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6bWluaW11
bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCB2aWV3KCkudmlld3BvcnRTaXpl
KCksIHJvdW5kUGVyY2VudGFnZXMpOworfQorICAgIAogLy8gT24gbG93LXBvd2VyZWQvbW9iaWxl
IGRldmljZXMsIHByZXZlbnRpbmcgYmxpdHRpbmcgb24gYSBzY3JvbGwgY2FuIGNhdXNlIG5vdGlj
ZWFibGUgZGVsYXlzCiAvLyB3aGVuIHNjcm9sbGluZyBhIHBhZ2Ugd2l0aCBhIGZpeGVkIGJhY2tn
cm91bmQgaW1hZ2UuIEFzIGFuIG9wdGltaXphdGlvbiwgYXNzdW1pbmcgdGhlcmUgYXJlCiAvLyBu
byBmaXhlZCBwb3NpdG9uZWQgZWxlbWVudHMgb24gdGhlIHBhZ2UsIHdlIGNhbiBhY2NsZXJhdGUg
c2Nyb2xsaW5nICh2aWEgYmxpdHRpbmcpIGlmIHdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuaAppbmRleCAwMjIzMDYwNmRiNGI3OTViMjI1MWRjMjVjYTI1OWUyM2EzOWNl
MWY5Li43M2I5NDE0ZGI0YzJiMDE2NzZhZTIxYjYzNzYxMzk3ZTdkZmQxZDg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0OCwxNiArMjQ4LDYgQEAgaW5s
aW5lIHZvaWQgUmVuZGVyRWxlbWVudDo6c2V0Q2hpbGROZWVkc0xheW91dChNYXJraW5nQmVoYXZp
b3IgbWFya1BhcmVudHMpCiAgICAgICAgIG1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KCk7
CiB9CiAKLWlubGluZSBMYXlvdXRVbml0IFJlbmRlckVsZW1lbnQ6OnZhbHVlRm9yTGVuZ3RoKGNv
bnN0IExlbmd0aCYgbGVuZ3RoLCBMYXlvdXRVbml0IG1heGltdW1WYWx1ZSwgYm9vbCByb3VuZFBl
cmNlbnRhZ2VzKSBjb25zdAotewotICAgIHJldHVybiBXZWJDb3JlOjp2YWx1ZUZvckxlbmd0aChs
ZW5ndGgsIG1heGltdW1WYWx1ZSwgJnZpZXcoKSwgcm91bmRQZXJjZW50YWdlcyk7Ci19Ci0KLWlu
bGluZSBMYXlvdXRVbml0IFJlbmRlckVsZW1lbnQ6Om1pbmltdW1WYWx1ZUZvckxlbmd0aChjb25z
dCBMZW5ndGgmIGxlbmd0aCwgTGF5b3V0VW5pdCBtYXhpbXVtVmFsdWUsIGJvb2wgcm91bmRQZXJj
ZW50YWdlcykgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6bWluaW11bVZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgbWF4aW11bVZhbHVlLCAmdmlldygpLCByb3VuZFBlcmNlbnRhZ2VzKTsKLX0K
LQogaW5saW5lIGJvb2wgUmVuZGVyRWxlbWVudDo6aXNSZW5kZXJMYXllck1vZGVsT2JqZWN0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9iYXNlVHlwZUZsYWdzICYgUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdEZsYWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5s
aW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4
IGI3ZDYzMzJmMDliNGU3ZmVkYzczYzI2Yjk1MzFmODk1MDI5OTVkY2QuLjI4NGE0YjRjMmJiZTk0
MmQ3MGFkZTU0NzAxNTcyZWRjYWQyZWFkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCkBAIC03MjgsNyArNzI4LDcgQEAgc3RhdGljIExheW91dFVuaXQgY29t
cHV0ZU1hcmdpbihjb25zdCBSZW5kZXJJbmxpbmUqIHJlbmRlcmVyLCBjb25zdCBMZW5ndGgmIG1h
cmcKICAgICBpZiAobWFyZ2luLmlzUGVyY2VudCgpKQogICAgICAgICByZXR1cm4gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKG1hcmdpbiwgc3RkOjptYXg8TGF5b3V0VW5pdD4oMCwgcmVuZGVyZXItPmNv
bnRhaW5pbmdCbG9jaygpLT5hdmFpbGFibGVMb2dpY2FsV2lkdGgoKSkpOwogICAgIGlmIChtYXJn
aW4uaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbiwgMCwgJnJlbmRlcmVyLT52aWV3KCkpOworICAgICAgICByZXR1cm4gdmFsdWVGb3JM
ZW5ndGgobWFyZ2luLCAwLCByZW5kZXJlci0+dmlldygpLnZpZXdwb3J0U2l6ZSgpKTsKICAgICBy
ZXR1cm4gMDsKIH0KIApAQCAtMTQwNCwxMCArMTQwNCwxMCBAQCBMYXlvdXRVbml0IFJlbmRlcklu
bGluZTo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgLypkaXJl
Y3RpbwogICAgIGlmIChmaXJzdExpbmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVjdGlv
bigpLnVzZXNGaXJzdExpbmVSdWxlcygpKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBm
aXJzdExpbmVTdHlsZSA9IHRoaXMtPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGlmICgmZmly
c3RMaW5lU3R5bGUgIT0gJnN0eWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5lU3R5
bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCZ2aWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGZpcnN0
TGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAg
IH0KIAotICAgIHJldHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgmdmlldygpKTsKKyAg
ICByZXR1cm4gc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQodmlldygpLnZpZXdwb3J0U2l6ZSgp
KTsKIH0KIAogaW50IFJlbmRlcklubGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA5NzJmZjM2MzFiYjVlNjVjZWRlYzQ5OWQ2
MzRlODEzYzYyY2YwNDM3Li43MGUxOGM0ZTY2NzY5Y2UxYWNkNmI3MWMwM2I0YWM1MDk5NzdiYjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM4NzQsNyAr
Mzg3NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgICAgIExheW91dFJlY3QgcmVm
ZXJlbmNlQm94ID0gY29tcHV0ZVJlZmVyZW5jZUJveChyZW5kZXJlcigpLCBjbGlwcGluZ1BhdGgs
IG9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHMpOwogICAgICAgICAvLyBGSVhNRSBU
aGlzIGRvZXMgbm90IHByb3Blcmx5IGNvbXB1dGUgdGhlIHJvdW5kZWQgY29ybmVycyBhcyBzcGVj
aWZpZWQgaW4gYWxsIGNvbmRpdGlvbnMuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc5ODIKLSAgICAgICAgY29uc3QgUm91bmRlZFJlY3QmIHNo
YXBlUmVjdCA9IHJlbmRlcmVyKCkuc3R5bGUoKS5nZXRSb3VuZGVkQm9yZGVyRm9yKHJlZmVyZW5j
ZUJveCwgJihyZW5kZXJlcigpLnZpZXcoKSkpOworICAgICAgICBjb25zdCBSb3VuZGVkUmVjdCYg
c2hhcGVSZWN0ID0gcmVuZGVyZXIoKS5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3IocmVmZXJl
bmNlQm94LCByZW5kZXJlcigpLnZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAKICAgICAgICAgY29u
dGV4dC0+c2F2ZSgpOwogICAgICAgICBjb250ZXh0LT5jbGlwUGF0aChjbGlwcGluZ1BhdGgucGF0
aEZvclJlZmVyZW5jZVJlY3Qoc2hhcGVSZWN0KSwgUlVMRV9OT05aRVJPKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggYTgzMWU0NzhjNzc2NmY2
NTZjMDY3OWVlZGZmY2ZkYWM2NDBmOTQxMC4uNTNiNTM1NmNjYWI4ZjhiMDBlNmQ0MWJiMTY2OTU5
NDQ3NTY1ZTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1
ZGUgIklubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSb290SW5saW5lQm94LmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVBvc2l0aW9uLmgiCiAKQEAgLTUyLDExICs1MywxMSBAQCBMYXlvdXRVbml0IFJlbmRl
ckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
LypkaXJlYwogICAgIGlmIChmaXJzdExpbmUgJiYgZG9jdW1lbnQoKS5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpLnVzZXNGaXJzdExpbmVSdWxlcygpKSB7CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBmaXJzdExpbmVTdHlsZSA9IHRoaXMtPmZpcnN0TGluZVN0eWxlKCk7CiAgICAgICAgIGlmICgm
Zmlyc3RMaW5lU3R5bGUgIT0gJnN0eWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gZmlyc3RMaW5l
U3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCZ2aWV3KCkpOworICAgICAgICAgICAgcmV0dXJuIGZp
cnN0TGluZVN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwog
ICAgIH0KIAogICAgIGlmIChtX2NhY2hlZExpbmVIZWlnaHQgPT0gaW52YWxpZExpbmVIZWlnaHQp
Ci0gICAgICAgIG1fY2FjaGVkTGluZUhlaWdodCA9IHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0
KCZ2aWV3KCkpOworICAgICAgICBtX2NhY2hlZExpbmVIZWlnaHQgPSBzdHlsZSgpLmNvbXB1dGVk
TGluZUhlaWdodCh2aWV3KCkudmlld3BvcnRTaXplKCkpOwogICAgIAogICAgIHJldHVybiBtX2Nh
Y2hlZExpbmVIZWlnaHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAKaW5kZXggMmNmMmY1ZmM2MjVlNGM1MTEzYjYyYWU5ZWJhNmJhMmQ5
YzAwY2VkNi4uMmRiOTBhZGQxNzAxMjVjZWM3MDEzMzcyNzFiYWMxNDg4MmU1NDM3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcApAQCAt
NzksMTAgKzc5LDEwIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6bGF5b3V0VmVydGljYWxQ
YXJ0KCkKICAgICB9IAogfQogCi1zdGF0aWMgaW50IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2lu
ZyhTaXplVHlwZSBzaXplVHlwZSwgY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGludCBjb250YWluaW5n
TGVuZ3RoLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQorc3RhdGljIGludCBjYWxjU2Nyb2xsYmFy
VGhpY2tuZXNzVXNpbmcoU2l6ZVR5cGUgc2l6ZVR5cGUsIGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBp
bnQgY29udGFpbmluZ0xlbmd0aCwgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAg
IGlmICghbGVuZ3RoLmlzSW50cmluc2ljT3JBdXRvKCkgfHwgKHNpemVUeXBlID09IE1pblNpemUg
JiYgbGVuZ3RoLmlzQXV0bygpKSkKLSAgICAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChsZW5ndGgsIGNvbnRhaW5pbmdMZW5ndGgsIHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4g
bWluaW11bVZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgY29udGFpbmluZ0xlbmd0aCwgdmlld3BvcnRT
aXplKTsKICAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNjcm9sbGJhclRoaWNr
bmVzcygpOwogfQogCkBAIC05MCwzNiArOTAsMzYgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0
Ojpjb21wdXRlU2Nyb2xsYmFyV2lkdGgoKQogewogICAgIGlmICghbV9zY3JvbGxiYXItPm93bmlu
Z1JlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gJnZpZXcoKTsKKyAgICBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUgPSB2aWV3KCkudmll
d3BvcnRTaXplKCk7CiAgICAgLy8gRklYTUU6IFdlIGFyZSBxdWVyeWluZyBsYXlvdXQgaW5mb3Jt
YXRpb24gYnV0IG5vdGhpbmcgZ3VhcmFudGVlcyB0aGF0IGl0J3MgdXAtdG8tZGF0ZSwgZXNwZWNp
YWxseSBzaW5jZSB3ZSBhcmUgY2FsbGVkIGF0IHN0eWxlIGNoYW5nZS4KICAgICAvLyBGSVhNRTog
UXVlcnlpbmcgdGhlIHN0eWxlJ3MgYm9yZGVyIGluZm9ybWF0aW9uIGRvZXNuJ3Qgd29yayBvbiB0
YWJsZSBjZWxscyB3aXRoIGNvbGxhcHNpbmcgYm9yZGVycy4KICAgICBpbnQgdmlzaWJsZVNpemUg
PSBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVyZXIoKS0+d2lkdGgoKSAtIG1fc2Nyb2xsYmFyLT5v
d25pbmdSZW5kZXJlcigpLT5zdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgpIC0gbV9zY3JvbGxiYXIt
Pm93bmluZ1JlbmRlcmVyKCktPnN0eWxlKCkuYm9yZGVyUmlnaHRXaWR0aCgpOwotICAgIGludCB3
ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1haW5PclByZWZlcnJlZFNpemUsIHN0eWxl
KCkud2lkdGgoKSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtaW5XaWR0aCA9
IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNaW5TaXplLCBzdHlsZSgpLm1pbldpZHRoKCks
IHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKLSAgICBpbnQgbWF4V2lkdGggPSBzdHlsZSgpLm1h
eFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmco
TWF4U2l6ZSwgc3R5bGUoKS5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldyk7Cisg
ICAgaW50IHcgPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6
ZSwgc3R5bGUoKS53aWR0aCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQg
bWluV2lkdGggPSBjYWxjU2Nyb2xsYmFyVGhpY2tuZXNzVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS5t
aW5XaWR0aCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWF4V2lkdGgg
PSBzdHlsZSgpLm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSA/IHcgOiBjYWxjU2Nyb2xsYmFyVGhp
Y2tuZXNzVXNpbmcoTWF4U2l6ZSwgc3R5bGUoKS5tYXhXaWR0aCgpLCB2aXNpYmxlU2l6ZSwgdmll
d3BvcnRTaXplKTsKICAgICBzZXRXaWR0aChzdGQ6Om1heChtaW5XaWR0aCwgc3RkOjptaW4obWF4
V2lkdGgsIHcpKSk7CiAgICAgCiAgICAgLy8gQnV0dG9ucyBhbmQgdHJhY2sgcGllY2VzIGNhbiBh
bGwgaGF2ZSBtYXJnaW5zIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuIAotICAgIG1f
bWFyZ2luQm94LnNldExlZnQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVm
dCgpLCB2aXNpYmxlU2l6ZSwgcmVuZGVyVmlldykpOwotICAgIG1fbWFyZ2luQm94LnNldFJpZ2h0
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpblJpZ2h0KCksIHZpc2libGVTaXpl
LCByZW5kZXJWaWV3KSk7CisgICAgbV9tYXJnaW5Cb3guc2V0TGVmdChtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5tYXJnaW5MZWZ0KCksIHZpc2libGVTaXplKSk7CisgICAgbV9tYXJnaW5C
b3guc2V0UmlnaHQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luUmlnaHQoKSwg
dmlzaWJsZVNpemUpKTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpjb21wdXRlU2Ny
b2xsYmFySGVpZ2h0KCkKIHsKICAgICBpZiAoIW1fc2Nyb2xsYmFyLT5vd25pbmdSZW5kZXJlcigp
KQogICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9ICZ2aWV3KCk7
CisgICAgY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplID12aWV3KCkudmlld3BvcnRTaXplKCk7
CiAgICAgLy8gRklYTUU6IFdlIGFyZSBxdWVyeWluZyBsYXlvdXQgaW5mb3JtYXRpb24gYnV0IG5v
dGhpbmcgZ3VhcmFudGVlcyB0aGF0IGl0J3MgdXAtdG8tZGF0ZSwgZXNwZWNpYWxseSBzaW5jZSB3
ZSBhcmUgY2FsbGVkIGF0IHN0eWxlIGNoYW5nZS4KICAgICAvLyBGSVhNRTogUXVlcnlpbmcgdGhl
IHN0eWxlJ3MgYm9yZGVyIGluZm9ybWF0aW9uIGRvZXNuJ3Qgd29yayBvbiB0YWJsZSBjZWxscyB3
aXRoIGNvbGxhcHNpbmcgYm9yZGVycy4KICAgICBpbnQgdmlzaWJsZVNpemUgPSBtX3Njcm9sbGJh
ci0+b3duaW5nUmVuZGVyZXIoKS0+aGVpZ2h0KCkgLSAgbV9zY3JvbGxiYXItPm93bmluZ1JlbmRl
cmVyKCktPnN0eWxlKCkuYm9yZGVyVG9wV2lkdGgoKSAtIG1fc2Nyb2xsYmFyLT5vd25pbmdSZW5k
ZXJlcigpLT5zdHlsZSgpLmJvcmRlckJvdHRvbVdpZHRoKCk7Ci0gICAgaW50IGggPSBjYWxjU2Ny
b2xsYmFyVGhpY2tuZXNzVXNpbmcoTWFpbk9yUHJlZmVycmVkU2l6ZSwgc3R5bGUoKS5oZWlnaHQo
KSwgdmlzaWJsZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtaW5IZWlnaHQgPSBjYWxjU2Ny
b2xsYmFyVGhpY2tuZXNzVXNpbmcoTWluU2l6ZSwgc3R5bGUoKS5taW5IZWlnaHQoKSwgdmlzaWJs
ZVNpemUsIHJlbmRlclZpZXcpOwotICAgIGludCBtYXhIZWlnaHQgPSBzdHlsZSgpLm1heEhlaWdo
dCgpLmlzVW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1heFNp
emUsIHN0eWxlKCkubWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KTsKKyAgICBp
bnQgaCA9IGNhbGNTY3JvbGxiYXJUaGlja25lc3NVc2luZyhNYWluT3JQcmVmZXJyZWRTaXplLCBz
dHlsZSgpLmhlaWdodCgpLCB2aXNpYmxlU2l6ZSwgdmlld3BvcnRTaXplKTsKKyAgICBpbnQgbWlu
SGVpZ2h0ID0gY2FsY1Njcm9sbGJhclRoaWNrbmVzc1VzaW5nKE1pblNpemUsIHN0eWxlKCkubWlu
SGVpZ2h0KCksIHZpc2libGVTaXplLCB2aWV3cG9ydFNpemUpOworICAgIGludCBtYXhIZWlnaHQg
PSBzdHlsZSgpLm1heEhlaWdodCgpLmlzVW5kZWZpbmVkKCkgPyBoIDogY2FsY1Njcm9sbGJhclRo
aWNrbmVzc1VzaW5nKE1heFNpemUsIHN0eWxlKCkubWF4SGVpZ2h0KCksIHZpc2libGVTaXplLCB2
aWV3cG9ydFNpemUpOwogICAgIHNldEhlaWdodChzdGQ6Om1heChtaW5IZWlnaHQsIHN0ZDo6bWlu
KG1heEhlaWdodCwgaCkpKTsKIAogICAgIC8vIEJ1dHRvbnMgYW5kIHRyYWNrIHBpZWNlcyBjYW4g
YWxsIGhhdmUgbWFyZ2lucyBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLiAKLSAgICBt
X21hcmdpbkJveC5zZXRUb3AobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luVG9w
KCksIHZpc2libGVTaXplLCByZW5kZXJWaWV3KSk7Ci0gICAgbV9tYXJnaW5Cb3guc2V0Qm90dG9t
KG1pbmltdW1WYWx1ZUZvckxlbmd0aChzdHlsZSgpLm1hcmdpbkJvdHRvbSgpLCB2aXNpYmxlU2l6
ZSwgcmVuZGVyVmlldykpOworICAgIG1fbWFyZ2luQm94LnNldFRvcChtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5tYXJnaW5Ub3AoKSwgdmlzaWJsZVNpemUpKTsKKyAgICBtX21hcmdpbkJv
eC5zZXRCb3R0b20obWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkubWFyZ2luQm90dG9tKCks
IHZpc2libGVTaXplKSk7CiB9CiAKIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6Y29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCmluZGV4IGZhZDMxYzZiNjUwZjQ1NzBiMzcxOGJmYjM0ZDVmY2NlMGU3MTJlNTku
LmI3YmQ2OGQ5NGI0MTcxNWVjOGFkOTU2YmRlZGQ3MWE5NmUzOTcyMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTExNDMsNyArMTE0Myw3IEBAIHZv
aWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25HcmFkaWVudHMoUmVuZGVyT2Jq
ZWN0KiBvLCBjb25zdCBQYWludEluCiAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0
YXRlU2F2ZXIoKnBhaW50SW5mby5jb250ZXh0KTsKIAotICAgIFJvdW5kZWRSZWN0IGJvcmRlciA9
IG8tPnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRlckZvcihyLCAmby0+dmlldygpKTsKKyAgICBSb3Vu
ZGVkUmVjdCBib3JkZXIgPSBvLT5zdHlsZSgpLmdldFJvdW5kZWRCb3JkZXJGb3Iociwgby0+dmll
dygpLnZpZXdwb3J0U2l6ZSgpKTsKICAgICBpbnQgcmFkaXVzID0gYm9yZGVyLnJhZGlpKCkudG9w
TGVmdCgpLndpZHRoKCk7CiAKICAgICBDR0NvbG9yU3BhY2VSZWYgY3NwYWNlID0gZGV2aWNlUkdC
Q29sb3JTcGFjZVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCmluZGV4IDllMTI3MTBkZmM1NTg0NzQ0ZTA0YmI0MGJiZjdiYThkZWQwNzFlNzUuLjczMWRi
YTI2ODQ5ZDE0ZjBjZmI5ZDE0MDVmNDgwOTZmMTY5NjFmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTk2OSw3ICs5NjksNyBAQCBMYXlvdXRVbml0
IFJvb3RJbmxpbmVCb3g6OnZlcnRpY2FsUG9zaXRpb25Gb3JCb3goSW5saW5lQm94KiBib3gsIFZl
cnRpY2FsUG9zaXRpbwogICAgICAgICAgICAgICAgIGxpbmVIZWlnaHQgPSByZW5kZXJlci0+c3R5
bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBsaW5lSGVpZ2h0ID0gcmVuZGVyZXItPmxpbmVIZWlnaHQoZmlyc3RMaW5lLCBsaW5lRGly
ZWN0aW9uKTsKLSAgICAgICAgICAgIHZlcnRpY2FsUG9zaXRpb24gLT0gdmFsdWVGb3JMZW5ndGgo
cmVuZGVyZXItPnN0eWxlKCkudmVydGljYWxBbGlnbkxlbmd0aCgpLCBsaW5lSGVpZ2h0LCAmcmVu
ZGVyZXItPnZpZXcoKSk7CisgICAgICAgICAgICB2ZXJ0aWNhbFBvc2l0aW9uIC09IHZhbHVlRm9y
TGVuZ3RoKHJlbmRlcmVyLT5zdHlsZSgpLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgbGluZUhlaWdo
dCwgcmVuZGVyZXItPnZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAppbmRleCA5
MTE3MGQ2NDVjZjYzYTM2NmQ2YTkzZDI1MmEyZmEwZDZlYWMyZTZlLi5jOTIxMmMzMjQ1NTEwYjIz
MmQwNTA5YWE1NWYyNmFlZWE5NWMwZGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZUluZm8uY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTaGFwZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0xNDEsNyArMTQyLDcgQEAgY29uc3QgU2hhcGUmIFNoYXBlSW5m
bzxSZW5kZXJUeXBlPjo6Y29tcHV0ZWRTaGFwZSgpIGNvbnN0CiAgICAgY2FzZSBTaGFwZVZhbHVl
OjpCb3g6IHsKICAgICAgICAgLy8gRklYTUUgVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBjb21wdXRl
IHRoZSByb3VuZGVkIGNvcm5lcnMgYXMgc3BlY2lmaWVkIGluIGFsbCBjb25kaXRpb25zLgogICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3OTgyCi0g
ICAgICAgIGNvbnN0IFJvdW5kZWRSZWN0JiBzaGFwZVJlY3QgPSBtX3JlbmRlcmVyLnN0eWxlKCku
Z2V0Um91bmRlZEJvcmRlckZvcihMYXlvdXRSZWN0KExheW91dFBvaW50KCksIG1fcmVmZXJlbmNl
Qm94TG9naWNhbFNpemUpLCAmKG1fcmVuZGVyZXIudmlldygpKSk7CisgICAgICAgIGNvbnN0IFJv
dW5kZWRSZWN0JiBzaGFwZVJlY3QgPSBtX3JlbmRlcmVyLnN0eWxlKCkuZ2V0Um91bmRlZEJvcmRl
ckZvcihMYXlvdXRSZWN0KExheW91dFBvaW50KCksIG1fcmVmZXJlbmNlQm94TG9naWNhbFNpemUp
LCBtX3JlbmRlcmVyLnZpZXcoKS52aWV3cG9ydFNpemUoKSk7CiAgICAgICAgIG1fc2hhcGUgPSBT
aGFwZTo6Y3JlYXRlTGF5b3V0Qm94U2hhcGUoc2hhcGVSZWN0LCB3cml0aW5nTW9kZSwgbWFyZ2lu
LCBwYWRkaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggZTAxMDdmZDZkOWUzYzRkYzA2ODJl
ODYzZjY1YTNhYTUxMGZkYTIwYy4uMGZjNmE0M2VkYzRhNmM2MDFlMGVkZjI0NmQ1OTllOTdkY2Y4
OTU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCkBAIC0xMDUzLDE3ICsxMDUzLDE3IEBAIHZvaWQgUmVuZGVyU3R5bGU6OnNldEJveFNoYWRv
dyhzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gc2hhZG93RGF0YSwgYm9vbCBhZGQpCiAgICAg
cmFyZURhdGEtPm1fYm94U2hhZG93ID0gc3RkOjptb3ZlKHNoYWRvd0RhdGEpOwogfQogCi1zdGF0
aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNSYWRpaUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3Jk
ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCitzdGF0
aWMgUm91bmRlZFJlY3Q6OlJhZGlpIGNhbGNSYWRpaUZvcihjb25zdCBCb3JkZXJEYXRhJiBib3Jk
ZXIsIGNvbnN0IExheW91dFNpemUmIHNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
IHsKICAgICByZXR1cm4gUm91bmRlZFJlY3Q6OlJhZGlpKAotICAgICAgICBMYXlvdXRTaXplKHZh
bHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCByZW5k
ZXJWaWV3KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkuaGVp
Z2h0KCksIHNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpKSwKLSAgICAgICAgTGF5b3V0U2l6ZSh2
YWx1ZUZvckxlbmd0aChib3JkZXIudG9wUmlnaHQoKS53aWR0aCgpLCBzaXplLndpZHRoKCksIHJl
bmRlclZpZXcpLAotICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCku
aGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHJlbmRlclZpZXcpKSwKLSAgICAgICAgTGF5b3V0U2l6
ZSh2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9tTGVmdCgpLndpZHRoKCksIHNpemUud2lkdGgo
KSwgcmVuZGVyVmlldyksCi0gICAgICAgICAgICB2YWx1ZUZvckxlbmd0aChib3JkZXIuYm90dG9t
TGVmdCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSksCi0gICAgICAgIExh
eW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6
ZS53aWR0aCgpLCByZW5kZXJWaWV3KSwKLSAgICAgICAgICAgIHZhbHVlRm9yTGVuZ3RoKGJvcmRl
ci5ib3R0b21SaWdodCgpLmhlaWdodCgpLCBzaXplLmhlaWdodCgpLCByZW5kZXJWaWV3KSkpOwor
ICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci50b3BMZWZ0KCkud2lkdGgo
KSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgdmFsdWVGb3JMZW5n
dGgoYm9yZGVyLnRvcExlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWlnaHQoKSwgdmlld3BvcnRTaXpl
KSksCisgICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCku
d2lkdGgoKSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAgICAgdmFsdWVG
b3JMZW5ndGgoYm9yZGVyLnRvcFJpZ2h0KCkuaGVpZ2h0KCksIHNpemUuaGVpZ2h0KCksIHZpZXdw
b3J0U2l6ZSkpLAorICAgICAgICBMYXlvdXRTaXplKHZhbHVlRm9yTGVuZ3RoKGJvcmRlci5ib3R0
b21MZWZ0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUpLAorICAgICAgICAg
ICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbUxlZnQoKS5oZWlnaHQoKSwgc2l6ZS5oZWln
aHQoKSwgdmlld3BvcnRTaXplKSksCisgICAgICAgIExheW91dFNpemUodmFsdWVGb3JMZW5ndGgo
Ym9yZGVyLmJvdHRvbVJpZ2h0KCkud2lkdGgoKSwgc2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUp
LAorICAgICAgICAgICAgdmFsdWVGb3JMZW5ndGgoYm9yZGVyLmJvdHRvbVJpZ2h0KCkuaGVpZ2h0
KCksIHNpemUuaGVpZ2h0KCksIHZpZXdwb3J0U2l6ZSkpKTsKIH0KIAogc3RhdGljIGZsb2F0IGNh
bGNDb25zdHJhaW50U2NhbGVGb3IoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUm91bmRl
ZFJlY3Q6OlJhZGlpJiByYWRpaSkKQEAgLTExMTUsMTEgKzExMTUsMTEgQEAgc2hvcnQgUmVuZGVy
U3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+
dmVydGljYWxfYm8KIHZvaWQgUmVuZGVyU3R5bGU6OnNldEhvcml6b250YWxCb3JkZXJTcGFjaW5n
KHNob3J0IHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIGhvcml6b250YWxfYm9yZGVyX3NwYWNpbmcs
IHYpOyB9CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc2hvcnQg
dikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcsIHYpOyB9CiAK
LVJvdW5kZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91
dFJlY3QmIGJvcmRlclJlY3QsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcsIGJvb2wgaW5jbHVkZUxv
Z2ljYWxMZWZ0RWRnZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSkgY29uc3QKK1JvdW5k
ZWRSZWN0IFJlbmRlclN0eWxlOjpnZXRSb3VuZGVkQm9yZGVyRm9yKGNvbnN0IExheW91dFJlY3Qm
IGJvcmRlclJlY3QsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbExlZnRFZGdlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlKSBjb25zdAogewogICAg
IFJvdW5kZWRSZWN0IHJvdW5kZWRSZWN0KGJvcmRlclJlY3QpOwogICAgIGlmIChoYXNCb3JkZXJS
YWRpdXMoKSkgewotICAgICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlG
b3Ioc3Vycm91bmQtPmJvcmRlciwgYm9yZGVyUmVjdC5zaXplKCksIHJlbmRlclZpZXcpOworICAg
ICAgICBSb3VuZGVkUmVjdDo6UmFkaWkgcmFkaWkgPSBjYWxjUmFkaWlGb3Ioc3Vycm91bmQtPmJv
cmRlciwgYm9yZGVyUmVjdC5zaXplKCksIHZpZXdwb3J0U2l6ZSk7CiAgICAgICAgIHJhZGlpLnNj
YWxlKGNhbGNDb25zdHJhaW50U2NhbGVGb3IoYm9yZGVyUmVjdCwgcmFkaWkpKTsKICAgICAgICAg
cm91bmRlZFJlY3QuaW5jbHVkZUxvZ2ljYWxFZGdlcyhyYWRpaSwgaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSwgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSwgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2Up
OwogICAgIH0KQEAgLTE0MDAsNyArMTQwMCw3IEBAIExlbmd0aCBSZW5kZXJTdHlsZTo6bGluZUhl
aWdodCgpIGNvbnN0CiB9CiB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaW5lSGVpZ2h0KExlbmd0aCBz
cGVjaWZpZWRMaW5lSGVpZ2h0KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBsaW5lX2hlaWdodCwgc3Bl
Y2lmaWVkTGluZUhlaWdodCk7IH0KIAotaW50IFJlbmRlclN0eWxlOjpjb21wdXRlZExpbmVIZWln
aHQoUmVuZGVyVmlldyogcmVuZGVyVmlldykgY29uc3QKK2ludCBSZW5kZXJTdHlsZTo6Y29tcHV0
ZWRMaW5lSGVpZ2h0KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkgY29uc3QKIHsKICAgICBj
b25zdCBMZW5ndGgmIGxoID0gbGluZUhlaWdodCgpOwogCkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBp
bnQgUmVuZGVyU3R5bGU6OmNvbXB1dGVkTGluZUhlaWdodChSZW5kZXJWaWV3KiByZW5kZXJWaWV3
KSBjb25zdAogICAgICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKGxoLCBmb250U2l6
ZSgpKTsKIAogICAgIGlmIChsaC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKQotICAgICAgICByZXR1
cm4gdmFsdWVGb3JMZW5ndGgobGgsIDAsIHJlbmRlclZpZXcpOworICAgICAgICByZXR1cm4gdmFs
dWVGb3JMZW5ndGgobGgsIDAsIHZpZXdwb3J0U2l6ZSk7CiAKICAgICByZXR1cm4gbGgudmFsdWUo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggYWUwODc1ZDA3ZWQyMjBlZmU2MGM0ZmRlNzdkZDBjMjZmY2ZjZWFiOS4uMGU4OTkyMGM5Y2I4
ZWY4OTBhMzY3MTMwYWQ5ZTQ0YTNhNzY3Nzg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTU4OSw3ICs1ODksNyBAQCBwdWJsaWM6CiAKICAg
ICBjb25zdCBMZW5ndGgmIHNwZWNpZmllZExpbmVIZWlnaHQoKSBjb25zdDsKICAgICBMZW5ndGgg
bGluZUhlaWdodCgpIGNvbnN0OwotICAgIGludCBjb21wdXRlZExpbmVIZWlnaHQoUmVuZGVyVmll
dyogPSAwKSBjb25zdDsKKyAgICBpbnQgY29tcHV0ZWRMaW5lSGVpZ2h0KGNvbnN0IEludFNpemUm
ID0gSW50U2l6ZSgpKSBjb25zdDsKIAogICAgIEVXaGl0ZVNwYWNlIHdoaXRlU3BhY2UoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxFV2hpdGVTcGFjZT4oaW5oZXJpdGVkX2ZsYWdzLl93aGl0
ZV9zcGFjZSk7IH0KICAgICBzdGF0aWMgYm9vbCBhdXRvV3JhcChFV2hpdGVTcGFjZSB3cykKQEAg
LTEwOTEsNyArMTA5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgc2V0Qm9yZGVyUmFkaXVzKExlbmd0
aFNpemUoTGVuZ3RoKHMud2lkdGgoKSwgRml4ZWQpLCBMZW5ndGgocy5oZWlnaHQoKSwgRml4ZWQp
KSk7CiAgICAgfQogICAgIAotICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRCb3JkZXJGb3IoY29u
c3QgTGF5b3V0UmVjdCYgYm9yZGVyUmVjdCwgUmVuZGVyVmlldyogPSAwLCBib29sIGluY2x1ZGVM
b2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1
ZSkgY29uc3Q7CisgICAgUm91bmRlZFJlY3QgZ2V0Um91bmRlZEJvcmRlckZvcihjb25zdCBMYXlv
dXRSZWN0JiBib3JkZXJSZWN0LCBjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSwgYm9vbCBpbmNs
dWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9
IHRydWUpIGNvbnN0OwogICAgIFJvdW5kZWRSZWN0IGdldFJvdW5kZWRJbm5lckJvcmRlckZvcihj
b25zdCBMYXlvdXRSZWN0JiBib3JkZXJSZWN0LCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2Ug
PSB0cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSkgY29uc3Q7CiAKICAg
ICBSb3VuZGVkUmVjdCBnZXRSb3VuZGVkSW5uZXJCb3JkZXJGb3IoY29uc3QgTGF5b3V0UmVjdCYg
Ym9yZGVyUmVjdCwgTGF5b3V0VW5pdCB0b3BXaWR0aCwgTGF5b3V0VW5pdCBib3R0b21XaWR0aCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4
IDhlMDVkMGQ2Mzg3YjY4ZjU3MGRjMzRkNGM2NDE0NjVjOTQ2YmNkNDEuLmE3N2VmMDdiYzc1NmZk
NzYwZWI4OGRlMDliZDc2ODE4ZTNlYjdjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMTMxLDkgKzEzMSw5IEBAIGJvb2wgUmVuZGVy
U1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGZyYW1lKCkuZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpOwogfQog
Ci1zdGF0aWMgaW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhj
b25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgc2NhbGUsIGZsb2F0IG1heFNpemUsIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcpCitzdGF0aWMgaW5saW5lIExheW91dFVuaXQgcmVzb2x2ZUxlbmd0aEF0
dHJpYnV0ZUZvclNWRyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgc2NhbGUsIGZsb2F0IG1h
eFNpemUsIGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkKIHsKLSAgICByZXR1cm4gdmFsdWVG
b3JMZW5ndGgobGVuZ3RoLCBtYXhTaXplLCByZW5kZXJWaWV3KSAqIChsZW5ndGguaXNGaXhlZCgp
ID8gc2NhbGUgOiAxKTsKKyAgICByZXR1cm4gdmFsdWVGb3JMZW5ndGgobGVuZ3RoLCBtYXhTaXpl
LCB2aWV3cG9ydFNpemUpICogKGxlbmd0aC5pc0ZpeGVkKCkgPyBzY2FsZSA6IDEpOwogfQogCiBM
YXlvdXRVbml0IFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZXBsYWNlZExvZ2ljYWxXaWR0aChTaG91
bGRDb21wdXRlUHJlZmVycmVkIHNob3VsZENvbXB1dGVQcmVmZXJyZWQpIGNvbnN0CkBAIC0xNDYs
NyArMTQ2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVwbGFjZWRMb2dp
Y2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCBzaG8KICAgICAgICAgcmV0dXJuIFJlbmRl
clJlcGxhY2VkOjpjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoc2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCk7CiAKICAgICBpZiAoc3ZnU1ZHRWxlbWVudCgpLndpZHRoQXR0cmlidXRlRXN0YWJsaXNo
ZXNWaWV3cG9ydCgpKQotICAgICAgICByZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZvclNW
RyhzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoU1ZHU1ZHRWxlbWVudDo6SWdub3JlQ1NT
UHJvcGVydGllcyksIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+
YXZhaWxhYmxlTG9naWNhbFdpZHRoKCksICZ2aWV3KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2
ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhzdmdTVkdFbGVtZW50KCkuaW50cmluc2ljV2lkdGgoU1ZH
U1ZHRWxlbWVudDo6SWdub3JlQ1NTUHJvcGVydGllcyksIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgp
LCBjb250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbFdpZHRoKCksIHZpZXcoKS52aWV3
cG9ydFNpemUoKSk7CiAKICAgICAvLyBTVkcgZW1iZWRkZWQgdGhyb3VnaCBvYmplY3QvZW1iZWQv
aWZyYW1lLgogICAgIGlmIChpc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3Vt
ZW50KCkpCkBAIC0xNzcsNyArMTc3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJTVkdSb290Ojpjb21w
dXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBSZW5kZXJCbG9jazo6cmVtb3ZlUGVyY2VudEhlaWdodERlc2NlbmRhbnQoY29uc3RfY2Fz
dDxSZW5kZXJTVkdSb290Jj4oKnRoaXMpKTsKIAotICAgICAgICByZXR1cm4gcmVzb2x2ZUxlbmd0
aEF0dHJpYnV0ZUZvclNWRyhoZWlnaHQsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250YWlu
aW5nQmxvY2soKS0+YXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFk
ZGluZyksICZ2aWV3KCkpOworICAgICAgICByZXR1cm4gcmVzb2x2ZUxlbmd0aEF0dHJpYnV0ZUZv
clNWRyhoZWlnaHQsIHN0eWxlKCkuZWZmZWN0aXZlWm9vbSgpLCBjb250YWluaW5nQmxvY2soKS0+
YXZhaWxhYmxlTG9naWNhbEhlaWdodChJbmNsdWRlTWFyZ2luQm9yZGVyUGFkZGluZyksIHZpZXco
KS52aWV3cG9ydFNpemUoKSk7CiAgICAgfQogCiAgICAgLy8gU1ZHIGVtYmVkZGVkIHRocm91Z2gg
b2JqZWN0L2VtYmVkL2lmcmFtZS4K
</data>

          </attachment>
      

    </bug>

</bugzilla>