<?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>177325</bug_id>
          
          <creation_ts>2017-09-21 14:18:01 -0700</creation_ts>
          <short_desc>Clean up RenderLayer z-order traversal code</short_desc>
          <delta_ts>2017-09-27 12:21:26 -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>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>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1351388</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-21 14:18:01 -0700</bug_when>
    <thetext>Clean up RenderLayer z-order traversal code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351389</commentid>
    <comment_count>1</comment_count>
      <attachid>321479</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-21 14:19:07 -0700</bug_when>
    <thetext>Created attachment 321479
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351393</commentid>
    <comment_count>2</comment_count>
      <attachid>321481</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-21 14:28:17 -0700</bug_when>
    <thetext>Created attachment 321481
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351486</commentid>
    <comment_count>3</comment_count>
      <attachid>321481</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 17:40:51 -0700</bug_when>
    <thetext>Comment on attachment 321481
Patch

Clearing flags on attachment: 321481

Committed r222373: &lt;http://trac.webkit.org/changeset/222373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1351487</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-21 17:40:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353325</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:21:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693115&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321479</attachid>
            <date>2017-09-21 14:19:07 -0700</date>
            <delta_ts>2017-09-21 14:28:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177325-20170921141906.patch</filename>
            <type>text/plain</type>
            <size>22609</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMjkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGVlYWRhMTkyOTI5NTBi
