<?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>137193</bug_id>
          
          <creation_ts>2014-09-28 04:50:39 -0700</creation_ts>
          <short_desc>[GTK] Move GtkPopupMenu implementation to WebPopupMenuProxyGtk</short_desc>
          <delta_ts>2014-09-30 06:28:20 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1037773</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-28 04:50:39 -0700</bug_when>
    <thetext>This class was in platform only to have a common implementation to be shared with WebKit1. Now that it&apos;s only used by WebPopupMenuProxyGtk in WebKit2, we can simplify the code by merging the implementation directly into WebPopupMenuProxyGtk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037774</commentid>
    <comment_count>1</comment_count>
      <attachid>238812</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-28 04:53:42 -0700</bug_when>
    <thetext>Created attachment 238812
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1037775</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-28 04:55:23 -0700</bug_when>
    <thetext>Attachment 238812 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/gtk/WebPopupMenuProxyGtk.cpp:134:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038196</commentid>
    <comment_count>3</comment_count>
      <attachid>238812</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2014-09-30 05:44:06 -0700</bug_when>
    <thetext>Comment on attachment 238812
Patch

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

LGTM with one question:

&gt; Source/WebKit2/UIProcess/gtk/WebPopupMenuProxyGtk.cpp:-69
&gt; -        m_popup-&gt;clear();

Is clearing the menu no longer necessary? I couldn&apos;t figure out what change makes this not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038199</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-30 05:50:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 238812 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=238812&amp;action=review
&gt; 
&gt; LGTM with one question:
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/gtk/WebPopupMenuProxyGtk.cpp:-69
&gt; &gt; -        m_popup-&gt;clear();
&gt; 
&gt; Is clearing the menu no longer necessary? I couldn&apos;t figure out what change makes this not needed.

Yes, I&apos;m not sure if that was there because WebKit1 worked differently, but in WebKit2, the same WebPopupMenuProxy can&apos;t be populated twice, the page proxy always creates a new WebPopupMenuProxy when it receives the ShowPopupMenu message and if there was an active one already, it&apos;s destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038205</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-30 06:28:20 -0700</bug_when>
    <thetext>Committed r174103: &lt;http://trac.webkit.org/changeset/174103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238812</attachid>
            <date>2014-09-28 04:53:42 -0700</date>
            <delta_ts>2014-09-30 05:44:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-popup-menu.diff</filename>
            <type>text/plain</type>
            <size>27514</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMmRiMDE1Li4xNDNmMGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTgg
QEAKIDIwMTQtMDktMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1vdmUgR3RrUG9wdXBNZW51IGltcGxlbWVudGF0aW9uIHRvIFdl
YlBvcHVwTWVudVByb3h5R3RrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzcxOTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgR3RrUG9wdXBNZW51IGZyb20gcGxhdGZvcm0uCisKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51Lmg6IFJl
bW92ZWQuCisKKzIwMTQtMDktMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQuIE1vdmUgUmVuZGVyVGhlbWVHdGsuaCBmcm9t
IHBsYXRmb3JtL2d0ayB0byByZW5kZXJpbmcuCiAKICAgICAgICAgSSBmb3Jnb3QgdG8gbW92ZSB0
aGlzIGZpbGUgaW4gcjE3MzExMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMGUzZTNl
Zi4uNzdkNTBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIyMSw3ICsyMjEsNiBA
QCBsaXN0KEFQUEVORCBXZWJDb3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL2d0
ay9HdGtDbGlja0NvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVs
cGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZpbHRlci5jcHAKLSAgICBw
bGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtUb3VjaENv
bnRleHRIZWxwZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAKICAgICBw
bGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtQb3B1cE1lbnUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDAzMGU5
Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1cE1lbnUu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8qCi0gKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgcG9wdXAgbWVudSBpbXBsZW1lbnRhdGlvbiBmb3IgPHNlbGVjdD4gZWxlbWVu
dHMgaW4gV2ViQ29yZS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IE1pY2hh
ZWwgRW1tZWwgbWlrZS5lbW1lbEBnbWFpbC5jb20KLSAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xs
YWJvcmEgTHRkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIElnYWxp
YSBTLkwuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgot
ICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR3RrUG9wdXBNZW51Lmgi
Ci0KLSNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2lu
Y2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNvbnN0IHVpbnQzMl90IGdT
ZWFyY2hUaW1lb3V0TXMgPSAxMDAwOwotCi1HdGtQb3B1cE1lbnU6Okd0a1BvcHVwTWVudSgpCi0g
ICAgOiBtX3BvcHVwKGd0a19tZW51X25ldygpKQotICAgICwgbV9wcmV2aW91c0tleUV2ZW50Q2hh
cmFjdGVyKDApCi0gICAgLCBtX2N1cnJlbnRseVNlbGVjdGVkTWVudUl0ZW0oMCkKLXsKLSAgICBt
X2tleVByZXNzSGFuZGxlcklEID0gZ19zaWduYWxfY29ubmVjdChtX3BvcHVwLmdldCgpLCAia2V5
LXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyhHdGtQb3B1cE1lbnU6OmtleVByZXNzRXZlbnRDYWxs
YmFjayksIHRoaXMpOwotfQotCi1HdGtQb3B1cE1lbnU6On5HdGtQb3B1cE1lbnUoKQotewotICAg
IGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3BvcHVwLmdldCgpLCBtX2tleVByZXNzSGFu
ZGxlcklEKTsKLX0KLQotdm9pZCBHdGtQb3B1cE1lbnU6OmNsZWFyKCkKLXsKLSAgICBndGtfY29u
dGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUihtX3BvcHVwLmdldCgpKSwgcmVpbnRlcnByZXRf
Y2FzdDxHdGtDYWxsYmFjaz4obWVudVJlbW92ZUl0ZW0pLCB0aGlzKTsKLX0KLQotdm9pZCBHdGtQ
b3B1cE1lbnU6OmFwcGVuZFNlcGFyYXRvcigpCi17Ci0gICAgR3RrV2lkZ2V0KiBtZW51SXRlbSA9
IGd0a19zZXBhcmF0b3JfbWVudV9pdGVtX25ldygpOwotICAgIGd0a19tZW51X3NoZWxsX2FwcGVu
ZChHVEtfTUVOVV9TSEVMTChtX3BvcHVwLmdldCgpKSwgbWVudUl0ZW0pOwotICAgIGd0a193aWRn
ZXRfc2hvdyhtZW51SXRlbSk7Ci19Ci0KLXZvaWQgR3RrUG9wdXBNZW51OjphcHBlbmRJdGVtKEd0
a0FjdGlvbiogYWN0aW9uKQotewotICAgIEd0a1dpZGdldCogbWVudUl0ZW0gPSBndGtfYWN0aW9u
X2NyZWF0ZV9tZW51X2l0ZW0oYWN0aW9uKTsKLSAgICBndGtfd2lkZ2V0X3NldF90b29sdGlwX3Rl
eHQobWVudUl0ZW0sIGd0a19hY3Rpb25fZ2V0X3Rvb2x0aXAoYWN0aW9uKSk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtZW51SXRlbSwgInNlbGVjdCIsIEdfQ0FMTEJBQ0soR3RrUG9wdXBNZW51Ojpz
ZWxlY3RJdGVtQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBndGtfbWVudV9zaGVsbF9hcHBlbmQoR1RL
X01FTlVfU0hFTEwobV9wb3B1cC5nZXQoKSksIG1lbnVJdGVtKTsKLQotICAgIGlmIChndGtfYWN0
aW9uX2lzX3Zpc2libGUoYWN0aW9uKSkKLSAgICAgICAgZ3RrX3dpZGdldF9zaG93KG1lbnVJdGVt
KTsKLX0KLQotdm9pZCBHdGtQb3B1cE1lbnU6OnBvcFVwKGNvbnN0IEludFNpemUmIG1lbnVTaXpl
LCBjb25zdCBJbnRQb2ludCYgbWVudVBvc2l0aW9uLCBpbnQgaXRlbUNvdW50LCBpbnQgc2VsZWN0
ZWRJdGVtLCBjb25zdCBHZGtFdmVudCogZXZlbnQpCi17Ci0gICAgcmVzZXRUeXBlQWhlYWRGaW5k
U3RhdGUoKTsKLSAgICBtX21lbnVQb3NpdGlvbiA9IG1lbnVQb3NpdGlvbjsKLSAgICBndGtfbWVu
dV9zZXRfYWN0aXZlKEdUS19NRU5VKG1fcG9wdXAuZ2V0KCkpLCBzZWxlY3RlZEl0ZW0pOwotCi0g
ICAgLy8gVGhpcyBhcHByb2FjaCBmb2xsb3dzIHRoZSBvbmUgaW4gZ3RrY29tYm9ib3guYy4KLSAg
ICBHdGtSZXF1aXNpdGlvbiByZXF1aXNpdGlvbjsKLSAgICBndGtfd2lkZ2V0X3NldF9zaXplX3Jl
cXVlc3QobV9wb3B1cC5nZXQoKSwgLTEsIC0xKTsKLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgot
ICAgIGd0a193aWRnZXRfc2l6ZV9yZXF1ZXN0KG1fcG9wdXAuZ2V0KCksICZyZXF1aXNpdGlvbik7
Ci0jZWxzZQotICAgIGd0a193aWRnZXRfZ2V0X3ByZWZlcnJlZF9zaXplKG1fcG9wdXAuZ2V0KCks
ICZyZXF1aXNpdGlvbiwgMCk7Ci0jZW5kaWYKLSAgICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVl
c3QobV9wb3B1cC5nZXQoKSwgc3RkOjptYXgobWVudVNpemUud2lkdGgoKSwgcmVxdWlzaXRpb24u
d2lkdGgpLCAtMSk7Ci0KLSAgICBpZiAoaXRlbUNvdW50KSB7Ci0gICAgICAgIEdVbmlxdWVQdHI8
R0xpc3Q+IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIo
bV9wb3B1cC5nZXQoKSkpKTsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIEdMaXN0KiBjaGlsZDsK
LSAgICAgICAgZm9yIChpID0gMCwgY2hpbGQgPSBjaGlsZHJlbi5nZXQoKTsgaSA8IGl0ZW1Db3Vu
dDsgaSsrLCBjaGlsZCA9IGdfbGlzdF9uZXh0KGNoaWxkKSkgewotICAgICAgICAgICAgaWYgKGkg
PiBzZWxlY3RlZEl0ZW0pCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIEd0
a1dpZGdldCogaXRlbSA9IEdUS19XSURHRVQoY2hpbGQtPmRhdGEpOwotICAgICAgICAgICAgR3Rr
UmVxdWlzaXRpb24gaXRlbVJlcXVpc2l0aW9uOwotI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0g
ICAgICAgICAgICBndGtfd2lkZ2V0X2dldF9jaGlsZF9yZXF1aXNpdGlvbihpdGVtLCAmaXRlbVJl
cXVpc2l0aW9uKTsKLSNlbHNlCi0gICAgICAgICAgICBndGtfd2lkZ2V0X2dldF9wcmVmZXJyZWRf
c2l6ZShpdGVtLCAmaXRlbVJlcXVpc2l0aW9uLCAwKTsKLSNlbmRpZgotICAgICAgICAgICAgbV9t
ZW51UG9zaXRpb24uc2V0WShtX21lbnVQb3NpdGlvbi55KCkgLSBpdGVtUmVxdWlzaXRpb24uaGVp
Z2h0KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENlbnRlciB2ZXJ0aWNh
bGx5IHRoZSBlbXB0eSBwb3B1cCBpbiB0aGUgY29tYm8gYm94IGFyZWEuCi0gICAgICAgIG1fbWVu
dVBvc2l0aW9uLnNldFkobV9tZW51UG9zaXRpb24ueSgpIC0gbWVudVNpemUuaGVpZ2h0KCkgLyAy
KTsKLSAgICB9Ci0KLSAgICBndWludCBidXR0b24gPSBldmVudCAmJiBldmVudC0+dHlwZSA9PSBH
REtfQlVUVE9OX1BSRVNTID8gZXZlbnQtPmJ1dHRvbi5idXR0b24gOiAxOwotICAgIGd1aW50MzIg
YWN0aXZhdGVUaW1lID0gZXZlbnQgPyBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpIDogR0RLX0NV
UlJFTlRfVElNRTsKLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGd0a19tZW51X3BvcHVw
KEdUS19NRU5VKG1fcG9wdXAuZ2V0KCkpLCAwLCAwLCByZWludGVycHJldF9jYXN0PEd0a01lbnVQ
b3NpdGlvbkZ1bmM+KG1lbnVQb3NpdGlvbkZ1bmN0aW9uKSwgdGhpcywgYnV0dG9uLCBhY3RpdmF0
ZVRpbWUpOwotI2Vsc2UKLSAgICBndGtfbWVudV9wb3B1cF9mb3JfZGV2aWNlKEdUS19NRU5VKG1f
cG9wdXAuZ2V0KCkpLCBldmVudCA/IGdka19ldmVudF9nZXRfZGV2aWNlKGV2ZW50KSA6IDAsIDAs
IDAsCi0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R3RrTWVudVBvc2l0aW9uRnVuYz4obWVudVBv
c2l0aW9uRnVuY3Rpb24pLCB0aGlzLCAwLCBidXR0b24sIGFjdGl2YXRlVGltZSk7Ci0jZW5kaWYK
LQotICAgIC8vIE5vdyB0aGF0IHRoZSBtZW51IGhhcyBhIHBvc2l0aW9uLCBzY2hlZHVsZSBhIHJl
c2l6ZSB0byBtYWtlIHN1cmUgaXQncyByZXNpemVkIHRvIGZpdCB2ZXJ0aWNhbGx5IGluIHRoZSB3
b3JrIGFyZWEuCi0gICAgZ3RrX3dpZGdldF9xdWV1ZV9yZXNpemUobV9wb3B1cC5nZXQoKSk7Ci19
Ci0KLXZvaWQgR3RrUG9wdXBNZW51Ojpwb3BEb3duKCkKLXsKLSAgICBndGtfbWVudV9wb3Bkb3du
KEdUS19NRU5VKG1fcG9wdXAuZ2V0KCkpKTsKLSAgICByZXNldFR5cGVBaGVhZEZpbmRTdGF0ZSgp
OwotfQotCi12b2lkIEd0a1BvcHVwTWVudTo6bWVudVJlbW92ZUl0ZW0oR3RrV2lkZ2V0KiB3aWRn
ZXQsIEd0a1BvcHVwTWVudSogcG9wdXBNZW51KQotewotICAgIEFTU0VSVChwb3B1cE1lbnUtPm1f
cG9wdXApOwotICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIocG9wdXBNZW51
LT5tX3BvcHVwLmdldCgpKSwgd2lkZ2V0KTsKLX0KLQotdm9pZCBHdGtQb3B1cE1lbnU6Om1lbnVQ
b3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50KiB4LCBnaW50KiB5LCBnYm9vbGVhbiogcHVz
aEluLCBHdGtQb3B1cE1lbnUqIHBvcHVwTWVudSkKLXsKLSAgICAqeCA9IHBvcHVwTWVudS0+bV9t
ZW51UG9zaXRpb24ueCgpOwotICAgICp5ID0gcG9wdXBNZW51LT5tX21lbnVQb3NpdGlvbi55KCk7
Ci0gICAgKnB1c2hJbiA9IHRydWU7Ci19Ci0KLXZvaWQgR3RrUG9wdXBNZW51OjpyZXNldFR5cGVB
aGVhZEZpbmRTdGF0ZSgpCi17Ci0gICAgbV9jdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtID0gMDsK
LSAgICBtX3ByZXZpb3VzS2V5RXZlbnRDaGFyYWN0ZXIgPSAwOwotICAgIG1fY3VycmVudFNlYXJj
aFN0cmluZyA9ICIiOwotfQotCi1ib29sIEd0a1BvcHVwTWVudTo6dHlwZUFoZWFkRmluZChHZGtF
dmVudEtleSogZXZlbnQpCi17Ci0gICAgLy8gSWYgd2Ugd2VyZSBnaXZlbiBhIG5vbi1wcmludGFi
bGUgY2hhcmFjdGVyIGp1c3Qgc2tpcCBpdC4KLSAgICBndW5pY2hhciB1bmljb2RlQ2hhcmFjdGVy
ID0gZ2RrX2tleXZhbF90b191bmljb2RlKGV2ZW50LT5rZXl2YWwpOwotICAgIGlmICghZ191bmlj
aGFyX2lzcHJpbnQodW5pY29kZUNoYXJhY3RlcikpIHsKLSAgICAgICAgcmVzZXRUeXBlQWhlYWRG
aW5kU3RhdGUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGdsb25nIGNo
YXJhY3RlcnNXcml0dGVuOwotICAgIEdVbmlxdWVQdHI8Z3VuaWNoYXIyPiB1dGYxNlN0cmluZyhn
X3VjczRfdG9fdXRmMTYoJnVuaWNvZGVDaGFyYWN0ZXIsIDEsIDAsICZjaGFyYWN0ZXJzV3JpdHRl
biwgMCkpOwotICAgIGlmICghdXRmMTZTdHJpbmcpIHsKLSAgICAgICAgcmVzZXRUeXBlQWhlYWRG
aW5kU3RhdGUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8vIElmIHRo
ZSBjaGFyYWN0ZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGxhc3QgY2hhcmFjdGVyLCB0aGUgdXNlciBp
cyBwcm9iYWJseSB0cnlpbmcgdG8KLSAgICAvLyBjeWNsZSB0aHJvdWdoIHRoZSBtZW51bGlzdCBl
bnRyaWVzLiBUaGlzIG1hdGNoZXMgdGhlIFdlYkNvcmUgYmVoYXZpb3IgZm9yIGNvbGxhcHNlZAot
ICAgIC8vIG1lbnVsaXN0cy4KLSAgICBib29sIHJlcGVhdGluZ0NoYXJhY3RlciA9IHVuaWNvZGVD
aGFyYWN0ZXIgIT0gbV9wcmV2aW91c0tleUV2ZW50Q2hhcmFjdGVyOwotICAgIGlmIChldmVudC0+
dGltZSAtIG1fcHJldmlvdXNLZXlFdmVudFRpbWVzdGFtcCA+IGdTZWFyY2hUaW1lb3V0TXMpCi0g
ICAgICAgIG1fY3VycmVudFNlYXJjaFN0cmluZyA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PFVD
aGFyKj4odXRmMTZTdHJpbmcuZ2V0KCkpLCBjaGFyYWN0ZXJzV3JpdHRlbik7Ci0gICAgZWxzZSBp
ZiAocmVwZWF0aW5nQ2hhcmFjdGVyKQotICAgICAgICBtX2N1cnJlbnRTZWFyY2hTdHJpbmcuYXBw
ZW5kKFN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4odXRmMTZTdHJpbmcuZ2V0KCkpLCBj
aGFyYWN0ZXJzV3JpdHRlbikpOwotCi0gICAgbV9wcmV2aW91c0tleUV2ZW50VGltZXN0YW1wID0g
ZXZlbnQtPnRpbWU7Ci0gICAgbV9wcmV2aW91c0tleUV2ZW50Q2hhcmFjdGVyID0gdW5pY29kZUNo
YXJhY3RlcjsKLQotICAgIC8vIExpa2UgdGhlIENocm9taXVtIHBvcnQsIHdlIGNhc2UgZm9sZCBi
ZWZvcmUgc2VhcmNoaW5nLCBiZWNhdXNlIAotICAgIC8vIHN0cm5jbXAgZG9lcyBub3QgaGFuZGxl
IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNlYXJjaFN0cmlu
Z1dpdGhDYXNlRm9sZGVkKGdfdXRmOF9jYXNlZm9sZChtX2N1cnJlbnRTZWFyY2hTdHJpbmcudXRm
OCgpLmRhdGEoKSwgLTEpKTsKLSAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVuKHNlYXJj
aFN0cmluZ1dpdGhDYXNlRm9sZGVkLmdldCgpKTsKLQotICAgIEdMaXN0KiBjaGlsZHJlbiA9IGd0
a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobV9wb3B1cC5nZXQoKSkpOwot
ICAgIGlmICghY2hpbGRyZW4pCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gSWYgYSBt
ZW51IGl0ZW0gaGFzIGFscmVhZHkgYmVlbiBzZWxlY3RlZCwgc3RhcnQgc2VhcmNoaW5nIGZyb20g
dGhlIGN1cnJlbnQKLSAgICAvLyBpdGVtIGRvd24gdGhlIGxpc3QuIFRoaXMgd2lsbCBtYWtlIG11
bHRpcGxlIGtleSBwcmVzc2VzIG9mIHRoZSBzYW1lIGNoYXJhY3RlcgotICAgIC8vIGFkdmFuY2Ug
dGhlIHNlbGVjdGlvbi4KLSAgICBHTGlzdCogY3VycmVudENoaWxkID0gY2hpbGRyZW47Ci0gICAg
aWYgKG1fY3VycmVudGx5U2VsZWN0ZWRNZW51SXRlbSkgewotICAgICAgICBjdXJyZW50Q2hpbGQg
PSBnX2xpc3RfZmluZChjaGlsZHJlbiwgbV9jdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtKTsKLSAg
ICAgICAgaWYgKCFjdXJyZW50Q2hpbGQpIHsKLSAgICAgICAgICAgIG1fY3VycmVudGx5U2VsZWN0
ZWRNZW51SXRlbSA9IDA7Ci0gICAgICAgICAgICBjdXJyZW50Q2hpbGQgPSBjaGlsZHJlbjsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIFJlcGVhdGluZyBjaGFyYWN0ZXJzIHNob3VsZCBpdGVyYXRl
LgotICAgICAgICBpZiAocmVwZWF0aW5nQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBpZiAoR0xp
c3QqIG5leHRDaGlsZCA9IGdfbGlzdF9uZXh0KGN1cnJlbnRDaGlsZCkpCi0gICAgICAgICAgICAg
ICAgY3VycmVudENoaWxkID0gbmV4dENoaWxkOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgR0xp
c3QqIGZpcnN0Q2hpbGQgPSBjdXJyZW50Q2hpbGQ7Ci0gICAgZG8gewotICAgICAgICBjdXJyZW50
Q2hpbGQgPSBnX2xpc3RfbmV4dChjdXJyZW50Q2hpbGQpOwotICAgICAgICBpZiAoIWN1cnJlbnRD
aGlsZCkKLSAgICAgICAgICAgIGN1cnJlbnRDaGlsZCA9IGNoaWxkcmVuOwotCi0gICAgICAgIEdV
bmlxdWVQdHI8Z2NoYXI+IGl0ZW1UZXh0KGdfdXRmOF9jYXNlZm9sZChndGtfbWVudV9pdGVtX2dl
dF9sYWJlbChHVEtfTUVOVV9JVEVNKGN1cnJlbnRDaGlsZC0+ZGF0YSkpLCAtMSkpOwotICAgICAg
ICBpZiAoIXN0cm5jbXAoc2VhcmNoU3RyaW5nV2l0aENhc2VGb2xkZWQuZ2V0KCksIGl0ZW1UZXh0
LmdldCgpLCBwcmVmaXhMZW5ndGgpKSB7Ci0gICAgICAgICAgICBndGtfbWVudV9zaGVsbF9zZWxl
Y3RfaXRlbShHVEtfTUVOVV9TSEVMTChtX3BvcHVwLmdldCgpKSwgR1RLX1dJREdFVChjdXJyZW50
Q2hpbGQtPmRhdGEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSB3aGls
ZSAoY3VycmVudENoaWxkICE9IGZpcnN0Q2hpbGQpOwotCi0gICAgZ19saXN0X2ZyZWUoY2hpbGRy
ZW4pOwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEd0a1BvcHVwTWVudTo6c2VsZWN0SXRl
bUNhbGxiYWNrKEd0a01lbnVJdGVtKiBpdGVtLCBHdGtQb3B1cE1lbnUqIHBvcHVwTWVudSkKLXsK
LSAgICBwb3B1cE1lbnUtPm1fY3VycmVudGx5U2VsZWN0ZWRNZW51SXRlbSA9IEdUS19XSURHRVQo
aXRlbSk7Ci19Ci0KLWdib29sZWFuIEd0a1BvcHVwTWVudTo6a2V5UHJlc3NFdmVudENhbGxiYWNr
KEd0a1dpZGdldCosIEdka0V2ZW50S2V5KiBldmVudCwgR3RrUG9wdXBNZW51KiBwb3B1cE1lbnUp
Ci17Ci0gICAgcmV0dXJuIHBvcHVwTWVudS0+dHlwZUFoZWFkRmluZChldmVudCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQb3B1
cE1lbnUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmNWRiNy4uMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUG9wdXBNZW51LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KLSAqIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEd0a1BvcHVwTWVudV9oCi0jZGVmaW5lIEd0a1BvcHVw
TWVudV9oCi0KLSNpbmNsdWRlICJHUmVmUHRyR3RrLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIK
LSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLSNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi10eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRL
ZXkgR2RrRXZlbnRLZXk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR3RrUG9wdXBN
ZW51IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHdGtQb3B1cE1lbnUpOwotICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotCi1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8R3Rr
UG9wdXBNZW51PiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBH
dGtQb3B1cE1lbnUoKSk7Ci0gICAgfQotCi0gICAgfkd0a1BvcHVwTWVudSgpOwotCi0gICAgR3Rr
V2lkZ2V0KiBwbGF0Zm9ybU1lbnUoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwLmdldCgpOyB9Ci0g
ICAgdm9pZCBjbGVhcigpOwotICAgIHZvaWQgYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgdm9pZCBh
cHBlbmRJdGVtKEd0a0FjdGlvbiopOwotICAgIHZvaWQgcG9wVXAoY29uc3QgSW50U2l6ZSYsIGNv
bnN0IEludFBvaW50JiwgaW50IGl0ZW1zQ291bnQsIGludCBzZWxlY3RlZEl0ZW0sIGNvbnN0IEdk
a0V2ZW50Kik7Ci0gICAgdm9pZCBwb3BEb3duKCk7Ci0KLXByaXZhdGU6Ci0gICAgR3RrUG9wdXBN
ZW51KCk7Ci0KLSAgICB2b2lkIHJlc2V0VHlwZUFoZWFkRmluZFN0YXRlKCk7Ci0gICAgYm9vbCB0
eXBlQWhlYWRGaW5kKEdka0V2ZW50S2V5Kik7Ci0KLSAgICBzdGF0aWMgdm9pZCBtZW51SXRlbUFj
dGl2YXRlZChHdGtNZW51SXRlbSosIEd0a1BvcHVwTWVudSopOwotICAgIHN0YXRpYyB2b2lkIG1l
bnVQb3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50KiwgZ2ludCosIGdib29sZWFuKiwgR3Rr
UG9wdXBNZW51Kik7Ci0gICAgc3RhdGljIHZvaWQgbWVudVJlbW92ZUl0ZW0oR3RrV2lkZ2V0Kiwg
R3RrUG9wdXBNZW51Kik7Ci0gICAgc3RhdGljIHZvaWQgc2VsZWN0SXRlbUNhbGxiYWNrKEd0a01l
bnVJdGVtKiwgR3RrUG9wdXBNZW51Kik7Ci0gICAgc3RhdGljIGdib29sZWFuIGtleVByZXNzRXZl
bnRDYWxsYmFjayhHdGtXaWRnZXQqLCBHZGtFdmVudEtleSosIEd0a1BvcHVwTWVudSopOwotCi0g
ICAgR1JlZlB0cjxHdGtXaWRnZXQ+IG1fcG9wdXA7Ci0gICAgSW50UG9pbnQgbV9tZW51UG9zaXRp
b247Ci0gICAgU3RyaW5nIG1fY3VycmVudFNlYXJjaFN0cmluZzsKLSAgICB1aW50MzJfdCBtX3By
ZXZpb3VzS2V5RXZlbnRUaW1lc3RhbXA7Ci0gICAgdW5zaWduZWQgaW50IG1fcHJldmlvdXNLZXlF
dmVudENoYXJhY3RlcjsKLSAgICBHdGtXaWRnZXQqIG1fY3VycmVudGx5U2VsZWN0ZWRNZW51SXRl
bTsKLSAgICB1bnNpZ25lZCBpbnQgbV9rZXlQcmVzc0hhbmRsZXJJRDsKLX07Ci0KLX0KLQotI2Vu
ZGlmIC8vIEd0a1BvcHVwTWVudV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDUwYWU0Zi4uN2IyYTEyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE0LTA5LTI4ICBDYXJsb3MgR2FyY2lhIENhbXBv
cyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBNb3ZlIEd0a1BvcHVwTWVu
dSBpbXBsZW1lbnRhdGlvbiB0byBXZWJQb3B1cE1lbnVQcm94eUd0aworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MTkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR3RrUG9wdXBNZW51IHdhcyBpbiBwbGF0
Zm9ybSBvbmx5IHRvIGhhdmUgYSBjb21tb24gaW1wbGVtZW50YXRpb24gdG8KKyAgICAgICAgYmUg
c2hhcmVkIHdpdGggV2ViS2l0MS4gTm93IHRoYXQgaXQncyBvbmx5IHVzZWQgYnkKKyAgICAgICAg
V2ViUG9wdXBNZW51UHJveHlHdGsgaW4gV2ViS2l0Miwgd2UgY2FuIHNpbXBsaWZ5IHRoZSBjb2Rl
IGJ5CisgICAgICAgIG1lcmdpbmcgdGhlIGltcGxlbWVudGF0aW9uIGRpcmVjdGx5IGludG8gV2Vi
UG9wdXBNZW51UHJveHlHdGsuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVu
dVByb3h5R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlHdGs6Oldl
YlBvcHVwTWVudVByb3h5R3RrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlH
dGs6On5XZWJQb3B1cE1lbnVQcm94eUd0ayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5R3RrOjpwb3B1bGF0ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVw
TWVudVByb3h5R3RrOjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51UHJveHlHdGs6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnVQcm94eUd0azo6dHlwZUFoZWFkRmluZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5R3RrOjpyZXNldFR5cGVBaGVhZEZpbmRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5R3RrOjpzZWxlY3RJdGVtQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eUd0azo6a2V5UHJlc3NFdmVudENhbGxiYWNrKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwTWVudVByb3h5R3RrOjpzZXRDdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtKToKKwor
MjAxNC0wOS0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
ICAgICAgICAgUkVHUkVTU0lPTihyMTcyOTE5KTogV2ViS2l0UGx1Z2luUHJvY2VzcyBmYWlscyB0
byBzY2FuIEdUSysyIHBsdWdpbnMgYWZ0ZXIgcjE3MjkxOS4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzE5MQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBvcHVwTWVudVByb3h5R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCmluZGV4IDM2MmVl
N2UuLmNjZTlmMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2Vi
UG9wdXBNZW51UHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUG9wdXBNZW51UHJveHlHdGsuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTmF0
aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAj
aW5jbHVkZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dVbmlxdWVQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00MCwxNSArNDEsMjEgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiBXZWJQb3B1cE1lbnVQcm94eUd0azo6V2ViUG9wdXBNZW51UHJveHlHdGso
R3RrV2lkZ2V0KiB3ZWJWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCiAg
ICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCiAgICAgLCBtX3dlYlZpZXcod2ViVmlldykK
KyAgICAsIG1fcG9wdXAoZ3RrX21lbnVfbmV3KCkpCiAgICAgLCBtX2FjdGl2ZUl0ZW0oLTEpCisg
ICAgLCBtX3ByZXZpb3VzS2V5RXZlbnRDaGFyYWN0ZXIoMCkKKyAgICAsIG1fcHJldmlvdXNLZXlF
dmVudFRpbWVzdGFtcCgwKQorICAgICwgbV9jdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtKG51bGxw
dHIpCiB7CisgICAgZ19zaWduYWxfY29ubmVjdChtX3BvcHVwLCAia2V5LXByZXNzLWV2ZW50Iiwg
R19DQUxMQkFDSyhrZXlQcmVzc0V2ZW50Q2FsbGJhY2spLCB0aGlzKTsKIH0KIAogV2ViUG9wdXBN
ZW51UHJveHlHdGs6On5XZWJQb3B1cE1lbnVQcm94eUd0aygpCiB7CiAgICAgaWYgKG1fcG9wdXAp
IHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fcG9wdXAt
PnBsYXRmb3JtTWVudSgpLCBHX1NJR05BTF9NQVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsK
KyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fcG9wdXAsIEdf
U0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOwogICAgICAgICBoaWRlUG9wdXBN
ZW51KCk7CisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX3BvcHVwKTsKICAgICB9CiB9CiAK
QEAgLTYzLDM5ICs3MCw4OSBAQCBHdGtBY3Rpb24qIFdlYlBvcHVwTWVudVByb3h5R3RrOjpjcmVh
dGVHdGtBY3Rpb25Gb3JNZW51SXRlbShjb25zdCBXZWJQb3B1cEl0ZW0mCiAgICAgcmV0dXJuIGFj
dGlvbjsKIH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2hvd1BvcHVwTWVudShjb25z
dCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uLCBkb3VibGUgLyogcGFnZVNjYWxlRmFjdG9y
ICovLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJv
eHlHdGs6OnBvcHVsYXRlUG9wdXBNZW51KGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVt
cykKIHsKLSAgICBpZiAobV9wb3B1cCkKLSAgICAgICAgbV9wb3B1cC0+Y2xlYXIoKTsKLSAgICBl
bHNlCi0gICAgICAgIG1fcG9wdXAgPSBHdGtQb3B1cE1lbnU6OmNyZWF0ZSgpOwotCi0gICAgY29u
c3QgaW50IHNpemUgPSBpdGVtcy5zaXplKCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXpl
OyBpKyspIHsKLSAgICAgICAgaWYgKGl0ZW1zW2ldLm1fdHlwZSA9PSBXZWJQb3B1cEl0ZW06OlNl
cGFyYXRvcikKLSAgICAgICAgICAgIG1fcG9wdXAtPmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIEdSZWZQdHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9wdEdS
ZWYoY3JlYXRlR3RrQWN0aW9uRm9yTWVudUl0ZW0oaXRlbXNbaV0sIGkpKTsKLSAgICAgICAgICAg
IG1fcG9wdXAtPmFwcGVuZEl0ZW0oYWN0aW9uLmdldCgpKTsKKyAgICBpbnQgaXRlbUluZGV4ID0g
MDsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoaXRl
bS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpIHsKKyAgICAgICAgICAgIEd0a1dp
ZGdldCogbWVudUl0ZW0gPSBndGtfc2VwYXJhdG9yX21lbnVfaXRlbV9uZXcoKTsKKyAgICAgICAg
ICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChtX3BvcHVwKSwgbWVudUl0
ZW0pOworICAgICAgICAgICAgZ3RrX3dpZGdldF9zaG93KG1lbnVJdGVtKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIEdSZWZQdHI8R3RrQWN0aW9uPiBhY3Rpb24gPSBhZG9wdEdSZWYo
Y3JlYXRlR3RrQWN0aW9uRm9yTWVudUl0ZW0oaXRlbSwgaXRlbUluZGV4KSk7CisgICAgICAgICAg
ICBHdGtXaWRnZXQqIG1lbnVJdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfbWVudV9pdGVtKGFjdGlv
bi5nZXQoKSk7CisgICAgICAgICAgICBndGtfd2lkZ2V0X3NldF90b29sdGlwX3RleHQobWVudUl0
ZW0sIGd0a19hY3Rpb25fZ2V0X3Rvb2x0aXAoYWN0aW9uLmdldCgpKSk7CisgICAgICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KG1lbnVJdGVtLCAic2VsZWN0IiwgR19DQUxMQkFDSyhzZWxlY3RJdGVt
Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtf
TUVOVV9TSEVMTChtX3BvcHVwKSwgbWVudUl0ZW0pOworCisgICAgICAgICAgICBpZiAoZ3RrX2Fj
dGlvbl9pc192aXNpYmxlKGFjdGlvbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgZ3RrX3dpZGdl
dF9zaG93KG1lbnVJdGVtKTsKICAgICAgICAgfQorICAgICAgICBpdGVtSW5kZXgrKzsKICAgICB9
Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlHdGs6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50
UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlvbiwgZG91YmxlIC8qIHBhZ2VTY2FsZUZhY3RvciAqLywg
Y29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgcG9wdWxhdGVQb3B1cE1lbnUo
aXRlbXMpOworICAgIGd0a19tZW51X3NldF9hY3RpdmUoR1RLX01FTlUobV9wb3B1cCksIHNlbGVj
dGVkSW5kZXgpOworCisgICAgcmVzZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKKwogCiAgICAgSW50
UG9pbnQgbWVudVBvc2l0aW9uID0gY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3dl
YlZpZXcsIHJlY3QubG9jYXRpb24oKSk7CiAgICAgbWVudVBvc2l0aW9uLm1vdmUoMCwgcmVjdC5o
ZWlnaHQoKSk7CiAKLSAgICBndWxvbmcgdW5tYXBIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdCht
X3BvcHVwLT5wbGF0Zm9ybU1lbnUoKSwgInVubWFwIiwgR19DQUxMQkFDSyhtZW51VW5tYXBwZWQp
LCB0aGlzKTsKLSAgICBtX3BvcHVwLT5wb3BVcChyZWN0LnNpemUoKSwgbWVudVBvc2l0aW9uLCBz
aXplLCBzZWxlY3RlZEluZGV4LCBtX2NsaWVudC0+Y3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3du
RXZlbnQoKSA/IG1fY2xpZW50LT5jdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpLT5u
YXRpdmVFdmVudCgpIDogMCk7CisgICAgLy8gVGhpcyBhcHByb2FjaCBmb2xsb3dzIHRoZSBvbmUg
aW4gZ3RrY29tYm9ib3guYy4KKyAgICBHdGtSZXF1aXNpdGlvbiByZXF1aXNpdGlvbjsKKyAgICBn
dGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QobV9wb3B1cCwgLTEsIC0xKTsKKyAgICBndGtfd2lk
Z2V0X2dldF9wcmVmZXJyZWRfc2l6ZShtX3BvcHVwLCAmcmVxdWlzaXRpb24sIG51bGxwdHIpOwor
ICAgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdChtX3BvcHVwLCBzdGQ6Om1heChyZWN0Lndp
ZHRoKCksIHJlcXVpc2l0aW9uLndpZHRoKSwgLTEpOworCisgICAgaWYgKGludCBpdGVtQ291bnQg
PSBpdGVtcy5zaXplKCkpIHsKKyAgICAgICAgR1VuaXF1ZVB0cjxHTGlzdD4gY2hpbGRyZW4oZ3Rr
X2NvbnRhaW5lcl9nZXRfY2hpbGRyZW4oR1RLX0NPTlRBSU5FUihtX3BvcHVwKSkpOworICAgICAg
ICBpbnQgaTsKKyAgICAgICAgR0xpc3QqIGNoaWxkOworICAgICAgICBmb3IgKGkgPSAwLCBjaGls
ZCA9IGNoaWxkcmVuLmdldCgpOyBpIDwgaXRlbUNvdW50OyBpKyssIGNoaWxkID0gZ19saXN0X25l
eHQoY2hpbGQpKSB7CisgICAgICAgICAgICBpZiAoaSA+IHNlbGVjdGVkSW5kZXgpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIEd0a1dpZGdldCogaXRlbSA9IEdUS19XSURH
RVQoY2hpbGQtPmRhdGEpOworICAgICAgICAgICAgR3RrUmVxdWlzaXRpb24gaXRlbVJlcXVpc2l0
aW9uOworICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfcHJlZmVycmVkX3NpemUoaXRlbSwgJml0
ZW1SZXF1aXNpdGlvbiwgbnVsbHB0cik7CisgICAgICAgICAgICBtZW51UG9zaXRpb24uc2V0WSht
ZW51UG9zaXRpb24ueSgpIC0gaXRlbVJlcXVpc2l0aW9uLmhlaWdodCk7CisgICAgICAgIH0KKyAg
ICB9IGVsc2UgeworICAgICAgICAvLyBDZW50ZXIgdmVydGljYWxseSB0aGUgZW1wdHkgcG9wdXAg
aW4gdGhlIGNvbWJvIGJveCBhcmVhLgorICAgICAgICBtZW51UG9zaXRpb24uc2V0WShtZW51UG9z
aXRpb24ueSgpIC0gcmVjdC5oZWlnaHQoKSAvIDIpOworICAgIH0KKworICAgIGd1bG9uZyB1bm1h
cEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fcG9wdXAsICJ1bm1hcCIsIEdfQ0FMTEJBQ0so
bWVudVVubWFwcGVkKSwgdGhpcyk7CisKKyAgICBjb25zdCBHZGtFdmVudCogZXZlbnQgPSBtX2Ns
aWVudC0+Y3VycmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKSA/IG1fY2xpZW50LT5jdXJy
ZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpLT5uYXRpdmVFdmVudCgpIDogbnVsbHB0cjsK
KyAgICBndGtfbWVudV9wb3B1cF9mb3JfZGV2aWNlKEdUS19NRU5VKG1fcG9wdXApLCBldmVudCA/
IGdka19ldmVudF9nZXRfZGV2aWNlKGV2ZW50KSA6IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
CisgICAgICAgIFtdKEd0a01lbnUqLCBnaW50KiB4LCBnaW50KiB5LCBnYm9vbGVhbiogcHVzaElu
LCBncG9pbnRlciB1c2VyRGF0YSkgeworICAgICAgICAgICAgLy8gV2UgY2FuIHBhc3MgYSBwb2lu
dGVyIHRvIHRoZSBtZW51UG9zaXRpb24gbG9jYWwgdmFyaWFibGUgYmVjYXVzZSB0aGUgbmVzdGVk
IG1haW4gbG9vcCBlbnN1cmVzIHRoaXMgaXMgY2FsbGVkIGluIHRoZSBmdW5jdGlvbiBjb250ZXh0
LgorICAgICAgICAgICAgSW50UG9pbnQqIG1lbnVQb3NpdGlvbiA9IHN0YXRpY19jYXN0PEludFBv
aW50Kj4odXNlckRhdGEpOworICAgICAgICAgICAgKnggPSBtZW51UG9zaXRpb24tPngoKTsKKyAg
ICAgICAgICAgICp5ID0gbWVudVBvc2l0aW9uLT55KCk7CisgICAgICAgICAgICAqcHVzaEluID0g
VFJVRTsKKyAgICAgICAgfSwgJm1lbnVQb3NpdGlvbiwgbnVsbHB0ciwgZXZlbnQgJiYgZXZlbnQt
PnR5cGUgPT0gR0RLX0JVVFRPTl9QUkVTUyA/IGV2ZW50LT5idXR0b24uYnV0dG9uIDogMSwKKyAg
ICAgICAgZXZlbnQgPyBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpIDogR0RLX0NVUlJFTlRfVElN
RSk7CisKKyAgICAvLyBOb3cgdGhhdCB0aGUgbWVudSBoYXMgYSBwb3NpdGlvbiwgc2NoZWR1bGUg
YSByZXNpemUgdG8gbWFrZSBzdXJlIGl0J3MgcmVzaXplZCB0byBmaXQgdmVydGljYWxseSBpbiB0
aGUgd29yayBhcmVhLgorICAgIGd0a193aWRnZXRfcXVldWVfcmVzaXplKG1fcG9wdXApOwogCiAg
ICAgLy8gUG9wdXBNZW51IGNhbiBmYWlsIHRvIG9wZW4gd2hlbiB0aGVyZSBpcyBubyBtb3VzZSBn
cmFiLgogICAgIC8vIEVuc3VyZSBXZWJDb3JlIGRvZXMgbm90IGdvIGludG8gc29tZSBwZXNreSBz
dGF0ZS4KLSAgICBpZiAoIWd0a193aWRnZXRfZ2V0X3Zpc2libGUobV9wb3B1cC0+cGxhdGZvcm1N
ZW51KCkpKSB7CisgICAgaWYgKCFndGtfd2lkZ2V0X2dldF92aXNpYmxlKG1fcG9wdXApKSB7CiAg
ICAgICAgbV9jbGllbnQtPmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwogICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICAvLyBXZWJQYWdlUHJveHkgZXhwZWN0cyB0aGUgbWVudSB0byBydW4gaW4g
YSBuZXN0ZWQgcnVuIGxvb3AsIHNpbmNlIGl0IGludmFsaWRhdGVzIHRoZQogICAgIC8vIG1lbnUg
cmlnaHQgYWZ0ZXIgY2FsbGluZyBXZWJQb3B1cE1lbnVQcm94eTo6c2hvd1BvcHVwTWVudSgpLgot
ICAgIG1fcnVuTG9vcCA9IGFkb3B0R1JlZihnX21haW5fbG9vcF9uZXcoMCwgRkFMU0UpKTsKKyAg
ICBtX3J1bkxvb3AgPSBhZG9wdEdSZWYoZ19tYWluX2xvb3BfbmV3KG51bGxwdHIsIEZBTFNFKSk7
CiAKIC8vIFRoaXMgaXMgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgZ2RrX3RocmVhZHNfbGVh
dmUgYW5kIGdka190aHJlYWRzX2VudGVyLgogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCkBA
IC0xMDcsNyArMTY0LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2hvd1BvcHVwTWVu
dShjb25zdCBJbnRSZWN0JiByZWN0LCBUZXh0RGlyZWN0aW9uLCBkb3UKIAogICAgIG1fcnVuTG9v
cC5jbGVhcigpOwogCi0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fcG9wdXAtPnBs
YXRmb3JtTWVudSgpLCB1bm1hcEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29u
bmVjdChtX3BvcHVwLCB1bm1hcEhhbmRsZXIpOwogCiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTE3LDcgKzE3NCw4NiBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3Rr
OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFRleHREaXJlY3Rpb24sIGRvdQog
CiB2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjpoaWRlUG9wdXBNZW51KCkKIHsKLSAgICBtX3Bv
cHVwLT5wb3BEb3duKCk7CisgICAgZ3RrX21lbnVfcG9wZG93bihHVEtfTUVOVShtX3BvcHVwKSk7
CisgICAgcmVzZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKK30KKworYm9vbCBXZWJQb3B1cE1lbnVQ
cm94eUd0azo6dHlwZUFoZWFkRmluZChHZGtFdmVudEtleSogZXZlbnQpCit7CisgICAgLy8gSWYg
d2Ugd2VyZSBnaXZlbiBhIG5vbi1wcmludGFibGUgY2hhcmFjdGVyIGp1c3Qgc2tpcCBpdC4KKyAg
ICBndW5pY2hhciB1bmljb2RlQ2hhcmFjdGVyID0gZ2RrX2tleXZhbF90b191bmljb2RlKGV2ZW50
LT5rZXl2YWwpOworICAgIGlmICghZ191bmljaGFyX2lzcHJpbnQodW5pY29kZUNoYXJhY3Rlcikp
IHsKKyAgICAgICAgcmVzZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGdsb25nIGNoYXJhY3RlcnNXcml0dGVuOworICAgIEdVbmlxdWVQ
dHI8Z3VuaWNoYXIyPiB1dGYxNlN0cmluZyhnX3VjczRfdG9fdXRmMTYoJnVuaWNvZGVDaGFyYWN0
ZXIsIDEsIG51bGxwdHIsICZjaGFyYWN0ZXJzV3JpdHRlbiwgbnVsbHB0cikpOworICAgIGlmICgh
dXRmMTZTdHJpbmcpIHsKKyAgICAgICAgcmVzZXRUeXBlQWhlYWRGaW5kU3RhdGUoKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIElmIHRoZSBjaGFyYWN0ZXIgaXMgdGhl
IHNhbWUgYXMgdGhlIGxhc3QgY2hhcmFjdGVyLCB0aGUgdXNlciBpcyBwcm9iYWJseSB0cnlpbmcg
dG8KKyAgICAvLyBjeWNsZSB0aHJvdWdoIHRoZSBtZW51bGlzdCBlbnRyaWVzLiBUaGlzIG1hdGNo
ZXMgdGhlIFdlYkNvcmUgYmVoYXZpb3IgZm9yIGNvbGxhcHNlZCBtZW51bGlzdHMuCisgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHNlYXJjaFRpbWVvdXRNcyA9IDEwMDA7CisgICAgYm9vbCByZXBl
YXRpbmdDaGFyYWN0ZXIgPSB1bmljb2RlQ2hhcmFjdGVyICE9IG1fcHJldmlvdXNLZXlFdmVudENo
YXJhY3RlcjsKKyAgICBpZiAoZXZlbnQtPnRpbWUgLSBtX3ByZXZpb3VzS2V5RXZlbnRUaW1lc3Rh
bXAgPiBzZWFyY2hUaW1lb3V0TXMpCisgICAgICAgIG1fY3VycmVudFNlYXJjaFN0cmluZyA9IFN0
cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFyKj4odXRmMTZTdHJpbmcuZ2V0KCkpLCBjaGFyYWN0
ZXJzV3JpdHRlbik7CisgICAgZWxzZSBpZiAocmVwZWF0aW5nQ2hhcmFjdGVyKQorICAgICAgICBt
X2N1cnJlbnRTZWFyY2hTdHJpbmcuYXBwZW5kKFN0cmluZyhyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4odXRmMTZTdHJpbmcuZ2V0KCkpLCBjaGFyYWN0ZXJzV3JpdHRlbikpOworCisgICAgbV9wcmV2
aW91c0tleUV2ZW50VGltZXN0YW1wID0gZXZlbnQtPnRpbWU7CisgICAgbV9wcmV2aW91c0tleUV2
ZW50Q2hhcmFjdGVyID0gdW5pY29kZUNoYXJhY3RlcjsKKworICAgIEdVbmlxdWVQdHI8R0xpc3Q+
IGNoaWxkcmVuKGd0a19jb250YWluZXJfZ2V0X2NoaWxkcmVuKEdUS19DT05UQUlORVIobV9wb3B1
cCkpKTsKKyAgICBpZiAoIWNoaWxkcmVuKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8v
IFdlIGNhc2UgZm9sZCBiZWZvcmUgc2VhcmNoaW5nLCBiZWNhdXNlIHN0cm5jbXAgZG9lcyBub3Qg
aGFuZGxlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgorICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHNlYXJj
aFN0cmluZ1dpdGhDYXNlRm9sZGVkKGdfdXRmOF9jYXNlZm9sZChtX2N1cnJlbnRTZWFyY2hTdHJp
bmcudXRmOCgpLmRhdGEoKSwgLTEpKTsKKyAgICBzaXplX3QgcHJlZml4TGVuZ3RoID0gc3RybGVu
KHNlYXJjaFN0cmluZ1dpdGhDYXNlRm9sZGVkLmdldCgpKTsKKworICAgIC8vIElmIGEgbWVudSBp
dGVtIGhhcyBhbHJlYWR5IGJlZW4gc2VsZWN0ZWQsIHN0YXJ0IHNlYXJjaGluZyBmcm9tIHRoZSBj
dXJyZW50CisgICAgLy8gaXRlbSBkb3duIHRoZSBsaXN0LiBUaGlzIHdpbGwgbWFrZSBtdWx0aXBs
ZSBrZXkgcHJlc3NlcyBvZiB0aGUgc2FtZSBjaGFyYWN0ZXIKKyAgICAvLyBhZHZhbmNlIHRoZSBz
ZWxlY3Rpb24uCisgICAgR0xpc3QqIGN1cnJlbnRDaGlsZCA9IGNoaWxkcmVuLmdldCgpOworICAg
IGlmIChtX2N1cnJlbnRseVNlbGVjdGVkTWVudUl0ZW0pIHsKKyAgICAgICAgY3VycmVudENoaWxk
ID0gZ19saXN0X2ZpbmQoY2hpbGRyZW4uZ2V0KCksIG1fY3VycmVudGx5U2VsZWN0ZWRNZW51SXRl
bSk7CisgICAgICAgIGlmICghY3VycmVudENoaWxkKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRs
eVNlbGVjdGVkTWVudUl0ZW0gPSBudWxscHRyOworICAgICAgICAgICAgY3VycmVudENoaWxkID0g
Y2hpbGRyZW4uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXBlYXRpbmcgY2hhcmFj
dGVycyBzaG91bGQgaXRlcmF0ZS4KKyAgICAgICAgaWYgKHJlcGVhdGluZ0NoYXJhY3Rlcikgewor
ICAgICAgICAgICAgaWYgKEdMaXN0KiBuZXh0Q2hpbGQgPSBnX2xpc3RfbmV4dChjdXJyZW50Q2hp
bGQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRDaGlsZCA9IG5leHRDaGlsZDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIEdMaXN0KiBmaXJzdENoaWxkID0gY3VycmVudENoaWxkOworICAgIGRv
IHsKKyAgICAgICAgY3VycmVudENoaWxkID0gZ19saXN0X25leHQoY3VycmVudENoaWxkKTsKKyAg
ICAgICAgaWYgKCFjdXJyZW50Q2hpbGQpCisgICAgICAgICAgICBjdXJyZW50Q2hpbGQgPSBjaGls
ZHJlbi5nZXQoKTsKKworICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiBpdGVtVGV4dChnX3V0Zjhf
Y2FzZWZvbGQoZ3RrX21lbnVfaXRlbV9nZXRfbGFiZWwoR1RLX01FTlVfSVRFTShjdXJyZW50Q2hp
bGQtPmRhdGEpKSwgLTEpKTsKKyAgICAgICAgaWYgKCFzdHJuY21wKHNlYXJjaFN0cmluZ1dpdGhD
YXNlRm9sZGVkLmdldCgpLCBpdGVtVGV4dC5nZXQoKSwgcHJlZml4TGVuZ3RoKSkgeworICAgICAg
ICAgICAgZ3RrX21lbnVfc2hlbGxfc2VsZWN0X2l0ZW0oR1RLX01FTlVfU0hFTEwobV9wb3B1cCks
IEdUS19XSURHRVQoY3VycmVudENoaWxkLT5kYXRhKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0gd2hpbGUgKGN1cnJlbnRDaGlsZCAhPSBmaXJzdENoaWxkKTsKKworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5R3RrOjpyZXNldFR5cGVB
aGVhZEZpbmRTdGF0ZSgpCit7CisgICAgbV9jdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtID0gbnVs
bHB0cjsKKyAgICBtX3ByZXZpb3VzS2V5RXZlbnRDaGFyYWN0ZXIgPSAwOworICAgIG1fcHJldmlv
dXNLZXlFdmVudFRpbWVzdGFtcCA9IDA7CisgICAgbV9jdXJyZW50U2VhcmNoU3RyaW5nID0gZW1w
dHlTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6c2h1dGRvd25SdW5M
b29wKCkKQEAgLTEzNyw0ICsyNzMsMTQgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eUd0azo6bWVu
dVVubWFwcGVkKEd0a1dpZGdldCosIFdlYlBvcHVwTWVudVByb3h5R3RrKiBwb3B1cE0KICAgICBw
b3B1cE1lbnUtPnNodXRkb3duUnVuTG9vcCgpOwogfQogCit2b2lkIFdlYlBvcHVwTWVudVByb3h5
R3RrOjpzZWxlY3RJdGVtQ2FsbGJhY2soR3RrV2lkZ2V0KiBpdGVtLCBXZWJQb3B1cE1lbnVQcm94
eUd0ayogcG9wdXBNZW51KQoreworICAgIHBvcHVwTWVudS0+c2V0Q3VycmVudGx5U2VsZWN0ZWRN
ZW51SXRlbShpdGVtKTsKK30KKworZ2Jvb2xlYW4gV2ViUG9wdXBNZW51UHJveHlHdGs6OmtleVBy
ZXNzRXZlbnRDYWxsYmFjayhHdGtXaWRnZXQqLCBHZGtFdmVudEtleSogZXZlbnQsIFdlYlBvcHVw
TWVudVByb3h5R3RrKiBwb3B1cE1lbnUpCit7CisgICAgcmV0dXJuIHBvcHVwTWVudS0+dHlwZUFo
ZWFkRmluZChldmVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oCmluZGV4IDRi
MzM1YmMuLmE1ZTdkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUG9wdXBNZW51UHJveHlHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBvcHVwTWVudVByb3h5R3RrLmgKQEAgLTIxLDExICsyMSwxNSBAQAogI2RlZmluZSBXZWJQ
b3B1cE1lbnVQcm94eUd0a19oCiAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgotI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrUG9wdXBNZW51Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+CiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB0eXBlZGVmIHN0cnVjdCBfR01haW5Mb29wIEdNYWluTG9vcDsKK3R5
cGVkZWYgc3RydWN0IF9HZGtFdmVudEtleSBHZGtFdmVudEtleTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSW50UmVjdDsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDE1
ICs1MCwyOCBAQCBwcml2YXRlOgogICAgIFdlYlBvcHVwTWVudVByb3h5R3RrKEd0a1dpZGdldCos
IFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqKTsKICAgICB2b2lkIHNodXRkb3duUnVuTG9vcCgp
OwogICAgIHZvaWQgc2V0QWN0aXZlSXRlbShpbnQgYWN0aXZlSXRlbSkgeyBtX2FjdGl2ZUl0ZW0g
PSBhY3RpdmVJdGVtOyB9CisgICAgdm9pZCBzZXRDdXJyZW50bHlTZWxlY3RlZE1lbnVJdGVtKEd0
a1dpZGdldCogaXRlbSkgeyBtX2N1cnJlbnRseVNlbGVjdGVkTWVudUl0ZW0gPSBpdGVtOyB9CiAg
ICAgR3RrQWN0aW9uKiBjcmVhdGVHdGtBY3Rpb25Gb3JNZW51SXRlbShjb25zdCBXZWJQb3B1cEl0
ZW0mLCBpbnQgaXRlbUluZGV4KTsKKyAgICB2b2lkIHBvcHVsYXRlUG9wdXBNZW51KGNvbnN0IFZl
Y3RvcjxXZWJQb3B1cEl0ZW0+Jik7CisKKyAgICBib29sIHR5cGVBaGVhZEZpbmQoR2RrRXZlbnRL
ZXkqKTsKKyAgICB2b2lkIHJlc2V0VHlwZUFoZWFkRmluZFN0YXRlKCk7CiAKICAgICBzdGF0aWMg
dm9pZCBtZW51SXRlbUFjdGl2YXRlZChHdGtBY3Rpb24qLCBXZWJQb3B1cE1lbnVQcm94eUd0ayop
OwogICAgIHN0YXRpYyB2b2lkIG1lbnVVbm1hcHBlZChHdGtXaWRnZXQqLCBXZWJQb3B1cE1lbnVQ
cm94eUd0ayopOworICAgIHN0YXRpYyB2b2lkIHNlbGVjdEl0ZW1DYWxsYmFjayhHdGtXaWRnZXQq
LCBXZWJQb3B1cE1lbnVQcm94eUd0ayopOworICAgIHN0YXRpYyBnYm9vbGVhbiBrZXlQcmVzc0V2
ZW50Q2FsbGJhY2soR3RrV2lkZ2V0KiwgR2RrRXZlbnRLZXkqLCBXZWJQb3B1cE1lbnVQcm94eUd0
ayopOwogCiAgICAgR3RrV2lkZ2V0KiBtX3dlYlZpZXc7Ci0gICAgT3duUHRyPFdlYkNvcmU6Okd0
a1BvcHVwTWVudT4gbV9wb3B1cDsKKyAgICBHdGtXaWRnZXQqIG1fcG9wdXA7CiAgICAgaW50IG1f
YWN0aXZlSXRlbTsKICAgICBHUmVmUHRyPEdNYWluTG9vcD4gbV9ydW5Mb29wOworCisgICAgLy8g
VHlwZWFoZWFkIGZpbmQuCisgICAgdW5zaWduZWQgbV9wcmV2aW91c0tleUV2ZW50Q2hhcmFjdGVy
OworICAgIHVpbnQzMl90IG1fcHJldmlvdXNLZXlFdmVudFRpbWVzdGFtcDsKKyAgICBHdGtXaWRn
ZXQqIG1fY3VycmVudGx5U2VsZWN0ZWRNZW51SXRlbTsKKyAgICBTdHJpbmcgbV9jdXJyZW50U2Vh
cmNoU3RyaW5nOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="263535"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>