<?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>190457</bug_id>
          
          <creation_ts>2018-10-10 20:05:19 -0700</creation_ts>
          <short_desc>Hide RenderLayer z-order and normal flow lists behind iterators</short_desc>
          <delta_ts>2018-11-07 07:03:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>dino</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1467934</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-10 20:05:19 -0700</bug_when>
    <thetext>Hide RenderLayer z-order and normal flow lists behind iterators</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467935</commentid>
    <comment_count>1</comment_count>
      <attachid>352011</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-10 20:07:17 -0700</bug_when>
    <thetext>Created attachment 352011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1467953</commentid>
    <comment_count>2</comment_count>
      <attachid>352011</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-10-10 21:04:49 -0700</bug_when>
    <thetext>Comment on attachment 352011
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.h:373
&gt; +        iterator begin() { return m_layerList ? m_layerList-&gt;begin() : nullptr; }
&gt; +        iterator end() { return m_layerList ? m_layerList-&gt;end() : nullptr; }
&gt; +
&gt; +        reverse_iterator rbegin() { return reverse_iterator(end()); }
&gt; +        reverse_iterator rend() { return reverse_iterator(begin()); }

It&apos;s a bit odd that a class named Iterator has functions like these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468054</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-10-11 09:36:04 -0700</bug_when>
    <thetext>LayerIterable? LayerList?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468143</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-10-11 13:36:47 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; LayerIterable? LayerList?

LayerList is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475980</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-07 07:01:29 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/237058/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475982</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-07 07:03:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/45874621&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352011</attachid>
            <date>2018-10-10 20:07:17 -0700</date>
            <delta_ts>2018-10-11 13:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190457-20181010200717.patch</filename>
            <type>text/plain</type>
            <size>42394</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2Njc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA1MjljMTFlYmYxZTBh
