<?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>191628</bug_id>
          
          <creation_ts>2018-11-14 02:36:12 -0800</creation_ts>
          <short_desc>Web Inspector: Canvas: send a call stack with each action instead of an array of call frames</short_desc>
          <delta_ts>2018-11-14 14:04:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>173807</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478370</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 02:36:12 -0800</bug_when>
    <thetext>Sending an array of the same frames over and over for actions repeated multiple times in the same recording is wasteful.  We should be de-duplicating both per-frame and per-stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478372</commentid>
    <comment_count>1</comment_count>
      <attachid>354787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 03:02:05 -0800</bug_when>
    <thetext>Created attachment 354787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478497</commentid>
    <comment_count>2</comment_count>
      <attachid>354787</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-14 10:09:03 -0800</bug_when>
    <thetext>Comment on attachment 354787
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/Recording.js:322
&gt; +                case WI.Recording.Swizzle.CallStack:
&gt; +                    var array = await this.swizzle(data, WI.Recording.Swizzle.Array);
&gt; +                    var callFrames = [];
&gt; +                    for (let item of array)
&gt; +                        callFrames.push(await this.swizzle(item, WI.Recording.Swizzle.CallFrame));
&gt; +                    this._swizzle[index][type] = callFrames;
&gt; +                    break;

Why var instead of const/let?

Also, what about this?

const callFrames = array.map(item =&gt; { return await this.swizzle(item, WI.Recording.Swizzle.CallFrame); });

Hmmm... I guess that doesn&apos;t work because the arrow needs to be async. Can you do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478503</commentid>
    <comment_count>3</comment_count>
      <attachid>354787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 10:14:47 -0800</bug_when>
    <thetext>Comment on attachment 354787
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Recording.js:322
&gt;&gt; +                    break;
&gt; 
&gt; Why var instead of const/let?
&gt; 
&gt; Also, what about this?
&gt; 
&gt; const callFrames = array.map(item =&gt; { return await this.swizzle(item, WI.Recording.Swizzle.CallFrame); });
&gt; 
&gt; Hmmm... I guess that doesn&apos;t work because the arrow needs to be async. Can you do that?

`let` is block scoped, and a switch-case only has one block
&lt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Redeclarations&gt;

