<?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>172383</bug_id>
          
          <creation_ts>2017-05-19 14:15:38 -0700</creation_ts>
          <short_desc>DFG::SpeculativeJIT::pickCanTrample() is wrongly ignoring result registers.</short_desc>
          <delta_ts>2017-05-19 18:00:17 -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>JavaScriptCore</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1310763</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 14:15:38 -0700</bug_when>
    <thetext>pickCanTrample() is wrongly assuming that one of regT0 and regT1 is always available as a scratch register.  This assumption is wrong if this canTrample register is used for a silentFill() after an operation that returns a result in regT0 or regT1.

Turns out the only reason we need the canTrample register is for SetDoubleConstant.  We can remove the need for this canTrample register by introducing a moveDouble() pseudo instruction in the MacroAssembler to do the job using the scratchRegister() on X86_64 or the dataMemoryTempRegister() on ARM64.  In so doing, we can simplify the silentFill() code and eliminate the bug.

&lt;rdar://problem/31418651&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310770</commentid>
    <comment_count>1</comment_count>
      <attachid>310700</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 14:26:41 -0700</bug_when>
    <thetext>Created attachment 310700
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310807</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 15:25:54 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r217156: &lt;http://trac.webkit.org/r217156&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310850</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-05-19 16:25:15 -0700</bug_when>
    <thetext>Reverted r217156 for reason:

This change broke the iOS build.

Committed r217169: &lt;http://trac.webkit.org/changeset/217169&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310893</commentid>
    <comment_count>4</comment_count>
      <attachid>310735</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 17:49:11 -0700</bug_when>
    <thetext>Created attachment 310735
Patch for re-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310901</commentid>
    <comment_count>5</comment_count>
      <attachid>310735</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 17:59:05 -0700</bug_when>
    <thetext>Comment on attachment 310735
Patch for re-landing.

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Will remove this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310904</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-19 18:00:17 -0700</bug_when>
    <thetext>Landed in r217179: &lt;http://trac.webkit.org/r217179&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310700</attachid>
            <date>2017-05-19 14:26:41 -0700</date>
            <delta_ts>2017-05-19 17:49:11 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-172383.patch</filename>
            <type>text/plain</type>
            <size>30735</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTcxNDkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBERkc6OlNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZSgpIGlzIHdy
b25nbHkgaWdub3JpbmcgcmVzdWx0IHJlZ2lzdGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzE0MTg2NTE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvcmVncmVzcy0xNzIzODMuanM6IEFkZGVkLgorCiAyMDE3LTA1LTE5ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgYXJyYXlQcm90b1ByaXZhdGVG
dW5jQ29uY2F0TWVtY3B5IG5lZWRzIHRvIGJlIGRvd24gd2l0aCBmaXJzdEFycmF5IGJlaW5nIHVu
ZGVjaWRlZApJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzIzODMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzIzODMuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzIzODMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0MCBAQAorLy8gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jhc2guCisKK2xldCB4ID0gdW5kZWZp
bmVkOworCitmdW5jdGlvbiBmb28odywgYTAsIGExKSB7CisgICAgdmFyIHIwID0geCAlIGEwOyAK
KyAgICB2YXIgcjEgPSB3IF4gYTE7IAorCisgICAgdmFyIHI0ID0gMyAlIDc7IAorCisgICAgdmFy
IHI2ID0gdyBeIDA7CisgICAgdmFyIHI3ID0gcjQgLyByNDsgCisgICAgdmFyIHI5ID0geCAtIHI3
OyAKKyAgICBhMSA9IDAgKyByMDsKKworICAgIHZhciByMTEgPSAwICYgYTA7IAorICAgIHZhciBy
MTIgPSByNCAqIGExOyAKKyAgICB2YXIgcjcgPSByMTEgJiBhMDsgCisKKyAgICB2YXIgcjE1ID0g
cjExIHwgcjQ7IAorICAgIHZhciByMTYgPSAwICYgcjE7IAorICAgIHZhciByMjAgPSA1ICogYTA7
IAorCisgICAgdmFyIHIyID0gMCArIHI5OworICAgIHZhciByMjYgPSByMTEgfCByMTU7IAorICAg
IHZhciByMjkgPSByMTYgKyAwOworICAgIHZhciByMjkgPSByMjggKiByMTsgCisgICAgdmFyIHIz
NCA9IHcgLyByMTI7IAorCisgICAgdmFyIHIyOCA9IDAgLyByNzsKKyAgICB2YXIgcjY0ID0gcjIw
ICsgMDsKKyAgICB2YXIgcjY1ID0gMCArIHI2OworCisgICAgcmV0dXJuIGExOworfQorbm9Jbmxp
bmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxODg2OyBpKyspCisgICAgZm9vKCJxIik7
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYy
IEBACisyMDE3LTA1LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBERkc6OlNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZSgpIGlzIHdyb25nbHkgaWdub3Jp
bmcgcmVzdWx0IHJlZ2lzdGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjM4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE0MTg2NTE+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcGlja0NhblRy
YW1wbGUoKSBpcyB3cm9uZ2x5IGFzc3VtaW5nIHRoYXQgb25lIG9mIHJlZ1QwIGFuZCByZWdUMSBp
cyBhbHdheXMKKyAgICAgICAgYXZhaWxhYmxlIGFzIGEgc2NyYXRjaCByZWdpc3Rlci4gIFRoaXMg
YXNzdW1wdGlvbiBpcyB3cm9uZyBpZiB0aGlzIGNhblRyYW1wbGUKKyAgICAgICAgcmVnaXN0ZXIg
aXMgdXNlZCBmb3IgYSBzaWxlbnRGaWxsKCkgYWZ0ZXIgYW4gb3BlcmF0aW9uIHRoYXQgcmV0dXJu
cyBhIHJlc3VsdCBpbgorICAgICAgICByZWdUMCBvciByZWdUMS4KKworICAgICAgICBUdXJucyBv
dXQgdGhlIG9ubHkgcmVhc29uIHdlIG5lZWQgdGhlIGNhblRyYW1wbGUgcmVnaXN0ZXIgaXMgZm9y
CisgICAgICAgIFNldERvdWJsZUNvbnN0YW50LiAgV2UgY2FuIHJlbW92ZSB0aGUgbmVlZCBmb3Ig
dGhpcyBjYW5UcmFtcGxlIHJlZ2lzdGVyIGJ5CisgICAgICAgIGludHJvZHVjaW5nIGEgbW92ZURv
dWJsZSgpIHBzZXVkbyBpbnN0cnVjdGlvbiBpbiB0aGUgTWFjcm9Bc3NlbWJsZXIgdG8gZG8gdGhl
CisgICAgICAgIGpvYiB1c2luZyB0aGUgc2NyYXRjaFJlZ2lzdGVyKCkgb24gWDg2XzY0IG9yIHRo
ZSBkYXRhTWVtb3J5VGVtcFJlZ2lzdGVyKCkgb24KKyAgICAgICAgQVJNNjQuICBJbiBzbyBkb2lu
Zywgd2UgY2FuIHNpbXBsaWZ5IHRoZSBzaWxlbnRGaWxsKCkgY29kZSBhbmQgZWxpbWluYXRlIHRo
ZSBidWcuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXI6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGRmZy9ERkdBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbEFycmF5QWxs
b2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I6
OkNhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQ
YXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50
c1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZh
bFNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUb0xvd2VyQ2FzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3ApOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdG9yZUJhcnJpZXIpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpzaWxlbnRGaWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50
U3BpbGxBbGxSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
aWxlbnRGaWxsQWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6cGlja0NhblRyYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29udmVydEFueUludCk6CisKIDIwMTctMDUtMTUgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGxpbmcgb3V0IHIyMTQwMzggYW5kIHIyMTM2OTc6
IENyYXNoZXMgd2hlbiB1c2luZyBjb21wdXRlZCBwcm9wZXJ0aWVzIHdpdGggcmVzdCBkZXN0cnVj
dHVyaW5nIGFuZCBvYmplY3Qgc3ByZWFkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAkocmV2aXNpb24gMjE2ODkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzI4LDYgKzEzMjgsMjAgQEAgcHVibGljOgogICAgICAgICAgICAgbW92ZShpbW0u
YXNUcnVzdGVkSW1tNjQoKSwgZGVzdCk7CiAgICAgfQogCisjaWYgQ1BVKFg4Nl82NCkKKyAgICB2
b2lkIG1vdmVEb3VibGUoSW1tNjQgaW1tLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1vdmU2NFRvRG91Ymxl
KHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsKKyAgICB9CisjZWxpZiBDUFUoQVJNNjQpCisgICAg
dm9pZCBtb3ZlRG91YmxlKEltbTY0IGltbSwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtb3ZlKGltbSwgZGF0YU1lbW9yeVRlbXBSZWdpc3RlcigpKTsKKyAgICAgICAgbW92ZTY0
VG9Eb3VibGUoZGF0YU1lbW9yeVRlbXBSZWdpc3RlcigpLCBkZXN0KTsKKyAgICB9CisjZW5kaWYK
KwogICAgIHZvaWQgYW5kNjQoSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDIxNjg5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93
UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMSw3ICsxMTEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGppdC0+c2lsZW50Rmls
bChtX3BsYW5zW2ldLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQtPnNpbGVudEZp
bGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhH
ZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
bGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIxNjg5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhH
ZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw5ICs1Nyw4IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBqaXQtPmNhbGxPcGVy
YXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fc3RydWN0dXJlLCBtX3NpemUsIG1fc3Rv
cmFnZUdQUik7Ci0gICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBp
Y2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9w
bGFucy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tp
XSwgY2FuVHJhbXBsZSk7CisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7
CiAgICAgICAgIGppdC0+bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgaml0LT5tX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fcmVzdWx0R1BSLCBKU09iamVjdDo6
YnV0dGVyZmx5T2Zmc2V0KCkpLCBtX3N0b3JhZ2VHUFIpOwogICAgICAgICBqdW1wVG8oaml0KTsK
QEAgLTEwNyw5ICsxMDYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgaml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fY29udGln
dW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24o
bV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIG1fc2l6ZUdQUiwgbV9zdG9yYWdl
R1BSKTsKLSAgICAgICAgR1BSUmVnIGNhblRyYW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0Nh
blRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5z
LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBj
YW5UcmFtcGxlKTsKKyAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAg
ICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqdW1wVG8oaml0KTsK
ICAgICB9CkBAIC0xMjgsMTYgKzEyNiwxNSBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTdHJ1CiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxl
U3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlv
bl9FU3RaQiBmdW5jdGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0cnVj
dHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBHUFJSZWcgc2NyYXRj
aEdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BS
UmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0
aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAg
LCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikK
ICAgICAgICAgLCBtX3N0cnVjdHVyZUdQUihzdHJ1Y3R1cmVHUFIpCiAgICAgICAgICwgbV9zaXpl
R1BSKHNpemVHUFIpCiAgICAgICAgICwgbV9zdG9yYWdlR1BSKHN0b3JhZ2VHUFIpCi0gICAgICAg
ICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAgICAgewotICAgICAgICBqaXQtPnNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9wbGFucywgcmVzdWx0R1BSLCBtX3NjcmF0Y2hH
UFIpOworICAgICAgICBqaXQtPnNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9w
bGFucywgcmVzdWx0R1BSKTsKICAgICB9CiAKIHByb3RlY3RlZDoKQEAgLTE0OCw3ICsxNDUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwog
ICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fc3Ry
dWN0dXJlR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxs
KG1fcGxhbnNbaV0sIG1fc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwo
bV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAganVtcFRvKGppdCk7CiAgICAgfQpAQCAtMTU5LDcgKzE1Niw2IEBAIHByaXZhdGU6CiAgICAg
R1BSUmVnIG1fc3RydWN0dXJlR1BSOwogICAgIEdQUlJlZyBtX3NpemVHUFI7CiAgICAgR1BSUmVn
IG1fc3RvcmFnZUdQUjsKLSAgICBHUFJSZWcgbV9zY3JhdGNoR1BSOwogICAgIFZlY3RvcjxTaWxl
bnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVh
dGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTY4OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNT
bG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDkgKzU4LDggQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0
LT5jYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1l
bnRzLCBtX3Jlc3VsdEdQUiwgbV9zdHJ1Y3R1cmUsIG1fbGVuZ3RoR1BSLCBtX21pbkNhcGFjaXR5
KTsKLSAgICAgICAgR1BSUmVnIGNhblRyYW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRy
YW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNp
emUoKTsgaS0tOykKLSAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5U
cmFtcGxlKTsKKyAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAg
ICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICBqaXQtPm1faml0LmxvYWRQ
dHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhtX3Jlc3VsdEdQUiwgRGly
ZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSwgbV9sZW5ndGhHUFIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMjE2ODkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVy
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDkgKzcyLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkKICAgICAgICAgICAg
IGppdC0+c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlv
bihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCwgZXh0cmFjdFJlc3VsdChtX3Jlc3VsdFJlZ3Mp
LCBtX2Jhc2VSZWcsIG1fcHJvcGVydHlSZWcpOwotICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9
IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShleHRyYWN0UmVzdWx0KG1fcmVzdWx0UmVn
cykpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKLSAg
ICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAg
ICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5tX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAganVtcFRvKGppdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShy
ZXZpc2lvbiAyMTY4OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRo
R2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQxLDkgKzE0MSw4IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHRlYXJEb3duKFNwZWN1bGF0aXZlSklUKiBqaXQpCiAgICAgewogICAgICAgICBpZiAo
bV9zcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpIHsKLSAgICAgICAgICAgIEdQUlJlZyBjYW5UcmFt
cGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1
bHQpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07
KQotICAgICAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxl
KTsKKyAgICAgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fZXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudCA9PSBFeGNlcHRpb25D
aGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkKICAgICAgICAgICAgIGppdC0+bV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjE2ODkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlUGVlcGgKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFy
ZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwot
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAKICAgICAgICAgICAgIGJyYW5j
aFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCByZXN1bHRHUFIsIHRha2VuKTsKICAgICAgICAg
fQpAQCAtNjA3LDggKzYwNyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
UGVlcGgKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7
CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVz
dWx0UGF5bG9hZEdQUiwgYXJnMVJlZ3MsIGFyZzJSZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKLSAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2Fk
R1BSKTsKLSAgICAgICAgCisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKKwogICAg
ICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxl
cjo6Tm9uWmVybywgcmVzdWx0UGF5bG9hZEdQUiwgdGFrZW4pOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocyBmb3IgdHdvQ2VsbHMsIG51bWJlciBldGMuCkBA
IC02MTYsOCArNjE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVw
aAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAg
ICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxv
YWRHUFIsIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0g
ICAgICAgIAorICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CisKICAgICAgICAgYnJh
bmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVyOjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsKICAgICB9CiAgICAgCkBAIC02NTMsOCArNjUz
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBz
aWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBh
cmcxUmVncywgYXJnMlJlZ3MpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICAK
KyAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOworCiAgICAgICAgIG1faml0LmFuZFB0
cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAg
ICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNjYzLDcgKzY2Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKIAogICAgICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFSZWdzLCBhcmcy
UmVncyk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7
CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6
VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKQEAgLTEwNDEsNyArMTA0MSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkxpbmtEaXJlY3RDYWxsLCBpbmZvLCBjYWxs
ZWVQYXlsb2FkR1BSKTsKLSAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAg
ICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxp
bmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAgICAgICAgICAgIApAQCAtMzc1MCw3ICszNzUwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
bm90TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051
bWJlciwgcmVzdWx0UmVncywgYXJndW1lbnRSZWdzKTsKLSAgICAgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTUxNzQsNyArNTE3NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVl
UmVncyh0ZW1wR1BSLCBrZXlSZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgICAgIH0KICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Qcm9wZXJ0eSwgcmVzdWx0R1BSLCBvYmplY3RH
UFIsIGtleVJlZ3MpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNp
b24gMjE2ODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAKICAgICAgICAgICAgIHNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBl
ckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICAgICAgc2ls
ZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAg
ICAgCiAgICAgICAgICAgICBicmFuY2hUZXN0MzIoY2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0
R1BSLCB0YWtlbik7CkBAIC01MzgsNyArNTM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVQZWVwaAogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3Rl
cnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3Ry
aWN0RXFDZWxsLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
IGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21waWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpO
b25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIAogICAgICAgICBzaWxlbnRT
cGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BSLCBhcmcxR1BSLCBhcmcyR1BSKTsKLSAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICBzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAg
IAogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRD
b21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC02MDEsNyArNjAxLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICAKICAgICAg
ICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFy
ZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAg
ICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tMzIoMSksIHJlc3VsdEdQUik7CkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAgCiAgICAgICAgICAgICBzaWxl
bnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGwsIGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsK
LSAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwg
Jm1faml0KTsKICAgICAgICAgICAgIApAQCAtMzM3MSw3ICszMzcxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbnVtRXh0cmFBcmdzOyBpLS07KQogICAgICAgICAgICAgICAgIG1faml0LmJveEludDMyKGFy
Z0dQUnNbaV0sIEpTVmFsdWVSZWdzKGFyZ0dQUnNbaV0pKTsKICAgICAgICAgICAgIGNhbGxTbG93
UGF0aCgpOwotICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwor
ICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTM5NTgsNyArMzk1OCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IG5vdE51bWJlci5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051
bWJlciwgcmVzdWx0R1BSLCBhcmd1bWVudEdQUik7Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBk
b25lLmxpbmsoJm1faml0KTsKQEAgLTUwNzAsNyArNTA3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk1hcEhhc2gsIHJlc3VsdEdQUiwgSlNWYWx1
ZVJlZ3MoaW5wdXRHUFIpKTsKLSAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKKyAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAg
ICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9q
aXQpOwpAQCAtNTExOCw3ICs1MTE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVu
dFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKU1ZhbHVlUmVncyhpbnB1dEdQUikpOwotICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTUyNDUsNyArNTI0NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVzdWx0R1BSLCBtYXBHUFIsIGtleUdQUiwgaGFz
aEdQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3VsdEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hH
UFIpOwotICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhpbmRleEdQUik7CisgICAg
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAg
ICAgICAgfQpAQCAtNTU2Miw3ICs1NTYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uSGFzT3duUHJvcGVydHksIHJlc3VsdEdQUiwgb2JqZWN0R1BSLCBrZXlHUFIpOwot
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTYwMjMsNyArNjAyMyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgc2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhl
Y1N0YXRlKCk7CiAgICAgICAgIGFwcGVuZENhbGwodHJpZ2dlclRpZXJVcE5vdyk7Ci0gICAgICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CisgICAgICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICBicmVhazsKQEAgLTYxNTEsNyArNjE1MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbnZlcnRBbnlJbnQoRWRnZSAKICAgICBub3RJbnQzMi5saW5rKCZtX2ppdCk7CiAgICAgc2ls
ZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIsIHJlc3VsdEdQUiwgdmFsdWVHUFIpOwotICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKCk7CiAKICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAgSlNWYWx1ZVJlZ3ModmFs
dWVHUFIpLCB2YWx1ZUVkZ2UsIFNwZWNJbnQzMk9ubHkgfCBTcGVjQW55SW50QXNEb3VibGUsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMjE2ODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyNSwxMSArNjI1LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6c2lsZW50U3BpbGwoY29uc3QgUwogICAgIH0KIH0KICAgICAKLXZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYg
cGxhbiwgR1BSUmVnIGNhblRyYW1wbGUpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxs
KGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mIHBsYW4pCiB7Ci0jaWYgVVNFKEpTVkFMVUUz
Ml82NCkKLSAgICBVTlVTRURfUEFSQU0oY2FuVHJhbXBsZSk7Ci0jZW5kaWYKICAgICBzd2l0Y2gg
KHBsYW4uZmlsbEFjdGlvbigpKSB7CiAgICAgY2FzZSBEb05vdGhpbmdGb3JGaWxsOgogICAgICAg
ICBicmVhazsKQEAgLTY1OSw4ICs2NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRG
aWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0Lm1vdmUodmFsdWVPZkpTQ29uc3RhbnRBc0ltbTY0
KHBsYW4ubm9kZSgpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0
RG91YmxlQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoSW1tNjQocmVpbnRlcnByZXREb3Vi
bGVUb0ludDY0KHBsYW4ubm9kZSgpLT5hc051bWJlcigpKSksIGNhblRyYW1wbGUpOwotICAgICAg
ICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShjYW5UcmFtcGxlLCBwbGFuLmZwcigpKTsKKyAgICAgICAg
bV9qaXQubW92ZURvdWJsZShJbW02NChyZWludGVycHJldERvdWJsZVRvSW50NjQocGxhbi5ub2Rl
KCktPmFzTnVtYmVyKCkpKSwgcGxhbi5mcHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TG9hZDMyUGF5bG9hZEJveEludDoKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFsUmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwpA
QCAtMTUzNCw3ICsxNTMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJD
YXNlKAogICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhsZW5ndGhHUFIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9Mb3dlckNhc2Us
IGxlbmd0aEdQUiwgc3RyaW5nR1BSLCBpbmRleEdQUik7Ci0gICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycyhsZW5ndGhHUFIpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwogICAgIGF1dG8gZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAt
MjI2OSw3ICsyMjY1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQz
MgogCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHcHIpOwogICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub0ludDMyLCByZXN1bHRHcHIsIGZwcik7
Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgICAgIGNvbnZlcnRlZC5h
cHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMjMyOCw3ICsyMzI0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICAgICAgc2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsKLSAgICAgICAgICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycygpOwogCiAgICAgICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2pp
dC5qdW1wKCkpOwogCkBAIC0zMTI0LDcgKzMxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvCiAgICAgcGVyZm9ybURlZmF1bHRIYXNJbnN0YW5jZS5saW5rKCZt
X2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaFJlZyk7CiAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25EZWZhdWx0SGFzSW5zdGFuY2UsIHNjcmF0Y2hSZWcsIHZhbHVl
UmVnLCBwcm90b3R5cGVSZWcpOyAKLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hS
ZWcpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25D
aGVjaygpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIo
VmFsdWVGYWxzZSksIHNjcmF0Y2hSZWcpOwpAQCAtMzM1Nyw3ICszMzUzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChObwogCiAgICAgY2FsbE9wZXJhdGlvbihzbmlw
cGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAK
LSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgZ2VuLmVu
ZEp1bXBMaXN0KCkubGluaygmbV9qaXQpOwpAQCAtMzUxMSw3ICszNTA3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNoaQogCiAgICAgY2FsbE9wZXJhdGlvbihzbmlw
cGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVncywgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAK
LSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOworICAgIHNpbGVudEZpbGxB
bGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgZ2VuLmVu
ZEp1bXBMaXN0KCkubGluaygmbV9qaXQpOwpAQCAtNDg2NSw3ICs0ODYxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZAogCiAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3MsIGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCi0g
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAog
ICAgICAgICBnZW4uZW5kSnVtcExpc3QoKS5saW5rKCZtX2ppdCk7CkBAIC03Mzk3LDcgKzczOTMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOCiAgICAgICAgICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCiAgICAgICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJp
YWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKLSAgICAgICAgICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQ
UiwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdlUmVzdWx0R1BSLCBzY3JhdGNoR1BSKSk7Cisg
ICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHRlbXBWYWx1ZSwgc2l6ZUdQUiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC04OTE0LDcgKzg5MTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgICAgICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9j
ayk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOwogICAgICAgICBj
YWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0
Y2gsIHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKTsKICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbHNlCiAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1faml0LmJyYW5jaDMyKApAQCAtODkyOCw3ICs4OTI0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKgogICAgICAgICAg
ICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhzY3JhdGNoKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25GaW5kU3dpdGNo
SW1tVGFyZ2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxl
SW5kZXgpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2gpOworICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNo
KTsKICNlbmRpZgpAQCAtOTIyNiw3ICs5MjIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaFN0cmluZ09uUwogICAgIHNsb3dDYXNlcy5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50
U3BpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3
aXRjaFN0cmluZywgc3RyaW5nLCBkYXRhLT5zd2l0Y2hUYWJsZUluZGV4LCBzdHJpbmcpOwotICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICBtX2ppdC5qdW1wKHN0cmlu
Zyk7CiB9CkBAIC05MzU1LDcgKzkzNTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
U3RvcmVCYXJyaWVyCiAKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVn
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbldyaXRlQmFycmllclNsb3dQYXRoLCBiYXNl
R1BSKTsKLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOworICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAgIG9rLmxpbmsoJm1faml0KTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMjE2ODkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgyLDcgKzM4Miw3IEBAIHB1YmxpYzoKICAgICBTaWxl
bnRSZWdpc3RlclNhdmVQbGFuIHNpbGVudFNhdmVQbGFuRm9yR1BSKFZpcnR1YWxSZWdpc3RlciBz
cGlsbE1lLCBHUFJSZWcgc291cmNlKTsKICAgICBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIHNpbGVu
dFNhdmVQbGFuRm9yRlBSKFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lLCBGUFJSZWcgc291cmNlKTsK
ICAgICB2b2lkIHNpbGVudFNwaWxsKGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4mKTsKLSAg
ICB2b2lkIHNpbGVudEZpbGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYsIEdQUlJlZyBj
YW5UcmFtcGxlKTsKKyAgICB2b2lkIHNpbGVudEZpbGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZl
UGxhbiYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+CiAgICAgdm9p
ZCBzaWxlbnRTcGlsbChjb25zdCBDb2xsZWN0aW9uVHlwZSYgc2F2ZVBsYW5zKQpAQCAtMzkyLDEx
ICszOTIsMTAgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxl
Y3Rpb25UeXBlPgotICAgIHZvaWQgc2lsZW50RmlsbChjb25zdCBDb2xsZWN0aW9uVHlwZSYgc2F2
ZVBsYW5zLCBHUFJSZWcgZXhjbHVkZSA9IEludmFsaWRHUFJSZWcpCisgICAgdm9pZCBzaWxlbnRG
aWxsKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBzYXZlUGxhbnMpCiAgICAgewotICAgICAgICBHUFJS
ZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShleGNsdWRlKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2F2ZVBsYW5zLnNpemUoKTsgaS0tOykKLSAgICAg
ICAgICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAg
IHNpbGVudEZpbGwoc2F2ZVBsYW5zW2ldKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2xsZWN0aW9uVHlwZT4KQEAgLTQ1Nyw1MyArNDU2LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoZXhjbHVkZS5wYXlsb2FkR1BSKCksIGV4Y2x1ZGUudGFn
R1BSKCkpOwogI2VuZGlmCiAgICAgfQotICAgIAotICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRy
YW1wbGUoR1BSUmVnIGV4Y2x1ZGUpCi0gICAgewotICAgICAgICBHUFJSZWcgcmVzdWx0ID0gR1BS
SW5mbzo6cmVnVDA7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gZXhjbHVkZSkKLSAgICAgICAgICAg
IHJlc3VsdCA9IEdQUkluZm86OnJlZ1QxOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LSAgICBzdGF0aWMgR1BSUmVnIHBpY2tDYW5UcmFtcGxlKEZQUlJlZykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBHUFJJbmZvOjpyZWdUMDsKLSAgICB9Ci0gICAgc3RhdGljIEdQUlJlZyBwaWNrQ2Fu
VHJhbXBsZShOb1Jlc3VsdFRhZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdU
MDsKLSAgICB9CiAKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0YXRpYyBHUFJSZWcgcGlja0Nh
blRyYW1wbGUoSlNWYWx1ZVJlZ3MgZXhjbHVkZSkKKyAgICB2b2lkIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBpY2tDYW5UcmFtcGxlKGV4Y2x1ZGUucGF5
bG9hZEdQUigpKTsKLSAgICB9Ci0jZWxzZQotICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1w
bGUoSlNWYWx1ZVJlZ3MgZXhjbHVkZSkKLSAgICB7Ci0gICAgICAgIEdQUlJlZyByZXN1bHQgPSBH
UFJJbmZvOjpyZWdUMDsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBleGNsdWRlLnRhZ0dQUigpKSB7
Ci0gICAgICAgICAgICByZXN1bHQgPSBHUFJJbmZvOjpyZWdUMTsKLSAgICAgICAgICAgIGlmIChy
ZXN1bHQgPT0gZXhjbHVkZS5wYXlsb2FkR1BSKCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0g
R1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IGV4Y2x1ZGUucGF5
bG9hZEdQUigpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBHUFJJbmZvOjpyZWdUMTsKLSAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gZXhjbHVkZS50YWdHUFIoKSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBHUFJJbmZvOjpyZWdUMjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLSNlbmRpZgotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFJlZ2lzdGVyVHlw
ZT4KLSAgICB2b2lkIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoUmVnaXN0ZXJUeXBlIGV4Y2x1ZGUp
Ci0gICAgewotICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IHBpY2tDYW5UcmFtcGxlKGV4Y2x1
ZGUpOwotICAgICAgICAKICAgICAgICAgd2hpbGUgKCFtX3BsYW5zLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbiA9IG1fcGxhbnMubGFzdCgpOwot
ICAgICAgICAgICAgc2lsZW50RmlsbChwbGFuLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIHNp
bGVudEZpbGwocGxhbik7CiAgICAgICAgICAgICBtX3BsYW5zLnJlbW92ZUxhc3QoKTsKICAgICAg
ICAgfQogICAgIH0K
</data>
<flag name="review"
          id="331778"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310735</attachid>
            <date>2017-05-19 17:49:11 -0700</date>
            <delta_ts>2017-05-19 17:49:11 -0700</delta_ts>
            <desc>Patch for re-landing.</desc>
            <filename>bug-172383.patch</filename>
            <type>text/plain</type>
            <size>30705</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTcxNzYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTE5ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBbUmUtbGFuZGluZ10gREZHOjpTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRy
YW1wbGUoKSBpcyB3cm9uZ2x5IGlnbm9yaW5nIHJlc3VsdCByZWdpc3RlcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzODMKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMxNDE4NjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxv
LgorCisgICAgICAgICogc3RyZXNzL3JlZ3Jlc3MtMTcyMzgzLmpzOiBBZGRlZC4KKwogMjAxNy0w
NS0xOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMjE3MTU2LgpJbmRleDogSlNUZXN0cy9zdHJlc3MvcmVncmVz
cy0xNzIzODMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzIzODMu
anMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcmVncmVzcy0xNzIzODMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0MCBAQAorLy8gVGhpcyB0ZXN0IHNob3VsZCBub3QgY3Jh
c2guCisKK2xldCB4ID0gdW5kZWZpbmVkOworCitmdW5jdGlvbiBmb28odywgYTAsIGExKSB7Cisg
ICAgdmFyIHIwID0geCAlIGEwOyAKKyAgICB2YXIgcjEgPSB3IF4gYTE7IAorCisgICAgdmFyIHI0
ID0gMyAlIDc7IAorCisgICAgdmFyIHI2ID0gdyBeIDA7CisgICAgdmFyIHI3ID0gcjQgLyByNDsg
CisgICAgdmFyIHI5ID0geCAtIHI3OyAKKyAgICBhMSA9IDAgKyByMDsKKworICAgIHZhciByMTEg
PSAwICYgYTA7IAorICAgIHZhciByMTIgPSByNCAqIGExOyAKKyAgICB2YXIgcjcgPSByMTEgJiBh
MDsgCisKKyAgICB2YXIgcjE1ID0gcjExIHwgcjQ7IAorICAgIHZhciByMTYgPSAwICYgcjE7IAor
ICAgIHZhciByMjAgPSA1ICogYTA7IAorCisgICAgdmFyIHIyID0gMCArIHI5OworICAgIHZhciBy
MjYgPSByMTEgfCByMTU7IAorICAgIHZhciByMjkgPSByMTYgKyAwOworICAgIHZhciByMjkgPSBy
MjggKiByMTsgCisgICAgdmFyIHIzNCA9IHcgLyByMTI7IAorCisgICAgdmFyIHIyOCA9IDAgLyBy
NzsKKyAgICB2YXIgcjY0ID0gcjIwICsgMDsKKyAgICB2YXIgcjY1ID0gMCArIHI2OworCisgICAg
cmV0dXJuIGExOworfQorbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxODg2
OyBpKyspCisgICAgZm9vKCJxIik7CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMjE3MTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA1LTE5ICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbUmUtbGFuZGluZ10gREZHOjpTcGVjdWxhdGl2ZUpJVDo6
cGlja0NhblRyYW1wbGUoKSBpcyB3cm9uZ2x5IGlnbm9yaW5nIHJlc3VsdCByZWdpc3RlcnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzODMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNDE4NjUxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAg
ICAgIHBpY2tDYW5UcmFtcGxlKCkgaXMgd3JvbmdseSBhc3N1bWluZyB0aGF0IG9uZSBvZiByZWdU
MCBhbmQgcmVnVDEgaXMgYWx3YXlzCisgICAgICAgIGF2YWlsYWJsZSBhcyBhIHNjcmF0Y2ggcmVn
aXN0ZXIuICBUaGlzIGFzc3VtcHRpb24gaXMgd3JvbmcgaWYgdGhpcyBjYW5UcmFtcGxlCisgICAg
ICAgIHJlZ2lzdGVyIGlzIHVzZWQgZm9yIGEgc2lsZW50RmlsbCgpIGFmdGVyIGFuIG9wZXJhdGlv
biB0aGF0IHJldHVybnMgYSByZXN1bHQgaW4KKyAgICAgICAgcmVnVDAgb3IgcmVnVDEuCisKKyAg
ICAgICAgVHVybnMgb3V0IHRoZSBvbmx5IHJlYXNvbiB3ZSBuZWVkIHRoZSBjYW5UcmFtcGxlIHJl
Z2lzdGVyIGlzIGZvcgorICAgICAgICBTZXREb3VibGVDb25zdGFudC4gIFdlIGNhbiByZW1vdmUg
dGhlIG5lZWQgZm9yIHRoaXMgY2FuVHJhbXBsZSByZWdpc3RlciBieQorICAgICAgICBpbnRyb2R1
Y2luZyBhIG1vdmVEb3VibGUoKSBwc2V1ZG8gaW5zdHJ1Y3Rpb24gaW4gdGhlIE1hY3JvQXNzZW1i
bGVyIHRvIGRvIHRoZQorICAgICAgICBqb2IgdXNpbmcgdGhlIHNjcmF0Y2hSZWdpc3RlcigpIG9u
IFg4Nl82NCBvciB0aGUgZGF0YU1lbW9yeVRlbXBSZWdpc3RlcigpIG9uCisgICAgICAgIEFSTTY0
LiAgSW4gc28gZG9pbmcsIHdlIGNhbiBzaW1wbGlmeSB0aGUgc2lsZW50RmlsbCgpIGNvZGUgYW5k
IGVsaW1pbmF0ZSB0aGUgYnVnLgorCisgICAgICAgIFVwZGF0ZSBmb3IgcmUtbGFuZGluZzogQ2hh
bmdlZCBBUk02NCB0byB1c2Ugc2NyYXRjaFJlZ2lzdGVyKCkgYXMgd2VsbC4KKyAgICAgICAgc2Ny
YXRjaFJlZ2lzdGVyKCkgaXMgdGhlIHByb3BlciB3YXkgdG8gZ2V0IHRoZSB1bmRlcmx5aW5nIGRh
dGFNZW1vcnlUZW1wUmVnaXN0ZXIoKQorICAgICAgICBhcyBhIHNjcmF0Y2ggcmVnaXN0ZXIuCisK
KyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXI6Om1vdmVEb3VibGUpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQ
YXRoR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yV2l0
aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxBcnJh
eUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKiBkZmcvREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Q2FsbFNsb3dQYXRoR2VuZXJhdG9yOjp0ZWFyRG93bik6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUb0xvd2VyQ2FzZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlSW5zdGFuY2VPZkZvck9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRVbnR5cGVkQml0T3ApOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjplbWl0VW50eXBlZFJpZ2h0U2hpZnRCaXRPcCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aERpdik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmdPblN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVTdG9yZUJhcnJpZXIpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRG
aWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxs
QWxsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6cGlja0Nh
blRyYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaG9sZUJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGVlcGhvbGVTdHJpY3RFcSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBl
ZXBob2xlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29udmVydEFueUludCk6CisKIDIwMTctMDUtMTkgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNzE1Ni4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
LmgJKHJldmlzaW9uIDIxNzE3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyOCw2ICsxMzI4LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIG1vdmUoaW1tLmFzVHJ1c3RlZEltbTY0KCksIGRlc3QpOwogICAg
IH0KIAorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk02NCkKKyAgICB2b2lkIG1vdmVEb3VibGUo
SW1tNjQgaW1tLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1vdmU2NFRvRG91YmxlKHNjcmF0Y2hSZWdpc3Rl
cigpLCBkZXN0KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgYW5kNjQoSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQmxpbmQoaW1tKSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIxNzE3NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTExMSw3ICsxMTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykK
LSAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJh
dG9yLmgJKHJldmlzaW9uIDIxNzE3NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw5
ICs1Nyw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
cGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxhbnNb
aV0pOwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIs
IG1fc3RydWN0dXJlLCBtX3NpemUsIG1fc3RvcmFnZUdQUik7Ci0gICAgICAgIEdQUlJlZyBjYW5U
cmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCi0gICAgICAgICAg
ICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CisgICAgICAgICAgICBq
aXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+bV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgaml0LT5tX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKG1fcmVzdWx0R1BSLCBKU09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpLCBtX3N0b3JhZ2VH
UFIpOwogICAgICAgICBqdW1wVG8oaml0KTsKQEAgLTEwNyw5ICsxMDYsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgaml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZl
SklUOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOwog
ICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIHNjcmF0
Y2hHUFIsIG1fc2l6ZUdQUiwgbV9zdG9yYWdlR1BSKTsKLSAgICAgICAgR1BSUmVnIGNhblRyYW1w
bGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGpp
dC0+c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIGppdC0+
c2lsZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVj
aygpOwogICAgICAgICBqdW1wVG8oaml0KTsKICAgICB9CkBAIC0xMjgsMTYgKzEyNiwxNSBAQCBj
bGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTdHJ1CiBwdWJsaWM6CiAgICAgQ2Fs
bEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU3RydWN0dXJlVmFyaWFibGVTaXplU2xvd1BhdGhH
ZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxh
dGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9FU3RaQiBmdW5jdGlvbiwKLSAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJl
ZyBzdG9yYWdlR1BSLCBHUFJSZWcgc2NyYXRjaEdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIHN0cnVjdHVyZUdQUiwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BS
KQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAg
ICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKICAgICAgICAgLCBtX3N0cnVjdHVyZUdQUihzdHJ1
Y3R1cmVHUFIpCiAgICAgICAgICwgbV9zaXplR1BSKHNpemVHUFIpCiAgICAgICAgICwgbV9zdG9y
YWdlR1BSKHN0b3JhZ2VHUFIpCi0gICAgICAgICwgbV9zY3JhdGNoR1BSKHNjcmF0Y2hHUFIpCiAg
ICAgewotICAgICAgICBqaXQtPnNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9w
bGFucywgcmVzdWx0R1BSLCBtX3NjcmF0Y2hHUFIpOworICAgICAgICBqaXQtPnNpbGVudFNwaWxs
QWxsUmVnaXN0ZXJzSW1wbChmYWxzZSwgbV9wbGFucywgcmVzdWx0R1BSKTsKICAgICB9CiAKIHBy
b3RlY3RlZDoKQEAgLTE0OCw3ICsxNDUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBqaXQt
PnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9m
dW5jdGlvbiwgbV9yZXN1bHRHUFIsIG1fc3RydWN0dXJlR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFn
ZUdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQot
ICAgICAgICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIG1fc2NyYXRjaEdQUik7Cisg
ICAgICAgICAgICBqaXQtPnNpbGVudEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIGppdC0+bV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAganVtcFRvKGppdCk7CiAgICAgfQpAQCAtMTU5
LDcgKzE1Niw2IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fc3RydWN0dXJlR1BSOwogICAgIEdQ
UlJlZyBtX3NpemVHUFI7CiAgICAgR1BSUmVnIG1fc3RvcmFnZUdQUjsKLSAgICBHUFJSZWcgbV9z
Y3JhdGNoR1BSOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5z
OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGly
ZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVy
YXRvci5oCShyZXZpc2lvbiAyMTcxNzYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU4LDkgKzU4LDggQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGls
bChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKAogICAgICAgICAgICAg
b3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBtX3Jlc3VsdEdQUiwgbV9zdHJ1Y3R1cmUs
IG1fbGVuZ3RoR1BSLCBtX21pbkNhcGFjaXR5KTsKLSAgICAgICAgR1BSUmVnIGNhblRyYW1wbGUg
PSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGppdC0+
c2lsZW50RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIGppdC0+c2ls
ZW50RmlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICBqaXQtPm1faml0LmxvYWRQdHIoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX3Jlc3VsdEdQUiwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgp
KSwgbV9sZW5ndGhHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Iu
aAkocmV2aXNpb24gMjE3MTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5l
U3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDkgKzcy
LDggQEAgcHJvdGVjdGVkOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFu
cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGppdC0+c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7
CiAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbFN0cmluZ0ludCwg
ZXh0cmFjdFJlc3VsdChtX3Jlc3VsdFJlZ3MpLCBtX2Jhc2VSZWcsIG1fcHJvcGVydHlSZWcpOwot
ICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBs
ZShleHRyYWN0UmVzdWx0KG1fcmVzdWx0UmVncykpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3BsYW5zLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3Bs
YW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIGppdC0+c2lsZW50RmlsbChtX3BsYW5z
W2ldKTsKICAgICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAg
ICAgICAganVtcFRvKGppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTcxNzYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTQx
LDkgKzE0MSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHRlYXJEb3duKFNwZWN1bGF0aXZlSklU
KiBqaXQpCiAgICAgewogICAgICAgICBpZiAobV9zcGlsbE1vZGUgPT0gTmVlZFRvU3BpbGwpIHsK
LSAgICAgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5U
cmFtcGxlKGV4dHJhY3RSZXN1bHQobV9yZXN1bHQpKTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAgIGppdC0+c2lsZW50
RmlsbChtX3BsYW5zW2ldLCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgICAgICBqaXQtPnNpbGVu
dEZpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZXhjZXB0aW9uQ2hl
Y2tSZXF1aXJlbWVudCA9PSBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVja05lZWRlZCkK
ICAgICAgICAgICAgIGppdC0+bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
cmV2aXNpb24gMjE3MTc2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgICAgIHNpbGVudFNw
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKGhl
bHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAgICAgICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRHUFIpOworICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwog
ICAgICAgICAKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihjYWxsUmVzdWx0Q29uZGl0aW9uLCBy
ZXN1bHRHUFIsIHRha2VuKTsKICAgICAgICAgfQpAQCAtNjA3LDggKzYwNyw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgc2lsZW50U3BpbGxBbGxS
ZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uQ29tcGFyZVN0cmljdEVxQ2VsbCwgcmVzdWx0UGF5bG9hZEdQUiwgYXJnMVJlZ3MsIGFyZzJS
ZWdzKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKLSAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgCisgICAgICAgIHNpbGVu
dEZpbGxBbGxSZWdpc3RlcnMoKTsKKwogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0ID8gSklU
Q29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0UGF5bG9hZEdQUiwg
dGFrZW4pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBZGQgZmFzdCBwYXRocyBm
b3IgdHdvQ2VsbHMsIG51bWJlciBldGMuCkBAIC02MTYsOCArNjE2LDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lz
dGVycyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
b21wYXJlU3RyaWN0RXEsIHJlc3VsdFBheWxvYWRHUFIsIGFyZzFSZWdzLCBhcmcyUmVncyk7CiAg
ICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMocmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIAorICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKCk7CisKICAgICAgICAgYnJhbmNoVGVzdDMyKGludmVydCA/IEpJVENvbXBpbGVy
OjpaZXJvIDogSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdFBheWxvYWRHUFIsIHRha2VuKTsK
ICAgICB9CiAgICAgCkBAIC02NTMsOCArNjUzLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZQogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQ
YXlsb2FkR1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0
RXFDZWxsLCByZXN1bHRQYXlsb2FkR1BSLCBhcmcxUmVncywgYXJnMlJlZ3MpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFBheWxvYWRHUFIpOwotICAgICAgICAKKyAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cygpOworCiAgICAgICAgIG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEp
LCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQp
OwpAQCAtNjYzLDcgKzY2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRQYXlsb2FkR1BS
KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHJlc3Vs
dFBheWxvYWRHUFIsIGFyZzFSZWdzLCBhcmcyUmVncyk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxS
ZWdpc3RlcnMocmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0LmFuZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKQEAgLTEwNDEsNyArMTA0MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxs
KE5vZGUqIG5vZGUKICAgICAgICAgICAgIAogICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bkxpbmtEaXJlY3RDYWxsLCBpbmZvLCBjYWxsZWVQYXlsb2FkR1BSKTsKLSAgICAgICAgICAgIHNp
bGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwog
ICAgICAgICAgICAgbV9qaXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAgICAg
ICAgICAgIApAQCAtMzc1MCw3ICszNzUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgbm90TnVtYmVyLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFJlZ3MpOwogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0UmVncywgYXJndW1lbnRSZWdz
KTsKLSAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0UmVncyk7CisgICAg
ICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTUxNzQs
NyArNTE3NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIGtleVJlZ3MgPSBKU1ZhbHVlUmVncyh0ZW1wR1BSLCBrZXlSZWdzLnBheWxvYWRH
UFIoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNPd25Q
cm9wZXJ0eSwgcmVzdWx0R1BSLCBvYmplY3RHUFIsIGtleVJlZ3MpOwotICAgICAgICBzaWxlbnRG
aWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjE3MTc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDE3
LDcgKzQxNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAg
ICAKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICBjYWxsT3BlcmF0aW9uKGhlbHBlckZ1bmN0aW9uLCByZXN1bHRHUFIsIGFyZzFHUFIs
IGFyZzJHUFIpOwotICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIp
OworICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogICAgICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgICAgICBicmFuY2hUZXN0MzIo
Y2FsbFJlc3VsdENvbmRpdGlvbiwgcmVzdWx0R1BSLCB0YWtlbik7CkBAIC01MzgsNyArNTM4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICAKICAg
ICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFDZWxsLCByZXN1bHRHUFIsIGFyZzFHUFIs
IGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7Cisg
ICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9u
Q2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBKSVRDb21w
aWxlcjo6WmVybyA6IEpJVENvbXBpbGVyOjpOb25aZXJvLCByZXN1bHRHUFIsIHRha2VuKTsKQEAg
LTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBo
CiAgICAgICAgIAogICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBhcmVTdHJpY3RFcSwgcmVzdWx0R1BS
LCBhcmcxR1BSLCBhcmcyR1BSKTsKLSAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1
bHRHUFIpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gSklUQ29tcGlsZXI6Olplcm8gOiBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0R1BSLCB0
YWtlbik7CkBAIC02MDEsNyArNjAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZQogICAgICAgICAKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVz
dWx0R1BSKTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlU3RyaWN0RXFD
ZWxsLCByZXN1bHRHUFIsIGFyZzFHUFIsIGFyZzJHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIG1faml0
LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CkBAIC05OTYs
NyArOTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BS
UmVnKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTGlua0RpcmVjdENhbGws
IGNhbGxMaW5rSW5mbywgY2FsbGVlR1BSKTsKLSAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoSW52YWxpZEdQUlJlZyk7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgbV9q
aXQuanVtcCgpLmxpbmtUbyhtYWluUGF0aCwgJm1faml0KTsKICAgICAgICAgICAgIApAQCAtMzM3
MSw3ICszMzcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRXh0cmFBcmdzOyBpLS07KQogICAgICAg
ICAgICAgICAgIG1faml0LmJveEludDMyKGFyZ0dQUnNbaV0sIEpTVmFsdWVSZWdzKGFyZ0dQUnNb
aV0pKTsKICAgICAgICAgICAgIGNhbGxTbG93UGF0aCgpOwotICAgICAgICAgICAgc2lsZW50Rmls
bEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOworICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lz
dGVycygpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTM5NTgsNyArMzk1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG5vdE51bWJlci5saW5rKCZtX2ppdCk7CiAgICAg
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhyZXN1bHRHUFIpOwogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbihvcGVyYXRpb25Ub051bWJlciwgcmVzdWx0R1BSLCBhcmd1bWVudEdQUik7
Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7CisgICAgICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRp
b25DaGVjaygpOwogCiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTUwNzAsNyAr
NTA3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIHNsb3dQYXRoLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxs
UmVnaXN0ZXJzKHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk1hcEhhc2gsIHJlc3VsdEdQUiwgSlNWYWx1ZVJlZ3MoaW5wdXRHUFIpKTsKLSAgICAgICAgICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAgICAgICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAK
ICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNTExOCw3ICs1MTE4LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0aC5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQUik7
CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTWFwSGFzaCwgcmVzdWx0R1BSLCBKU1Zh
bHVlUmVncyhpbnB1dEdQUikpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3Vs
dEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTUyNDUs
NyArNTI0NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkpTTWFwRmluZEJ1Y2tldCwgcmVz
dWx0R1BSLCBtYXBHUFIsIGtleUdQUiwgaGFzaEdQUik7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25KU1NldEZpbmRCdWNrZXQsIHJlc3Vs
dEdQUiwgbWFwR1BSLCBrZXlHUFIsIGhhc2hHUFIpOwotICAgICAgICAgICAgc2lsZW50RmlsbEFs
bFJlZ2lzdGVycyhpbmRleEdQUik7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KCk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgZG9u
ZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfQpAQCAtNTU2Miw3ICs1NTYyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBzbG93UGF0
aC5saW5rKCZtX2ppdCk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdQ
Uik7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uSGFzT3duUHJvcGVydHksIHJlc3Vs
dEdQUiwgb2JqZWN0R1BSLCBrZXlHUFIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJz
KHJlc3VsdEdQUik7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAg
LTYwMjMsNyArNjAyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoSW52YWxpZEdQUlJlZyk7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CiAgICAgICAgIGFwcGVuZENhbGwo
dHJpZ2dlclRpZXJVcE5vdyk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoSW52YWxp
ZEdQUlJlZyk7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgCiAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBicmVhazsKQEAgLTYxNTEsNyArNjE1
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRBbnlJbnQoRWRnZSAKICAgICBub3RJ
bnQzMi5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BS
KTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbnZlcnRCb3hlZERvdWJsZVRvSW50NTIs
IHJlc3VsdEdQUiwgdmFsdWVHUFIpOwotICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0
R1BSKTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAKICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCB2YWx1ZUVkZ2UsIFNwZWNJbnQzMk9u
bHkgfCBTcGVjQW55SW50QXNEb3VibGUsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjE3MTc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYyNSwxMSArNjI1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50U3BpbGwoY29u
c3QgUwogICAgIH0KIH0KICAgICAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29u
c3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYgcGxhbiwgR1BSUmVnIGNhblRyYW1wbGUpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4m
IHBsYW4pCiB7Ci0jaWYgVVNFKEpTVkFMVUUzMl82NCkKLSAgICBVTlVTRURfUEFSQU0oY2FuVHJh
bXBsZSk7Ci0jZW5kaWYKICAgICBzd2l0Y2ggKHBsYW4uZmlsbEFjdGlvbigpKSB7CiAgICAgY2Fz
ZSBEb05vdGhpbmdGb3JGaWxsOgogICAgICAgICBicmVhazsKQEAgLTY1OSw4ICs2NTYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0Lm1v
dmUodmFsdWVPZkpTQ29uc3RhbnRBc0ltbTY0KHBsYW4ubm9kZSgpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU2V0RG91YmxlQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0
Lm1vdmUoSW1tNjQocmVpbnRlcnByZXREb3VibGVUb0ludDY0KHBsYW4ubm9kZSgpLT5hc051bWJl
cigpKSksIGNhblRyYW1wbGUpOwotICAgICAgICBtX2ppdC5tb3ZlNjRUb0RvdWJsZShjYW5UcmFt
cGxlLCBwbGFuLmZwcigpKTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZShJbW02NChyZWludGVy
cHJldERvdWJsZVRvSW50NjQocGxhbi5ub2RlKCktPmFzTnVtYmVyKCkpKSwgcGxhbi5mcHIoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZDMyUGF5bG9hZEJveEludDoKICAgICAgICAg
bV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHBsYW4ubm9kZSgpLT52aXJ0dWFs
UmVnaXN0ZXIoKSksIHBsYW4uZ3ByKCkpOwpAQCAtMTUzNCw3ICsxNTMwLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvTG93ZXJDYXNlKAogICAgIHNsb3dQYXRoLmxpbmsoJm1faml0
KTsKICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhsZW5ndGhHUFIpOwogICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uVG9Mb3dlckNhc2UsIGxlbmd0aEdQUiwgc3RyaW5nR1BSLCBpbmRleEdQ
Uik7Ci0gICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhsZW5ndGhHUFIpOworICAgIHNpbGVudEZp
bGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgIGF1dG8g
ZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAtMjI2OSw3ICsyMjY1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAgICBzaWxlbnRTcGlsbEFs
bFJlZ2lzdGVycyhyZXN1bHRHcHIpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25Ub0ludDMyLCByZXN1bHRHcHIsIGZwcik7Ci0gICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVn
aXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7
CiAKICAgICAgICAgICAgIGNvbnZlcnRlZC5hcHBlbmQobV9qaXQuanVtcCgpKTsKIApAQCAtMjMy
OCw3ICsyMzI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgog
CiAgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsKICAg
ICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblRvSW50MzIsIHJlc3VsdEdwciwg
ZnByKTsKLSAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7
CisgICAgICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycygpOwogCiAgICAgICAgICAg
ICAgICAgY29udmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCkBAIC0zMTI0LDcgKzMxMjAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAgICAgcGVyZm9y
bURlZmF1bHRIYXNJbnN0YW5jZS5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdp
c3RlcnMoc2NyYXRjaFJlZyk7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25EZWZhdWx0SGFz
SW5zdGFuY2UsIHNjcmF0Y2hSZWcsIHZhbHVlUmVnLCBwcm90b3R5cGVSZWcpOyAKLSAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3Rl
cnMoKTsKICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHNjcmF0Y2hSZWcpOwpAQCAt
MzM1Nyw3ICszMzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRCaXRPcChO
bwogCiAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVn
cywgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFJlZ3MpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgZ2VuLmVuZEp1bXBMaXN0KCkubGluaygmbV9qaXQpOwpAQCAt
MzUxMSw3ICszNTA3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFVudHlwZWRSaWdodFNo
aQogCiAgICAgY2FsbE9wZXJhdGlvbihzbmlwcGV0U2xvd1BhdGhGdW5jdGlvbiwgcmVzdWx0UmVn
cywgbGVmdFJlZ3MsIHJpZ2h0UmVncyk7CiAKLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFJlZ3MpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOwogCiAgICAgZ2VuLmVuZEp1bXBMaXN0KCkubGluaygmbV9qaXQpOwpAQCAt
NDg2NSw3ICs0ODYxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5v
ZAogCiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYsIHJlc3VsdFJlZ3Ms
IGxlZnRSZWdzLCByaWdodFJlZ3MpOwogCi0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMo
cmVzdWx0UmVncyk7CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBnZW4uZW5kSnVtcExpc3QoKS5saW5r
KCZtX2ppdCk7CkBAIC03Mzk3LDcgKzczOTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJyYXlTbGljZShOCiAgICAgICAgICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZt
KCkpOwogCiAgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVl
PENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVN0cnVjdHVyZVZhcmlhYmxlU2l6ZVNsb3dQ
YXRoR2VuZXJhdG9yPigKLSAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgdGVtcFZhbHVlLCBzaXplR1BSLCBzdG9yYWdl
UmVzdWx0R1BSLCBzY3JhdGNoR1BSKSk7CisgICAgICAgICAgICAgICAgc2xvd0Nhc2VzLCB0aGlz
LCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHRlbXBWYWx1ZSwgc2l6ZUdQ
Uiwgc3RvcmFnZVJlc3VsdEdQUikpOwogICAgICAgICB9CiAgICAgfQogCkBAIC04OTM3LDcgKzg5
MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAgICAgICAg
ICAgICBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVn
aXN0ZXJzKHNjcmF0Y2gpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkZpbmRTd2l0
Y2hJbW1UYXJnZXRGb3JEb3VibGUsIHNjcmF0Y2gsIHZhbHVlUmVncy5ncHIoKSwgZGF0YS0+c3dp
dGNoVGFibGVJbmRleCk7Ci0gICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaCk7
CisgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKICAgICAgICAgbV9qaXQuanVtcChz
Y3JhdGNoKTsKICNlbHNlCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdEludCA9IG1faml0
LmJyYW5jaDMyKApAQCAtODk1MSw3ICs4OTQ3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dFN3aXRjaEltbShOb2RlKgogICAgICAgICAgICAgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwog
ICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhzY3JhdGNoKTsKICAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25GaW5kU3dpdGNoSW1tVGFyZ2V0Rm9yRG91YmxlLCBzY3JhdGNoLCB2
YWx1ZVJlZ3MsIGRhdGEtPnN3aXRjaFRhYmxlSW5kZXgpOwotICAgICAgICBzaWxlbnRGaWxsQWxs
UmVnaXN0ZXJzKHNjcmF0Y2gpOworICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAK
ICAgICAgICAgbV9qaXQuanVtcChzY3JhdGNoKTsKICNlbmRpZgpAQCAtOTI0OSw3ICs5MjQ1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZ09uUwogICAgIHNsb3dDYXNl
cy5saW5rKCZtX2ppdCk7CiAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc3RyaW5nKTsKICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblN3aXRjaFN0cmluZywgc3RyaW5nLCBkYXRhLT5zd2l0
Y2hUYWJsZUluZGV4LCBzdHJpbmcpOwotICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoc3RyaW5n
KTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKCk7CiAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICBtX2ppdC5qdW1wKHN0cmluZyk7CiB9CkBAIC05Mzc4LDcgKzkzNzQsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RvcmVCYXJyaWVyCiAKICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhJbnZhbGlkR1BSUmVnKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bldyaXRlQmFycmllclNsb3dQYXRoLCBiYXNlR1BSKTsKLSAgICBzaWxlbnRGaWxsQWxsUmVnaXN0
ZXJzKEludmFsaWRHUFJSZWcpOworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKTsKIAogICAg
IG9rLmxpbmsoJm1faml0KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjE3MTc2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzg3LDcg
KzM4Nyw3IEBAIHB1YmxpYzoKICAgICBTaWxlbnRSZWdpc3RlclNhdmVQbGFuIHNpbGVudFNhdmVQ
bGFuRm9yR1BSKFZpcnR1YWxSZWdpc3RlciBzcGlsbE1lLCBHUFJSZWcgc291cmNlKTsKICAgICBT
aWxlbnRSZWdpc3RlclNhdmVQbGFuIHNpbGVudFNhdmVQbGFuRm9yRlBSKFZpcnR1YWxSZWdpc3Rl
ciBzcGlsbE1lLCBGUFJSZWcgc291cmNlKTsKICAgICB2b2lkIHNpbGVudFNwaWxsKGNvbnN0IFNp
bGVudFJlZ2lzdGVyU2F2ZVBsYW4mKTsKLSAgICB2b2lkIHNpbGVudEZpbGwoY29uc3QgU2lsZW50
UmVnaXN0ZXJTYXZlUGxhbiYsIEdQUlJlZyBjYW5UcmFtcGxlKTsKKyAgICB2b2lkIHNpbGVudEZp
bGwoY29uc3QgU2lsZW50UmVnaXN0ZXJTYXZlUGxhbiYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29sbGVjdGlvblR5cGU+CiAgICAgdm9pZCBzaWxlbnRTcGlsbChjb25zdCBDb2xsZWN0aW9u
VHlwZSYgc2F2ZVBsYW5zKQpAQCAtMzk3LDExICszOTcsMTAgQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgotICAgIHZvaWQgc2lsZW50Rmls
bChjb25zdCBDb2xsZWN0aW9uVHlwZSYgc2F2ZVBsYW5zLCBHUFJSZWcgZXhjbHVkZSA9IEludmFs
aWRHUFJSZWcpCisgICAgdm9pZCBzaWxlbnRGaWxsKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBzYXZl
UGxhbnMpCiAgICAgewotICAgICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklU
OjpwaWNrQ2FuVHJhbXBsZShleGNsdWRlKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2F2
ZVBsYW5zLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zW2ld
LCBjYW5UcmFtcGxlKTsKKyAgICAgICAgICAgIHNpbGVudEZpbGwoc2F2ZVBsYW5zW2ldKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KQEAgLTQ2Miw1MyAr
NDYxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoZXhjbHVk
ZS5wYXlsb2FkR1BSKCksIGV4Y2x1ZGUudGFnR1BSKCkpOwogI2VuZGlmCiAgICAgfQotICAgIAot
ICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoR1BSUmVnIGV4Y2x1ZGUpCi0gICAgewot
ICAgICAgICBHUFJSZWcgcmVzdWx0ID0gR1BSSW5mbzo6cmVnVDA7Ci0gICAgICAgIGlmIChyZXN1
bHQgPT0gZXhjbHVkZSkKLSAgICAgICAgICAgIHJlc3VsdCA9IEdQUkluZm86OnJlZ1QxOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgICBzdGF0aWMgR1BSUmVnIHBpY2tDYW5UcmFt
cGxlKEZQUlJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKLSAgICB9
Ci0gICAgc3RhdGljIEdQUlJlZyBwaWNrQ2FuVHJhbXBsZShOb1Jlc3VsdFRhZykKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBHUFJJbmZvOjpyZWdUMDsKLSAgICB9CiAKLSNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoSlNWYWx1ZVJlZ3MgZXhjbHVkZSkK
KyAgICB2b2lkIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHBpY2tDYW5UcmFtcGxlKGV4Y2x1ZGUucGF5bG9hZEdQUigpKTsKLSAgICB9Ci0jZWxzZQotICAg
IHN0YXRpYyBHUFJSZWcgcGlja0NhblRyYW1wbGUoSlNWYWx1ZVJlZ3MgZXhjbHVkZSkKLSAgICB7
Ci0gICAgICAgIEdQUlJlZyByZXN1bHQgPSBHUFJJbmZvOjpyZWdUMDsKLSAgICAgICAgaWYgKHJl
c3VsdCA9PSBleGNsdWRlLnRhZ0dQUigpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBHUFJJbmZv
OjpyZWdUMTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gZXhjbHVkZS5wYXlsb2FkR1BSKCkp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gR1BSSW5mbzo6cmVnVDI7Ci0gICAgICAgIH0gZWxz
ZSBpZiAocmVzdWx0ID09IGV4Y2x1ZGUucGF5bG9hZEdQUigpKSB7Ci0gICAgICAgICAgICByZXN1
bHQgPSBHUFJJbmZvOjpyZWdUMTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gZXhjbHVkZS50
YWdHUFIoKSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBHUFJJbmZvOjpyZWdUMjsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbmRpZgotICAgIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFJlZ2lzdGVyVHlwZT4KLSAgICB2b2lkIHNpbGVudEZpbGxBbGxSZWdp
c3RlcnMoUmVnaXN0ZXJUeXBlIGV4Y2x1ZGUpCi0gICAgewotICAgICAgICBHUFJSZWcgY2FuVHJh
bXBsZSA9IHBpY2tDYW5UcmFtcGxlKGV4Y2x1ZGUpOwotICAgICAgICAKICAgICAgICAgd2hpbGUg
KCFtX3BsYW5zLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgU2lsZW50UmVnaXN0ZXJTYXZlUGxh
biYgcGxhbiA9IG1fcGxhbnMubGFzdCgpOwotICAgICAgICAgICAgc2lsZW50RmlsbChwbGFuLCBj
YW5UcmFtcGxlKTsKKyAgICAgICAgICAgIHNpbGVudEZpbGwocGxhbik7CiAgICAgICAgICAgICBt
X3BsYW5zLnJlbW92ZUxhc3QoKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>