MGZmMjQ5MGExMWM4ZDIwMjZkZGY3Nzc2Ny4uOTQ2NDI1MDZhMGFhNmFjYmVhMGJjOTFkMDE1ZmFi
MmEyN2VhOGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTIxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIFJl
bmRlckxheWVyIHotb3JkZXIgdHJhdmVyc2FsIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBpc1N0YWNraW5nQ29udGFpbmVyKCkgY2hl
Y2tzIGJlZm9yZSBhY2Nlc3NpbmcgcG9zWk9yZGVyTGlzdCgpIG9yIG5lZ1pPcmRlckxpc3QoKTsK
KyAgICAgICAgd2UgYWxyZWFkeSBoYXZlIGFzc2VydGlvbnMgaW4gcGxhY2UgdG8gZW5zdXJlIHRo
YXQgb25seSBzdGFja2luZyBjb250YWluZXJzIGhhdmUgbm9uLW51bGwgbGlzdHMuCisKKyAgICAg
ICAgVXNlIG1vcmUgYXV0by4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxk
Q29tcG9zaXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWlu
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJI
YXMzRENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKwogMjAxNy0wOS0yMCAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZsb2F0aW5nT2JqZWN0IHNo
b3VsZCBub3QgaG9sZCBhIHJhdyBwb2ludGVyIHRvIFJvb3RJbmxpbmVCb3guCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA0YTMxZGQwY2EzMjg2MGY0OTFjMDIz
NDhkZTFiODg5NDczNzVkMzU3Li5mMDlhZWFhODY0ZTI2NDJmZWU1YmQ4NTU1ZWM0ODQxNmQwZjQ4
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTEzMDUs
MTMgKzEzMDUsMTMgQEAgYm9vbCBSZW5kZXJMYXllcjo6dXBkYXRlM0RUcmFuc2Zvcm1lZERlc2Nl
bmRhbnRTdGF0dXMoKQogCiAgICAgICAgIC8vIFRyYW5zZm9ybWVkIG9yIHByZXNlcnZlLTNkIGRl
c2NlbmRhbnRzIGNhbiBvbmx5IGJlIGluIHRoZSB6LW9yZGVyIGxpc3RzLCBub3QKICAgICAgICAg
Ly8gaW4gdGhlIG5vcm1hbCBmbG93IGxpc3QsIHNvIHdlIG9ubHkgbmVlZCB0byBjaGVjayB0aG9z
ZS4KLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NpdGl2ZVpPcmRlckxpc3Qg
PSBwb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBvc2l0aXZlWk9yZGVyTGlz
dCA9IHBvc1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBsYXllciA6ICpw
b3NpdGl2ZVpPcmRlckxpc3QpCiAgICAgICAgICAgICAgICAgbV9oYXMzRFRyYW5zZm9ybWVkRGVz
Y2VuZGFudCB8PSBsYXllci0+dXBkYXRlM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXMoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vdyBjaGVjayBvdXIgbmVnYXRpdmUgei1pbmRleCBj
aGlsZHJlbi4KLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdhdGl2ZVpPcmRl
ckxpc3QgPSBuZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIG5lZ2F0aXZlWk9y
ZGVyTGlzdCA9IG5lZ1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgZm9yIChhdXRvKiBsYXll
ciA6ICpuZWdhdGl2ZVpPcmRlckxpc3QpCiAgICAgICAgICAgICAgICAgbV9oYXMzRFRyYW5zZm9y
bWVkRGVzY2VuZGFudCB8PSBsYXllci0+dXBkYXRlM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0
dXMoKTsKICAgICAgICAgfQpAQCAtNTk5MSwxMiArNTk5MSwxMiBAQCBMYXlvdXRSZWN0IFJlbmRl
ckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JM
YXllciwgYwogICAgICAgICB1bmlvbkJvdW5kcy5jaGVja2VkVW5pdGUoY2hpbGRCb3VuZHMpOwog
ICAgIH07CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSB0
aGlzLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9IHRo
aXMtPm5lZ1pPcmRlckxpc3QoKSkgewogICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAq
bmVnWk9yZGVyTGlzdCkKICAgICAgICAgICAgIGNvbXB1dGVMYXllcnNVbmlvbigqY2hpbGRMYXll
cik7CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0
ID0gdGhpcy0+cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIHBvc1pPcmRlckxpc3Qg
PSB0aGlzLT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVy
IDogKnBvc1pPcmRlckxpc3QpIHsKICAgICAgICAgICAgIC8vIFRoZSBSZW5kZXJOYW1lZEZsb3dU
aHJlYWQgaXMgaWdub3JlZCB3aGVuIHdlIGNhbGN1bGF0ZSB0aGUgYm91bmRzIG9mIHRoZSBSZW5k
ZXJWaWV3LgogICAgICAgICAgICAgaWYgKGNoaWxkTGF5ZXItPmlzRmxvd1RocmVhZENvbGxlY3Rp
bmdHcmFwaGljc0xheWVyc1VuZGVyUmVnaW9ucygpKQpAQCAtNjAwNSw3ICs2MDA1LDcgQEAgTGF5
b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5
ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSB0aGlzLT5ub3JtYWxGbG93TGlzdCgpKSB7
CisgICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gdGhpcy0+bm9ybWFsRmxvd0xpc3QoKSkg
ewogICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3QpIHsKICAg
ICAgICAgICAgIC8vIFJlbmRlclZpZXcgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzaXplIG9mIHRo
ZSBkb2N1bWVudCwgYmVmb3JlIHJlYWNoaW5nIHRoaXMgcG9pbnQsCiAgICAgICAgICAgICAvLyBz
byB0aGVyZSdzIG5vIHdheSB3ZSBjb3VsZCBoaXQgYSBSZW5kZXJOYW1lZEZsb3dUaHJlYWQgaGVy
ZS4KQEAgLTYzNTUsMjMgKzYzNTUsMTkgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2Vu
ZGFudHNMYXllckxpc3RzSWZOZWVkZWQoYm9vbCByZWN1cnNpdmUpCiB7CiAgICAgVmVjdG9yPFJl
bmRlckxheWVyKj4gbGF5ZXJzVG9VcGRhdGU7CiAgICAgCi0gICAgaWYgKGlzU3RhY2tpbmdDb250
YWluZXIoKSkgewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QgPSBuZWda
T3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6ICpsaXN0
KQotICAgICAgICAgICAgICAgIGxheWVyc1RvVXBkYXRlLmFwcGVuZChjaGlsZExheWVyKTsKLSAg
ICAgICAgfQorICAgIGlmIChhdXRvKiBsaXN0ID0gbmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAg
IGZvciAoYXV0byogY2hpbGRMYXllciA6ICpsaXN0KQorICAgICAgICAgICAgbGF5ZXJzVG9VcGRh
dGUuYXBwZW5kKGNoaWxkTGF5ZXIpOwogICAgIH0KICAgICAKLSAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIGxpc3QgPSBub3JtYWxGbG93TGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIGxpc3Qg
PSBub3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6ICps
aXN0KQogICAgICAgICAgICAgbGF5ZXJzVG9VcGRhdGUuYXBwZW5kKGNoaWxkTGF5ZXIpOwogICAg
IH0KICAgICAKLSAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogbGlzdCA9IHBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAg
ICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDogKmxpc3QpCi0gICAgICAgICAgICAgICAgbGF5ZXJz
VG9VcGRhdGUuYXBwZW5kKGNoaWxkTGF5ZXIpOwotICAgICAgICB9CisgICAgaWYgKGF1dG8qIGxp
c3QgPSBwb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDog
Kmxpc3QpCisgICAgICAgICAgICBsYXllcnNUb1VwZGF0ZS5hcHBlbmQoY2hpbGRMYXllcik7CiAg
ICAgfQogICAgIAogICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6IGxheWVyc1RvVXBkYXRlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmlu
ZGV4IDBlZjEyYzdmN2FmNTQ3NTI4YzVkOGNlNGU0YjI4YjFlYmRhMmU2OWIuLmQxNjIyNWM1ZjFk
YmQ5MGQwNDNkYjExZDM0MGZlNTEyYzA4NzA2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0yMTI4LDM1ICsyMTI4LDMzIEBAIHN0
YXRpYyBMYXllclRyYXZlcnNhbCB0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFu
dExheWVycyhSZW5kZXJMYXllciYKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChwYXJlbnQu
aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmICghcGFyZW50Lmhhc1Zpc2libGVE
ZXNjZW5kYW50KCkpCi0gICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OkNvbnRpbnVl
OworICAgIGlmIChwYXJlbnQuaXNTdGFja2luZ0NvbnRhaW5lcigpICYmICFwYXJlbnQuaGFzVmlz
aWJsZURlc2NlbmRhbnQoKSkKKyAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpDb250aW51
ZTsKIAotICAgICAgICAvLyBVc2UgdGhlIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50IGJpdCB0
byBvcHRpbWl6ZT8KLSAgICAgICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxpc3QgPSBwYXJlbnQubmVn
Wk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbmVn
Wk9yZGVyTGlzdCkgewotICAgICAgICAgICAgICAgIGlmIChjb21wb3NpdGVkV2l0aE93bkJhY2tp
bmdTdG9yZSgqY2hpbGRMYXllcikpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
IC8vIFVzZSB0aGUgbV9oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQgYml0IHRvIG9wdGltaXplPwor
ICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gcGFyZW50Lm5lZ1pPcmRlckxpc3QoKSkgewor
ICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkgeworICAgICAg
ICAgICAgaWYgKGNvbXBvc2l0ZWRXaXRoT3duQmFja2luZ1N0b3JlKCpjaGlsZExheWVyKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgIGlmIChsYXllckZ1bmMo
KmNoaWxkTGF5ZXIpID09IExheWVyVHJhdmVyc2FsOjpTdG9wKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CisgICAgICAgICAgICBpZiAobGF5ZXJGdW5j
KCpjaGlsZExheWVyKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CiAKLSAgICAgICAgICAgICAgICBpZiAodHJhdmVy
c2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoKmNoaWxkTGF5ZXIsIGxheWVy
RnVuYykgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBMYXllclRyYXZlcnNhbDo6U3RvcDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0
cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVkRGVzY2VuZGFudExheWVycygqY2hpbGRMYXllciwg
bGF5ZXJGdW5jKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CiAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgaWYg
KGF1dG8qIHBvc1pPcmRlckxpc3QgPSBwYXJlbnQucG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkgewotICAgICAgICAg
ICAgICAgIGlmIChjb21wb3NpdGVkV2l0aE93bkJhY2tpbmdTdG9yZSgqY2hpbGRMYXllcikpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0
ID0gcGFyZW50LnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5
ZXIgOiAqcG9zWk9yZGVyTGlzdCkgeworICAgICAgICAgICAgaWYgKGNvbXBvc2l0ZWRXaXRoT3du
QmFja2luZ1N0b3JlKCpjaGlsZExheWVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgICAgIGlmIChsYXllckZ1bmMoKmNoaWxkTGF5ZXIpID09IExheWVyVHJhdmVy
c2FsOjpTdG9wKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0
b3A7CisgICAgICAgICAgICBpZiAobGF5ZXJGdW5jKCpjaGlsZExheWVyKSA9PSBMYXllclRyYXZl
cnNhbDo6U3RvcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7
CiAKLSAgICAgICAgICAgICAgICBpZiAodHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnRMYXllcnMoKmNoaWxkTGF5ZXIsIGxheWVyRnVuYykgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0
b3ApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBMYXllclRyYXZlcnNhbDo6U3RvcDsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0cmF2ZXJzZVZpc2libGVOb25Db21wb3NpdGVk
RGVzY2VuZGFudExheWVycygqY2hpbGRMYXllciwgbGF5ZXJGdW5jKSA9PSBMYXllclRyYXZlcnNh
bDo6U3RvcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7CiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMmViYmM3NTdkNzAyOTZiMzM3ZDk2OGE2MDY4ZTcx
NmIyMjVjZmJkYS4uZjY5NzEzMjljNzY2MzhhZDQxNzgwOGU2YzM5NDhhMzUyN2FkZmJiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5j
cHAKQEAgLTEyNDUsMjMgKzEyNDUsMTkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFk
ZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBjb24KICAgICBM
YXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0PFJlbmRl
ckxheWVyKj4oJmxheWVyKSk7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29u
dGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJM
aXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJl
bmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCi0gICAgICAgICAgICAgICAgYWRkVG9PdmVybGFw
TWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpyZW5kZXJMYXllciwgJmxheWVyKTsKLSAgICAgICAg
fQorICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7
CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKKyAgICAg
ICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIs
ICZsYXllcik7CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxG
bG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFs
Rmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byog
cmVuZGVyTGF5ZXIgOiAqbm9ybWFsRmxvd0xpc3QpCiAgICAgICAgICAgICBhZGRUb092ZXJsYXBN
YXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKnJlbmRlckxheWVyLCAmbGF5ZXIpOwogICAgIH0KIAot
ICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7
Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCi0g
ICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpyZW5k
ZXJMYXllciwgJmxheWVyKTsKLSAgICAgICAgfQorICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0
ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5
ZXIgOiAqcG9zWk9yZGVyTGlzdCkKKyAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2
ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIsICZsYXllcik7CiAgICAgfQogICAgIAogICAgIGlm
IChhbmNlc3RvckxheWVyKQpAQCAtMTM2NiwyMyArMTM2MiwyMSBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBh
bmNlc3RvcgogCiAgICAgYm9vbCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0gPSBmYWxzZTsK
IAotICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgp
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3Qp
IHsKLSAgICAgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVy
LCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFu
eURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBo
YXZlIHRvIG1ha2UgYSBsYXllciBmb3IgdGhpcyBjaGlsZCwgbWFrZSBvbmUgbm93IHNvIHdlIGNh
biBoYXZlIGEgY29udGVudHMgbGF5ZXIKLSAgICAgICAgICAgICAgICAvLyAoc2luY2Ugd2UgbmVl
ZCB0byBlbnN1cmUgdGhhdCB0aGUgLXZlIHotb3JkZXIgY2hpbGQgcmVuZGVycyB1bmRlcm5lYXRo
IG91ciBjb250ZW50cykuCi0gICAgICAgICAgICAgICAgaWYgKCF3aWxsQmVDb21wb3NpdGVkICYm
IGNoaWxkU3RhdGUuc3VidHJlZUlzQ29tcG9zaXRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gbWFrZSBsYXllciBjb21wb3NpdGluZwotICAgICAgICAgICAgICAgICAgICBsYXllci5zZXRJ
bmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uOjpCYWNrZ3JvdW5kTGF5ZXIpOwotICAgICAgICAgICAgICAgICAgICBjaGlsZFN0YXRl
LmNvbXBvc2l0aW5nQW5jZXN0b3IgPSAmbGF5ZXI7Ci0gICAgICAgICAgICAgICAgICAgIG92ZXJs
YXBNYXAucHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgbGF5ZXIgaXMgZ29pbmcgdG8gYmUgY29tcG9zaXRlZCwgc28gY2hpbGRyZW4gY2FuIHNh
ZmVseSBpZ25vcmUgdGhlIGZhY3QgdGhhdCB0aGVyZSdzIGFuIAotICAgICAgICAgICAgICAgICAg
ICAvLyBhbmltYXRpb24gcnVubmluZyBiZWhpbmQgdGhpcyBsYXllciwgbWVhbmluZyB0aGV5IGNh
biByZWx5IG9uIHRoZSBvdmVybGFwIG1hcCB0ZXN0aW5nIGFnYWluCi0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkU3RhdGUudGVzdGluZ092ZXJsYXAgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICB3aWxsQmVDb21wb3NpdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgaWYgKGF1
dG8qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9y
IChhdXRvKiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KSB7CisgICAgICAgICAgICBjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBN
YXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9y
bSk7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgdG8gbWFrZSBhIGxheWVyIGZvciB0aGlz
IGNoaWxkLCBtYWtlIG9uZSBub3cgc28gd2UgY2FuIGhhdmUgYSBjb250ZW50cyBsYXllcgorICAg
ICAgICAgICAgLy8gKHNpbmNlIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIC12ZSB6LW9yZGVy
IGNoaWxkIHJlbmRlcnMgdW5kZXJuZWF0aCBvdXIgY29udGVudHMpLgorICAgICAgICAgICAgaWYg
KCF3aWxsQmVDb21wb3NpdGVkICYmIGNoaWxkU3RhdGUuc3VidHJlZUlzQ29tcG9zaXRpbmcpIHsK
KyAgICAgICAgICAgICAgICAvLyBtYWtlIGxheWVyIGNvbXBvc2l0aW5nCisgICAgICAgICAgICAg
ICAgbGF5ZXIuc2V0SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbihSZW5kZXJMYXllcjo6SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbjo6QmFja2dyb3VuZExheWVyKTsKKyAgICAgICAgICAgICAgICBj
aGlsZFN0YXRlLmNvbXBvc2l0aW5nQW5jZXN0b3IgPSAmbGF5ZXI7CisgICAgICAgICAgICAgICAg
b3ZlcmxhcE1hcC5wdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKTsKKyAgICAgICAgICAgICAgICAv
LyBUaGlzIGxheWVyIGlzIGdvaW5nIHRvIGJlIGNvbXBvc2l0ZWQsIHNvIGNoaWxkcmVuIGNhbiBz
YWZlbHkgaWdub3JlIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbgorICAgICAgICAgICAgICAgIC8v
IGFuaW1hdGlvbiBydW5uaW5nIGJlaGluZCB0aGlzIGxheWVyLCBtZWFuaW5nIHRoZXkgY2FuIHJl
bHkgb24gdGhlIG92ZXJsYXAgbWFwIHRlc3RpbmcgYWdhaW4KKyAgICAgICAgICAgICAgICBjaGls
ZFN0YXRlLnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB3aWxsQmVDb21w
b3NpdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTEzOTYs
MTYgKzEzOTAsMTUgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3Np
dGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICB9CiAKICAgICAKLSAg
ICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFs
Rmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1h
bEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpub3JtYWxG
bG93TGlzdCkKICAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5
ZXIsICpyZW5kZXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwg
YW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKICAgICB9CiAKLSAgICBpZiAobGF5ZXIuaXNT
dGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
cG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9y
IChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIGNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cygmbGF5ZXIsICpyZW5kZXJMYXllciwgb3Zlcmxh
cE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVzY2VuZGFudEhhczNEVHJhbnNm
b3JtKTsKLSAgICAgICAgfQorICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9z
Wk9yZGVyTGlzdCgpKSB7CisgICAgICAgIEFTU0VSVChsYXllci5pc1N0YWNraW5nQ29udGFpbmVy
KCkpOworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisg
ICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqcmVuZGVy
TGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRh
bnRIYXMzRFRyYW5zZm9ybSk7CiAgICAgfQogCiAgICAgLy8gSWYgd2UganVzdCBlbnRlcmVkIGNv
bXBvc2l0aW5nIG1vZGUsIHRoZSByb290IHdpbGwgaGF2ZSBiZWNvbWUgY29tcG9zaXRlZCAoYXMg
bG9uZyBhcyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkKS4KQEAgLTE2MDcsMTEg
KzE2MDAsOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5n
TGF5ZXJUcmVlKFJlbmRlckxheWVyJiBsYXllciwgVmVjdAogICAgIExheWVyTGlzdE11dGF0aW9u
RGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXll
ci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXll
cio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCi0gICAgICAgICAgICAg
ICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpyZW5kZXJMYXllciwgY2hpbGRMaXN0LCBk
ZXB0aCArIDEpOwotICAgICAgICB9CisgICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxpc3QgPSBsYXll
ci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpu
ZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCpy
ZW5kZXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEpOwogCiAgICAgICAgIC8vIElmIGEgbmVn
YXRpdmUgei1vcmRlciBjaGlsZCBpcyBjb21wb3NpdGluZywgd2UgZ2V0IGEgZm9yZWdyb3VuZCBs
YXllciB3aGljaCBuZWVkcyB0byBnZXQgcGFyZW50ZWQuCiAgICAgICAgIGlmIChsYXllckJhY2tp
bmcgJiYgbGF5ZXJCYWNraW5nLT5mb3JlZ3JvdW5kTGF5ZXIoKSkKQEAgLTE2MjEsMTYgKzE2MTIs
MTQgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVy
VHJlZShSZW5kZXJMYXllciYgbGF5ZXIsIFZlY3QKICAgICBpZiAobGF5ZXIucmVuZGVyZXIoKS5p
c1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50Q29udGFpbmVyKCkpCiAgICAgICAgIHJlYnVpbGRSZWdp
b25Db21wb3NpdGluZ0xheWVyVHJlZShkb3duY2FzdDxSZW5kZXJCbG9ja0Zsb3c+KGxheWVyLnJl
bmRlcmVyKCkpLnJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCksIGxheWVyQ2hpbGRyZW4sIGRlcHRo
ICsgMSk7CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0g
bGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9
IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXll
ciA6ICpub3JtYWxGbG93TGlzdCkKICAgICAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVy
VHJlZSgqcmVuZGVyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKICAgICB9CiAgICAgCi0g
ICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsK
LSAgICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKLSAg
ICAgICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnJlbmRlckxheWVyLCBj
aGlsZExpc3QsIGRlcHRoICsgMSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVy
TGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRl
ckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdM
YXllclRyZWUoKnJlbmRlckxheWVyLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CiAgICAgfQogCiAg
ICAgaWYgKGxheWVyQmFja2luZykgewpAQCAtMTg4OCwyMyArMTg3NywxOSBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXImIGxh
eWVyLCBpbnQgZGVwdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVj
a2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVy
KCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0g
bGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxh
eWVyIDogKm5lZ1pPcmRlckxpc3QpCi0gICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2Vv
bWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwotICAgICAgICB9CisgICAgaWYgKGF1dG8q
IG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChh
dXRvKiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgdXBkYXRlTGF5
ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwogICAgIH0KIAotICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93
TGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxv
d0xpc3QoKSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dM
aXN0KQogICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBk
ZXB0aCArIDEpOwogICAgIH0KICAgICAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5l
cigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9
IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJM
YXllciA6ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdl
b21ldHJ5KCpyZW5kZXJMYXllciwgZGVwdGggKyAxKTsKLSAgICAgICAgfQorICAgIGlmIChhdXRv
KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGZvciAo
YXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKKyAgICAgICAgICAgIHVwZGF0ZUxh
eWVyVHJlZUdlb21ldHJ5KCpyZW5kZXJMYXllciwgZGVwdGggKyAxKTsKICAgICB9CiAKICAgICBp
ZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci5iYWNraW5nKCkpCkBA
IC0xOTQxLDIzICsxOTI2LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVD
b21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciYgY29tCiAgICAgTGF5ZXJM
aXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogICAg
IAotICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgp
KSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3Qp
Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29t
cG9zaXRpbmdBbmNlc3RvciwgKnJlbmRlckxheWVyLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsK
LSAgICAgICAgfQorICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVy
TGlzdCgpKSB7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlz
dCkKKyAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBv
c2l0aW5nQW5jZXN0b3IsICpyZW5kZXJMYXllciwgY29tcG9zaXRlZENoaWxkcmVuT25seSk7CiAg
ICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxh
eWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSBs
YXllci5ub3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIg
OiAqbm9ybWFsRmxvd0xpc3QpCiAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRh
bnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNvbXBvc2l0ZWRD
aGlsZHJlbk9ubHkpOwogICAgIH0KICAgICAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRh
aW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlz
dCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5k
ZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0
aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpyZW5kZXJMYXllciwg
Y29tcG9zaXRlZENoaWxkcmVuT25seSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9y
ZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJl
bmRlckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGlu
Z0Rlc2NlbmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNv
bXBvc2l0ZWRDaGlsZHJlbk9ubHkpOwogICAgIH0KICAgICAKICAgICBpZiAoJmxheWVyICE9ICZj
b21wb3NpdGluZ0FuY2VzdG9yKSB7CkBAIC0xOTgyLDE3ICsxOTYzLDE3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVy
KQogI2VuZGlmCiAKICAgICBpZiAobGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpIHsK
LSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIu
bmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5
ZXIubmVnWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKm5lZ1pPcmRlckxpc3QpCiAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVy
KCpyZW5kZXJMYXllcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxh
eWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAg
aWYgKGF1dG8qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAg
ICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKICAgICAgICAg
ICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoKnJlbmRlckxheWVyKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5
ZXIubm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxh
eWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpub3JtYWxGbG93TGlzdCkKICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVu
ZGVyTGF5ZXIpOwogICAgIH0KQEAgLTM1OTksMjMgKzM1ODAsMjEgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxheWVySGFzM0RDb250ZW50KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikg
Y29uc3QKICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25z
dF9jYXN0PFJlbmRlckxheWVyKj4oJmxheWVyKSk7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci5p
c1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+
KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBm
b3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpIHsKLSAgICAgICAgICAgICAg
ICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKnJlbmRlckxheWVyKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxp
c3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJM
YXllciA6ICpuZWdaT3JkZXJMaXN0KSB7CisgICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRl
bnQoKnJlbmRlckxheWVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQorICAgIH0KIAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxp
c3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogcmVu
ZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgICAgIGlmIChsYXllckhh
czNEQ29udGVudCgqcmVuZGVyTGF5ZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBv
c1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pP
cmRlckxpc3QpIHsKKyAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5
ZXIpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1h
bEZsb3dMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3Jt
YWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFs
Rmxvd0xpc3QpIHsKICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5
ZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDA2MGUxZWYxMTEyNmFlYjY2OWZiMzg2
ZTg3NzM3MTQ0MGEyY2FjMjcuLjUxZjk2NzNmMjJhMjc2YmZlMTZkYzUzYTg3NjcxZWNiODYwYjA4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAK
QEAgLTcwNSw3ICs3MDUsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0
cywgY29uc3QgUmVuZGVyTGF5ZXImIHJvb3RMYXllciwgUmVuZGVyTGF5ZQogICAgIGxheWVyLnVw
ZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOwogCiAgICAgYm9vbCBzaG91bGRQYWludCA9IChiZWhh
dmlvciAmIFJlbmRlckFzVGV4dFNob3dBbGxMYXllcnMpID8gdHJ1ZSA6IGxheWVyLmludGVyc2Vj
dHNEYW1hZ2VSZWN0KGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgJnJvb3RMYXllciwg
bGF5ZXIub2Zmc2V0RnJvbUFuY2VzdG9yKCZyb290TGF5ZXIpKTsKLSAgICBWZWN0b3I8UmVuZGVy
TGF5ZXIqPiogbmVnYXRpdmVaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpOworICAg
IGF1dG8qIG5lZ2F0aXZlWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKTsKICAgICBi
b29sIHBhaW50c0JhY2tncm91bmRTZXBhcmF0ZWx5ID0gbmVnYXRpdmVaT3JkZXJMaXN0ICYmIG5l
Z2F0aXZlWk9yZGVyTGlzdC0+c2l6ZSgpID4gMDsKICAgICBpZiAoc2hvdWxkUGFpbnQgJiYgcGFp
bnRzQmFja2dyb3VuZFNlcGFyYXRlbHkpIHsKICAgICAgICAgd3JpdGVMYXllcih0cywgbGF5ZXIs
IGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgY2xpcFJlY3RUb0FwcGx5LnJlY3QoKSwg
TGF5ZXJQYWludFBoYXNlQmFja2dyb3VuZCwgaW5kZW50LCBiZWhhdmlvcik7CkBAIC03NDMsNyAr
NzQzLDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJl
bmRlckxheWVyJiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgd3JpdGVMYXllclJlbmRl
cmVycyh0cywgbGF5ZXIsIHBhaW50c0JhY2tncm91bmRTZXBhcmF0ZWx5ID8gTGF5ZXJQYWludFBo
YXNlRm9yZWdyb3VuZCA6IExheWVyUGFpbnRQaGFzZUFsbCwgaW5kZW50LCBiZWhhdmlvcik7CiAg
ICAgfQogICAgIAotICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3Qg
PSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0
ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewogICAgICAgICBpbnQgY3VyckluZGVudCA9IGlu
ZGVudDsKICAgICAgICAgaWYgKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0U2hvd0xheWVyTmVzdGlu
ZykgewogICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CkBAIC03NTUsNyArNzU1
LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ckxheWVyJiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRz
LCByb290TGF5ZXIsICpjdXJyTGF5ZXIsIHBhaW50RGlydHlSZWN0LCBjdXJySW5kZW50LCBiZWhh
dmlvcik7CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NpdGl2ZVpP
cmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogcG9zaXRp
dmVaT3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgIHNpemVfdCBs
YXllckNvdW50ID0gMDsKICAgICAgICAgZm9yIChhdXRvKiBjdXJyTGF5ZXIgOiAqcG9zaXRpdmVa
T3JkZXJMaXN0KSB7CiAgICAgICAgICAgICBpZiAoIWN1cnJMYXllci0+aXNGbG93VGhyZWFkQ29s
bGVjdGluZ0dyYXBoaWNzTGF5ZXJzVW5kZXJSZWdpb25zKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321481</attachid>
            <date>2017-09-21 14:28:17 -0700</date>
            <delta_ts>2017-09-21 17:40:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177325-20170921142816.patch</filename>
            <type>text/plain</type>
            <size>21780</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRjYjdkZjdjNTM2NzEw
MTk4MzZiNGMyMjNlNDhhNTNkMGUzZTRjZi4uNThjMDJiNTBmZDA1NjAzZWY2YTUyOTA1MTdmN2U1
ODI1ODMzOTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE3LTA5LTIxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIENsZWFuIHVwIFJl
bmRlckxheWVyIHotb3JkZXIgdHJhdmVyc2FsIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzMyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBpc1N0YWNraW5nQ29udGFpbmVyKCkgY2hl
Y2tzIGJlZm9yZSBhY2Nlc3NpbmcgcG9zWk9yZGVyTGlzdCgpIG9yIG5lZ1pPcmRlckxpc3QoKTsK
KyAgICAgICAgd2UgYWxyZWFkeSBoYXZlIGFzc2VydGlvbnMgaW4gcGxhY2UgdG8gZW5zdXJlIHRo
YXQgb25seSBzdGFja2luZyBjb250YWluZXJzIGhhdmUgbm9uLW51bGwgbGlzdHMuCisKKyAgICAg
ICAgVXNlIG1vcmUgYXV0by4KKworICAgICAgICBObyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVDbGlwUmVjdHMgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJh
dmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxk
Q29tcG9zaXRpbmdMYXllclRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWlu
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJI
YXMzRENvbnRlbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlTGF5ZXJzKToKKwogMjAxNy0wOS0yMSAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgbW9y
ZSBjb2RlIGZyb20gUmVuZGVyRmxvd1RocmVhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggNzA4ZmI5OWU3MTY3MTFmNTA3YzcyODY1YzZiMDNjNmVhODIwNWJl
Yy4uNmVhMThjOWUwMWQ4ZjdkNGRkOWYxOWM5MTIzMGJhZmJhZDgyN2YyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMjkyLDEzICsxMjkyLDEzIEBAIGJv
b2wgUmVuZGVyTGF5ZXI6OnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKCkKIAog
ICAgICAgICAvLyBUcmFuc2Zvcm1lZCBvciBwcmVzZXJ2ZS0zZCBkZXNjZW5kYW50cyBjYW4gb25s
eSBiZSBpbiB0aGUgei1vcmRlciBsaXN0cywgbm90CiAgICAgICAgIC8vIGluIHRoZSBub3JtYWwg
ZmxvdyBsaXN0LCBzbyB3ZSBvbmx5IG5lZWQgdG8gY2hlY2sgdGhvc2UuCi0gICAgICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zaXRpdmVaT3JkZXJMaXN0ID0gcG9zWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgIGlmIChhdXRvKiBwb3NpdGl2ZVpPcmRlckxpc3QgPSBwb3NaT3JkZXJMaXN0
KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiAqcG9zaXRpdmVaT3JkZXJMaXN0
KQogICAgICAgICAgICAgICAgIG1faGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQgfD0gbGF5ZXIt
PnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBOb3cgY2hlY2sgb3VyIG5lZ2F0aXZlIHotaW5kZXggY2hpbGRyZW4uCi0gICAgICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnYXRpdmVaT3JkZXJMaXN0ID0gbmVnWk9yZGVy
TGlzdCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZWdhdGl2ZVpPcmRlckxpc3QgPSBuZWdaT3Jk
ZXJMaXN0KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byogbGF5ZXIgOiAqbmVnYXRpdmVaT3Jk
ZXJMaXN0KQogICAgICAgICAgICAgICAgIG1faGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnQgfD0g
bGF5ZXItPnVwZGF0ZTNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgICAgIH0K
QEAgLTU4MzIsMTcgKzU4MzIsMTcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRl
TGF5ZXJCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGMKICAgICAgICAg
dW5pb25Cb3VuZHMuY2hlY2tlZFVuaXRlKGNoaWxkQm91bmRzKTsKICAgICB9OwogCi0gICAgaWYg
KFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gdGhpcy0+bmVnWk9yZGVyTGlz
dCgpKSB7CisgICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxpc3QgPSB0aGlzLT5uZWdaT3JkZXJMaXN0
KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDogKm5lZ1pPcmRlckxpc3QpCiAg
ICAgICAgICAgICBjb21wdXRlTGF5ZXJzVW5pb24oKmNoaWxkTGF5ZXIpOwogICAgIH0KIAotICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IHRoaXMtPnBvc1pPcmRl
ckxpc3QoKSkgeworICAgIGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gdGhpcy0+cG9zWk9yZGVy
TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6ICpwb3NaT3JkZXJMaXN0
KQogICAgICAgICAgICAgY29tcHV0ZUxheWVyc1VuaW9uKCpjaGlsZExheWVyKTsKICAgICB9CiAK
LSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gdGhpcy0+bm9y
bWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IHRoaXMtPm5v
cm1hbEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDogKm5vcm1h
bEZsb3dMaXN0KQogICAgICAgICAgICAgY29tcHV0ZUxheWVyc1VuaW9uKCpjaGlsZExheWVyKTsK
ICAgICB9CkBAIC02MTg0LDIzICs2MTg0LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURl
c2NlbmRhbnRzTGF5ZXJMaXN0c0lmTmVlZGVkKGJvb2wgcmVjdXJzaXZlKQogewogICAgIFZlY3Rv
cjxSZW5kZXJMYXllcio+IGxheWVyc1RvVXBkYXRlOwogICAgIAotICAgIGlmIChpc1N0YWNraW5n
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBsaXN0ID0g
bmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAq
bGlzdCkKLSAgICAgICAgICAgICAgICBsYXllcnNUb1VwZGF0ZS5hcHBlbmQoY2hpbGRMYXllcik7
Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogbGlzdCA9IG5lZ1pPcmRlckxpc3QoKSkgeworICAg
ICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiAqbGlzdCkKKyAgICAgICAgICAgIGxheWVyc1Rv
VXBkYXRlLmFwcGVuZChjaGlsZExheWVyKTsKICAgICB9CiAgICAgCi0gICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBsaXN0ID0gbm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBs
aXN0ID0gbm9ybWFsRmxvd0xpc3QoKSkgewogICAgICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIg
OiAqbGlzdCkKICAgICAgICAgICAgIGxheWVyc1RvVXBkYXRlLmFwcGVuZChjaGlsZExheWVyKTsK
ICAgICB9CiAgICAgCi0gICAgaWYgKGlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBp
ZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIGxpc3QgPSBwb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byogY2hpbGRMYXllciA6ICpsaXN0KQotICAgICAgICAgICAgICAgIGxh
eWVyc1RvVXBkYXRlLmFwcGVuZChjaGlsZExheWVyKTsKLSAgICAgICAgfQorICAgIGlmIChhdXRv
KiBsaXN0ID0gcG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGZvciAoYXV0byogY2hpbGRMYXll
ciA6ICpsaXN0KQorICAgICAgICAgICAgbGF5ZXJzVG9VcGRhdGUuYXBwZW5kKGNoaWxkTGF5ZXIp
OwogICAgIH0KICAgICAKICAgICBmb3IgKGF1dG8qIGNoaWxkTGF5ZXIgOiBsYXllcnNUb1VwZGF0
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCAxM2RlNDY2OTM1Nzc4ZWVjNjc4ODI2ZmI5MjgyY2NjMWY3NDZkZDMxLi43MjU4OWUz
NThlNmUzMGUzZDMxMmJlOTc1ZTQ0ZmViZmUzNTg2NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjA3OCwzNSArMjA3OCwzMyBA
QCBzdGF0aWMgTGF5ZXJUcmF2ZXJzYWwgdHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2Nl
bmRhbnRMYXllcnMoUmVuZGVyTGF5ZXImCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocGFy
ZW50LmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoIXBhcmVudC5oYXNWaXNp
YmxlRGVzY2VuZGFudCgpKQotICAgICAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpDb250
aW51ZTsKKyAgICBpZiAocGFyZW50LmlzU3RhY2tpbmdDb250YWluZXIoKSAmJiAhcGFyZW50Lmhh
c1Zpc2libGVEZXNjZW5kYW50KCkpCisgICAgICAgIHJldHVybiBMYXllclRyYXZlcnNhbDo6Q29u
dGludWU7CiAKLSAgICAgICAgLy8gVXNlIHRoZSBtX2hhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCBi
aXQgdG8gb3B0aW1pemU/Ci0gICAgICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gcGFyZW50
Lm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDog
Km5lZ1pPcmRlckxpc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29tcG9zaXRlZFdpdGhPd25C
YWNraW5nU3RvcmUoKmNoaWxkTGF5ZXIpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAvLyBVc2UgdGhlIG1faGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50IGJpdCB0byBvcHRpbWl6
ZT8KKyAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9IHBhcmVudC5uZWdaT3JkZXJMaXN0KCkp
IHsKKyAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDogKm5lZ1pPcmRlckxpc3QpIHsKKyAg
ICAgICAgICAgIGlmIChjb21wb3NpdGVkV2l0aE93bkJhY2tpbmdTdG9yZSgqY2hpbGRMYXllcikp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAgICBpZiAobGF5ZXJG
dW5jKCpjaGlsZExheWVyKSA9PSBMYXllclRyYXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpTdG9wOworICAgICAgICAgICAgaWYgKGxheWVy
RnVuYygqY2hpbGRMYXllcikgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICAg
ICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpTdG9wOwogCi0gICAgICAgICAgICAgICAgaWYgKHRy
YXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWREZXNjZW5kYW50TGF5ZXJzKCpjaGlsZExheWVyLCBs
YXllckZ1bmMpID09IExheWVyVHJhdmVyc2FsOjpTdG9wKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAodHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9zaXRlZERlc2NlbmRhbnRMYXllcnMoKmNoaWxkTGF5
ZXIsIGxheWVyRnVuYykgPT0gTGF5ZXJUcmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICAgICAg
cmV0dXJuIExheWVyVHJhdmVyc2FsOjpTdG9wOwogICAgICAgICB9CisgICAgfQogCi0gICAgICAg
IGlmIChhdXRvKiBwb3NaT3JkZXJMaXN0ID0gcGFyZW50LnBvc1pPcmRlckxpc3QoKSkgewotICAg
ICAgICAgICAgZm9yIChhdXRvKiBjaGlsZExheWVyIDogKnBvc1pPcmRlckxpc3QpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY29tcG9zaXRlZFdpdGhPd25CYWNraW5nU3RvcmUoKmNoaWxkTGF5ZXIp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBpZiAoYXV0byogcG9zWk9yZGVy
TGlzdCA9IHBhcmVudC5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBjaGls
ZExheWVyIDogKnBvc1pPcmRlckxpc3QpIHsKKyAgICAgICAgICAgIGlmIChjb21wb3NpdGVkV2l0
aE93bkJhY2tpbmdTdG9yZSgqY2hpbGRMYXllcikpCisgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgICAgICBpZiAobGF5ZXJGdW5jKCpjaGlsZExheWVyKSA9PSBMYXllclRy
YXZlcnNhbDo6U3RvcCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2Fs
OjpTdG9wOworICAgICAgICAgICAgaWYgKGxheWVyRnVuYygqY2hpbGRMYXllcikgPT0gTGF5ZXJU
cmF2ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpT
dG9wOwogCi0gICAgICAgICAgICAgICAgaWYgKHRyYXZlcnNlVmlzaWJsZU5vbkNvbXBvc2l0ZWRE
ZXNjZW5kYW50TGF5ZXJzKCpjaGlsZExheWVyLCBsYXllckZ1bmMpID09IExheWVyVHJhdmVyc2Fs
OjpTdG9wKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTGF5ZXJUcmF2ZXJzYWw6OlN0b3A7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodHJhdmVyc2VWaXNpYmxlTm9uQ29tcG9z
aXRlZERlc2NlbmRhbnRMYXllcnMoKmNoaWxkTGF5ZXIsIGxheWVyRnVuYykgPT0gTGF5ZXJUcmF2
ZXJzYWw6OlN0b3ApCisgICAgICAgICAgICAgICAgcmV0dXJuIExheWVyVHJhdmVyc2FsOjpTdG9w
OwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGFkZWIxMzY5ZWNjZWRlZTYyMzRkN2VkMTM2
NjQ2YjI1Zjg0MzNiYTkuLjgzYjNjZmI5OGIyMjUxZTUyNTg0MjI2NmRiNDJmN2UxOTZjYmUyMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0
b3IuY3BwCkBAIC0xMjQ0LDIzICsxMjQ0LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjphZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgY29uCiAg
ICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29uc3RfY2FzdDxS
ZW5kZXJMYXllcio+KCZsYXllcikpOwogI2VuZGlmCiAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2lu
Z0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9y
ZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRv
KiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIGFkZFRvT3Zl
cmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAqcmVuZGVyTGF5ZXIsICZsYXllcik7Ci0gICAg
ICAgIH0KKyAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3Qo
KSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCisg
ICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKnJlbmRlckxh
eWVyLCAmbGF5ZXIpOwogICAgIH0KIAotICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9y
bWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIG5v
cm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3QoKSkgewogICAgICAgICBmb3IgKGF1
dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dMaXN0KQogICAgICAgICAgICAgYWRkVG9PdmVy
bGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpyZW5kZXJMYXllciwgJmxheWVyKTsKICAgICB9
CiAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChW
ZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3Qo
KSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0
KQotICAgICAgICAgICAgICAgIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCAq
cmVuZGVyTGF5ZXIsICZsYXllcik7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVy
TGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRl
ckxheWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1
cnNpdmUob3ZlcmxhcE1hcCwgKnJlbmRlckxheWVyLCAmbGF5ZXIpOwogICAgIH0KICAgICAKICAg
ICBpZiAoYW5jZXN0b3JMYXllcikKQEAgLTEzNTQsMzcgKzEzNTAsMzQgQEAgdm9pZCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXll
ciogYW5jZXN0b3IKIAogICAgIGJvb2wgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtID0gZmFs
c2U7CiAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlm
IChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxp
c3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpuZWdaT3JkZXJM
aXN0KSB7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZs
YXllciwgKnJlbmRlckxheWVyLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2Vk
LCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwotCi0gICAgICAgICAgICAgICAgLy8gSWYg
d2UgaGF2ZSB0byBtYWtlIGEgbGF5ZXIgZm9yIHRoaXMgY2hpbGQsIG1ha2Ugb25lIG5vdyBzbyB3
ZSBjYW4gaGF2ZSBhIGNvbnRlbnRzIGxheWVyCi0gICAgICAgICAgICAgICAgLy8gKHNpbmNlIHdl
IG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIC12ZSB6LW9yZGVyIGNoaWxkIHJlbmRlcnMgdW5kZXJu
ZWF0aCBvdXIgY29udGVudHMpLgotICAgICAgICAgICAgICAgIGlmICghd2lsbEJlQ29tcG9zaXRl
ZCAmJiBjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIG1ha2UgbGF5ZXIgY29tcG9zaXRpbmcKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXIu
c2V0SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbihSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbjo6QmFja2dyb3VuZExheWVyKTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRT
dGF0ZS5jb21wb3NpdGluZ0FuY2VzdG9yID0gJmxheWVyOwotICAgICAgICAgICAgICAgICAgICBv
dmVybGFwTWFwLnB1c2hDb21wb3NpdGluZ0NvbnRhaW5lcigpOwotICAgICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGxheWVyIGlzIGdvaW5nIHRvIGJlIGNvbXBvc2l0ZWQsIHNvIGNoaWxkcmVuIGNh
biBzYWZlbHkgaWdub3JlIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbiAKLSAgICAgICAgICAgICAg
ICAgICAgLy8gYW5pbWF0aW9uIHJ1bm5pbmcgYmVoaW5kIHRoaXMgbGF5ZXIsIG1lYW5pbmcgdGhl
eSBjYW4gcmVseSBvbiB0aGUgb3ZlcmxhcCBtYXAgdGVzdGluZyBhZ2FpbgotICAgICAgICAgICAg
ICAgICAgICBjaGlsZFN0YXRlLnRlc3RpbmdPdmVybGFwID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgd2lsbEJlQ29tcG9zaXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQorICAgIGlm
IChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAg
IGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkgeworICAgICAgICAgICAg
Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXllciwgKnJlbmRlckxheWVyLCBvdmVy
bGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFu
c2Zvcm0pOworCisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHRvIG1ha2UgYSBsYXllciBmb3Ig
dGhpcyBjaGlsZCwgbWFrZSBvbmUgbm93IHNvIHdlIGNhbiBoYXZlIGEgY29udGVudHMgbGF5ZXIK
KyAgICAgICAgICAgIC8vIChzaW5jZSB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSAtdmUgei1v
cmRlciBjaGlsZCByZW5kZXJzIHVuZGVybmVhdGggb3VyIGNvbnRlbnRzKS4KKyAgICAgICAgICAg
IGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjaGlsZFN0YXRlLnN1YnRyZWVJc0NvbXBvc2l0aW5n
KSB7CisgICAgICAgICAgICAgICAgLy8gbWFrZSBsYXllciBjb21wb3NpdGluZworICAgICAgICAg
ICAgICAgIGxheWVyLnNldEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oUmVuZGVyTGF5ZXI6Oklu
ZGlyZWN0Q29tcG9zaXRpbmdSZWFzb246OkJhY2tncm91bmRMYXllcik7CisgICAgICAgICAgICAg
ICAgY2hpbGRTdGF0ZS5jb21wb3NpdGluZ0FuY2VzdG9yID0gJmxheWVyOworICAgICAgICAgICAg
ICAgIG92ZXJsYXBNYXAucHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7CisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBsYXllciBpcyBnb2luZyB0byBiZSBjb21wb3NpdGVkLCBzbyBjaGlsZHJlbiBj
YW4gc2FmZWx5IGlnbm9yZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3MgYW4KKyAgICAgICAgICAgICAg
ICAvLyBhbmltYXRpb24gcnVubmluZyBiZWhpbmQgdGhpcyBsYXllciwgbWVhbmluZyB0aGV5IGNh
biByZWx5IG9uIHRoZSBvdmVybGFwIG1hcCB0ZXN0aW5nIGFnYWluCisgICAgICAgICAgICAgICAg
Y2hpbGRTdGF0ZS50ZXN0aW5nT3ZlcmxhcCA9IHRydWU7CisgICAgICAgICAgICAgICAgd2lsbEJl
Q29tcG9zaXRlZCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAg
Ci0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5v
cm1hbEZsb3dMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5u
b3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9y
bWFsRmxvd0xpc3QpCiAgICAgICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMo
JmxheWVyLCAqcmVuZGVyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5n
ZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CiAgICAgfQogCi0gICAgaWYgKGxheWVy
LmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVy
Kj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAg
IGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKLSAgICAgICAgICAgICAg
ICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoJmxheWVyLCAqcmVuZGVyTGF5ZXIsIG92
ZXJsYXBNYXAsIGNoaWxkU3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRy
YW5zZm9ybSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9IGxheWVy
LnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBBU1NFUlQobGF5ZXIuaXNTdGFja2luZ0NvbnRh
aW5lcigpKTsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpwb3NaT3JkZXJMaXN0
KQorICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXllciwgKnJl
bmRlckxheWVyLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNj
ZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogICAgIH0KIAogICAgIC8vIElmIHdlIGp1c3QgZW50ZXJl
ZCBjb21wb3NpdGluZyBtb2RlLCB0aGUgcm9vdCB3aWxsIGhhdmUgYmVjb21lIGNvbXBvc2l0ZWQg
KGFzIGxvbmcgYXMgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgaXMgZW5hYmxlZCkuCkBAIC0xNTYz
LDI3ICsxNTU2LDIzIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWJ1aWxkQ29tcG9z
aXRpbmdMYXllclRyZWUoUmVuZGVyTGF5ZXImIGxheWVyLCBWZWN0CiAgICAgTGF5ZXJMaXN0TXV0
YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogCi0gICAgaWYg
KGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKLSAgICAgICAg
ICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnJlbmRlckxheWVyLCBjaGlsZExp
c3QsIGRlcHRoICsgMSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogbmVnWk9yZGVyTGlzdCA9
IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKm5lZ1pPcmRlckxpc3QpCisgICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRy
ZWUoKnJlbmRlckxheWVyLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CiAKICAgICAgICAgLy8gSWYg
YSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkIGlzIGNvbXBvc2l0aW5nLCB3ZSBnZXQgYSBmb3JlZ3Jv
dW5kIGxheWVyIHdoaWNoIG5lZWRzIHRvIGdldCBwYXJlbnRlZC4KICAgICAgICAgaWYgKGxheWVy
QmFja2luZyAmJiBsYXllckJhY2tpbmctPmZvcmVncm91bmRMYXllcigpKQogICAgICAgICAgICAg
Y2hpbGRMaXN0LmFwcGVuZChsYXllckJhY2tpbmctPmZvcmVncm91bmRMYXllcigpKTsKICAgICB9
CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIu
bm9ybWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxheWVy
Lm5vcm1hbEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpu
b3JtYWxGbG93TGlzdCkKICAgICAgICAgICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgq
cmVuZGVyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAxKTsKICAgICB9CiAgICAgCi0gICAgaWYg
KGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAg
ICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKLSAgICAgICAg
ICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnJlbmRlckxheWVyLCBjaGlsZExp
c3QsIGRlcHRoICsgMSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9
IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVy
IDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRy
ZWUoKnJlbmRlckxheWVyLCBjaGlsZExpc3QsIGRlcHRoICsgMSk7CiAgICAgfQogCiAgICAgaWYg
KGxheWVyQmFja2luZykgewpAQCAtMTgyNiwyMyArMTgxNSwxOSBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXImIGxheWVyLCBp
bnQgZGVwdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKCZs
YXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsK
LSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIu
bmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDog
Km5lZ1pPcmRlckxpc3QpCi0gICAgICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnko
KnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwotICAgICAgICB9CisgICAgaWYgKGF1dG8qIG5lZ1pP
cmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiBy
ZW5kZXJMYXllciA6ICpuZWdaT3JkZXJMaXN0KQorICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVl
R2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCArIDEpOwogICAgIH0KIAotICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgp
KSB7CisgICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xpc3Qo
KSkgewogICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5vcm1hbEZsb3dMaXN0KQog
ICAgICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnJlbmRlckxheWVyLCBkZXB0aCAr
IDEpOwogICAgIH0KICAgICAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7
Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVy
LnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5
KCpyZW5kZXJMYXllciwgZGVwdGggKyAxKTsKLSAgICAgICAgfQorICAgIGlmIChhdXRvKiBwb3Na
T3JkZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgIGZvciAoYXV0byog
cmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKKyAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJl
ZUdlb21ldHJ5KCpyZW5kZXJMYXllciwgZGVwdGggKyAxKTsKICAgICB9CiAKICAgICBpZiAoUmVu
ZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci5iYWNraW5nKCkpCkBAIC0xODc5
LDIzICsxODY0LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3Np
dGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciYgY29tCiAgICAgTGF5ZXJMaXN0TXV0
YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogICAgIAotICAg
IGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0g
ICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpCi0gICAg
ICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRp
bmdBbmNlc3RvciwgKnJlbmRlckxheWVyLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKLSAgICAg
ICAgfQorICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgp
KSB7CisgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbmVnWk9yZGVyTGlzdCkKKyAg
ICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5n
QW5jZXN0b3IsICpyZW5kZXJMYXllciwgY29tcG9zaXRlZENoaWxkcmVuT25seSk7CiAgICAgfQog
Ci0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5v
cm1hbEZsb3dMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5u
b3JtYWxGbG93TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9y
bWFsRmxvd0xpc3QpCiAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9t
ZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNvbXBvc2l0ZWRDaGlsZHJl
bk9ubHkpOwogICAgIH0KICAgICAKLSAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigp
KSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxh
eWVyLnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXll
ciA6ICpwb3NaT3JkZXJMaXN0KQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0aW5nRGVz
Y2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpyZW5kZXJMYXllciwgY29tcG9z
aXRlZENoaWxkcmVuT25seSk7Ci0gICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlz
dCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxh
eWVyIDogKnBvc1pPcmRlckxpc3QpCisgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2Nl
bmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCAqcmVuZGVyTGF5ZXIsIGNvbXBvc2l0
ZWRDaGlsZHJlbk9ubHkpOwogICAgIH0KICAgICAKICAgICBpZiAoJmxheWVyICE9ICZjb21wb3Np
dGluZ0FuY2VzdG9yKSB7CkBAIC0xOTIwLDE3ICsxOTAxLDE3IEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogI2Vu
ZGlmCiAKICAgICBpZiAobGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpIHsKLSAgICAg
ICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9y
ZGVyTGlzdCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVn
Wk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKm5l
Z1pPcmRlckxpc3QpCiAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKCpyZW5k
ZXJMYXllcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4q
IHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAg
IGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqcG9zWk9yZGVyTGlzdCkKICAgICAgICAgICAgICAg
ICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoKnJlbmRlckxheWVyKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9y
bWFsRmxvd0xpc3QoKSkgeworICAgIGlmIChhdXRvKiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5v
cm1hbEZsb3dMaXN0KCkpIHsKICAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6ICpub3Jt
YWxGbG93TGlzdCkKICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcigqcmVuZGVyTGF5
ZXIpOwogICAgIH0KQEAgLTM1MzQsMjMgKzM1MTUsMjEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmxheWVySGFzM0RDb250ZW50KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikgY29uc3QK
ICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihjb25zdF9jYXN0
PFJlbmRlckxheWVyKj4oJmxheWVyKSk7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci5pc1N0YWNr
aW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWda
T3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1
dG8qIHJlbmRlckxheWVyIDogKm5lZ1pPcmRlckxpc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bGF5ZXJIYXMzRENvbnRlbnQoKnJlbmRlckxheWVyKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgICAgICB9CisgICAgaWYgKGF1dG8qIG5lZ1pPcmRlckxpc3QgPSBs
YXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZW5kZXJMYXllciA6
ICpuZWdaT3JkZXJMaXN0KSB7CisgICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKnJl
bmRlckxheWVyKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAg
IH0KIAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBs
YXllci5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5
ZXIgOiAqcG9zWk9yZGVyTGlzdCkgewotICAgICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29u
dGVudCgqcmVuZGVyTGF5ZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KKyAgICBpZiAoYXV0byogcG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRl
ckxpc3QoKSkgeworICAgICAgICBmb3IgKGF1dG8qIHJlbmRlckxheWVyIDogKnBvc1pPcmRlckxp
c3QpIHsKKyAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5ZXIpKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dM
aXN0KCkpIHsKKyAgICBpZiAoYXV0byogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93
TGlzdCgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVuZGVyTGF5ZXIgOiAqbm9ybWFsRmxvd0xp
c3QpIHsKICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudCgqcmVuZGVyTGF5ZXIpKQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCmluZGV4IDc2ZjhkNDQyNDAyN2Y5OGI4ZTYyN2UzMDA3MGZj
YWJkMGU0ZGI1MDUuLjI2YTM0MDI1YWFmMzk1YzMxYWM1ZGQzMTU1ZDk3Nzg5NTNhNTE1MGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTcw
NCw3ICs3MDQsNyBAQCBzdGF0aWMgdm9pZCB3cml0ZUxheWVycyhUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVuZGVyTGF5ZXImIHJvb3RMYXllciwgUmVuZGVyTGF5ZQogICAgIGxheWVyLnVwZGF0ZUxh
eWVyTGlzdHNJZk5lZWRlZCgpOwogCiAgICAgYm9vbCBzaG91bGRQYWludCA9IChiZWhhdmlvciAm
IFJlbmRlckFzVGV4dFNob3dBbGxMYXllcnMpID8gdHJ1ZSA6IGxheWVyLmludGVyc2VjdHNEYW1h
Z2VSZWN0KGxheWVyQm91bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgJnJvb3RMYXllciwgbGF5ZXIu
b2Zmc2V0RnJvbUFuY2VzdG9yKCZyb290TGF5ZXIpKTsKLSAgICBWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogbmVnYXRpdmVaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpOworICAgIGF1dG8q
IG5lZ2F0aXZlWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKTsKICAgICBib29sIHBh
aW50c0JhY2tncm91bmRTZXBhcmF0ZWx5ID0gbmVnYXRpdmVaT3JkZXJMaXN0ICYmIG5lZ2F0aXZl
Wk9yZGVyTGlzdC0+c2l6ZSgpID4gMDsKICAgICBpZiAoc2hvdWxkUGFpbnQgJiYgcGFpbnRzQmFj
a2dyb3VuZFNlcGFyYXRlbHkpIHsKICAgICAgICAgd3JpdGVMYXllcih0cywgbGF5ZXIsIGxheWVy
Qm91bmRzLCBkYW1hZ2VSZWN0LnJlY3QoKSwgY2xpcFJlY3RUb0FwcGx5LnJlY3QoKSwgTGF5ZXJQ
YWludFBoYXNlQmFja2dyb3VuZCwgaW5kZW50LCBiZWhhdmlvcik7CkBAIC03NDIsNyArNzQyLDcg
QEAgc3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxh
eWVyJiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgd3JpdGVMYXllclJlbmRlcmVycyh0
cywgbGF5ZXIsIHBhaW50c0JhY2tncm91bmRTZXBhcmF0ZWx5ID8gTGF5ZXJQYWludFBoYXNlRm9y
ZWdyb3VuZCA6IExheWVyUGFpbnRQaGFzZUFsbCwgaW5kZW50LCBiZWhhdmlvcik7CiAgICAgfQog
ICAgIAotICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXll
ci5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgaWYgKGF1dG8qIG5vcm1hbEZsb3dMaXN0ID0gbGF5
ZXIubm9ybWFsRmxvd0xpc3QoKSkgewogICAgICAgICBpbnQgY3VyckluZGVudCA9IGluZGVudDsK
ICAgICAgICAgaWYgKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0U2hvd0xheWVyTmVzdGluZykgewog
ICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CkBAIC03NTQsNyArNzU0LDcgQEAg
c3RhdGljIHZvaWQgd3JpdGVMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRlckxheWVy
JiByb290TGF5ZXIsIFJlbmRlckxheWUKICAgICAgICAgICAgIHdyaXRlTGF5ZXJzKHRzLCByb290
TGF5ZXIsICpjdXJyTGF5ZXIsIHBhaW50RGlydHlSZWN0LCBjdXJySW5kZW50LCBiZWhhdmlvcik7
CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NpdGl2ZVpPcmRlckxp
c3QgPSBsYXllci5wb3NaT3JkZXJMaXN0KCkpIHsKKyAgICBpZiAoYXV0byogcG9zaXRpdmVaT3Jk
ZXJMaXN0ID0gbGF5ZXIucG9zWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgIHNpemVfdCBsYXllckNv
dW50ID0gcG9zaXRpdmVaT3JkZXJMaXN0LT5zaXplKCk7CiAKICAgICAgICAgaWYgKGxheWVyQ291
bnQpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>