I&apos;d have to do something like:

    this._swizzle[index][type] = await Promise.all(array.map((item) =&gt; this.swizzle(item, WI.Recording.Swizzle.CallFrame));

That reads a bit worse (more confusing) IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478550</commentid>
    <comment_count>4</comment_count>
      <attachid>354787</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 11:37:03 -0800</bug_when>
    <thetext>Comment on attachment 354787
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Recording.js:322
&gt;&gt;&gt; +                    break;
&gt;&gt; 
&gt;&gt; Why var instead of const/let?
&gt;&gt; 
&gt;&gt; Also, what about this?
&gt;&gt; 
&gt;&gt; const callFrames = array.map(item =&gt; { return await this.swizzle(item, WI.Recording.Swizzle.CallFrame); });
&gt;&gt; 
&gt;&gt; Hmmm... I guess that doesn&apos;t work because the arrow needs to be async. Can you do that?
&gt; 
&gt; `let` is block scoped, and a switch-case only has one block
&gt; &lt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Redeclarations&gt;
&gt; 
&gt; I&apos;d have to do something like:
&gt; 
&gt;     this._swizzle[index][type] = await Promise.all(array.map((item) =&gt; this.swizzle(item, WI.Recording.Swizzle.CallFrame));
&gt; 
&gt; That reads a bit worse (more confusing) IMO.

Actually, we should do this, as it will allow more things to be enqueued at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478551</commentid>
    <comment_count>5</comment_count>
      <attachid>354841</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-14 11:37:08 -0800</bug_when>
    <thetext>Created attachment 354841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478613</commentid>
    <comment_count>6</comment_count>
      <attachid>354841</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 14:03:21 -0800</bug_when>
    <thetext>Comment on attachment 354841
Patch

Clearing flags on attachment: 354841

Committed r238199: &lt;https://trac.webkit.org/changeset/238199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478614</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-14 14:03:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478616</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-14 14:04:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/46074620&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354787</attachid>
            <date>2018-11-14 03:02:05 -0800</date>
            <delta_ts>2018-11-14 11:37:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191628-20181114030204.patch</filename>
            <type>text/plain</type>
            <size>18605</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5NjI2Nzc3MWZmZjAxMmIxMGYwMjQzNDhjNzdlZThjOTVhMTM1ZmI2Li5h
ZTVjNDY1ZGZjMjI1N2ExYjRhMzE0NGFlOTU3MjkwM2RhZjhjN2Q1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTgtMTEtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbnZhczogc2VuZCBhIGNhbGwgc3RhY2sgd2l0
aCBlYWNoIGFjdGlvbiBpbnN0ZWFkIG9mIGFuIGFycmF5IG9mIGNhbGwgZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGV4aXN0aW5n
IHRlc3Q6IGluc3BlY3Rvci9tb2RlbC9yZWNvcmRpbmcuaHRtbAorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEluaXRpYWxTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAg
ICAgRHJpdmUtYnk6IHByZXZlbnQgZGUtZHVwbGljYXRlZCBvYmplY3RzIGZyb20gYmVpbmcgZGVz
dHJveWVkIHdoaWxlIHJlY29yZGluZy4KKwogMjAxOC0xMS0xMyAgQ2hhcmxpZSBUdXJuZXIgIDxj
dHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV1bR1N0cmVhbWVyXSBNYWtlIENETUlu
c3RhbmNlJ3MgYXZhaWxhYmxlIGluIGRlY3J5cHRvcnMsIGFuZCBmYWN0b3Igb3V0IHNvbWUgRU1F
IHV0aWxpdHkgY2xhc3Nlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM0MTk4YWU2NGU1
ODRjNWM0MmEwNzczMGJiZmNkZmI3ZDIxMWM2ZjQuLjBmNzc4NzljMDIyMjg4MzQ0NDJkMDhiYjcx
MzRhN2NjYjlmNmZkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE4LTExLTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHNlbmQgYSBjYWxsIHN0YWNrIHdpdGggZWFjaCBhY3Rp
b24gaW5zdGVhZCBvZiBhbiBhcnJheSBvZiBjYWxsIGZyYW1lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9SZWNv
cmRpbmcuanM6CisgICAgICAgIChXSS5SZWNvcmRpbmcucHJvdG90eXBlLmFzeW5jIHN3aXp6bGUp
OgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzOgor
ICAgICAgICAoV0kuUmVjb3JkaW5nQWN0aW9uLmZyb21QYXlsb2FkKToKKyAgICAgICAgKFdJLlJl
Y29yZGluZ0FjdGlvbi5wcm90b3R5cGUuYXN5bmMgc3dpenpsZSk6CisKIDIwMTgtMTEtMTIgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IE5ldHdvcms6IHNob3cgc2VjdXJlIGNlcnRpZmljYXRlIGRldGFpbHMgcGVyLXJlcXVlc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggYzY1MTdl
NmRiZGU5MTBmYjExZGQzNjc3OTljNzlhYWIyNjViZmE2YS4uZWE3MTBiY2MwYjc2MzBiYWMyYjk0
ZjZiM2QwYzcxNTcyOTg5NTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKQEAgLTY3LDEwICs2Nyw4IEBACiAjaW5jbHVkZSAiV2ViTWV0YWxSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2su
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAK
LQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpAQCAt
MzQzLDcgKzM0MSwxNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ2FudmFzOjpnZXRDYW52YXNDb250ZW50
QXNEYXRhVVJMKCkKIAogaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0
ZURhdGFWYXJpYW50IGRhdGEpCiB7Ci0gICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleGVkRHVwbGlj
YXRlRGF0YS5maW5kKGRhdGEpOworICAgIHNpemVfdCBpbmRleCA9IG1faW5kZXhlZER1cGxpY2F0
ZURhdGEuZmluZE1hdGNoaW5nKFsmXSAoYXV0byBpdGVtKSB7CisgICAgICAgIGlmIChkYXRhID09
IGl0ZW0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBhdXRvIHRyYWNlQSA9
IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+PihkYXRhKTsKKyAgICAgICAgYXV0
byB0cmFjZUIgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPj4oaXRlbSk7Cisg
ICAgICAgIGlmICh0cmFjZUEgJiYgKnRyYWNlQSAmJiB0cmFjZUIgJiYgKnRyYWNlQikKKyAgICAg
ICAgICAgIHJldHVybiAoKnRyYWNlQSktPmlzRXF1YWwoKCp0cmFjZUIpLmdldCgpKTsKKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CiAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKSB7
CiAgICAgICAgIEFTU0VSVChpbmRleCA8IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkp
OwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbmRleCk7CkBAIC0zNTQsNyArMzYy
LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJp
YW50IGRhdGEpCiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IGl0ZW07CiAgICAgV1RGOjpzd2l0
Y2hPbihkYXRhLAotICAgICAgICBbJl0gKGNvbnN0IEhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxl
bWVudCkgeworICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgaW1h
Z2VFbGVtZW50KSB7CiAgICAgICAgICAgICBTdHJpbmcgZGF0YVVSTCA9ICJkYXRhOiwiX3M7CiAK
ICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZUVsZW1lbnQt
PmNhY2hlZEltYWdlKCkpIHsKQEAgLTM2OSw3ICszNzcsNyBAQCBpbnQgSW5zcGVjdG9yQ2FudmFz
OjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICAgICAgICAgIGlu
ZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwogICAgICAgICB9LAogI2lmIEVOQUJMRShWSURF
TykKLSAgICAgICAgWyZdIChIVE1MVmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQpIHsKKyAgICAg
ICAgWyZdIChSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZpZGVvRWxlbWVudCkgewogICAgICAg
ICAgICAgU3RyaW5nIGRhdGFVUkwgPSAiZGF0YTosIl9zOwogCiAgICAgICAgICAgICB1bnNpZ25l
ZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52aWRlb1dpZHRoKCk7CkBAIC0zODMsNyArMzkx
LDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJp
YW50IGRhdGEpCiAgICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShkYXRhVVJMKTsKICAg
ICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0gKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXNF
bGVtZW50KSB7CisgICAgICAgIFsmXSAoUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiYgY2FudmFz
RWxlbWVudCkgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFVUkwgPSAiZGF0YTosIl9zOwogCiAg
ICAgICAgICAgICBFeGNlcHRpb25PcjxVbmNhY2hlZFN0cmluZz4gcmVzdWx0ID0gY2FudmFzRWxl
bWVudC0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwpAQCAtMzkyLDEyICs0MDAsMTggQEAgaW50
IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEp
CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwogICAgICAgICB9
LAotICAgICAgICBbJl0gKGNvbnN0IENhbnZhc0dyYWRpZW50KiBjYW52YXNHcmFkaWVudCkgeyBp
dGVtID0gYnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KCpjYW52YXNHcmFkaWVudCk7IH0sCi0g
ICAgICAgIFsmXSAoY29uc3QgQ2FudmFzUGF0dGVybiogY2FudmFzUGF0dGVybikgeyBpdGVtID0g
YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oKmNhbnZhc1BhdHRlcm4pOyB9LAotICAgICAgICBb
Jl0gKGNvbnN0IEltYWdlRGF0YSogaW1hZ2VEYXRhKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1h
Z2VEYXRhKCppbWFnZURhdGEpOyB9LAotICAgICAgICBbJl0gKEltYWdlQml0bWFwKiBpbWFnZUJp
dG1hcCkgeworICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNHcmFkaWVudD4mIGNhbnZh
c0dyYWRpZW50KSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoKmNhbnZhc0dy
YWRpZW50KTsgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGNh
bnZhc1BhdHRlcm4pIHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKCpjYW52YXNQ
YXR0ZXJuKTsgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1hZ2VEYXRhPiYgaW1hZ2VE
YXRhKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKCppbWFnZURhdGEpOyB9LAorICAg
ICAgICBbJl0gKFJlZlB0cjxJbWFnZUJpdG1hcD4mIGltYWdlQml0bWFwKSB7CiAgICAgICAgICAg
ICBpbmRleCA9IGluZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+YnVmZmVyKCktPnRvRGF0YVVSTCgi
aW1hZ2UvcG5nIikpOwogICAgICAgICB9LAorICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxTY3Jp
cHRDYWxsU3RhY2s+JiBzY3JpcHRDYWxsU3RhY2spIHsKKyAgICAgICAgICAgIGF1dG8gYXJyYXkg
PSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzY3JpcHRDYWxsU3RhY2stPnNpemUoKTsgKytpKQorICAgICAgICAgICAg
ICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzY3JpcHRDYWxsU3RhY2stPmF0KGkpKSk7
CisgICAgICAgICAgICBpdGVtID0gV1RGTW92ZShhcnJheSk7CisgICAgICAgIH0sCiAgICAgICAg
IFsmXSAoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBzY3JpcHRDYWxsRnJhbWUpIHsKICAgICAgICAg
ICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHNjcmlwdENhbGxGcmFtZS5mdW5jdGlv
bk5hbWUoKSkpOwpAQCAtNDg5LDE4ICs1MDMsMTggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFMK
IAogICAgICAgICAgICAgaW50IHN0cm9rZVN0eWxlSW5kZXg7CiAgICAgICAgICAgICBpZiAoYXV0
byBjYW52YXNHcmFkaWVudCA9IHN0YXRlLnN0cm9rZVN0eWxlLmNhbnZhc0dyYWRpZW50KCkpCi0g
ICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGVJbmRleCA9IGluZGV4Rm9yRGF0YShjYW52YXNHcmFk
aWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGVJbmRleCA9IGluZGV4Rm9y
RGF0YShjYW52YXNHcmFkaWVudCk7CiAgICAgICAgICAgICBlbHNlIGlmIChhdXRvIGNhbnZhc1Bh
dHRlcm4gPSBzdGF0ZS5zdHJva2VTdHlsZS5jYW52YXNQYXR0ZXJuKCkpCi0gICAgICAgICAgICAg
ICAgc3Ryb2tlU3R5bGVJbmRleCA9IGluZGV4Rm9yRGF0YShjYW52YXNQYXR0ZXJuLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBzdHJva2VTdHlsZUluZGV4ID0gaW5kZXhGb3JEYXRhKGNhbnZhc1Bh
dHRlcm4pOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0cm9rZVN0eWxlSW5k
ZXggPSBpbmRleEZvckRhdGEoc3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IoKSk7CiAgICAgICAgICAg
ICBzdGF0ZVBheWxvYWQtPnNldEludGVnZXIoc3RyaW5nSW5kZXhGb3JLZXkoInN0cm9rZVN0eWxl
Il9zKSwgc3Ryb2tlU3R5bGVJbmRleCk7CiAKICAgICAgICAgICAgIGludCBmaWxsU3R5bGVJbmRl
eDsKICAgICAgICAgICAgIGlmIChhdXRvIGNhbnZhc0dyYWRpZW50ID0gc3RhdGUuZmlsbFN0eWxl
LmNhbnZhc0dyYWRpZW50KCkpCi0gICAgICAgICAgICAgICAgZmlsbFN0eWxlSW5kZXggPSBpbmRl
eEZvckRhdGEoY2FudmFzR3JhZGllbnQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGZpbGxTdHls
ZUluZGV4ID0gaW5kZXhGb3JEYXRhKGNhbnZhc0dyYWRpZW50KTsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGF1dG8gY2FudmFzUGF0dGVybiA9IHN0YXRlLmZpbGxTdHlsZS5jYW52YXNQYXR0ZXJuKCkp
Ci0gICAgICAgICAgICAgICAgZmlsbFN0eWxlSW5kZXggPSBpbmRleEZvckRhdGEoY2FudmFzUGF0
dGVybi5nZXQoKSk7CisgICAgICAgICAgICAgICAgZmlsbFN0eWxlSW5kZXggPSBpbmRleEZvckRh
dGEoY2FudmFzUGF0dGVybik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmls
bFN0eWxlSW5kZXggPSBpbmRleEZvckRhdGEoc3RhdGUuZmlsbFN0eWxlLmNvbG9yKCkpOwogICAg
ICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXRJbnRlZ2VyKHN0cmluZ0luZGV4Rm9yS2V5KCJmaWxs
U3R5bGUiX3MpLCBmaWxsU3R5bGVJbmRleCk7CkBAIC01OTgsMTYgKzYxMiwxNiBAQCBSZWY8SlNP
Tjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rpb24oY29u
c3QgU3RyaW5nJiBuYW1lLAogI2VuZGlmCiAgICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxB
cnJheUJ1ZmZlcj4mKSB7IGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5
cGVkQXJyYXkpOyB9LAogICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8QXJyYXlCdWZmZXJW
aWV3PiYpIHsgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJh
eSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNHcmFkaWVudD4mIHZh
bHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUuZ2V0KCkpLCBSZWNvcmRpbmdT
d2l6emxlVHlwZXM6OkNhbnZhc0dyYWRpZW50KTsgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3Qg
UmVmUHRyPENhbnZhc1BhdHRlcm4+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRh
KHZhbHVlLmdldCgpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpDYW52YXNQYXR0ZXJuKTsgfSwK
KyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgdmFsdWUpIHsg
YWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
Q2FudmFzR3JhZGllbnQpOyB9LAorICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Q2FudmFz
UGF0dGVybj4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc1BhdHRlcm4pOyB9LAogICAgICAgICAgICAgWyZdIChj
b25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYpIHsgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3
aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0
cjxIVE1MQ2FudmFzRWxlbWVudD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEo
dmFsdWUuZ2V0KCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsgfSwKLSAgICAgICAg
ICAgIFsmXSAoY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiB2YWx1ZSkgeyBhZGRQYXJh
bWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlLmdldCgpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJ
bWFnZSk7IH0sCisgICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVu
dD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdT
d2l6emxlVHlwZXM6OkltYWdlKTsgfSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVl
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7IH0sCiAjaWYgRU5BQkxFKFZJREVPKQot
ICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZhbHVlKSB7
IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUuZ2V0KCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OkltYWdlKTsgfSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEhUTUxWaWRl
b0VsZW1lbnQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVj
b3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7IH0sCiAjZW5kaWYKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmUHRyPEltYWdlQml0bWFwPiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9y
RGF0YSh2YWx1ZS5nZXQoKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VCaXRtYXApOyB9
LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1hZ2VEYXRhPiYgdmFsdWUpIHsgYWRk
UGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZS5nZXQoKSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6SW1hZ2VEYXRhKTsgfSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlQml0
bWFwPiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlczo6SW1hZ2VCaXRtYXApOyB9LAorICAgICAgICAgICAgWyZdIChjb25zdCBS
ZWZQdHI8SW1hZ2VEYXRhPiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1
ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsgfSwKICAgICAgICAgICAgIFsm
XSAoY29uc3QgUmVmUHRyPEludDMyQXJyYXk+JikgeyBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpUeXBlZEFycmF5KTsgfSwKICAgICAgICAgICAgIFsmXSAoY29uc3QgVmVj
dG9yPGZsb2F0PiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGJ1aWxkQXJyYXlGb3JWZWN0b3IodmFs
dWUpLnB0cigpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkFycmF5KTsgfSwKICAgICAgICAgICAg
IFsmXSAoY29uc3QgVmVjdG9yPGludD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihidWlsZEFycmF5
Rm9yVmVjdG9yKHZhbHVlKS5wdHIoKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpBcnJheSk7IH0s
CkBAIC02MjUsMTEgKzYzOSw4IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5z
cGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsCiAgICAgYWN0aW9u
LT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsKICAgICBhY3Rpb24tPmFkZEl0ZW0o
V1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIGF1dG8gdHJhY2UgPSBKU09OOjpBcnJheU9m
PGRvdWJsZT46OmNyZWF0ZSgpOwotICAgIGF1dG8gc3RhY2tUcmFjZSA9IEluc3BlY3Rvcjo6Y3Jl
YXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJyZW50U3RhdGUoKSwgSW5zcGVjdG9y
OjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVUb0NhcHR1cmUpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFjZS0+c2l6ZSgpOyArK2kpCi0gICAgICAgIHRyYWNl
LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzdGFja1RyYWNlLT5hdChpKSkpOwotICAgIGFjdGlvbi0+
YWRkSXRlbShXVEZNb3ZlKHRyYWNlKSk7CisgICAgUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gdHJh
Y2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFjayhKU0V4ZWNTdGF0ZTo6Y3VycmVu
dFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrOjptYXhDYWxsU3RhY2tTaXplVG9D
YXB0dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUodHJhY2Up
KSk7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5oCmluZGV4IDJhYmM2M2Y2MjdiOTQzNmE1NDRlYjZjMDNjYjUwYTQzZGFm
ODQ3MjcuLmRiYWI2NDMzMzE5NzEzNjAxMjE3OTQyZWNkN2U2NWIyNGRkNmVmNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRDYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2su
aD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgyLDE1ICs4MywxNiBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBnZXRDYW52YXNDb250ZW50QXNEYXRhVVJMKCk7CiAKICAgICB1c2luZyBE
dXBsaWNhdGVEYXRhVmFyaWFudCA9IFZhcmlhbnQ8Ci0gICAgICAgIENhbnZhc0dyYWRpZW50KiwK
LSAgICAgICAgQ2FudmFzUGF0dGVybiosCi0gICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiwKLSAg
ICAgICAgSFRNTEltYWdlRWxlbWVudCosCisgICAgICAgIFJlZlB0cjxDYW52YXNHcmFkaWVudD4s
CisgICAgICAgIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiwKKyAgICAgICAgUmVmUHRyPEhUTUxDYW52
YXNFbGVtZW50PiwKKyAgICAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+LAogI2lmIEVOQUJM
RShWSURFTykKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVudCosCisgICAgICAgIFJlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiwKICNlbmRpZgotICAgICAgICBJbWFnZURhdGEqLAotICAgICAgICBJbWFn
ZUJpdG1hcCosCisgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+LAorICAgICAgICBSZWZQdHI8SW1h
Z2VCaXRtYXA+LAorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+LAog
ICAgICAgICBJbnNwZWN0b3I6OlNjcmlwdENhbGxGcmFtZSwKICAgICAgICAgU3RyaW5nCiAgICAg
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUmVjb3JkaW5nLmpzCmluZGV4IDk2ZThkMDZjMWNmNWJiMDc3YTNlNTZjYjA1MGU5OWNkZjgy
NmQwNDIuLjcyOTllZWRjYjQxYzdlNTBhNmM5NDhlYWUwYjRhYmY2MGE2MGQ2Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29y
ZGluZy5qcwpAQCAtMzEyLDYgKzMxMiwyOCBAQCBXSS5SZWNvcmRpbmcgPSBjbGFzcyBSZWNvcmRp
bmcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgdmFyIGltYWdlID0gYXdh
aXQgdGhpcy5zd2l6emxlKGluZGV4LCBXSS5SZWNvcmRpbmcuU3dpenpsZS5JbWFnZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX3N3aXp6bGVbaW5kZXhdW3R5cGVdID0gYXdhaXQgY3JlYXRl
SW1hZ2VCaXRtYXAoaW1hZ2UpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGNhc2UgV0kuUmVjb3JkaW5nLlN3aXp6bGUuQ2FsbFN0YWNrOgorICAgICAgICAg
ICAgICAgICAgICB2YXIgYXJyYXkgPSBhd2FpdCB0aGlzLnN3aXp6bGUoZGF0YSwgV0kuUmVjb3Jk
aW5nLlN3aXp6bGUuQXJyYXkpOworICAgICAgICAgICAgICAgICAgICB2YXIgY2FsbEZyYW1lcyA9
IFtdOworICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGFycmF5KQorICAgICAg
ICAgICAgICAgICAgICAgICAgY2FsbEZyYW1lcy5wdXNoKGF3YWl0IHRoaXMuc3dpenpsZShpdGVt
LCBXSS5SZWNvcmRpbmcuU3dpenpsZS5DYWxsRnJhbWUpKTsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5fc3dpenpsZVtpbmRleF1bdHlwZV0gPSBjYWxsRnJhbWVzOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgV0kuUmVjb3JkaW5nLlN3aXp6bGUu
Q2FsbEZyYW1lOgorICAgICAgICAgICAgICAgICAgICB2YXIgYXJyYXkgPSBhd2FpdCB0aGlzLnN3
aXp6bGUoZGF0YSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuQXJyYXkpOworICAgICAgICAgICAgICAg
ICAgICB2YXIgW2Z1bmN0aW9uTmFtZSwgdXJsXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpenpsZShhcnJheVswXSwgV0kuUmVjb3JkaW5nLlN3
aXp6bGUuU3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpenpsZShhcnJh
eVsxXSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuU3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAg
XSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N3aXp6bGVbaW5kZXhdW3R5cGVdID0gV0ku
Q2FsbEZyYW1lLmZyb21QYXlsb2FkKFdJLmFzc3VtaW5nTWFpblRhcmdldCgpLCB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICB1
cmwsCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBhcnJheVsyXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogYXJyYXlbM10sCisgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9IGNhdGNoIHsgfQogICAgICAgICB9CkBAIC00ODgsNCArNTEwLDggQEAg
V0kuUmVjb3JkaW5nLlN3aXp6bGUgPSB7CiAgICAgV2ViR0xQcm9ncmFtOiAxNywKICAgICBXZWJH
TFVuaWZvcm1Mb2NhdGlvbjogMTgsCiAgICAgSW1hZ2VCaXRtYXA6IDE5LAorCisgICAgLy8gU3Bl
Y2lhbCBmcm9udGVuZC1vbmx5IHN3aXp6bGUgdHlwZXMuCisgICAgQ2FsbFN0YWNrOiBTeW1ib2wo
IkNhbGxTdGFjayIpLAorICAgIENhbGxGcmFtZTogU3ltYm9sKCJDYWxsRnJhbWUiKSwKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVj
b3JkaW5nQWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1JlY29yZGluZ0FjdGlvbi5qcwppbmRleCA4MDEwMjA5NWE5YTdkYzY0ZDY3ZWZkNmUyYzg5
NjRmOWRhNWI0NTNkLi5lODNhNzEwY2M1NzFmM2RkNmY4MzFhODg3MTUxOGM0YmFiMThiMzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVj
b3JkaW5nQWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMKQEAgLTU3LDcgKzU3LDcgQEAgV0kuUmVjb3JkaW5n
QWN0aW9uID0gY2xhc3MgUmVjb3JkaW5nQWN0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAv
LyBTdGF0aWMKIAotICAgIC8vIFBheWxvYWQgZm9ybWF0OiBbbmFtZSwgcGFyYW1ldGVycywgc3dp
enpsZVR5cGVzLCB0cmFjZSwgW3NuYXBzaG90XV0KKyAgICAvLyBQYXlsb2FkIGZvcm1hdDogKG5h
bWUsIHBhcmFtZXRlcnMsIHN3aXp6bGVUeXBlcywgW3RyYWNlLCBbc25hcHNob3RdXSkKICAgICBz
dGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKICAgICB7CiAgICAgICAgIGlmICghQXJyYXkuaXNB
cnJheShwYXlsb2FkKSkKQEAgLTcyLDggKzcyLDExIEBAIFdJLlJlY29yZGluZ0FjdGlvbiA9IGNs
YXNzIFJlY29yZGluZ0FjdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIUFycmF5
LmlzQXJyYXkocGF5bG9hZFsyXSkpCiAgICAgICAgICAgICBwYXlsb2FkWzJdID0gW107CiAKLSAg
ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBheWxvYWRbM10pKQotICAgICAgICAgICAgcGF5bG9h
ZFszXSA9IFtdOworICAgICAgICBpZiAoaXNOYU4ocGF5bG9hZFszXSkgfHwgKCFwYXlsb2FkWzNd
ICYmIHBheWxvYWRbM10gIT09IDApKSB7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgMTIuMSk6ICJ0cmFjZSIgd2FzIHNlbnQgYXMgYW4gYXJyYXkgb2YgY2FsbCBmcmFtZXMgaW5z
dGVhZCBvZiBhIHNpbmdsZSBjYWxsIHN0YWNrCisgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJy
YXkocGF5bG9hZFszXSkpCisgICAgICAgICAgICAgICAgcGF5bG9hZFszXSA9IFtdOworICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoID49IDUgJiYgaXNOYU4ocGF5bG9hZFs0
XSkpCiAgICAgICAgICAgICBwYXlsb2FkWzRdID0gLTE7CkBAIC0yNjIsMjUgKzI2NSwxOCBAQCBX
SS5SZWNvcmRpbmdBY3Rpb24gPSBjbGFzcyBSZWNvcmRpbmdBY3Rpb24gZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgICAgIHJldHVybiByZWNvcmRpbmcuc3dpenpsZShpdGVtLCB0aGlzLl9wYXls
b2FkU3dpenpsZVR5cGVzW2luZGV4XSk7CiAgICAgICAgIH07CiAKLSAgICAgICAgbGV0IHN3aXp6
bGVDYWxsRnJhbWUgPSBhc3luYyAoaXRlbSwgaW5kZXgpID0+IHsKLSAgICAgICAgICAgIGxldCBh
cnJheSA9IGF3YWl0IHJlY29yZGluZy5zd2l6emxlKGl0ZW0sIFdJLlJlY29yZGluZy5Td2l6emxl
Lk5vbmUpOwotICAgICAgICAgICAgbGV0IFtmdW5jdGlvbk5hbWUsIHVybF0gPSBhd2FpdCBQcm9t
aXNlLmFsbChbCi0gICAgICAgICAgICAgICAgcmVjb3JkaW5nLnN3aXp6bGUoYXJyYXlbMF0sIFdJ
LlJlY29yZGluZy5Td2l6emxlLlN0cmluZyksCi0gICAgICAgICAgICAgICAgcmVjb3JkaW5nLnN3
aXp6bGUoYXJyYXlbMV0sIFdJLlJlY29yZGluZy5Td2l6emxlLlN0cmluZyksCi0gICAgICAgICAg
ICBdKTsKLSAgICAgICAgICAgIHJldHVybiBXSS5DYWxsRnJhbWUuZnJvbVBheWxvYWQoV0kubWFp
blRhcmdldCwgewotICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgICAg
ICB1cmwsCi0gICAgICAgICAgICAgICAgbGluZU51bWJlcjogYXJyYXlbMl0sCi0gICAgICAgICAg
ICAgICAgY29sdW1uTnVtYmVyOiBhcnJheVszXSwKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
OwotCiAgICAgICAgIGxldCBzd2l6emxlUHJvbWlzZXMgPSBbCiAgICAgICAgICAgICByZWNvcmRp
bmcuc3dpenpsZSh0aGlzLl9wYXlsb2FkTmFtZSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuU3RyaW5n
KSwKICAgICAgICAgICAgIFByb21pc2UuYWxsKHRoaXMuX3BheWxvYWRQYXJhbWV0ZXJzLm1hcChz
d2l6emxlUGFyYW1ldGVyKSksCi0gICAgICAgICAgICBQcm9taXNlLmFsbCh0aGlzLl9wYXlsb2Fk
VHJhY2UubWFwKHN3aXp6bGVDYWxsRnJhbWUpKSwKICAgICAgICAgXTsKKworICAgICAgICBpZiAo
IWlzTmFOKHRoaXMuX3BheWxvYWRUcmFjZSkpCisgICAgICAgICAgICBzd2l6emxlUHJvbWlzZXMu
cHVzaChyZWNvcmRpbmcuc3dpenpsZSh0aGlzLl9wYXlsb2FkVHJhY2UsIFdJLlJlY29yZGluZy5T
d2l6emxlLkNhbGxTdGFjaykpCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDEyLjEpOiAidHJhY2UiIHdhcyBzZW50IGFzIGFuIGFycmF5IG9mIGNhbGwg
ZnJhbWVzIGluc3RlYWQgb2YgYSBzaW5nbGUgY2FsbCBzdGFjaworICAgICAgICAgICAgc3dpenps
ZVByb21pc2VzLnB1c2goUHJvbWlzZS5hbGwodGhpcy5fcGF5bG9hZFRyYWNlLm1hcCgoaXRlbSkg
PT4gcmVjb3JkaW5nLnN3aXp6bGUoaXRlbSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuQ2FsbEZyYW1l
KSkpKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0aGlzLl9wYXlsb2FkU25hcHNob3QgPj0g
MCkKICAgICAgICAgICAgIHN3aXp6bGVQcm9taXNlcy5wdXNoKHJlY29yZGluZy5zd2l6emxlKHRo
aXMuX3BheWxvYWRTbmFwc2hvdCwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuU3RyaW5nKSk7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBhMTZmMGIwMGY4MTU4NGEzYTEyZTZlNzNiMzU3ODQ3MTdmOTg4MjVkLi44ZjVhNDg4ODJk
MDA2NTc1NGMwZDA2M2U4OTU2NDYwMzEwZWZkMmJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTgtMTEtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IENhbnZhczogc2VuZCBhIGNhbGwgc3RhY2sgd2l0aCBlYWNoIGFjdGlvbiBp
bnN0ZWFkIG9mIGFuIGFycmF5IG9mIGNhbGwgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2MjgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9tb2RlbC9yZWNvcmRpbmcuaHRt
bDoKKwogMjAxOC0xMS0xMiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWIgQW5pbWF0aW9uc10gRG9uJ3Qgc2NoZWR1bGUgYW5pbWF0aW9uIGZyYW1lcyBv
ciB1cGRhdGUgc3R5bGUgd2hpbGUgYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGlzIHJ1bm5pbmcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZWNvcmRpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlY29yZGluZy1leHBlY3RlZC50
eHQKaW5kZXggNmVhNzIwZDYxODMwZTk5YTkwYzk4NzgzMmMwMzA0NzMyNTI3M2YwOC4uOGNjZWM4
MmU1ZTliYWNiMjBkMzU4ZjFiOGZiZmM4MzE0YmVmYTZmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3JlY29yZGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3JlY29yZGluZy1leHBlY3RlZC50eHQKQEAgLTE2MCw5ICsxNjAs
NyBAQCBudWxsCiAgICAgICAgICAgWwogICAgICAgICAgICAgMAogICAgICAgICAgIF0sCi0gICAg
ICAgICAgWwotICAgICAgICAgICAgMAotICAgICAgICAgIF0KKyAgICAgICAgICAwCiAgICAgICAg
IF0KICAgICAgIF0sCiAgICAgICAiZHVyYXRpb24iOiAxLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3JlY29yZGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L21vZGVsL3JlY29yZGluZy5odG1sCmluZGV4IDZlZTY5NzBjZmE2OGJjNDA4ZWZjNGQyZGRlN2Nj
ZWM1MDlmNDUyMzYuLjU5ODEyMzI2Y2Q0ZDlhNDgxZmUzMzRjOWFlMTJlZmM3YmM2NzQxYTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZWNvcmRpbmcuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLmh0bWwKQEAgLTE2OCw3ICsx
NjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzBdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsw
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGR1cmF0aW9uOiAxLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354841</attachid>
            <date>2018-11-14 11:37:08 -0800</date>
            <delta_ts>2018-11-14 14:03:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191628-20181114113708.patch</filename>
            <type>text/plain</type>
            <size>18445</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTFmNGJjNjE2ZTVhZGNjNWNmMDIzOWUzMzM2ZDc0Mzk0YjE1ZjMxLi45
NjE4NmM5NjUxNjIwMTZiNGUzNWRmYjc4MzJkN2QyODRjY2ZhYzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTgtMTEtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbnZhczogc2VuZCBhIGNhbGwgc3RhY2sgd2l0
aCBlYWNoIGFjdGlvbiBpbnN0ZWFkIG9mIGFuIGFycmF5IG9mIGNhbGwgZnJhbWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE2MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgVXBkYXRlZCBleGlzdGluZyB0
ZXN0OiBpbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0aWFsU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbik6CisgICAgICAg
IERyaXZlLWJ5OiBwcmV2ZW50IGRlLWR1cGxpY2F0ZWQgb2JqZWN0cyBmcm9tIGJlaW5nIGRlc3Ry
b3llZCB3aGlsZSByZWNvcmRpbmcuCisKIDIwMTgtMTEtMTQgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW2N1cmxdIFVuaWZ5IENvb2tpZUphckN1
cmxEYXRhYmFzZSBhbmQgdGhlIGFic3RyYWN0IGNsYXNzIENvb2tpZUphckN1cmwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCmluZGV4IGNkY2I0NDQ0NWQyODYxNGExNDhhMjNhZDA2MDRmYTRiYzdkNGYy
NWIuLmY3Yzc5ZmEyOTQxN2IyM2QyMGY5YTkyNDZmNGU2NmEyYmU5ZTg2ZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTExLTE0ICBEZXZpbiBSb3Vzc28g
IDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHNl
bmQgYSBjYWxsIHN0YWNrIHdpdGggZWFjaCBhY3Rpb24gaW5zdGVhZCBvZiBhbiBhcnJheSBvZiBj
YWxsIGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkxNjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzOgorICAgICAgICAoV0kuUmVjb3Jk
aW5nLnByb3RvdHlwZS5hc3luYyBzd2l6emxlKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qczoKKyAgICAgICAgKFdJLlJlY29yZGluZ0FjdGlvbi5m
cm9tUGF5bG9hZCk6CisgICAgICAgIChXSS5SZWNvcmRpbmdBY3Rpb24ucHJvdG90eXBlLmFzeW5j
IHN3aXp6bGUpOgorCiAyMDE4LTExLTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IGRvbid0IHN0YXJ0IHdpdGggYXV0
by1jYXB0dXJlIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAKaW5kZXggYzY1MTdlNmRiZGU5MTBmYjExZGQzNjc3OTljNzlhYWIyNjViZmE2YS4u
ZWE3MTBiY2MwYjc2MzBiYWMyYjk0ZjZiM2QwYzcxNTcyOTg5NTQ4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTY3LDEwICs2Nyw4IEBACiAj
aW5jbHVkZSAiV2ViTWV0YWxSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5Lmg+CiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwpAQCAtMzQzLDcgKzM0MSwxNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ2Fu
dmFzOjpnZXRDYW52YXNDb250ZW50QXNEYXRhVVJMKCkKIAogaW50IEluc3BlY3RvckNhbnZhczo6
aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiB7Ci0gICAgc2l6ZV90IGlu
ZGV4ID0gbV9pbmRleGVkRHVwbGljYXRlRGF0YS5maW5kKGRhdGEpOworICAgIHNpemVfdCBpbmRl
eCA9IG1faW5kZXhlZER1cGxpY2F0ZURhdGEuZmluZE1hdGNoaW5nKFsmXSAoYXV0byBpdGVtKSB7
CisgICAgICAgIGlmIChkYXRhID09IGl0ZW0pCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICBhdXRvIHRyYWNlQSA9IFdURjo6Z2V0X2lmPFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+
PihkYXRhKTsKKyAgICAgICAgYXV0byB0cmFjZUIgPSBXVEY6OmdldF9pZjxSZWZQdHI8U2NyaXB0
Q2FsbFN0YWNrPj4oaXRlbSk7CisgICAgICAgIGlmICh0cmFjZUEgJiYgKnRyYWNlQSAmJiB0cmFj
ZUIgJiYgKnRyYWNlQikKKyAgICAgICAgICAgIHJldHVybiAoKnRyYWNlQSktPmlzRXF1YWwoKCp0
cmFjZUIpLmdldCgpKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSk7CiAgICAgaWYg
KGluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIEFTU0VSVChpbmRleCA8IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihp
bmRleCk7CkBAIC0zNTQsNyArMzYyLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JE
YXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+
IGl0ZW07CiAgICAgV1RGOjpzd2l0Y2hPbihkYXRhLAotICAgICAgICBbJl0gKGNvbnN0IEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCkgeworICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxI
VE1MSW1hZ2VFbGVtZW50PiYgaW1hZ2VFbGVtZW50KSB7CiAgICAgICAgICAgICBTdHJpbmcgZGF0
YVVSTCA9ICJkYXRhOiwiX3M7CiAKICAgICAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSBpbWFnZUVsZW1lbnQtPmNhY2hlZEltYWdlKCkpIHsKQEAgLTM2OSw3ICszNzcsNyBA
QCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQg
ZGF0YSkKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwogICAgICAg
ICB9LAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgWyZdIChIVE1MVmlkZW9FbGVtZW50KiB2
aWRlb0VsZW1lbnQpIHsKKyAgICAgICAgWyZdIChSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZp
ZGVvRWxlbWVudCkgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFVUkwgPSAiZGF0YTosIl9zOwog
CiAgICAgICAgICAgICB1bnNpZ25lZCB2aWRlb1dpZHRoID0gdmlkZW9FbGVtZW50LT52aWRlb1dp
ZHRoKCk7CkBAIC0zODMsNyArMzkxLDcgQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JE
YXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAgICAgICAgICAgICBpbmRleCA9IGluZGV4
Rm9yRGF0YShkYXRhVVJMKTsKICAgICAgICAgfSwKICNlbmRpZgotICAgICAgICBbJl0gKEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXNFbGVtZW50KSB7CisgICAgICAgIFsmXSAoUmVmUHRyPEhUTUxD
YW52YXNFbGVtZW50PiYgY2FudmFzRWxlbWVudCkgewogICAgICAgICAgICAgU3RyaW5nIGRhdGFV
UkwgPSAiZGF0YTosIl9zOwogCiAgICAgICAgICAgICBFeGNlcHRpb25PcjxVbmNhY2hlZFN0cmlu
Zz4gcmVzdWx0ID0gY2FudmFzRWxlbWVudC0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwpAQCAt
MzkyLDEyICs0MDAsMTggQEAgaW50IEluc3BlY3RvckNhbnZhczo6aW5kZXhGb3JEYXRhKER1cGxp
Y2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRh
KGRhdGFVUkwpOwogICAgICAgICB9LAotICAgICAgICBbJl0gKGNvbnN0IENhbnZhc0dyYWRpZW50
KiBjYW52YXNHcmFkaWVudCkgeyBpdGVtID0gYnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KCpj
YW52YXNHcmFkaWVudCk7IH0sCi0gICAgICAgIFsmXSAoY29uc3QgQ2FudmFzUGF0dGVybiogY2Fu
dmFzUGF0dGVybikgeyBpdGVtID0gYnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oKmNhbnZhc1Bh
dHRlcm4pOyB9LAotICAgICAgICBbJl0gKGNvbnN0IEltYWdlRGF0YSogaW1hZ2VEYXRhKSB7IGl0
ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKCppbWFnZURhdGEpOyB9LAotICAgICAgICBbJl0g
KEltYWdlQml0bWFwKiBpbWFnZUJpdG1hcCkgeworICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxD
YW52YXNHcmFkaWVudD4mIGNhbnZhc0dyYWRpZW50KSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9yQ2Fu
dmFzR3JhZGllbnQoKmNhbnZhc0dyYWRpZW50KTsgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWZQ
dHI8Q2FudmFzUGF0dGVybj4mIGNhbnZhc1BhdHRlcm4pIHsgaXRlbSA9IGJ1aWxkQXJyYXlGb3JD
YW52YXNQYXR0ZXJuKCpjYW52YXNQYXR0ZXJuKTsgfSwKKyAgICAgICAgWyZdIChjb25zdCBSZWZQ
dHI8SW1hZ2VEYXRhPiYgaW1hZ2VEYXRhKSB7IGl0ZW0gPSBidWlsZEFycmF5Rm9ySW1hZ2VEYXRh
KCppbWFnZURhdGEpOyB9LAorICAgICAgICBbJl0gKFJlZlB0cjxJbWFnZUJpdG1hcD4mIGltYWdl
Qml0bWFwKSB7CiAgICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShpbWFnZUJpdG1hcC0+
YnVmZmVyKCktPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIikpOwogICAgICAgICB9LAorICAgICAgICBb
Jl0gKGNvbnN0IFJlZlB0cjxTY3JpcHRDYWxsU3RhY2s+JiBzY3JpcHRDYWxsU3RhY2spIHsKKyAg
ICAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzY3JpcHRDYWxsU3RhY2stPnNpemUo
KTsgKytpKQorICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzY3Jp
cHRDYWxsU3RhY2stPmF0KGkpKSk7CisgICAgICAgICAgICBpdGVtID0gV1RGTW92ZShhcnJheSk7
CisgICAgICAgIH0sCiAgICAgICAgIFsmXSAoY29uc3QgU2NyaXB0Q2FsbEZyYW1lJiBzY3JpcHRD
YWxsRnJhbWUpIHsKICAgICAgICAgICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJs
ZT46OmNyZWF0ZSgpOwogICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKHNj
cmlwdENhbGxGcmFtZS5mdW5jdGlvbk5hbWUoKSkpOwpAQCAtNDg5LDE4ICs1MDMsMTggQEAgUmVm
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JD
YW52YXM6OmJ1aWxkSW5pdGlhbFMKIAogICAgICAgICAgICAgaW50IHN0cm9rZVN0eWxlSW5kZXg7
CiAgICAgICAgICAgICBpZiAoYXV0byBjYW52YXNHcmFkaWVudCA9IHN0YXRlLnN0cm9rZVN0eWxl
LmNhbnZhc0dyYWRpZW50KCkpCi0gICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGVJbmRleCA9IGlu
ZGV4Rm9yRGF0YShjYW52YXNHcmFkaWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgc3Ryb2tl
U3R5bGVJbmRleCA9IGluZGV4Rm9yRGF0YShjYW52YXNHcmFkaWVudCk7CiAgICAgICAgICAgICBl
bHNlIGlmIChhdXRvIGNhbnZhc1BhdHRlcm4gPSBzdGF0ZS5zdHJva2VTdHlsZS5jYW52YXNQYXR0
ZXJuKCkpCi0gICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGVJbmRleCA9IGluZGV4Rm9yRGF0YShj
YW52YXNQYXR0ZXJuLmdldCgpKTsKKyAgICAgICAgICAgICAgICBzdHJva2VTdHlsZUluZGV4ID0g
aW5kZXhGb3JEYXRhKGNhbnZhc1BhdHRlcm4pOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIHN0cm9rZVN0eWxlSW5kZXggPSBpbmRleEZvckRhdGEoc3RhdGUuc3Ryb2tlU3R5bGUu
Y29sb3IoKSk7CiAgICAgICAgICAgICBzdGF0ZVBheWxvYWQtPnNldEludGVnZXIoc3RyaW5nSW5k
ZXhGb3JLZXkoInN0cm9rZVN0eWxlIl9zKSwgc3Ryb2tlU3R5bGVJbmRleCk7CiAKICAgICAgICAg
ICAgIGludCBmaWxsU3R5bGVJbmRleDsKICAgICAgICAgICAgIGlmIChhdXRvIGNhbnZhc0dyYWRp
ZW50ID0gc3RhdGUuZmlsbFN0eWxlLmNhbnZhc0dyYWRpZW50KCkpCi0gICAgICAgICAgICAgICAg
ZmlsbFN0eWxlSW5kZXggPSBpbmRleEZvckRhdGEoY2FudmFzR3JhZGllbnQuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGZpbGxTdHlsZUluZGV4ID0gaW5kZXhGb3JEYXRhKGNhbnZhc0dyYWRpZW50
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gY2FudmFzUGF0dGVybiA9IHN0YXRlLmZpbGxT
dHlsZS5jYW52YXNQYXR0ZXJuKCkpCi0gICAgICAgICAgICAgICAgZmlsbFN0eWxlSW5kZXggPSBp
bmRleEZvckRhdGEoY2FudmFzUGF0dGVybi5nZXQoKSk7CisgICAgICAgICAgICAgICAgZmlsbFN0
eWxlSW5kZXggPSBpbmRleEZvckRhdGEoY2FudmFzUGF0dGVybik7CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgZmlsbFN0eWxlSW5kZXggPSBpbmRleEZvckRhdGEoc3RhdGUuZmls
bFN0eWxlLmNvbG9yKCkpOwogICAgICAgICAgICAgc3RhdGVQYXlsb2FkLT5zZXRJbnRlZ2VyKHN0
cmluZ0luZGV4Rm9yS2V5KCJmaWxsU3R5bGUiX3MpLCBmaWxsU3R5bGVJbmRleCk7CkBAIC01OTgs
MTYgKzYxMiwxNiBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNh
bnZhczo6YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLAogI2VuZGlmCiAgICAgICAgICAg
ICBbJl0gKGNvbnN0IFJlZlB0cjxBcnJheUJ1ZmZlcj4mKSB7IGFkZFBhcmFtZXRlcigwLCBSZWNv
cmRpbmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOyB9LAogICAgICAgICAgICAgWyZdIChjb25z
dCBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiYpIHsgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3
aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0
cjxDYW52YXNHcmFkaWVudD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFs
dWUuZ2V0KCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc0dyYWRpZW50KTsgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPENhbnZhc1BhdHRlcm4+JiB2YWx1ZSkgeyBhZGRQ
YXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlLmdldCgpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVz
OjpDYW52YXNQYXR0ZXJuKTsgfSwKKyAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPENhbnZh
c0dyYWRpZW50PiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlczo6Q2FudmFzR3JhZGllbnQpOyB9LAorICAgICAgICAgICAgWyZd
IChjb25zdCBSZWZQdHI8Q2FudmFzUGF0dGVybj4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc1BhdHRlcm4pOyB9
LAogICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8RmxvYXQzMkFycmF5PiYpIHsgYWRkUGFy
YW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7IH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIHZhbHVlKSB7IGFkZFBh
cmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUuZ2V0KCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6
OkltYWdlKTsgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlLmdldCgpKSwgUmVj
b3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7IH0sCisgICAgICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxIVE1MQ2FudmFzRWxlbWVudD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRh
dGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsgfSwKKyAgICAgICAgICAg
IFsmXSAoY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0
ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7IH0s
CiAjaWYgRU5BQkxFKFZJREVPKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SFRNTFZp
ZGVvRWxlbWVudD4mIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUuZ2V0
KCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsgfSwKKyAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5k
ZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7IH0sCiAjZW5k
aWYKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlQml0bWFwPiYgdmFsdWUpIHsg
YWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZS5nZXQoKSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlczo6SW1hZ2VCaXRtYXApOyB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1h
Z2VEYXRhPiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZS5nZXQoKSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsgfSwKKyAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmUHRyPEltYWdlQml0bWFwPiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9y
RGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VCaXRtYXApOyB9LAorICAg
ICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SW1hZ2VEYXRhPiYgdmFsdWUpIHsgYWRkUGFyYW1l
dGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRh
KTsgfSwKICAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEludDMyQXJyYXk+JikgeyBhZGRQ
YXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpUeXBlZEFycmF5KTsgfSwKICAgICAg
ICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGJ1
aWxkQXJyYXlGb3JWZWN0b3IodmFsdWUpLnB0cigpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkFy
cmF5KTsgfSwKICAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPGludD4mIHZhbHVlKSB7IGFk
ZFBhcmFtZXRlcihidWlsZEFycmF5Rm9yVmVjdG9yKHZhbHVlKS5wdHIoKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGVzOjpBcnJheSk7IH0sCkBAIC02MjUsMTEgKzYzOSw4IEBAIFJlZjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihjb25zdCBTdHJp
bmcmIG5hbWUsCiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUocGFyYW1ldGVyc0RhdGEpKTsK
ICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShzd2l6emxlVHlwZXMpKTsKIAotICAgIGF1dG8g
dHJhY2UgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwotICAgIGF1dG8gc3RhY2tU
cmFjZSA9IEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0Q2FsbFN0YWNrKEpTRXhlY1N0YXRlOjpjdXJy
ZW50U3RhdGUoKSwgSW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s6Om1heENhbGxTdGFja1NpemVU
b0NhcHR1cmUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2tUcmFjZS0+c2l6ZSgp
OyArK2kpCi0gICAgICAgIHRyYWNlLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShzdGFja1RyYWNlLT5h
dChpKSkpOwotICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHRyYWNlKSk7CisgICAgUmVmUHRy
PFNjcmlwdENhbGxTdGFjaz4gdHJhY2UgPSBJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdENhbGxTdGFj
ayhKU0V4ZWNTdGF0ZTo6Y3VycmVudFN0YXRlKCksIEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
OjptYXhDYWxsU3RhY2tTaXplVG9DYXB0dXJlKTsKKyAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhG
b3JEYXRhKFdURk1vdmUodHJhY2UpKSk7CiAKICAgICByZXR1cm4gYWN0aW9uOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCmluZGV4IDJhYmM2M2Y2MjdiOTQz
NmE1NDRlYjZjMDNjYjUwYTQzZGFmODQ3MjcuLmRiYWI2NDMzMzE5NzEzNjAxMjE3OTQyZWNkN2U2
NWIyNGRkNmVmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsRnJhbWUuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTgy
LDE1ICs4MywxNiBAQCBwcml2YXRlOgogICAgIFN0cmluZyBnZXRDYW52YXNDb250ZW50QXNEYXRh
VVJMKCk7CiAKICAgICB1c2luZyBEdXBsaWNhdGVEYXRhVmFyaWFudCA9IFZhcmlhbnQ8Ci0gICAg
ICAgIENhbnZhc0dyYWRpZW50KiwKLSAgICAgICAgQ2FudmFzUGF0dGVybiosCi0gICAgICAgIEhU
TUxDYW52YXNFbGVtZW50KiwKLSAgICAgICAgSFRNTEltYWdlRWxlbWVudCosCisgICAgICAgIFJl
ZlB0cjxDYW52YXNHcmFkaWVudD4sCisgICAgICAgIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiwKKyAg
ICAgICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwKKyAgICAgICAgUmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+LAogI2lmIEVOQUJMRShWSURFTykKLSAgICAgICAgSFRNTFZpZGVvRWxlbWVudCos
CisgICAgICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiwKICNlbmRpZgotICAgICAgICBJbWFn
ZURhdGEqLAotICAgICAgICBJbWFnZUJpdG1hcCosCisgICAgICAgIFJlZlB0cjxJbWFnZURhdGE+
LAorICAgICAgICBSZWZQdHI8SW1hZ2VCaXRtYXA+LAorICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpTY3JpcHRDYWxsU3RhY2s+LAogICAgICAgICBJbnNwZWN0b3I6OlNjcmlwdENhbGxGcmFtZSwK
ICAgICAgICAgU3RyaW5nCiAgICAgPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzCmluZGV4IDk2ZThkMDZjMWNmNWJi
MDc3YTNlNTZjYjA1MGU5OWNkZjgyNmQwNDIuLmQwNWYxMDQxNTVkMDMxYjlhZDNkNTJhMDhjMmQ4
OThjNzZhZGI0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SZWNvcmRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcwpAQCAtMzEyLDYgKzMxMiwyNyBAQCBXSS5SZWNv
cmRpbmcgPSBjbGFzcyBSZWNvcmRpbmcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICAgICAgdmFyIGltYWdlID0gYXdhaXQgdGhpcy5zd2l6emxlKGluZGV4LCBXSS5SZWNvcmRpbmcu
U3dpenpsZS5JbWFnZSk7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N3aXp6bGVbaW5kZXhd
W3R5cGVdID0gYXdhaXQgY3JlYXRlSW1hZ2VCaXRtYXAoaW1hZ2UpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgV0kuUmVjb3JkaW5nLlN3aXp6bGUu
Q2FsbFN0YWNrOiB7CisgICAgICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IGF3YWl0IHRoaXMu
c3dpenpsZShkYXRhLCBXSS5SZWNvcmRpbmcuU3dpenpsZS5BcnJheSk7CisgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3N3aXp6bGVbaW5kZXhdW3R5cGVdID0gYXdhaXQgUHJvbWlzZS5hbGwoYXJy
YXkubWFwKChpdGVtKSA9PiB0aGlzLnN3aXp6bGUoaXRlbSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUu
Q2FsbEZyYW1lKSkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIFdJLlJlY29yZGluZy5Td2l6emxlLkNhbGxGcmFt
ZTogeworICAgICAgICAgICAgICAgICAgICBsZXQgYXJyYXkgPSBhd2FpdCB0aGlzLnN3aXp6bGUo
ZGF0YSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUuQXJyYXkpOworICAgICAgICAgICAgICAgICAgICBs
ZXQgW2Z1bmN0aW9uTmFtZSwgdXJsXSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuc3dpenpsZShhcnJheVswXSwgV0kuUmVjb3JkaW5nLlN3aXp6bGUu
U3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3dpenpsZShhcnJheVsxXSwg
V0kuUmVjb3JkaW5nLlN3aXp6bGUuU3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgXSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuX3N3aXp6bGVbaW5kZXhdW3R5cGVdID0gV0kuQ2FsbEZy
YW1lLmZyb21QYXlsb2FkKFdJLmFzc3VtaW5nTWFpblRhcmdldCgpLCB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBhcnJheVsyXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogYXJyYXlbM10sCisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBjYXRjaCB7IH0KICAgICAgICAgfQpAQCAtNDg4
LDQgKzUwOSw4IEBAIFdJLlJlY29yZGluZy5Td2l6emxlID0gewogICAgIFdlYkdMUHJvZ3JhbTog
MTcsCiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb246IDE4LAogICAgIEltYWdlQml0bWFwOiAxOSwK
KworICAgIC8vIFNwZWNpYWwgZnJvbnRlbmQtb25seSBzd2l6emxlIHR5cGVzLgorICAgIENhbGxT
dGFjazogU3ltYm9sKCJDYWxsU3RhY2siKSwKKyAgICBDYWxsRnJhbWU6IFN5bWJvbCgiQ2FsbEZy
YW1lIiksCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMKaW5kZXggODAxMDIwOTVhOWE3ZGM2
NGQ2N2VmZDZlMmM4OTY0ZjlkYTViNDUzZC4uZTgzYTcxMGNjNTcxZjNkZDZmODMxYTg4NzE1MThj
NGJhYjE4YjMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzCkBAIC01Nyw3ICs1Nyw3IEBA
IFdJLlJlY29yZGluZ0FjdGlvbiA9IGNsYXNzIFJlY29yZGluZ0FjdGlvbiBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgLy8gU3RhdGljCiAKLSAgICAvLyBQYXlsb2FkIGZvcm1hdDogW25hbWUsIHBh
cmFtZXRlcnMsIHN3aXp6bGVUeXBlcywgdHJhY2UsIFtzbmFwc2hvdF1dCisgICAgLy8gUGF5bG9h
ZCBmb3JtYXQ6IChuYW1lLCBwYXJhbWV0ZXJzLCBzd2l6emxlVHlwZXMsIFt0cmFjZSwgW3NuYXBz
aG90XV0pCiAgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCiAgICAgewogICAgICAgICBp
ZiAoIUFycmF5LmlzQXJyYXkocGF5bG9hZCkpCkBAIC03Miw4ICs3MiwxMSBAQCBXSS5SZWNvcmRp
bmdBY3Rpb24gPSBjbGFzcyBSZWNvcmRpbmdBY3Rpb24gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgaWYgKCFBcnJheS5pc0FycmF5KHBheWxvYWRbMl0pKQogICAgICAgICAgICAgcGF5bG9hZFsy
XSA9IFtdOwogCi0gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYXlsb2FkWzNdKSkKLSAgICAg
ICAgICAgIHBheWxvYWRbM10gPSBbXTsKKyAgICAgICAgaWYgKGlzTmFOKHBheWxvYWRbM10pIHx8
ICghcGF5bG9hZFszXSAmJiBwYXlsb2FkWzNdICE9PSAwKSkgeworICAgICAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDEyLjEpOiAidHJhY2UiIHdhcyBzZW50IGFzIGFuIGFycmF5IG9mIGNh
bGwgZnJhbWVzIGluc3RlYWQgb2YgYSBzaW5nbGUgY2FsbCBzdGFjaworICAgICAgICAgICAgaWYg
KCFBcnJheS5pc0FycmF5KHBheWxvYWRbM10pKQorICAgICAgICAgICAgICAgIHBheWxvYWRbM10g
PSBbXTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChwYXlsb2FkLmxlbmd0aCA+PSA1ICYmIGlz
TmFOKHBheWxvYWRbNF0pKQogICAgICAgICAgICAgcGF5bG9hZFs0XSA9IC0xOwpAQCAtMjYyLDI1
ICsyNjUsMTggQEAgV0kuUmVjb3JkaW5nQWN0aW9uID0gY2xhc3MgUmVjb3JkaW5nQWN0aW9uIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm4gcmVjb3JkaW5nLnN3aXp6bGUoaXRl
bSwgdGhpcy5fcGF5bG9hZFN3aXp6bGVUeXBlc1tpbmRleF0pOwogICAgICAgICB9OwogCi0gICAg
ICAgIGxldCBzd2l6emxlQ2FsbEZyYW1lID0gYXN5bmMgKGl0ZW0sIGluZGV4KSA9PiB7Ci0gICAg
ICAgICAgICBsZXQgYXJyYXkgPSBhd2FpdCByZWNvcmRpbmcuc3dpenpsZShpdGVtLCBXSS5SZWNv
cmRpbmcuU3dpenpsZS5Ob25lKTsKLSAgICAgICAgICAgIGxldCBbZnVuY3Rpb25OYW1lLCB1cmxd
ID0gYXdhaXQgUHJvbWlzZS5hbGwoWwotICAgICAgICAgICAgICAgIHJlY29yZGluZy5zd2l6emxl
KGFycmF5WzBdLCBXSS5SZWNvcmRpbmcuU3dpenpsZS5TdHJpbmcpLAotICAgICAgICAgICAgICAg
IHJlY29yZGluZy5zd2l6emxlKGFycmF5WzFdLCBXSS5SZWNvcmRpbmcuU3dpenpsZS5TdHJpbmcp
LAotICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICByZXR1cm4gV0kuQ2FsbEZyYW1lLmZyb21Q
YXlsb2FkKFdJLm1haW5UYXJnZXQsIHsKLSAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUsCi0g
ICAgICAgICAgICAgICAgdXJsLAotICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGFycmF5WzJd
LAotICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogYXJyYXlbM10sCi0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfTsKLQogICAgICAgICBsZXQgc3dpenpsZVByb21pc2VzID0gWwogICAgICAg
ICAgICAgcmVjb3JkaW5nLnN3aXp6bGUodGhpcy5fcGF5bG9hZE5hbWUsIFdJLlJlY29yZGluZy5T
d2l6emxlLlN0cmluZyksCiAgICAgICAgICAgICBQcm9taXNlLmFsbCh0aGlzLl9wYXlsb2FkUGFy
YW1ldGVycy5tYXAoc3dpenpsZVBhcmFtZXRlcikpLAotICAgICAgICAgICAgUHJvbWlzZS5hbGwo
dGhpcy5fcGF5bG9hZFRyYWNlLm1hcChzd2l6emxlQ2FsbEZyYW1lKSksCiAgICAgICAgIF07CisK
KyAgICAgICAgaWYgKCFpc05hTih0aGlzLl9wYXlsb2FkVHJhY2UpKQorICAgICAgICAgICAgc3dp
enpsZVByb21pc2VzLnB1c2gocmVjb3JkaW5nLnN3aXp6bGUodGhpcy5fcGF5bG9hZFRyYWNlLCBX
SS5SZWNvcmRpbmcuU3dpenpsZS5DYWxsU3RhY2spKQorICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMi4xKTogInRyYWNlIiB3YXMgc2VudCBhcyBhbiBh
cnJheSBvZiBjYWxsIGZyYW1lcyBpbnN0ZWFkIG9mIGEgc2luZ2xlIGNhbGwgc3RhY2sKKyAgICAg
ICAgICAgIHN3aXp6bGVQcm9taXNlcy5wdXNoKFByb21pc2UuYWxsKHRoaXMuX3BheWxvYWRUcmFj
ZS5tYXAoKGl0ZW0pID0+IHJlY29yZGluZy5zd2l6emxlKGl0ZW0sIFdJLlJlY29yZGluZy5Td2l6
emxlLkNhbGxGcmFtZSkpKSk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGhpcy5fcGF5bG9h
ZFNuYXBzaG90ID49IDApCiAgICAgICAgICAgICBzd2l6emxlUHJvbWlzZXMucHVzaChyZWNvcmRp
bmcuc3dpenpsZSh0aGlzLl9wYXlsb2FkU25hcHNob3QsIFdJLlJlY29yZGluZy5Td2l6emxlLlN0
cmluZykpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggN2VmOWNlOWE5ZGI2ZGIyNTUxZTJkNTk2ZWE1MjQyNzE4ZThmMzQw
OS4uYjUzYWJlODk3MzgxYjcyNGMzZmRkNGU1ZGNlM2Q1MzVhNWFjYzFjYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE4LTExLTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHNlbmQgYSBjYWxsIHN0YWNrIHdpdGgg
ZWFjaCBhY3Rpb24gaW5zdGVhZCBvZiBhbiBhcnJheSBvZiBjYWxsIGZyYW1lcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNjI4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL3Jl
Y29yZGluZy5odG1sOgorCiAyMDE4LTExLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdHJhbnNwb3J0IGFuZCBwZWVyQ29ubmVj
dGlvbiBzdGF0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlY29y
ZGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5n
LWV4cGVjdGVkLnR4dAppbmRleCA2ZWE3MjBkNjE4MzBlOTlhOTBjOTg3ODMyYzAzMDQ3MzI1Mjcz
ZjA4Li44Y2NlYzgyZTVlOWJhY2IyMGQzNThmMWI4ZmJmYzgzMTRiZWZhNmZhIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLWV4cGVjdGVkLnR4dApAQCAt
MTYwLDkgKzE2MCw3IEBAIG51bGwKICAgICAgICAgICBbCiAgICAgICAgICAgICAwCiAgICAgICAg
ICAgXSwKLSAgICAgICAgICBbCi0gICAgICAgICAgICAwCi0gICAgICAgICAgXQorICAgICAgICAg
IDAKICAgICAgICAgXQogICAgICAgXSwKICAgICAgICJkdXJhdGlvbiI6IDEsCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvbW9kZWwvcmVjb3JkaW5nLmh0bWwKaW5kZXggNmVlNjk3MGNmYTY4YmM0MDhl
ZmM0ZDJkZGU3Y2NlYzUwOWY0NTIzNi4uNTk4MTIzMjZjZDRkOWE0ODFmZTMzNGM5YWUxMmVmYzdi
YzY3NDFhNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3JlY29yZGlu
Zy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9yZWNvcmRpbmcuaHRtbApA
QCAtMTY4LDcgKzE2OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMF0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>