ODYxNjg4M2RjNzI5MzdmODdlZWE0NDM3Ny4uOWQ0MTI0Y2FkMTI4OWFmOTc5YjVjMzA3YzI5NzIx
MDdkODRmN2E4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE4LTEwLTEwICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhpZGUgUmVuZGVy
TGF5ZXIgei1vcmRlciBhbmQgbm9ybWFsIGZsb3cgbGlzdHMgYmVoaW5kIGl0ZXJhdG9ycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDU3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlIHRoZSBw
b3NpdGl2ZSB6LW9yZGVyLCBuZWdhdGl2ZSB6LW9yZGVyIGFuZCBub3JtYWwgZmxvdyBsaXN0cwor
ICAgICAgICBmcm9tIFJlbmRlckxheWVyIGFzIGl0ZXJhdG9ycyByYXRoZXIgdGhhbiB2ZWN0b3Jz
IG9mIHJhdyBwb2ludGVycy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaGlkZXMgdGhlIGZhY3Qg
dGhhdCB0aGUgdmVjdG9ycyBjYW4gYmUgbnVsbCwgYW5kIGFsbG93cyBmb3IgZWFzaWVyIGNhc3Rp
bmcgaW4gZnV0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGUzRFRyYW5zZm9ybWVkRGVzY2VuZGFu
dFN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFpbnRMYXllckNvbnRl
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWludExpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExh
eWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJl
Y3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1
dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdE
ZXNjZW5kYW50R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVySGFzM0RDb250ZW50IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjp3cml0ZUxheWVycyk6CisKIDIwMTgtMTAtMDEgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgT3B0aW1pemUgUmVuZGVyU3R5bGU6OmRp
ZmYoKSBhbmQgY2xlYW4gdXAgdGhlIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmY0YWIwOGE5ZmM4MTgzZmZi
MGU2MjAxZjVmMzEzZDdlZTBhZTg4OS4uMzMzMGUzNDBhMThiYzg2ZWMwNmZjM2RiZTA5YjVjZTc0
NWJlYzIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0xMCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBIaWRlIFJlbmRlckxheWVy
IHotb3JkZXIgYW5kIG5vcm1hbCBmbG93IGxpc3RzIGJlaGluZCBpdGVyYXRvcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDQ1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9zZSB0aGUgcG9zaXRp
dmUgei1vcmRlciwgbmVnYXRpdmUgei1vcmRlciBhbmQgbm9ybWFsIGZsb3cgbGlzdHMKKyAgICAg
ICAgZnJvbSBSZW5kZXJMYXllciBhcyBpdGVyYXRvcnMgcmF0aGVyIHRoYW4gdmVjdG9ycyBvZiBy
YXcgcG9pbnRlcnMuCisgICAgICAgIAorICAgICAgICBVc2UgYSBsYW1iZGEgZnVuY3Rpb24gdG8g
Z2V0IGFjY2VzcyB0byB0aGUgcHJpdmF0ZSBjb25zdHJ1Y3Rvciwgd2hpbGUgbm90IGhhdmluZwor
ICAgICAgICB0byByZWZlciB0byB0aGUgbmVzdGVkIFJlbmRlckxheWVyOjpMYXllckl0ZXJhdG9y
IGNsYXNzIGluIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6V2ViUmVuZGVyTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaDoKKwogMjAxOC0x
MC0wMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIEZpeCBhbiBpbnRlcm5hbCBidWlsZCBhZnRlciByMjM2NjY1CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAxMDg2MzIxOWVkOWY4OWM0NjM1OTQ4MjkyYjFh
Nzk1N2JiZDM2YTk0Li42NDYxZWMzZjdjOTYwZTRmMGRkYmE1ODBjM2I2MjhkNmE5ZTZiY2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTExMDAsMTYgKzEx
MDAsMTIgQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRlM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRT
dGF0dXMoKQogCiAgICAgICAgIC8vIFRyYW5zZm9ybWVkIG9yIHByZXNlcnZlLTNkIGRlc2NlbmRh
bnRzIGNhbiBvbmx5IGJlIGluIHRoZSB6LW9yZGVyIGxpc3RzLCBub3QKICAgICAgICAgLy8gaW4g
dGhlIG5vcm1hbCBmbG93IGxpc3QsIHNvIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aG9zZS4KLSAg
ICAgICAgaWYgKGF1dG8qIHBvc2l0aXZlWk9yZGVyTGlzdCA9IHBvc1pPcmRlckxpc3QoKSkgewot
ICAgICAgICAgICAgZm9yIChhdXRvKiBsYXllciA6ICpwb3NpdGl2ZVpPcmRlckxpc3QpCi0gICAg
ICAgICAgICAgICAgbV9oYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudCB8PSBsYXllci0+dXBkYXRl
M0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXMoKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KGF1dG8qIGxheWVyIDogcG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgICAgIG1faGFz
M0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQgfD0gbGF5ZXItPnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNj
ZW5kYW50U3RhdHVzKCk7CiAKICAgICAgICAgLy8gTm93IGNoZWNrIG91ciBuZWdhdGl2ZSB6LWlu
ZGV4IGNoaWxkcmVuLgotICAgICAgICBpZiAoYXV0byogbmVnYXRpdmVaT3JkZXJMaXN0ID0gbmVn
Wk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIGxheWVyIDogKm5lZ2F0aXZl
Wk9yZGVyTGlzdCkKLSAgICAgICAgICAgICAgICBtX2hhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50
IHw9IGxheWVyLT51cGRhdGUzRFRyYW5zZm9ybWVkRGVzY2VuZGFudFN0YXR1cygpOwotICAgICAg
ICB9CisgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiBuZWdhdGl2ZVpPcmRlckxheWVycygpKQor
ICAgICAgICAgICAgbV9oYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudCB8PSBsYXllci0+dXBkYXRl
M0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXMoKTsKICAgICAgICAgCiAgICAgICAgIG1fM0RU
cmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXNEaXJ0eSA9IGZhbHNlOwogICAgIH0KQEAgLTQxMDQs
NyArNDEwMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGF5ZXJDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheWVyUGFpbnRpCiAKICAgICAgICAgLy8gTm93IHdh
bGsgdGhlIHNvcnRlZCBsaXN0IG9mIGNoaWxkcmVuIHdpdGggbmVnYXRpdmUgei1pbmRpY2VzLgog
ICAgICAgICBpZiAoKGlzUGFpbnRpbmdTY3JvbGxpbmdDb250ZW50ICYmIGlzUGFpbnRpbmdPdmVy
Zmxvd0NvbnRlbnRzKSB8fCAoIWlzUGFpbnRpbmdTY3JvbGxpbmdDb250ZW50ICYmIGlzUGFpbnRp
bmdDb21wb3NpdGVkQmFja2dyb3VuZCkpCi0gICAgICAgICAgICBwYWludExpc3QobmVnWk9yZGVy
TGlzdCgpLCBjdXJyZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFn
cyk7CisgICAgICAgICAgICBwYWludExpc3QobmVnYXRpdmVaT3JkZXJMYXllcnMoKSwgY3VycmVu
dENvbnRleHQsIGxvY2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGlzUGFpbnRpbmdDb21wb3NpdGVkRm9yZWdyb3VuZCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZFBhaW50Q29udGVudCkgewpAQCAtNDExOCwxMCArNDExNCwxMCBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQ29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBMYXllclBhaW50aQogCiAgICAgICAgIGlmIChpc1BhaW50aW5nQ29tcG9zaXRlZEZv
cmVncm91bmQpIHsKICAgICAgICAgICAgIC8vIFBhaW50IGFueSBjaGlsZCBsYXllcnMgdGhhdCBo
YXZlIG92ZXJmbG93LgotICAgICAgICAgICAgcGFpbnRMaXN0KG1fbm9ybWFsRmxvd0xpc3QuZ2V0
KCksIGN1cnJlbnRDb250ZXh0LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsK
KyAgICAgICAgICAgIHBhaW50TGlzdChub3JtYWxGbG93TGF5ZXJzKCksIGN1cnJlbnRDb250ZXh0
LCBsb2NhbFBhaW50aW5nSW5mbywgbG9jYWxQYWludEZsYWdzKTsKICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBOb3cgd2FsayB0aGUgc29ydGVkIGxpc3Qgb2YgY2hpbGRyZW4gd2l0aCBwb3NpdGl2
ZSB6LWluZGljZXMuCi0gICAgICAgICAgICBwYWludExpc3QocG9zWk9yZGVyTGlzdCgpLCBjdXJy
ZW50Q29udGV4dCwgbG9jYWxQYWludGluZ0luZm8sIGxvY2FsUGFpbnRGbGFncyk7CisgICAgICAg
ICAgICBwYWludExpc3QocG9zaXRpdmVaT3JkZXJMYXllcnMoKSwgY3VycmVudENvbnRleHQsIGxv
Y2FsUGFpbnRpbmdJbmZvLCBsb2NhbFBhaW50RmxhZ3MpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGlzUGFpbnRpbmdPdmVybGF5U2Nyb2xsYmFycyAmJiBoYXNTY3JvbGxiYXJzKCkpCkBAIC00
MjEyLDkgKzQyMDgsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAgICAgY29udGV4dC5zZXRD
VE0ob2xkVHJhbnNmcm9tKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRMaXN0KFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBsaXN0LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eWVyUGFpbnRpbmdJbmZvJiBwYWludGluZ0luZm8sIE9wdGlvblNldDxQYWludExheWVyRmxhZz4g
cGFpbnRGbGFncykKK3ZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50TGlzdChMYXllckl0ZXJhdG9yIGxh
eWVySXRlcmF0b3IsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5ZXJQYWludGlu
Z0luZm8mIHBhaW50aW5nSW5mbywgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPiBwYWludEZsYWdz
KQogewotICAgIGlmICghbGlzdCkKKyAgICBpZiAobGF5ZXJJdGVyYXRvci5iZWdpbigpID09IGxh
eWVySXRlcmF0b3IuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaGFzU2VsZlBh
aW50aW5nTGF5ZXJEZXNjZW5kYW50KCkpCkBAIC00MjI0LDcgKzQyMjAsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjpwYWludExpc3QoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVj
a2VyKHRoaXMpOwogI2VuZGlmCiAKLSAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbGlzdCkK
KyAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBsYXllckl0ZXJhdG9yKQogICAgICAgICBjaGls
ZExheWVyLT5wYWludExheWVyKGNvbnRleHQsIHBhaW50aW5nSW5mbywgcGFpbnRGbGFncyk7CiB9
CiAKQEAgLTQ4MjYsNyArNDgyMiw3IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVz
dExheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIFJlbmRlckxheWVyKiBjb250CiAjZW5kaWYK
IAogICAgIC8vIEJlZ2luIGJ5IHdhbGtpbmcgb3VyIGxpc3Qgb2YgcG9zaXRpdmUgbGF5ZXJzIGZy
b20gaGlnaGVzdCB6LWluZGV4IGRvd24gdG8gdGhlIGxvd2VzdCB6LWluZGV4LgotICAgIGF1dG8q
IGhpdExheWVyID0gaGl0VGVzdExpc3QocG9zWk9yZGVyTGlzdCgpLCByb290TGF5ZXIsIHJlcXVl
c3QsIHJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RMb2NhdGlvbiwKKyAgICBhdXRvKiBoaXRM
YXllciA9IGhpdFRlc3RMaXN0KHBvc2l0aXZlWk9yZGVyTGF5ZXJzKCksIHJvb3RMYXllciwgcmVx
dWVzdCwgcmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsVHJhbnNmb3JtU3RhdGUuZ2V0KCksIHpP
ZmZzZXRGb3JEZXNjZW5kYW50c1B0ciwgek9mZnNldCwgdW5mbGF0dGVuZWRUcmFuc2Zvcm1TdGF0
ZS5nZXQoKSwgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwogICAgIGlmIChoaXRMYXllcikgewogICAg
ICAgICBpZiAoIWRlcHRoU29ydERlc2NlbmRhbnRzKQpAQCAtNDgzNSw3ICs0ODMxLDcgQEAgUmVu
ZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXll
ciwgUmVuZGVyTGF5ZXIqIGNvbnQKICAgICB9CiAKICAgICAvLyBOb3cgY2hlY2sgb3VyIG92ZXJm
bG93IG9iamVjdHMuCi0gICAgaGl0TGF5ZXIgPSBoaXRUZXN0TGlzdChtX25vcm1hbEZsb3dMaXN0
LmdldCgpLCByb290TGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RM
b2NhdGlvbiwKKyAgICBoaXRMYXllciA9IGhpdFRlc3RMaXN0KG5vcm1hbEZsb3dMYXllcnMoKSwg
cm9vdExheWVyLCByZXF1ZXN0LCByZXN1bHQsIGhpdFRlc3RSZWN0LCBoaXRUZXN0TG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFRyYW5zZm9ybVN0YXRlLmdldCgpLCB6
T2Zmc2V0Rm9yRGVzY2VuZGFudHNQdHIsIHpPZmZzZXQsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3Rh
dGUuZ2V0KCksIGRlcHRoU29ydERlc2NlbmRhbnRzKTsKICAgICBpZiAoaGl0TGF5ZXIpIHsKICAg
ICAgICAgaWYgKCFkZXB0aFNvcnREZXNjZW5kYW50cykKQEAgLTQ4NzQsNyArNDg3MCw3IEBAIFJl
bmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExheWVyKFJlbmRlckxheWVyKiByb290TGF5
ZXIsIFJlbmRlckxheWVyKiBjb250CiAgICAgfQogCiAgICAgLy8gTm93IGNoZWNrIG91ciBuZWdh
dGl2ZSB6LWluZGV4IGNoaWxkcmVuLgotICAgIGhpdExheWVyID0gaGl0VGVzdExpc3QobmVnWk9y
ZGVyTGlzdCgpLCByb290TGF5ZXIsIHJlcXVlc3QsIHJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRl
c3RMb2NhdGlvbiwKKyAgICBoaXRMYXllciA9IGhpdFRlc3RMaXN0KG5lZ2F0aXZlWk9yZGVyTGF5
ZXJzKCksIHJvb3RMYXllciwgcmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExv
Y2F0aW9uLAogICAgICAgICBsb2NhbFRyYW5zZm9ybVN0YXRlLmdldCgpLCB6T2Zmc2V0Rm9yRGVz
Y2VuZGFudHNQdHIsIHpPZmZzZXQsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCksIGRl
cHRoU29ydERlc2NlbmRhbnRzKTsKICAgICBpZiAoaGl0TGF5ZXIpIHsKICAgICAgICAgaWYgKCFk
ZXB0aFNvcnREZXNjZW5kYW50cykKQEAgLTUwMzksNyArNTAzNSw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OmhpdFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3VsdCYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVy
OjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCwgUmVuZGVyTGF5ZXIqIHJv
b3RMYXllciwKK1JlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdExpc3QoTGF5ZXJJdGVy
YXRvciBsYXllckl0ZXJhdG9yLCBSZW5kZXJMYXllciogcm9vdExheWVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9u
JiBoaXRUZXN0TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogdHJhbnNmb3JtU3RhdGUsIApAQCAtNTA0
NywxOCArNTA0MywxOSBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBsaXN0LCBSZW5kZXJMYXllciogcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVu
ZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpCiB7Ci0gICAgaWYgKCFsaXN0KQorICAg
IGlmIChsYXllckl0ZXJhdG9yLmJlZ2luKCkgPT0gbGF5ZXJJdGVyYXRvci5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWhhc1NlbGZQYWludGluZ0xheWVyRGVzY2Vu
ZGFudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlckxheWVyKiByZXN1
bHRMYXllciA9IG51bGxwdHI7Ci0gICAgZm9yIChzaXplX3QgaSA9IGxpc3QtPnNpemUoKTsgaSA+
IDA7IC0taSkgewotICAgICAgICBSZW5kZXJMYXllciogY2hpbGRMYXllciA9IGxpc3QtPmF0KGkg
LSAxKTsKLSAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gbnVsbHB0cjsKKworICAgIGZv
ciAoYXV0byBpdGVyID0gbGF5ZXJJdGVyYXRvci5yYmVnaW4oKTsgaXRlciAhPSBsYXllckl0ZXJh
dG9yLnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGF1dG8qIGNoaWxkTGF5ZXIgPSAqaXRlcjsK
KwogICAgICAgICBIaXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LmhpdFRlc3RMb2NhdGlv
bigpKTsKLSAgICAgICAgaGl0TGF5ZXIgPSBjaGlsZExheWVyLT5oaXRUZXN0TGF5ZXIocm9vdExh
eWVyLCB0aGlzLCByZXF1ZXN0LCB0ZW1wUmVzdWx0LCBoaXRUZXN0UmVjdCwgaGl0VGVzdExvY2F0
aW9uLCBmYWxzZSwgdHJhbnNmb3JtU3RhdGUsIHpPZmZzZXRGb3JEZXNjZW5kYW50cyk7CisgICAg
ICAgIGF1dG8qIGhpdExheWVyID0gY2hpbGRMYXllci0+aGl0VGVzdExheWVyKHJvb3RMYXllciwg
dGhpcywgcmVxdWVzdCwgdGVtcFJlc3VsdCwgaGl0VGVzdFJlY3QsIGhpdFRlc3RMb2NhdGlvbiwg
ZmFsc2UsIHRyYW5zZm9ybVN0YXRlLCB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMpOwogCiAgICAgICAg
IC8vIElmIGl0IGlzIGEgbGlzdC1iYXNlZCB0ZXN0LCB3ZSBjYW4gc2FmZWx5IGFwcGVuZCB0aGUg
dGVtcG9yYXJ5IHJlc3VsdCBzaW5jZSBpdCBtaWdodCBoYWQgaGl0CiAgICAgICAgIC8vIG5vZGVz
IGJ1dCBub3QgbmVjZXNzZXJpbHkgaGFkIGhpdExheWVyIHNldC4KQEAgLTU1OTcsNyArNTU5NCw3
IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
QVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwgKCFwb3NaT3JkZXJMaXN0KCkgfHwgIXBvc1pP
cmRlckxpc3QoKS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwg
IXBvc2l0aXZlWk9yZGVyTGF5ZXJzKCkuc2l6ZSgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0
PFJlbmRlckxheWVyKj4odGhpcykpOwpAQCAtNTYxMiwyMCArNTYwOSwxNCBAQCBMYXlvdXRSZWN0
IFJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5j
ZXN0b3JMYXllciwgYwogICAgICAgICB1bmlvbkJvdW5kcy5jaGVja2VkVW5pdGUoY2hpbGRCb3Vu
ZHMpOwogICAgIH07CiAKLSAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9IHRoaXMtPm5lZ1pP
cmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbmVnWk9yZGVy
TGlzdCkKLSAgICAgICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hpbGRMYXllcik7Ci0gICAg
fQorICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6IG5lZ2F0aXZlWk9yZGVyTGF5ZXJzKCkpCisg
ICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hpbGRMYXllcik7CiAKLSAgICBpZiAoYXV0byog
cG9zWk9yZGVyTGlzdCA9IHRoaXMtPnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1
dG8qIGNoaWxkTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKLSAgICAgICAgICAgIGNvbXB1dGVMYXll
cnNVbmlvbigqY2hpbGRMYXllcik7Ci0gICAgfQorICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6
IHBvc2l0aXZlWk9yZGVyTGF5ZXJzKCkpCisgICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hp
bGRMYXllcik7CiAKLSAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSB0aGlzLT5ub3JtYWxG
bG93TGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6ICpub3JtYWxGbG93
TGlzdCkKLSAgICAgICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hpbGRMYXllcik7Ci0gICAg
fQorICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6IG5vcm1hbEZsb3dMYXllcnMoKSkKKyAgICAg
ICAgY29tcHV0ZUxheWVyc1VuaW9uKCpjaGlsZExheWVyKTsKIAogICAgIC8vIEZJWE1FOiBXZSBj
YW4gb3B0aW1pemUgdGhlIHNpemUgb2YgdGhlIGNvbXBvc2l0ZWQgbGF5ZXJzLCBieSBub3QgZW5s
YXJnaW5nCiAgICAgLy8gZmlsdGVyZWQgYXJlYXMgd2l0aCB0aGUgb3V0c2V0cyBpZiB3ZSBrbm93
IHRoYXQgdGhlIGZpbHRlciBpcyBnb2luZyB0byByZW5kZXIgaW4gaGFyZHdhcmUuCkBAIC01Nzky
LDE4ICs1NzgzLDE4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmJhY2tncm91bmRJc0tub3duVG9CZU9w
YXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpCiAgICAgaWYgKHJlbmRlcmVy
KCkuaGFzT3ZlcmZsb3dDbGlwKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBy
ZXR1cm4gbGlzdEJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChwb3NaT3JkZXJMaXN0
KCksIGxvY2FsUmVjdCkKLSAgICAgICAgfHwgbGlzdEJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1
ZUluUmVjdChuZWdaT3JkZXJMaXN0KCksIGxvY2FsUmVjdCkKLSAgICAgICAgfHwgbGlzdEJhY2tn
cm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChub3JtYWxGbG93TGlzdCgpLCBsb2NhbFJlY3Qp
OworICAgIHJldHVybiBsaXN0QmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KHBvc2l0
aXZlWk9yZGVyTGF5ZXJzKCksIGxvY2FsUmVjdCkKKyAgICAgICAgfHwgbGlzdEJhY2tncm91bmRJ
c0tub3duVG9CZU9wYXF1ZUluUmVjdChuZWdhdGl2ZVpPcmRlckxheWVycygpLCBsb2NhbFJlY3Qp
CisgICAgICAgIHx8IGxpc3RCYWNrZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3Qobm9ybWFs
Rmxvd0xheWVycygpLCBsb2NhbFJlY3QpOwogfQogCi1ib29sIFJlbmRlckxheWVyOjpsaXN0QmFj
a2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+
KiBsaXN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0Citib29sIFJlbmRlckxh
eWVyOjpsaXN0QmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheWVySXRl
cmF0b3ImIGxpc3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCkgY29uc3QKIHsKLSAgICBp
ZiAoIWxpc3QgfHwgbGlzdC0+aXNFbXB0eSgpKQorICAgIGlmIChsaXN0LmJlZ2luKCkgPT0gbGlz
dC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChhdXRvIGl0ZXIgPSBs
aXN0LT5yYmVnaW4oKTsgaXRlciAhPSBsaXN0LT5yZW5kKCk7ICsraXRlcikgewotICAgICAgICBj
b25zdCBSZW5kZXJMYXllciogY2hpbGRMYXllciA9ICppdGVyOworICAgIGZvciAoYXV0byBpdGVy
ID0gbGlzdC5yYmVnaW4oKTsgaXRlciAhPSBsaXN0LnJlbmQoKTsgKytpdGVyKSB7CisgICAgICAg
IGNvbnN0IGF1dG8qIGNoaWxkTGF5ZXIgPSAqaXRlcjsKICAgICAgICAgaWYgKGNoaWxkTGF5ZXIt
PmlzQ29tcG9zaXRlZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggMjdlOTM1YjM5ZGY1ZTZmNThmYTE3YjYxYjllYzA4
NDk1ZWQ4ZDYwNS4uOTE5MGU2MWFmZGIyOGI1MGFjYTM4YTRlZDM5NTkzYjQ5OGNlMjYyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTM1MywyOCArMzUzLDY3IEBA
IHB1YmxpYzoKICAgICAvLyBpdHNlbGYsIGlmIGl0IGlzIGEgc3RhY2tpbmcgY29udGFpbmVyLgog
ICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTdGFja2luZ0NvbnRleHQoKSB7IHJldHVybiBpc1N0
YWNraW5nQ29udGV4dCgpID8gdGhpcyA6IHN0YWNraW5nQ29udGV4dCgpOyB9CiAKKyAgICB2b2lk
IGRpcnR5Tm9ybWFsRmxvd0xpc3QoKTsKKwogICAgIHZvaWQgZGlydHlaT3JkZXJMaXN0cygpOwog
ICAgIHZvaWQgZGlydHlTdGFja2luZ0NvbnRleHRaT3JkZXJMaXN0cygpOworICAgIAorICAgIGNs
YXNzIExheWVySXRlcmF0b3IgeworICAgICAgICBmcmllbmQgY2xhc3MgUmVuZGVyTGF5ZXI7Cisg
ICAgcHVibGljOgorICAgICAgICB1c2luZyBpdGVyYXRvciA9IFJlbmRlckxheWVyKio7CisgICAg
ICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gUmVuZGVyTGF5ZXIgKiBjb25zdCAqOworICAgICAg
ICB1c2luZyByZXZlcnNlX2l0ZXJhdG9yID0gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9y
PjsKKyAgICAgICAgdXNpbmcgY29uc3RfcmV2ZXJzZV9pdGVyYXRvciA9IHN0ZDo6cmV2ZXJzZV9p
dGVyYXRvcjxjb25zdF9pdGVyYXRvcj47CisKKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJl
dHVybiBtX2xheWVyTGlzdCA/IG1fbGF5ZXJMaXN0LT5iZWdpbigpIDogbnVsbHB0cjsgfQorICAg
ICAgICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBtX2xheWVyTGlzdCA/IG1fbGF5ZXJMaXN0LT5l
bmQoKSA6IG51bGxwdHI7IH0KKworICAgICAgICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIHsg
cmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgICAgIHJldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7IH0KKworICAgICAg
ICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJMaXN0ID8gbV9s
YXllckxpc3QtPmJlZ2luKCkgOiBudWxscHRyOyB9CisgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJMaXN0ID8gbV9sYXllckxpc3QtPmVuZCgpIDogbnVs
bHB0cjsgfQogCi0gICAgVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QoKSBjb25z
dAorICAgICAgICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CisgICAgICAgIGNvbnN0X3JldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IoYmVn
aW4oKSk7IH0KKworICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJM
aXN0ID8gbV9sYXllckxpc3QtPnNpemUoKSA6IDA7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IExheWVySXRlcmF0b3IoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxheWVyTGlzdCkKKyAgICAgICAg
ICAgIDogbV9sYXllckxpc3QobGF5ZXJMaXN0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIFZlY3RvcjxSZW5kZXJMYXllcio+KiBtX2xheWVyTGlzdDsKKyAgICB9Owor
CisgICAgTGF5ZXJJdGVyYXRvciBub3JtYWxGbG93TGF5ZXJzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKKyAgICAgICAgcmV0dXJuIExheWVy
SXRlcmF0b3IobV9ub3JtYWxGbG93TGlzdC5nZXQoKSk7CisgICAgfQorCisgICAgTGF5ZXJJdGVy
YXRvciBwb3NpdGl2ZVpPcmRlckxheWVycygpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
IW1fek9yZGVyTGlzdHNEaXJ0eSk7CiAgICAgICAgIEFTU0VSVChpc1N0YWNraW5nQ29udGV4dCgp
IHx8ICFtX3Bvc1pPcmRlckxpc3QpOwotICAgICAgICByZXR1cm4gbV9wb3NaT3JkZXJMaXN0Lmdl
dCgpOworICAgICAgICByZXR1cm4gTGF5ZXJJdGVyYXRvcihtX3Bvc1pPcmRlckxpc3QuZ2V0KCkp
OwogICAgIH0KIAotICAgIGJvb2wgaGFzTmVnYXRpdmVaT3JkZXJMaXN0KCkgY29uc3QgeyByZXR1
cm4gbmVnWk9yZGVyTGlzdCgpICYmIG5lZ1pPcmRlckxpc3QoKS0+c2l6ZSgpOyB9CisgICAgYm9v
bCBoYXNOZWdhdGl2ZVpPcmRlckxheWVycygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9uZWdaT3JkZXJMaXN0ICYmIG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgIH0KIAotICAg
IFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0KCkgY29uc3QKKyAgICBMYXllckl0
ZXJhdG9yIG5lZ2F0aXZlWk9yZGVyTGF5ZXJzKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VCghbV96T3JkZXJMaXN0c0RpcnR5KTsKICAgICAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0
KCkgfHwgIW1fbmVnWk9yZGVyTGlzdCk7Ci0gICAgICAgIHJldHVybiBtX25lZ1pPcmRlckxpc3Qu
Z2V0KCk7CisgICAgICAgIHJldHVybiBMYXllckl0ZXJhdG9yKG1fbmVnWk9yZGVyTGlzdC5nZXQo
KSk7CiAgICAgfQogCi0gICAgdm9pZCBkaXJ0eU5vcm1hbEZsb3dMaXN0KCk7Ci0gICAgVmVjdG9y
PFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0KCkgY29uc3QgeyBBU1NFUlQoIW1fbm9ybWFs
Rmxvd0xpc3REaXJ0eSk7IHJldHVybiBtX25vcm1hbEZsb3dMaXN0LmdldCgpOyB9Ci0KICAgICAv
LyBVcGRhdGUgb3VyIG5vcm1hbCBhbmQgei1pbmRleCBsaXN0cy4KICAgICB2b2lkIHVwZGF0ZUxh
eWVyTGlzdHNJZk5lZWRlZCgpOwogCkBAIC03MzAsNiArNzY5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsK
ICAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cyhzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+Jiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSZW5kZXJMYXllcio+PiYpOworICAg
IHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIHN0ZDo6dW5pcXVl
X3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4mLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRl
ckxheWVyKj4+Jik7CiAgICAgdm9pZCBjbGVhclpPcmRlckxpc3RzKCk7CiAKICAgICB2b2lkIHVw
ZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CkBAIC03ODUsOCArODI1LDYgQEAgcHJpdmF0ZToKIAogICAg
IExheW91dFBvaW50IHJlbmRlckJveExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gaXM8UmVuZGVy
Qm94PihyZW5kZXJlcigpKSA/IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIoKSkubG9jYXRp
b24oKSA6IExheW91dFBvaW50KCk7IH0KIAotICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGlu
Y2x1ZGVIaWRkZW5MYXllcnMsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPj4m
LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJlbmRlckxheWVyKj4+Jik7Ci0KICAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKICAgICBib29sIHNldHVw
Rm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGJvb2wmIGRpZFF1YW50
aXplRm9udHMpOwpAQCAtODA2LDcgKzg0NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludExh
eWVyQ29udGVudHNBbmRSZWZsZWN0aW9uKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IExheWVyUGFp
bnRpbmdJbmZvJiwgT3B0aW9uU2V0PFBhaW50TGF5ZXJGbGFnPik7CiAgICAgdm9pZCBwYWludExh
eWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50
aW5nSW5mbyYsIE9wdGlvblNldDxQYWludExheWVyRmxhZz4sIGNvbnN0IExheW91dFNpemUmIHRy
YW5zbGF0aW9uT2Zmc2V0ID0gTGF5b3V0U2l6ZSgpKTsKICAgICB2b2lkIHBhaW50TGF5ZXJDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNl
dDxQYWludExheWVyRmxhZz4pOwotICAgIHZvaWQgcGFpbnRMaXN0KFZlY3RvcjxSZW5kZXJMYXll
cio+KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWludGluZ0luZm8mLCBPcHRpb25T
ZXQ8UGFpbnRMYXllckZsYWc+KTsKKyAgICB2b2lkIHBhaW50TGlzdChMYXllckl0ZXJhdG9yLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4pOwogCiAgICAgdm9pZCB1cGRhdGVQYWludGluZ0luZm9Gb3JGcmFnbWVudHMo
TGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXllclBhaW50aW5nSW5mbyYsIE9wdGlvblNldDxQYWlu
dExheWVyRmxhZz4sIGJvb2wgc2hvdWxkUGFpbnRDb250ZW50LCBjb25zdCBMYXlvdXRTaXplJiBv
ZmZzZXRGcm9tUm9vdCk7CiAgICAgdm9pZCBwYWludEJhY2tncm91bmRGb3JGcmFnbWVudHMoY29u
c3QgTGF5ZXJGcmFnbWVudHMmLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0NvbnRleHQmIHRy
YW5zcGFyZW5jeUxheWVyQ29udGV4dCwKQEAgLTgyMywxMyArODYxLDEzIEBAIHByaXZhdGU6CiAg
ICAgUmVuZGVyTGF5ZXIqIHRyYW5zcGFyZW50UGFpbnRpbmdBbmNlc3RvcigpOwogICAgIHZvaWQg
YmVnaW5UcmFuc3BhcmVuY3lMYXllcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5ZXJQYWlu
dGluZ0luZm8mLCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgUmVuZGVyTGF5
ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29u
dGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQsCisgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMYXllcihSZW5kZXJMYXllciogcm9v
dExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0
LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBib29sIGFwcGxpZWRUcmFuc2Zvcm0sCiAgICAgICAg
IGNvbnN0IEhpdFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZSogPSBudWxscHRyLCBkb3VibGUqIHpPZmZz
ZXQgPSBudWxscHRyKTsKICAgICBSZW5kZXJMYXllciogaGl0VGVzdExheWVyQnlBcHBseWluZ1Ry
YW5zZm9ybShSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udGFpbmVyTGF5
ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgICAgIGNvbnN0
IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25zdCBI
aXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqID0gbnVsbHB0ciwgZG91YmxlKiB6T2Zmc2V0ID0gbnVs
bHB0ciwKICAgICAgICAgY29uc3QgTGF5b3V0U2l6ZSYgdHJhbnNsYXRpb25PZmZzZXQgPSBMYXlv
dXRTaXplKCkpOwotICAgIFJlbmRlckxheWVyKiBoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiosIFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsCisgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RMaXN0
KExheWVySXRlcmF0b3IsIFJlbmRlckxheWVyKiByb290TGF5ZXIsIGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsCiAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RS
ZWN0LCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJh
bnNmb3JtU3RhdGUqLCBkb3VibGUqIHpPZmZzZXRGb3JEZXNjZW5kYW50cywgZG91YmxlKiB6T2Zm
c2V0LAogICAgICAgICBjb25zdCBIaXRUZXN0aW5nVHJhbnNmb3JtU3RhdGUqIHVuZmxhdHRlbmVk
VHJhbnNmb3JtU3RhdGUsIGJvb2wgZGVwdGhTb3J0RGVzY2VuZGFudHMpOwpAQCAtODQ1LDcgKzg4
Myw3IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyTGF5ZXIqIGhpdFRlc3RUcmFuc2Zvcm1lZExheWVy
SW5GcmFnbWVudHMoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIqIGNvbnRhaW5l
ckxheWVyLCBjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLAogICAgICAgICBj
b25zdCBMYXlvdXRSZWN0JiBoaXRUZXN0UmVjdCwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29u
c3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiA9IG51bGxwdHIsIGRvdWJsZSogek9mZnNldCA9
IG51bGxwdHIpOwogCi0gICAgYm9vbCBsaXN0QmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5S
ZWN0KGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcio+KiwgY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0
OworICAgIGJvb2wgbGlzdEJhY2tncm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBM
YXllckl0ZXJhdG9yJiwgY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogCiAgICAgdm9pZCBjb21w
dXRlU2Nyb2xsRGltZW5zaW9ucygpOwogICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCmluZGV4IGU1YzczNDIzOGZhYzdmOGMyNGU0ZjUwYjk2Y2Y3NmFiYmYyMGExNGIuLjdjZmY4
N2JiYzQ1YjI3YWE4OWMxNzljNWIyMGE0NzE3Nzc3MmIwNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMDgzLDQ3ICsyMDgzLDQx
IEBAIHN0YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVz
Y2VuZGFudExheWVycyhSZW5kZXJMYXllciYKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9y
IG11dGF0aW9uQ2hlY2tlcigmcGFyZW50KTsKICNlbmRpZgogCi0gICAgaWYgKGF1dG8qIG5vcm1h
bEZsb3dMaXN0ID0gcGFyZW50Lm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgZm9yIChhdXRv
KiBjaGlsZExheWVyIDogKm5vcm1hbEZsb3dMaXN0KSB7Ci0gICAgICAgICAgICBpZiAoY29tcG9z
aXRlZFdpdGhPd25CYWNraW5nU3RvcmUoKmNoaWxkTGF5ZXIpKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6IHBhcmVudC5ub3JtYWxGbG93TGF5
ZXJzKCkpIHsKKyAgICAgICAgaWYgKGNvbXBvc2l0ZWRXaXRoT3duQmFja2luZ1N0b3JlKCpjaGls
ZExheWVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZiAobGF5ZXJG
dW5jKCpjaGlsZExheWVyKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICh0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycygqY2hpbGRM
YXllciwgbGF5ZXJGdW5jKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGxh
eWVyRnVuYygqY2hpbGRMYXllcikgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAg
ICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CisgICAgICAgIAorICAgICAgICBpZiAodHJh
dmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoKmNoaWxkTGF5ZXIsIGxh
eWVyRnVuYykgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICByZXR1cm4gTGF5
ZXJUcmF2ZXJzYWw6OlN0b3A7CiAgICAgfQogCiAgICAgaWYgKHBhcmVudC5pc1N0YWNraW5nQ29u
dGV4dCgpICYmICFwYXJlbnQuaGFzVmlzaWJsZURlc2NlbmRhbnQoKSkKICAgICAgICAgcmV0dXJu
IExheWVyVHJhdmVyc2FsOjpDb250aW51ZTsKIAogICAgIC8vIFVzZSB0aGUgbV9oYXNDb21wb3Np
dGluZ0Rlc2NlbmRhbnQgYml0IHRvIG9wdGltaXplPwotICAgIGlmIChhdXRvKiBuZWdaT3JkZXJM
aXN0ID0gcGFyZW50Lm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIGNoaWxk
TGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgaWYgKGNvbXBvc2l0ZWRXaXRo
T3duQmFja2luZ1N0b3JlKCpjaGlsZExheWVyKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBwYXJlbnQubmVnYXRpdmVaT3JkZXJMYXllcnMo
KSkgeworICAgICAgICBpZiAoY29tcG9zaXRlZFdpdGhPd25CYWNraW5nU3RvcmUoKmNoaWxkTGF5
ZXIpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIGlmIChsYXllckZ1bmMo
KmNoaWxkTGF5ZXIpID09IExheWVyVHJhdmVyc2FsOjpTdG9wKQotICAgICAgICAgICAgICAgIHJl
dHVybiBMYXllclRyYXZlcnNhbDo6U3RvcDsKKyAgICAgICAgaWYgKGxheWVyRnVuYygqY2hpbGRM
YXllcikgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICByZXR1cm4gTGF5ZXJU
cmF2ZXJzYWw6OlN0b3A7CiAKLSAgICAgICAgICAgIGlmICh0cmF2ZXJzZVZpc2libGVOb25Db21w
b3NpdGVkRGVzY2VuZGFudExheWVycygqY2hpbGRMYXllciwgbGF5ZXJGdW5jKSA9PSBMYXllclRy
YXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0
b3A7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWRE
ZXNjZW5kYW50TGF5ZXJzKCpjaGlsZExheWVyLCBsYXllckZ1bmMpID09IExheWVyVHJhdmVyc2Fs
OjpTdG9wKQorICAgICAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpTdG9wOwogICAgIH0K
IAotICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gcGFyZW50LnBvc1pPcmRlckxpc3QoKSkg
ewotICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkgewotICAg
ICAgICAgICAgaWYgKGNvbXBvc2l0ZWRXaXRoT3duQmFja2luZ1N0b3JlKCpjaGlsZExheWVyKSkK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBw
YXJlbnQucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkgeworICAgICAgICBpZiAoY29tcG9zaXRlZFdp
dGhPd25CYWNraW5nU3RvcmUoKmNoaWxkTGF5ZXIpKQorICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGlmIChsYXllckZ1bmMoKmNoaWxkTGF5ZXIpID09IExheWVyVHJhdmVyc2Fs
OjpTdG9wKQotICAgICAgICAgICAgICAgIHJldHVybiBMYXllclRyYXZlcnNhbDo6U3RvcDsKKyAg
ICAgICAgaWYgKGxheWVyRnVuYygqY2hpbGRMYXllcikgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3Ap
CisgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CiAKLSAgICAgICAgICAg
IGlmICh0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycygqY2hpbGRM
YXllciwgbGF5ZXJGdW5jKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRy
YXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKCpjaGlsZExheWVyLCBs
YXllckZ1bmMpID09IExheWVyVHJhdmVyc2FsOjpTdG9wKQorICAgICAgICAgICAgcmV0dXJuIExh
eWVyVHJhdmVyc2FsOjpTdG9wOwogICAgIH0KIAogICAgIHJldHVybiBMYXllclRyYXZlcnNhbDo6
Q29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCmluZGV4IGQyNmZhYmU0MTVkNmQ1NDg2YWI1OWNlNDM3NWQ2MDcyM2FlZDhl
YjYuLmZhYjdjYTFiOGY3MmM2ZDRmMmM5ZGFhOTU4ZThkNTlkM2M5M2VmNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0x
MjY4LDIwICsxMjY4LDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgY29uCiAgICAgTGF5ZXJMaXN0
TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+
KCZsYXllcikpOwogI2VuZGlmCiAKLSAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9IGxheWVy
Lm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5l
Z1pPcmRlckxpc3QpCi0gICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3Zlcmxh
cE1hcCwgKnJlbmRlckxheWVyLCAmbGF5ZXIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8qIHJlbmRl
ckxheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgYWRkVG9PdmVy
bGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpyZW5kZXJMYXllciwgJmxheWVyKTsKIAotICAg
IGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpub3JtYWxGbG93TGlzdCkKLSAgICAgICAg
ICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIsICZs
YXllcik7Ci0gICAgfQorICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5ub3JtYWxG
bG93TGF5ZXJzKCkpCisgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFw
LCAqcmVuZGVyTGF5ZXIsICZsYXllcik7CiAKLSAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9
IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKnBvc1pPcmRlckxpc3QpCi0gICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUo
b3ZlcmxhcE1hcCwgKnJlbmRlckxheWVyLCAmbGF5ZXIpOwotICAgIH0KKyAgICBmb3IgKGF1dG8q
IHJlbmRlckxheWVyIDogbGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgYWRk
VG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpyZW5kZXJMYXllciwgJmxheWVyKTsK
ICAgICAKICAgICBpZiAoYW5jZXN0b3JMYXllcikKICAgICAgICAgb3ZlcmxhcE1hcC5nZW9tZXRy
eU1hcCgpLnBvcE1hcHBpbmdzVG9BbmNlc3RvcihhbmNlc3RvckxheWVyKTsKQEAgLTEzNzQsMzUg
KzEzNjgsMjggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGlu
Z1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKIAogICAgIGJvb2wgYW55RGVzY2Vu
ZGFudEhhczNEVHJhbnNmb3JtID0gZmFsc2U7CiAKLSAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlz
dCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxh
eWVyIDogKm5lZ1pPcmRlckxpc3QpIHsKLSAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1Jl
cXVpcmVtZW50cygmbGF5ZXIsICpyZW5kZXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwg
bGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKLQotICAgICAgICAg
ICAgLy8gSWYgd2UgaGF2ZSB0byBtYWtlIGEgbGF5ZXIgZm9yIHRoaXMgY2hpbGQsIG1ha2Ugb25l
IG5vdyBzbyB3ZSBjYW4gaGF2ZSBhIGNvbnRlbnRzIGxheWVyCi0gICAgICAgICAgICAvLyAoc2lu
Y2Ugd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgLXZlIHotb3JkZXIgY2hpbGQgcmVuZGVycyB1
bmRlcm5lYXRoIG91ciBjb250ZW50cykuCi0gICAgICAgICAgICBpZiAoIXdpbGxCZUNvbXBvc2l0
ZWQgJiYgY2hpbGRTdGF0ZS5zdWJ0cmVlSXNDb21wb3NpdGluZykgewotICAgICAgICAgICAgICAg
IC8vIG1ha2UgbGF5ZXIgY29tcG9zaXRpbmcKLSAgICAgICAgICAgICAgICBsYXllci5zZXRJbmRp
cmVjdENvbXBvc2l0aW5nUmVhc29uKFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVh
c29uOjpCYWNrZ3JvdW5kTGF5ZXIpOwotICAgICAgICAgICAgICAgIGNoaWxkU3RhdGUuY29tcG9z
aXRpbmdBbmNlc3RvciA9ICZsYXllcjsKLSAgICAgICAgICAgICAgICBvdmVybGFwTWFwLnB1c2hD
b21wb3NpdGluZ0NvbnRhaW5lcigpOwotICAgICAgICAgICAgICAgIC8vIFRoaXMgbGF5ZXIgaXMg
Z29pbmcgdG8gYmUgY29tcG9zaXRlZCwgc28gY2hpbGRyZW4gY2FuIHNhZmVseSBpZ25vcmUgdGhl
IGZhY3QgdGhhdCB0aGVyZSdzIGFuCi0gICAgICAgICAgICAgICAgLy8gYW5pbWF0aW9uIHJ1bm5p
bmcgYmVoaW5kIHRoaXMgbGF5ZXIsIG1lYW5pbmcgdGhleSBjYW4gcmVseSBvbiB0aGUgb3Zlcmxh
cCBtYXAgdGVzdGluZyBhZ2FpbgotICAgICAgICAgICAgICAgIGNoaWxkU3RhdGUudGVzdGluZ092
ZXJsYXAgPSB0cnVlOwotICAgICAgICAgICAgICAgIHdpbGxCZUNvbXBvc2l0ZWQgPSB0cnVlOwot
ICAgICAgICAgICAgfQorICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5uZWdhdGl2
ZVpPcmRlckxheWVycygpKSB7CisgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50
cygmbGF5ZXIsICpyZW5kZXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hh
bmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKworICAgICAgICAvLyBJZiB3ZSBo
YXZlIHRvIG1ha2UgYSBsYXllciBmb3IgdGhpcyBjaGlsZCwgbWFrZSBvbmUgbm93IHNvIHdlIGNh
biBoYXZlIGEgY29udGVudHMgbGF5ZXIKKyAgICAgICAgLy8gKHNpbmNlIHdlIG5lZWQgdG8gZW5z
dXJlIHRoYXQgdGhlIC12ZSB6LW9yZGVyIGNoaWxkIHJlbmRlcnMgdW5kZXJuZWF0aCBvdXIgY29u
dGVudHMpLgorICAgICAgICBpZiAoIXdpbGxCZUNvbXBvc2l0ZWQgJiYgY2hpbGRTdGF0ZS5zdWJ0
cmVlSXNDb21wb3NpdGluZykgeworICAgICAgICAgICAgLy8gbWFrZSBsYXllciBjb21wb3NpdGlu
ZworICAgICAgICAgICAgbGF5ZXIuc2V0SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbihSZW5kZXJM
YXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbjo6QmFja2dyb3VuZExheWVyKTsKKyAgICAg
ICAgICAgIGNoaWxkU3RhdGUuY29tcG9zaXRpbmdBbmNlc3RvciA9ICZsYXllcjsKKyAgICAgICAg
ICAgIG92ZXJsYXBNYXAucHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7CisgICAgICAgICAgICAv
LyBUaGlzIGxheWVyIGlzIGdvaW5nIHRvIGJlIGNvbXBvc2l0ZWQsIHNvIGNoaWxkcmVuIGNhbiBz
YWZlbHkgaWdub3JlIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbgorICAgICAgICAgICAgLy8gYW5p
bWF0aW9uIHJ1bm5pbmcgYmVoaW5kIHRoaXMgbGF5ZXIsIG1lYW5pbmcgdGhleSBjYW4gcmVseSBv
biB0aGUgb3ZlcmxhcCBtYXAgdGVzdGluZyBhZ2FpbgorICAgICAgICAgICAgY2hpbGRTdGF0ZS50
ZXN0aW5nT3ZlcmxhcCA9IHRydWU7CisgICAgICAgICAgICB3aWxsQmVDb21wb3NpdGVkID0gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3Qg
PSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5
ZXIgOiAqbm9ybWFsRmxvd0xpc3QpCi0gICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1
aXJlbWVudHMoJmxheWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxh
eWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7Ci0gICAgfQorICAgIGZv
ciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5ub3JtYWxGbG93TGF5ZXJzKCkpCisgICAgICAg
IGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpyZW5kZXJMYXllciwgb3Zl
cmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJh
bnNmb3JtKTsKIAotICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVy
TGlzdCgpKSB7Ci0gICAgICAgIEFTU0VSVChsYXllci5pc1N0YWNraW5nQ29udGV4dCgpKTsKLSAg
ICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAg
ICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXllciwgKnJlbmRlckxheWVyLCBv
dmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RU
cmFuc2Zvcm0pOwotICAgIH0KKyAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIucG9z
aXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1l
bnRzKCZsYXllciwgKnJlbmRlckxheWVyLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnND
aGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogCiAgICAgLy8gSWYgd2UganVz
dCBlbnRlcmVkIGNvbXBvc2l0aW5nIG1vZGUsIHRoZSByb290IHdpbGwgaGF2ZSBiZWNvbWUgY29t
cG9zaXRlZCAoYXMgbG9uZyBhcyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkKS4K
ICAgICBpZiAobGF5ZXIuaXNSZW5kZXJWaWV3TGF5ZXIoKSkgewpAQCAtMTU3OCwyNCArMTU2NSwy
MCBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJU
cmVlKFJlbmRlckxheWVyJiBsYXllciwgVmVjdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0
b3IgbXV0YXRpb25DaGVja2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChhdXRvKiBuZWda
T3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byog
cmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKLSAgICAgICAgICAgIHJlYnVpbGRDb21wb3Np
dGluZ0xheWVyVHJlZSgqcmVuZGVyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKKyAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKSkKKyAg
ICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0
LCBkZXB0aCArIDEpOwogCi0gICAgICAgIC8vIElmIGEgbmVnYXRpdmUgei1vcmRlciBjaGlsZCBp
cyBjb21wb3NpdGluZywgd2UgZ2V0IGEgZm9yZWdyb3VuZCBsYXllciB3aGljaCBuZWVkcyB0byBn
ZXQgcGFyZW50ZWQuCisgICAgLy8gSWYgYSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkIGlzIGNvbXBv
c2l0aW5nLCB3ZSBnZXQgYSBmb3JlZ3JvdW5kIGxheWVyIHdoaWNoIG5lZWRzIHRvIGdldCBwYXJl
bnRlZC4KKyAgICBpZiAobGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKS5zaXplKCkpIHsKICAg
ICAgICAgaWYgKGxheWVyQmFja2luZyAmJiBsYXllckJhY2tpbmctPmZvcmVncm91bmRMYXllcigp
KQogICAgICAgICAgICAgY2hpbGRMaXN0LmFwcGVuZCgqbGF5ZXJCYWNraW5nLT5mb3JlZ3JvdW5k
TGF5ZXIoKSk7CiAgICAgfQotCi0gICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIu
bm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5v
cm1hbEZsb3dMaXN0KQotICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpy
ZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOwotICAgIH0KICAgICAKLSAgICBpZiAo
YXV0byogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCi0gICAgICAgICAgICByZWJ1
aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnJlbmRlckxheWVyLCBjaGlsZExpc3QsIGRlcHRoICsg
MSk7Ci0gICAgfQorICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5ub3JtYWxGbG93
TGF5ZXJzKCkpCisgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgqcmVuZGVyTGF5
ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKKyAgICAKKyAgICBmb3IgKGF1dG8qIHJlbmRlckxh
eWVyIDogbGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgcmVidWlsZENvbXBv
c2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOwogCiAg
ICAgaWYgKGxheWVyQmFja2luZykgewogICAgICAgICBib29sIHBhcmVudGVkID0gZmFsc2U7CkBA
IC0xODMwLDIwICsxODEzLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVM
YXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXllciYgbGF5ZXIsIGludCBkZXB0CiAgICAgTGF5ZXJM
aXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogCi0g
ICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKLSAg
ICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KQotICAgICAgICAg
ICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwotICAg
IH0KKyAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXll
cnMoKSkKKyAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0
aCArIDEpOwogCi0gICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxv
d0xpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dM
aXN0KQotICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBk
ZXB0aCArIDEpOwotICAgIH0KKyAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubm9y
bWFsRmxvd0xheWVycygpKQorICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqcmVuZGVy
TGF5ZXIsIGRlcHRoICsgMSk7CiAgICAgCi0gICAgaWYgKGF1dG8qIHBvc1pPcmRlckxpc3QgPSBs
YXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJl
bmRlckxheWVyLCBkZXB0aCArIDEpOwotICAgIH0KKyAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogbGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKKyAgICAgICAgdXBkYXRlTGF5ZXJUcmVl
R2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwogCiAgICAgaWYgKGF1dG8qIGxheWVy
QmFja2luZyA9IGxheWVyLmJhY2tpbmcoKSkKICAgICAgICAgbGF5ZXJCYWNraW5nLT51cGRhdGVB
ZnRlckRlc2NlbmRhbnRzKCk7CkBAIC0xODc3LDIwICsxODU0LDE0IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJM
YXllciYgY29tCiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIo
JmxheWVyKTsKICNlbmRpZgogICAgIAotICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5
ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAq
bmVnWk9yZGVyTGlzdCkKLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdl
b21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpyZW5kZXJMYXllcik7Ci0gICAgfQorICAgIGZv
ciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5uZWdhdGl2ZVpPcmRlckxheWVycygpKQorICAg
ICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2Vz
dG9yLCAqcmVuZGVyTGF5ZXIpOwogCi0gICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5
ZXIubm9ybWFsRmxvd0xpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDog
Km5vcm1hbEZsb3dMaXN0KQotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50
R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3RvciwgKnJlbmRlckxheWVyKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvKiByZW5kZXJMYXllciA6IGxheWVyLm5vcm1hbEZsb3dMYXllcnMoKSkKKyAgICAg
ICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3Rv
ciwgKnJlbmRlckxheWVyKTsKICAgICAKLSAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9IGxh
eWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDog
KnBvc1pPcmRlckxpc3QpCi0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRH
ZW9tZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIpOwotICAgIH0KKyAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkKKyAg
ICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNl
c3RvciwgKnJlbmRlckxheWVyKTsKICAgICAKICAgICBpZiAoJmxheWVyICE9ICZjb21wb3NpdGlu
Z0FuY2VzdG9yKSB7CiAgICAgICAgIGlmIChhdXRvKiBsYXllckJhY2tpbmcgPSBsYXllci5iYWNr
aW5nKCkpCkBAIC0xOTE0LDIwICsxODg1LDE1IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogI2VuZGlmCiAKICAg
ICBpZiAobGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKLSAgICAgICAgICAgICAg
ICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoKnJlbmRlckxheWVyKTsKLSAgICAgICAgfQorICAgICAg
ICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKSkK
KyAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVuZGVyTGF5ZXIpOwogCi0gICAg
ICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCi0gICAg
ICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpyZW5kZXJMYXllcik7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxv
d0xpc3QoKSkgewotICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dM
aXN0KQorICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIucG9zaXRpdmVaT3Jk
ZXJMYXllcnMoKSkKICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVuZGVyTGF5
ZXIpOwogICAgIH0KKworICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiBsYXllci5ub3JtYWxG
bG93TGF5ZXJzKCkpCisgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVuZGVyTGF5ZXIp
OwogfQogCiBSZW5kZXJMYXllciYgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290UmVuZGVyTGF5
ZXIoKSBjb25zdApAQCAtMjc4Myw3ICsyNzQ5LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0Jgog
Ly8gb2JqZWN0LgogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzQ29udGVudHNDb21w
b3NpdGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKIHsKLSAgICByZXR1
cm4gbGF5ZXIuaGFzTmVnYXRpdmVaT3JkZXJMaXN0KCk7CisgICAgcmV0dXJuIGxheWVyLmhhc05l
Z2F0aXZlWk9yZGVyTGF5ZXJzKCk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc1Njcm9sbExheWVyKFJvb3RMYXllckF0dGFjaG1lbnQgYXR0YWNobWVudCkgY29uc3QK
QEAgLTM1MzUsMjUgKzM1MDEsMTkgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVy
SGFzM0RDb250ZW50KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKICAgICBMYXllckxp
c3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0PFJlbmRlckxheWVy
Kj4oJmxheWVyKSk7CiAjZW5kaWYKIAotICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5
ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAq
bmVnWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpyZW5k
ZXJMYXllcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKSkgewor
ICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKnJlbmRlckxheWVyKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gbGF5
ZXIucG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAq
cG9zWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpyZW5k
ZXJMYXllcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIucG9zaXRpdmVaT3JkZXJMYXllcnMoKSkgewor
ICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKnJlbmRlckxheWVyKSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxh
eWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpub3JtYWxGbG93TGlzdCkgewotICAgICAgICAgICAgaWYgKGxheWVySGFzM0RDb250ZW50KCpy
ZW5kZXJMYXllcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAg
ICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogbGF5ZXIubm9ybWFsRmxvd0xheWVycygpKSB7Cisg
ICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5ZXIpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IGY4MjJhODRmMGRhYzdhN2E1
MWY2NmJhYWI4MmQ4ZThmYWY5YTIzZTcuLjIzNDIzNmEwNzJjM2FlOTViZjgyYjlmMzZmYjVjYmEx
ZTM4YzRmNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4
dC5jcHAKQEAgLTcwNiwyMCArNzA2LDIwIEBAIHN0YXRpYyB2b2lkIHdyaXRlTGF5ZXJzKFRleHRT
dHJlYW0mIHRzLCBjb25zdCBSZW5kZXJMYXllciYgcm9vdExheWVyLCBSZW5kZXJMYXllCiAgICAg
bGF5ZXIudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKICAgICBib29sIHNob3VsZFBhaW50
ID0gKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0U2hvd0FsbExheWVycykgPyB0cnVlIDogbGF5ZXIu
aW50ZXJzZWN0c0RhbWFnZVJlY3QobGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QucmVjdCgpLCAmcm9v
dExheWVyLCBsYXllci5vZmZzZXRGcm9tQW5jZXN0b3IoJnJvb3RMYXllcikpOwotICAgIGF1dG8q
IG5lZ2F0aXZlWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKTsKLSAgICBib29sIHBh
aW50c0JhY2tncm91bmRTZXBhcmF0ZWx5ID0gbmVnYXRpdmVaT3JkZXJMaXN0ICYmIG5lZ2F0aXZl
Wk9yZGVyTGlzdC0+c2l6ZSgpID4gMDsKKyAgICBhdXRvIG5lZ2F0aXZlWk9yZGVyTGF5ZXJzID0g
bGF5ZXIubmVnYXRpdmVaT3JkZXJMYXllcnMoKTsKKyAgICBib29sIHBhaW50c0JhY2tncm91bmRT
ZXBhcmF0ZWx5ID0gbmVnYXRpdmVaT3JkZXJMYXllcnMuc2l6ZSgpID4gMDsKICAgICBpZiAoc2hv
dWxkUGFpbnQgJiYgcGFpbnRzQmFja2dyb3VuZFNlcGFyYXRlbHkpIHsKICAgICAgICAgd3JpdGVM
YXllcih0cywgbGF5ZXIsIGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgY2xpcFJlY3RU
b0FwcGx5LnJlY3QoKSwgTGF5ZXJQYWludFBoYXNlQmFja2dyb3VuZCwgYmVoYXZpb3IpOwogICAg
ICAgICB3cml0ZUxheWVyUmVuZGVyZXJzKHRzLCBsYXllciwgTGF5ZXJQYWludFBoYXNlQmFja2dy
b3VuZCwgYmVoYXZpb3IpOwogICAgIH0KICAgICAgICAgCi0gICAgaWYgKG5lZ2F0aXZlWk9yZGVy
TGlzdCkgeworICAgIGlmIChuZWdhdGl2ZVpPcmRlckxheWVycy5zaXplKCkpIHsKICAgICAgICAg
aWYgKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0U2hvd0xheWVyTmVzdGluZykgewotICAgICAgICAg
ICAgdHMgPDwgaW5kZW50IDw8ICIgbmVnYXRpdmUgei1vcmRlciBsaXN0KCIgPDwgbmVnYXRpdmVa
T3JkZXJMaXN0LT5zaXplKCkgPDwgIilcbiI7CisgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwg
IiBuZWdhdGl2ZSB6LW9yZGVyIGxpc3QoIiA8PCBuZWdhdGl2ZVpPcmRlckxheWVycy5zaXplKCkg
PDwgIilcbiI7CiAgICAgICAgICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwogICAgICAgICB9CiAg
ICAgICAgIAotICAgICAgICBmb3IgKGF1dG8qIGN1cnJMYXllciA6ICpuZWdhdGl2ZVpPcmRlckxp
c3QpCisgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyIDogbmVnYXRpdmVaT3JkZXJMYXllcnMp
CiAgICAgICAgICAgICB3cml0ZUxheWVycyh0cywgcm9vdExheWVyLCAqY3VyckxheWVyLCBwYWlu
dERpcnR5UmVjdCwgYmVoYXZpb3IpOwogCiAgICAgICAgIGlmIChiZWhhdmlvciAmIFJlbmRlckFz
VGV4dFNob3dMYXllck5lc3RpbmcpCkBAIC03NDUsMjkgKzc0NSwzMSBAQCBzdGF0aWMgdm9pZCB3
cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyTGF5ZXImIHJvb3RMYXllciwg
UmVuZGVyTGF5ZQogICAgICAgICB3cml0ZUxheWVyUmVuZGVyZXJzKHRzLCBsYXllciwgcGFpbnRz
QmFja2dyb3VuZFNlcGFyYXRlbHkgPyBMYXllclBhaW50UGhhc2VGb3JlZ3JvdW5kIDogTGF5ZXJQ
YWludFBoYXNlQWxsLCBiZWhhdmlvcik7CiAgICAgfQogICAgIAotICAgIGlmIChhdXRvKiBub3Jt
YWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICBhdXRvIG5vcm1hbEZs
b3dMYXllcnMgPSBsYXllci5ub3JtYWxGbG93TGF5ZXJzKCk7CisgICAgaWYgKG5vcm1hbEZsb3dM
YXllcnMuc2l6ZSgpKSB7CiAgICAgICAgIGlmIChiZWhhdmlvciAmIFJlbmRlckFzVGV4dFNob3dM
YXllck5lc3RpbmcpIHsKLSAgICAgICAgICAgIHRzIDw8IGluZGVudCA8PCAiIG5vcm1hbCBmbG93
IGxpc3QoIiA8PCBub3JtYWxGbG93TGlzdC0+c2l6ZSgpIDw8ICIpXG4iOworICAgICAgICAgICAg
dHMgPDwgaW5kZW50IDw8ICIgbm9ybWFsIGZsb3cgbGlzdCgiIDw8IG5vcm1hbEZsb3dMYXllcnMu
c2l6ZSgpIDw8ICIpXG4iOwogICAgICAgICAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgOiAqbm9ybWFsRmxv
d0xpc3QpCisgICAgICAgIGZvciAoYXV0byogY3VyckxheWVyIDogbm9ybWFsRmxvd0xheWVycykK
ICAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCByb290TGF5ZXIsICpjdXJyTGF5ZXIsIHBhaW50
RGlydHlSZWN0LCBiZWhhdmlvcik7CiAKICAgICAgICAgaWYgKGJlaGF2aW9yICYgUmVuZGVyQXNU
ZXh0U2hvd0xheWVyTmVzdGluZykKICAgICAgICAgICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8qIHBvc2l0aXZlWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRl
ckxpc3QoKSkgewotICAgICAgICBzaXplX3QgbGF5ZXJDb3VudCA9IHBvc2l0aXZlWk9yZGVyTGlz
dC0+c2l6ZSgpOworICAgIGF1dG8gcG9zaXRpdmVaT3JkZXJMYXllcnMgPSBsYXllci5wb3NpdGl2
ZVpPcmRlckxheWVycygpOworICAgIGlmIChwb3NpdGl2ZVpPcmRlckxheWVycy5zaXplKCkpIHsK
KyAgICAgICAgc2l6ZV90IGxheWVyQ291bnQgPSBwb3NpdGl2ZVpPcmRlckxheWVycy5zaXplKCk7
CiAKICAgICAgICAgaWYgKGxheWVyQ291bnQpIHsKICAgICAgICAgICAgIGlmIChiZWhhdmlvciAm
IFJlbmRlckFzVGV4dFNob3dMYXllck5lc3RpbmcpIHsKLSAgICAgICAgICAgICAgICB0cyA8PCBp
bmRlbnQgPDwgIiBwb3NpdGl2ZSB6LW9yZGVyIGxpc3QoIiA8PCBwb3NpdGl2ZVpPcmRlckxpc3Qt
PnNpemUoKSA8PCAiKVxuIjsKKyAgICAgICAgICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIiBwb3Np
dGl2ZSB6LW9yZGVyIGxpc3QoIiA8PCBsYXllckNvdW50IDw8ICIpXG4iOwogICAgICAgICAgICAg
ICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZv
ciAoYXV0byogY3VyckxheWVyIDogKnBvc2l0aXZlWk9yZGVyTGlzdCkKKyAgICAgICAgICAgIGZv
ciAoYXV0byogY3VyckxheWVyIDogcG9zaXRpdmVaT3JkZXJMYXllcnMpCiAgICAgICAgICAgICAg
ICAgd3JpdGVMYXllcnModHMsIHJvb3RMYXllciwgKmN1cnJMYXllciwgcGFpbnREaXJ0eVJlY3Qs
IGJlaGF2aW9yKTsKIAogICAgICAgICAgICAgaWYgKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0U2hv
d0xheWVyTmVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlJlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlJlbmRlckxheWVyLmNwcAppbmRl
eCAwYTBjYjE1Mjc3OGZjNTgwMTFlMjljZWZhNDdjMTY0MGI5OWM1N2FjLi4xMzQwOGY1NzVjZjcy
ZWI2ZjIwZmQ5MDZlYzdlNmFjNDA2NGQ3YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJSZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUmVu
ZGVyTGF5ZXIuY3BwCkBAIC02NSwyMCArNjUsNiBAQCBSZWY8V2ViUmVuZGVyTGF5ZXI+IFdlYlJl
bmRlckxheWVyOjpjcmVhdGUoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJlciwgYgog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlbmRlckxheWVyKFdURk1vdmUocmVuZGVyZXIp
LCBpc1JlZmxlY3Rpb24sIGlzQ2xpcHBpbmcsIGlzQ2xpcHBlZCwgdHlwZSwgYWJzb2x1dGVCb3Vu
ZGluZ0JveCwgYmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUsIFdURk1vdmUobmVnYXRpdmVaT3Jk
ZXJMaXN0KSwgV1RGTW92ZShub3JtYWxGbG93TGlzdCksIFdURk1vdmUocG9zaXRpdmVaT3JkZXJM
aXN0KSwgV1RGTW92ZShmcmFtZUNvbnRlbnRzTGF5ZXIpKSk7CiB9CiAKLVJlZlB0cjxBUEk6OkFy
cmF5PiBXZWJSZW5kZXJMYXllcjo6Y3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJD
b3JlOjpSZW5kZXJMYXllcio+KiBsaXN0KQotewotICAgIGlmICghbGlzdCB8fCAhbGlzdC0+c2l6
ZSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpP
YmplY3Q+PiBsYXllcnM7Ci0gICAgbGF5ZXJzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGlzdC0+
c2l6ZSgpKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgbGF5ZXIgOiAqbGlzdCkKLSAgICAgICAg
bGF5ZXJzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZihuZXcgV2ViUmVuZGVyTGF5ZXIobGF5ZXIp
KSk7Ci0KLSAgICByZXR1cm4gQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUobGF5ZXJzKSk7Ci19
Ci0KIFdlYlJlbmRlckxheWVyOjpXZWJSZW5kZXJMYXllcihXZWJDb3JlOjpSZW5kZXJMYXllciog
bGF5ZXIpCiB7CiAgICAgbV9yZW5kZXJlciA9IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKCZsYXll
ci0+cmVuZGVyZXIoKSk7CkBAIC0xMTMsOSArOTksMjIgQEAgV2ViUmVuZGVyTGF5ZXI6OldlYlJl
bmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVyKiBsYXllcikKIAogICAgIG1fYWJzb2x1dGVC
b3VuZGluZ0JveCA9IGxheWVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94KCk7CiAKLSAgICBtX25lZ2F0
aXZlWk9yZGVyTGlzdCA9IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChsYXllci0+bmVnWk9yZGVy
TGlzdCgpKTsKLSAgICBtX25vcm1hbEZsb3dMaXN0ID0gY3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0
KGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKTsKLSAgICBtX3Bvc2l0aXZlWk9yZGVyTGlzdCA9IGNy
ZWF0ZUFycmF5RnJvbUxheWVyTGlzdChsYXllci0+cG9zWk9yZGVyTGlzdCgpKTsKKyAgICBhdXRv
IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdCA9IFtdIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6TGF5
ZXJJdGVyYXRvciBsaXN0KSAtPiBSZWZQdHI8QVBJOjpBcnJheT4geworICAgICAgICBpZiAoIWxp
c3Quc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgVmVjdG9y
PFJlZlB0cjxBUEk6Ok9iamVjdD4+IGxheWVyczsKKyAgICAgICAgbGF5ZXJzLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobGlzdC5zaXplKCkpOworCisgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiBs
aXN0KQorICAgICAgICAgICAgbGF5ZXJzLnVuY2hlY2tlZEFwcGVuZChhZG9wdFJlZihuZXcgV2Vi
UmVuZGVyTGF5ZXIobGF5ZXIpKSk7CisKKyAgICAgICAgcmV0dXJuIEFQSTo6QXJyYXk6OmNyZWF0
ZShXVEZNb3ZlKGxheWVycykpOworICAgIH07CisKKyAgICBtX25lZ2F0aXZlWk9yZGVyTGlzdCA9
IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChsYXllci0+bmVnYXRpdmVaT3JkZXJMYXllcnMoKSk7
CisgICAgbV9ub3JtYWxGbG93TGlzdCA9IGNyZWF0ZUFycmF5RnJvbUxheWVyTGlzdChsYXllci0+
bm9ybWFsRmxvd0xheWVycygpKTsKKyAgICBtX3Bvc2l0aXZlWk9yZGVyTGlzdCA9IGNyZWF0ZUFy
cmF5RnJvbUxheWVyTGlzdChsYXllci0+cG9zaXRpdmVaT3JkZXJMYXllcnMoKSk7CiAKICAgICBp
ZiAoaXM8V2ViQ29yZTo6UmVuZGVyV2lkZ2V0PihsYXllci0+cmVuZGVyZXIoKSkpIHsKICAgICAg
ICAgaWYgKFdlYkNvcmU6OkRvY3VtZW50KiBjb250ZW50RG9jdW1lbnQgPSBkb3duY2FzdDxXZWJD
b3JlOjpSZW5kZXJXaWRnZXQ+KGxheWVyLT5yZW5kZXJlcigpKS5mcmFtZU93bmVyRWxlbWVudCgp
LmNvbnRlbnREb2N1bWVudCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJSZW5kZXJMYXllci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUmVuZGVyTGF5ZXIuaApp
bmRleCA1MTQxNGRmYjQ3YTJlNmYyNTZmMzBkM2Y1YTE1M2I4MTRjNzhhYjMzLi43ZTUwYmE1YWU5
NTM1MGYzOWM4NDVkOTNkODIxMDJiY2UwZWU2ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJSZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlJl
bmRlckxheWVyLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3Qu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIFJlbmRlckxheWVyOworY2xhc3Mg
UmVuZGVyTGF5ZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNjAsOCArNjAsNiBAQCBw
cml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlbmRlckxheWVyKFdlYkNvcmU6OlJlbmRlckxheWVy
Kik7CiAgICAgV2ViUmVuZGVyTGF5ZXIoUmVmUHRyPFdlYlJlbmRlck9iamVjdD4mJiByZW5kZXJl
ciwgYm9vbCBpc1JlZmxlY3Rpb24sIGJvb2wgaXNDbGlwcGluZywgYm9vbCBpc0NsaXBwZWQsIENv
bXBvc2l0aW5nTGF5ZXJUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3gs
IGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgUmVmUHRyPEFQSTo6QXJyYXk+JiYg
bmVnYXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8QVBJOjpBcnJheT4mJiBub3JtYWxGbG93TGlzdCwg
UmVmUHRyPEFQSTo6QXJyYXk+JiYgcG9zaXRpdmVaT3JkZXJMaXN0LCBSZWZQdHI8V2ViUmVuZGVy
TGF5ZXI+JiYgZnJhbWVDb250ZW50c0xheWVyKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8QVBJOjpB
cnJheT4gY3JlYXRlQXJyYXlGcm9tTGF5ZXJMaXN0KFZlY3RvcjxXZWJDb3JlOjpSZW5kZXJMYXll
cio+Kik7Ci0KICAgICBSZWZQdHI8V2ViUmVuZGVyT2JqZWN0PiBtX3JlbmRlcmVyOwogICAgIGJv
b2wgbV9pc1JlZmxlY3Rpb247CiAgICAgYm9vbCBtX2lzQ2xpcHBpbmc7Cg==
</data>
<flag name="review"
          id="369341"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>