<?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>226773</bug_id>
          
          <creation_ts>2021-06-08 10:14:20 -0700</creation_ts>
          <short_desc>Adopt WTF::Span in SQLiteStatement</short_desc>
          <delta_ts>2021-06-08 22:04:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1767813</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 10:14:20 -0700</bug_when>
    <thetext>Adopt WTF::Span in SQLiteStatement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767814</commentid>
    <comment_count>1</comment_count>
      <attachid>430857</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 10:22:07 -0700</bug_when>
    <thetext>Created attachment 430857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767816</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-06-08 10:23:26 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767838</commentid>
    <comment_count>3</comment_count>
      <attachid>430867</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-06-08 11:19:28 -0700</bug_when>
    <thetext>Created attachment 430867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768050</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-08 22:03:39 -0700</bug_when>
    <thetext>Committed r278647 (238629@main): &lt;https://commits.webkit.org/238629@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430867.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768051</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-08 22:04:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79056117&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430857</attachid>
            <date>2021-06-08 10:22:07 -0700</date>
            <delta_ts>2021-06-08 11:19:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226773-20210608102207.patch</filename>
            <type>text/plain</type>
            <size>33928</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODYxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA2LTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBXVEY6OlNwYW4gaW4gU1FM
aXRlU3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEbyBzb21lIGluaXRpYWwgYWRvcHRpb24gb2YgV1RGOjpTcGFuIGJ5IGFkb3B0aW5nIGl0
IGluIFNRTGl0ZVN0YXRlbWVudC4KKyAgICAgICAgCisgICAgICAgIC0gUmVtb3ZlcyBjbGFzcyBC
bG9iVmlldy4KKyAgICAgICAgLSBSZW5hbWVzIGNvbHVtbkJsb2JWaWV3IHRvIGNvbHVtbkJsb2JB
c1NwYW4oKSAobWlycm9ycyBjb2x1bW5CbG9iQXNTdHJpbmcoKSBuYW1pbmcpCisgICAgICAgICAg
YW5kIGhhdmUgaXQgcmV0dXJuIGEgU3Bhbjxjb25zdCB1aW50OF90Pi4KKyAgICAgICAgLSBSZXBs
YWNlIGJpbmRCbG9iKGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpIHdpdGgg
YmluZEJsb2IoaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KS4KKworICAgICAgICBEdWUg
dG8gaW1wbGljaXQgY29uc3RydWN0aW9uIGZvciB0eXBlcyB3aXRoIGRhdGEoKSBhbmQgc2l6ZSgp
IGZ1bmN0aW9ucyAoYWN0dWFsbHkgYW55dGhpbmcKKyAgICAgICAgdGhhdCBzdGQ6OmRhdGEoKSBh
bmQgc3RkOjpzaXplKCkgY2FuIHJlYXNvbiBhYm91dCksIFZlY3RvciBhbmQgU2hhcmVkQnVmZmVy
IGNsZWFubHkgd29yaworICAgICAgICB0byBjb252ZXJ0IHRvIFNwYW4gb2YgdGhlIHNhbWUgdW5k
ZXJseWluZyB0eXBlLiBUaGlzIG1lYW5zIHRoYXQgbWFueSBjYWxsZXJzIG9mIGJpbmRCbG9iCisg
ICAgICAgIGFyZSBub3cgc2ltcGxlciwgYXMgaW5zdGVhZCBvZiBkb2luZzoKKworICAgICAgICAg
ICAgYmluZEJsb2IoMSwgZm9vLT5kYXRhKCksIGZvby0+c2l6ZSgpKTsKKworICAgICAgICB3ZSBp
bnN0ZWFkIGRvOgorCisgICAgICAgICAgICBiaW5kQmxvYigxLCAqZm9vKTsKKworICAgICAgICBU
aGVyZSBpcyBtdWNoIG11Y2ggbW9yZSB0byBkbyB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIG5l
dyB0eXBlLCBidXQgdGhpcyBpcworICAgICAgICBrZXB0IGludGVudGlvbmFsbHkgc21hbGwsIGFz
IHRoZSBwdWxsaW5nIGJhY2sgdGhlIG9uaW9uIGNhbiBnbyB2ZXJ5IGRlZXAuIAorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0
ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3JhdGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRB
bmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudDo6Y29sdW1uQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNv
bHVtbkJsb2JBc1NwYW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1
bW5CbG9iVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpCbG9iVmlldzo6Qmxv
YlZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpCbG9i
Vmlldzo6ZGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OkJsb2JWaWV3OjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkcyk6CisKIDIw
MjEtMDYtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
cXVpcmUgdGhhdCBjYWxsc2l0ZXMgb2YgYFNuYXBzaG90T3B0aW9uc2Agc3BlY2lmeSBhIGBQaXhl
bEZvcm1hdGAgYW5kIGBEZXN0aW5hdGlvbkNvbG9yU3BhY2VgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcAkocmV2aXNpb24gMjc4NjEwKQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1MCw3ICs1NTAsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
bWlncmF0ZUluZGV4CiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHN0YXRlbWVudC0+Y29sdW1u
VGV4dCgxKTsKICAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzdGF0ZW1lbnQt
PmNvbHVtbkludDY0KDIpOwogICAgICAgICAgICAgdWludDY0X3QgbmV3SUQgPSBpbmRleElETWFw
LmdldCh7IG9iamVjdFN0b3JlSUQsIGlkIH0pOwotICAgICAgICAgICAgYXV0byBrZXlQYXRoQnVm
ZmVyVmlldyA9IHN0YXRlbWVudC0+Y29sdW1uQmxvYlZpZXcoMyk7CisgICAgICAgICAgICBhdXRv
IGtleVBhdGhCdWZmZXJTcGFuID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iQXNTcGFuKDMpOwogICAg
ICAgICAgICAgYm9vbCB1bmlxdWUgPSBzdGF0ZW1lbnQtPmNvbHVtbkludCg0KTsKICAgICAgICAg
ICAgIGJvb2wgbXVsdGlFbnRyeSA9IHN0YXRlbWVudC0+Y29sdW1uSW50KDUpOwogCkBAIC01NTks
NyArNTU5LDcgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3JhdGVJbmRleAogICAg
ICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG5ld0lEKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIG5hbWUpICE9IFNRTElURV9PSwogICAg
ICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDMsIG9iamVjdFN0b3JlSUQpICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoNCwga2V5UGF0aEJ1ZmZlclZp
ZXcuZGF0YSgpLCBrZXlQYXRoQnVmZmVyVmlldy5zaXplKCkpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoNCwga2V5UGF0aEJ1ZmZlclNwYW4pICE9IFNRTElU
RV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludCg1LCB1bmlxdWUpICE9IFNRTElU
RV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludCg2LCBtdWx0aUVudHJ5KSAhPSBT
UUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewpAQCAtNjEzLDE2ICs2MTMsMTYgQEAgYm9vbCBTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3Jh
dGVJbmRleAogICAgICAgICAgICAgdWludDY0X3QgaWQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0
KDApOwogICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCA9IHN0YXRlbWVudC0+Y29s
dW1uSW50NjQoMSk7CiAgICAgICAgICAgICB1aW50NjRfdCBuZXdJRCA9IGluZGV4SURNYXAuZ2V0
KHsgb2JqZWN0U3RvcmVJRCwgaWQgfSk7Ci0gICAgICAgICAgICBhdXRvIGtleUJ1ZmZlclZpZXcg
PSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JWaWV3KDIpOwotICAgICAgICAgICAgYXV0byB2YWx1ZUJ1
ZmZlclZpZXcgPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JWaWV3KDMpOworICAgICAgICAgICAgYXV0
byBrZXlCdWZmZXJTcGFuID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iQXNTcGFuKDIpOworICAgICAg
ICAgICAgYXV0byB2YWx1ZUJ1ZmZlclNwYW4gPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JBc1NwYW4o
Myk7CiAgICAgICAgICAgICB1aW50NjRfdCByZWNvcmRJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50
NjQoNCk7CiAKICAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6UHV0
VGVtcEluZGV4UmVjb3JkLCAiSU5TRVJUIElOVE8gX1RlbXBfSW5kZXhSZWNvcmRzIFZBTFVFUyAo
PywgPywgQ0FTVCg/IEFTIFRFWFQpLCBDQVNUKD8gQVMgVEVYVCksID8pOyJfcyk7CiAgICAgICAg
ICAgICBpZiAoIXNxbAogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG5ld0lE
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgyLCBvYmpl
Y3RTdG9yZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9i
KDMsIGtleUJ1ZmZlclZpZXcuZGF0YSgpLCBrZXlCdWZmZXJWaWV3LnNpemUoKSkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCB2YWx1ZUJ1ZmZlclZpZXcu
ZGF0YSgpLCB2YWx1ZUJ1ZmZlclZpZXcuc2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAg
ICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIGtleUJ1ZmZlclNwYW4pICE9IFNRTElURV9PSworICAg
ICAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoNCwgdmFsdWVCdWZmZXJTcGFuKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCg1LCByZWNvcmRJRCkgIT0g
U1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUp
IHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkVycm9yIGFkZGluZyBpbmRleCByZWNvcmQg
dG8gX1RlbXBfSW5kZXhSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGRhdGFiYXNlLmxhc3RFcnJv
cigpLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CkBAIC02OTgsNyArNjk4LDcgQEAgYm9vbCBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZEV4aXN0aW5nSQogICAgICAgICAgICAgfHwgc3FsLT5i
aW5kSW50NjQoMSwgaW5mby5pZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
fHwgc3FsLT5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwtPmJpbmRJbnQ2NCgzLCBpbmZvLm9iamVjdFN0b3JlSWRlbnRpZmllcigpKSAhPSBT
UUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoNCwga2V5UGF0aEJsb2ItPmRh
dGEoKSwga2V5UGF0aEJsb2ItPnNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBz
cWwtPmJpbmRCbG9iKDQsICprZXlQYXRoQmxvYikgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzcWwtPmJpbmRJbnQoNSwgaW5mby51bmlxdWUoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwtPmJpbmRJbnQoNiwgaW5mby5tdWx0aUVudHJ5KCkpICE9IFNRTElURV9PSwogICAg
ICAgICAgICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKQEAgLTcxNyw5ICs3MTcs
OSBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJCiAKICAgICAgICAg
aW50IHJlc3VsdCA9IHNxbC0+c3RlcCgpOwogICAgICAgICB3aGlsZSAocmVzdWx0ID09IFNRTElU
RV9ST1cpIHsKLSAgICAgICAgICAgIGF1dG8ga2V5QnVmZmVyVmlldyA9IHNxbC0+Y29sdW1uQmxv
YlZpZXcoMCk7CisgICAgICAgICAgICBhdXRvIGtleUJ1ZmZlclNwYW4gPSBzcWwtPmNvbHVtbkJs
b2JBc1NwYW4oMCk7CiAgICAgICAgICAgICBJREJLZXlEYXRhIGtleURhdGE7Ci0gICAgICAgICAg
ICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlCdWZmZXJWaWV3LmRhdGEoKSwga2V5QnVm
ZmVyVmlldy5zaXplKCksIGtleURhdGEpKSB7CisgICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXpl
SURCS2V5RGF0YShrZXlCdWZmZXJTcGFuLmRhdGEoKSwga2V5QnVmZmVyU3Bhbi5zaXplKCksIGtl
eURhdGEpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZGVzZXJpYWxp
emUga2V5IGRhdGEgZnJvbSBkYXRhYmFzZSB3aGlsZSBnZXR0aW5nIGFsbCByZWNvcmRzIik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtODE4LDEwICs4
MTgsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSQogICAgICAg
ICB3aGlsZSAocmVzdWx0ID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIHVpbnQ2NF90IG9i
amVjdFN0b3JlSUQgPSBzcWwtPmNvbHVtbkludDY0KDApOwogICAgICAgICAgICAgU3RyaW5nIG9i
amVjdFN0b3JlTmFtZSA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICAgICAgICAgIGF1dG8ga2V5
UGF0aEJ1ZmZlclZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDIpOworICAgICAgICAgICAgYXV0
byBrZXlQYXRoQnVmZmVyU3BhbiA9IHNxbC0+Y29sdW1uQmxvYkFzU3BhbigyKTsKIAogICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxJREJLZXlQYXRoPiBvYmplY3RTdG9yZUtleVBhdGg7Ci0gICAg
ICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0aChrZXlQYXRoQnVmZmVyVmlldy5kYXRh
KCksIGtleVBhdGhCdWZmZXJWaWV3LnNpemUoKSwgb2JqZWN0U3RvcmVLZXlQYXRoKSkgeworICAg
ICAgICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZlclNwYW4uZGF0
YSgpLCBrZXlQYXRoQnVmZmVyU3Bhbi5zaXplKCksIG9iamVjdFN0b3JlS2V5UGF0aCkpIHsKICAg
ICAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBleHRyYWN0IGtleSBwYXRoIGZyb20g
ZGF0YWJhc2UiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
IH0KQEAgLTg1NCwxMCArODU0LDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJEYXRhYmFzZUluZm8+
IFNRTGl0ZUkKICAgICAgICAgICAgIHVpbnQ2NF90IGluZGV4SUQgPSBzcWwtPmNvbHVtbkludDY0
KDApOwogICAgICAgICAgICAgU3RyaW5nIGluZGV4TmFtZSA9IHNxbC0+Y29sdW1uVGV4dCgxKTsK
ICAgICAgICAgICAgIHVpbnQ2NF90IG9iamVjdFN0b3JlSUQgPSBzcWwtPmNvbHVtbkludDY0KDIp
OwotICAgICAgICAgICAgYXV0byBrZXlQYXRoQnVmZmVyVmlldyA9IHNxbC0+Y29sdW1uQmxvYlZp
ZXcoMyk7CisgICAgICAgICAgICBhdXRvIGtleVBhdGhCdWZmZXJTcGFuID0gc3FsLT5jb2x1bW5C
bG9iQXNTcGFuKDMpOwogCiAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IGlu
ZGV4S2V5UGF0aDsKLSAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlQYXRoKGtleVBh
dGhCdWZmZXJWaWV3LmRhdGEoKSwga2V5UGF0aEJ1ZmZlclZpZXcuc2l6ZSgpLCBpbmRleEtleVBh
dGgpKSB7CisgICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0aChrZXlQYXRoQnVm
ZmVyU3Bhbi5kYXRhKCksIGtleVBhdGhCdWZmZXJTcGFuLnNpemUoKSwgaW5kZXhLZXlQYXRoKSkg
ewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4dHJhY3Qga2V5IHBhdGgg
ZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgfQpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpjcmVhdGVPYgogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwgc3FsLT5iaW5k
SW50NjQoMSwgaW5mby5pZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwg
c3FsLT5iaW5kVGV4dCgyLCBpbmZvLm5hbWUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDMsIGtleVBhdGhCbG9iLT5kYXRhKCksIGtleVBhdGhCbG9iLT5zaXpl
KCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigzLCAqa2V5UGF0
aEJsb2IpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDQsIGluZm8u
YXV0b0luY3JlbWVudCgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBhZGQg
b2JqZWN0IHN0b3JlICclcycgdG8gT2JqZWN0U3RvcmVJbmZvIHRhYmxlICglaSkgLSAlcyIsIGlu
Zm8ubmFtZSgpLnV0ZjgoKS5kYXRhKCksIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3JNc2coKSk7CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2
NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwt
PmJpbmRUZXh0KDIsIGluZm8ubmFtZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludDY0KDMsIGluZm8ub2JqZWN0U3RvcmVJZGVudGlmaWVyKCkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCBrZXlQYXRoQmxvYi0+ZGF0YSgpLCBr
ZXlQYXRoQmxvYi0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC0+Ymlu
ZEJsb2IoNCwgKmtleVBhdGhCbG9iKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+
YmluZEludCg1LCBpbmZvLnVuaXF1ZSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludCg2LCBpbmZvLm11bHRpRW50cnkoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAg
ICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZQogICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50KFNRTDo6SGFzSW5kZXhSZWNvcmQsICJTRUxFQ1Qgcm93aWQgRlJPTSBJ
bmRleFJlY29yZHMgV0hFUkUgaW5kZXhJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhUKTsi
X3MpOwogICAgIGlmICghc3FsCiAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGluZm8uaWRl
bnRpZmllcigpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBpbmRl
eEtleUJ1ZmZlci0+ZGF0YSgpLCBpbmRleEtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqaW5kZXhLZXlCdWZmZXIpICE9IFNRTElU
RV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkVycm9yIGNoZWNraW5nIGZvciBpbmRleCByZWNv
cmQgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiRXJyb3IgY2hlY2tpbmcgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSJfcyB9OwogICAg
IH0KQEAgLTE1NDcsOCArMTU0Nyw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
dW5jaGVja2UKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0
KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQo
Miwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRC
bG9iKDMsIGluZGV4S2V5QnVmZmVyLT5kYXRhKCksIGluZGV4S2V5QnVmZmVyLT5zaXplKCkpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCB2YWx1ZUJ1ZmZlci0+
ZGF0YSgpLCB2YWx1ZUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8
IHNxbC0+YmluZEJsb2IoMywgKmluZGV4S2V5QnVmZmVyKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC0+YmluZEJsb2IoNCwgKnZhbHVlQnVmZmVyKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgICAgIHx8IHNxbC0+YmluZEludDY0KDUsIHJlY29yZElEKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBMT0df
RVJST1IoIkNvdWxkIG5vdCBwdXQgaW5kZXggcmVjb3JkIGZvciBpbmRleCAlIiBQUklpNjQgIiBp
biBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIgaW4gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBp
bmRleElELCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yTXNnKCkpOwpAQCAtMTY2Niw3ICsxNjY2LDcgQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjprZXlFeGlzdAogICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50
KFNRTDo6S2V5RXhpc3RzSW5PYmplY3RTdG9yZSwgIlNFTEVDVCBrZXkgRlJPTSBSZWNvcmRzIFdI
RVJFIG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCkgTElNSVQgMTsi
X3MpOwogICAgIGlmICghc3FsCiAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG9iamVjdFN0
b3JlSUQpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIGtleUJ1ZmZl
ci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIHx8
IHNxbC0+YmluZEJsb2IoMiwgKmtleUJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExP
R19FUlJPUigiQ291bGQgbm90IGdldCByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0
ICIgZnJvbSBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRl
REItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgIHJl
dHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBjaGVjayBmb3IgZXhpc3Rl
bmNlIG9mIElEQktleSBpbiBvYmplY3Qgc3RvcmUiX3MgfTsKICAgICB9CkBAIC0xNzUyLDcgKzE3
NTIsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRlbGV0ZVJlCiAKICAgICAg
ICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIG9iamVjdFN0b3Jl
SUQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCBrZXlCdWZm
ZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSykgeworICAgICAgICAg
ICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqa2V5QnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRlbGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3Rv
cmUgJSIgUFJJaTY0ICIgKCVpKSAtICVzIiwgb2JqZWN0U3RvcmVJRCwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZhaWxlZCB0byBkZWxldGUgcmVjb3JkIGZyb20g
b2JqZWN0IHN0b3JlIl9zIH07CiAgICAgICAgIH0KQEAgLTE3OTksNyArMTc5OSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlUmUKIAogICAgICAgICBpZiAoIXNxbAog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIGtleUJ1ZmZlci0+ZGF0YSgpLCBr
ZXlCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJpbmRC
bG9iKDIsICprZXlCdWZmZXIpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5zdGVw
KCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGRl
bGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIgKCVpKSAtICVzIiwgb2Jq
ZWN0U3RvcmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJv
ck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZh
aWxlZCB0byBkZWxldGUgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlIl9zIH07CkBAIC0xOTcwLDgg
KzE5NzAsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yCiAgICAg
ICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50KFNRTDo6QWRkT2JqZWN0U3RvcmVSZWNvcmQs
ICJJTlNFUlQgSU5UTyBSZWNvcmRzIFZBTFVFUyAoPywgQ0FTVCg/IEFTIFRFWFQpLCA/LCBOVUxM
KTsiX3MpOwogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQo
MSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDIsIGtleUJ1ZmZlci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUo
KSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHZhbHVlLmRh
dGEoKS5kYXRhKCktPmRhdGEoKSwgdmFsdWUuZGF0YSgpLmRhdGEoKS0+c2l6ZSgpKSAhPSBTUUxJ
VEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmtleUJ1ZmZlcikgIT0gU1FM
SVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICp2YWx1ZS5kYXRhKCkuZGF0
YSgpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9E
T05FKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBwdXQgcmVjb3JkIGZvciBv
YmplY3Qgc3RvcmUgJSIgUFJJaTY0ICIgaW4gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBvYmpl
Y3RTdG9yZUluZm8uaWRlbnRpZmllcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxp
dGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIHN0b3JlIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUiX3MgfTsK
QEAgLTE5ODYsNyArMTk4Niw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRk
UmVjb3IKICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVPYmpl
Y3RTdG9yZVJlY29yZCwgIkRFTEVURSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9
ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhUKTsiX3MpOwogICAgICAgICBpZiAoIXNxbAogICAg
ICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIo
KSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIGtleUJ1ZmZl
ci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8
fCBzcWwtPmJpbmRCbG9iKDIsICprZXlCdWZmZXIpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
fHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
SW5kZXhpbmcgbmV3IG9iamVjdCBzdG9yZSByZWNvcmQgZmFpbGVkLCBidXQgdW5hYmxlIHRvIHJl
bW92ZSB0aGUgb2JqZWN0IHN0b3JlIHJlY29yZCBpdHNlbGYiKTsKICAgICAgICAgICAgIHJldHVy
biBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkluZGV4aW5nIG5ldyBvYmplY3Qgc3RvcmUgcmVj
b3JkIGZhaWxlZCwgYnV0IHVuYWJsZSB0byByZW1vdmUgdGhlIG9iamVjdCBzdG9yZSByZWNvcmQg
aXRzZWxmIl9zIH07CkBAIC0yMTcxLDggKzIxNzEsOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmdldFJlY29yCiAKICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAgIHx8IHNx
bC0+YmluZEludDY0KDEsIG9iamVjdFN0b3JlSUQpICE9IFNRTElURV9PSwotICAgICAgICAgICAg
fHwgc3FsLT5iaW5kQmxvYigyLCBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6
ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywgdXBwZXJC
dWZmZXItPmRhdGEoKSwgdXBwZXJCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsICp1cHBlckJ1ZmZlcikgIT0gU1FMSVRFX09L
KSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBnZXQga2V5IHJhbmdlIHJlY29y
ZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBmcm9tIFJlY29yZHMgdGFibGUgKCVpKSAt
ICVzIiwgb2JqZWN0U3RvcmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREIt
Pmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25F
cnJvciwgIkZhaWxlZCB0byBsb29rIHVwIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUgYnkga2V5IHJh
bmdlIl9zIH07CiAgICAgICAgIH0KQEAgLTIyODgsOCArMjI4OCw4IEBAIElEQkVycm9yIFNRTGl0
ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0QWxsT2IKICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVu
dEZvckdldEFsbE9iamVjdFN0b3JlUmVjb3JkcyhnZXRBbGxSZWNvcmRzRGF0YSk7CiAgICAgaWYg
KCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgZ2V0QWxsUmVjb3Jkc0RhdGEub2Jq
ZWN0U3RvcmVJZGVudGlmaWVyKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxv
YigyLCBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigzLCB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBl
ckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgfHwgc3FsLT5iaW5kQmxv
YigyLCAqbG93ZXJCdWZmZXIpICE9IFNRTElURV9PSworICAgICAgICB8fCBzcWwtPmJpbmRCbG9i
KDMsICp1cHBlckJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291
bGQgbm90IGdldCBrZXkgcmFuZ2UgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAi
IGZyb20gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBnZXRBbGxSZWNvcmRzRGF0YS5vYmplY3RT
dG9yZUlkZW50aWZpZXIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0
RXJyb3JNc2coKSk7CiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgIkZh
aWxlZCB0byBsb29rIHVwIHJlY29yZCBpbiBvYmplY3Qgc3RvcmUgYnkga2V5IHJhbmdlIl9zIH07
CiAgICAgfQpAQCAtMjMwOCw5ICsyMzA4LDkgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0
b3JlOjpnZXRBbGxPYgogICAgIHVpbnQzMl90IHJldHVybmVkUmVzdWx0cyA9IDA7CiAKICAgICB3
aGlsZSAoc3FsUmVzdWx0ID09IFNRTElURV9ST1cgJiYgcmV0dXJuZWRSZXN1bHRzIDwgdGFyZ2V0
UmVzdWx0cykgewotICAgICAgICBhdXRvIGtleUJ1ZmZlclZpZXcgPSBzcWwtPmNvbHVtbkJsb2JW
aWV3KDApOworICAgICAgICBhdXRvIGtleUJ1ZmZlclNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1Nw
YW4oMCk7CiAgICAgICAgIElEQktleURhdGEga2V5RGF0YTsKLSAgICAgICAgaWYgKCFkZXNlcmlh
bGl6ZUlEQktleURhdGEoa2V5QnVmZmVyVmlldy5kYXRhKCksIGtleUJ1ZmZlclZpZXcuc2l6ZSgp
LCBrZXlEYXRhKSkgeworICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlCdWZm
ZXJTcGFuLmRhdGEoKSwga2V5QnVmZmVyU3Bhbi5zaXplKCksIGtleURhdGEpKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFi
YXNlIHdoaWxlIGdldHRpbmcgYWxsIHJlY29yZHMiKTsKICAgICAgICAgICAgIHJldHVybiBJREJF
cnJvciB7IFVua25vd25FcnJvciwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSB3aGls
ZSBnZXR0aW5nIGFsbCByZWNvcmRzIl9zIH07CiAgICAgICAgIH0KQEAgLTI0NTAsNyArMjQ1MCw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2UKIAogICAgIGlmICgh
c3FsCiAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIGluZGV4SUQpICE9IFNRTElURV9PSwot
ICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmJ1ZmZlcikg
IT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGxvb2t1cCBpbmRl
eCByZWNvcmQgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93
bkVycm9yLCAiVW5hYmxlIHRvIGxvb2t1cCBpbmRleCByZWNvcmQgaW4gZGF0YWJhc2UiX3MgfTsK
ICAgICB9CkBAIC0yNDY1LDkgKzI0NjUsOSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OnVuY2hlY2tlCiAgICAgICAgIHJldHVybiBJREJFcnJvciB7IH07CiAKICAgICBJREJLZXlE
YXRhIG9iamVjdFN0b3JlS2V5OwotICAgIGF1dG8ga2V5VmlldyA9IHNxbC0+Y29sdW1uQmxvYlZp
ZXcoMCk7CisgICAgYXV0byBrZXlTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFuKDApOwogCi0g
ICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5Vmlldy5kYXRhKCksIGtleVZpZXcuc2l6
ZSgpLCBvYmplY3RTdG9yZUtleSkpIHsKKyAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShr
ZXlTcGFuLmRhdGEoKSwga2V5U3Bhbi5zaXplKCksIG9iamVjdFN0b3JlS2V5KSkgewogICAgICAg
ICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgbG9va2luZyB1cCBpbmRleCBy
ZWNvcmQgaW4gZGF0YWJhc2UiKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVy
cm9yLCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBsb29raW5nIHVwIGluZGV4IHJlY29yZCBp
biBkYXRhYmFzZSJfcyB9OwogICAgIH0KQEAgLTI1MzIsOCArMjUzMiw4IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0Q291bnQKICAgICAgICAgCiAgICAgICAgIGlmICghc3Rh
dGVtZW50CiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5k
QmxvYigyLCBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgdXBwZXJCdWZmZXIt
PmRhdGEoKSwgdXBwZXJCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAg
ICB8fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCisg
ICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDMsICp1cHBlckJ1ZmZlcikgIT0gU1FM
SVRFX09LKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjb3VudCByZWNvcmRz
IGluIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBmcm9tIFJlY29yZHMgdGFibGUgKCVpKSAtICVz
Iiwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxp
dGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5r
bm93bkVycm9yLCAiVW5hYmxlIHRvIGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlIGR1ZSB0
byBiaW5kaW5nIGZhaWx1cmUiX3MgfTsKICAgICAgICAgfQpAQCAtMjU0OSw4ICsyNTQ5LDggQEAg
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudAogCiAgICAgICAgIGlmICgh
c3RhdGVtZW50CiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpbmRleElk
ZW50aWZpZXIpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxv
YigyLCBsb3dlckJ1ZmZlci0+ZGF0YSgpLCBsb3dlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgdXBwZXJCdWZmZXItPmRh
dGEoKSwgdXBwZXJCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDMsICp1cHBlckJ1ZmZlcikgIT0gU1FMSVRF
X09LKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjb3VudCByZWNvcmRzIHdp
dGggaW5kZXggJSIgUFJJaTY0ICIgZnJvbSBJbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwg
aW5kZXhJZGVudGlmaWVyLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9y
LCAiVW5hYmxlIHRvIGNvdW50IHJlY29yZHMgZm9yIGluZGV4IGR1ZSB0byBiaW5kaW5nIGZhaWx1
cmUiX3MgfTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAJKHJldmlzaW9u
IDI3ODYxMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxp
dGVJREJDdXJzb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzAsMTMgKzI3MCwxMyBAQCBib29s
IFNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50cygpCiAgICAgfQogCiAgICAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRMb3dlcktl
eSk7Ci0gICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50Kyss
IGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYg
KG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9
IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29y
IHN0YXRlbWVudCAobG93ZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgYnVmZmVyID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRVcHBlcktleSk7Ci0g
ICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssIGJ1ZmZl
ci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fc3Rh
dGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElU
RV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgY3Vyc29yIHN0YXRl
bWVudCAodXBwZXIga2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzE2
LDEzICszMTYsMTMgQEAgYm9vbCBTUUxpdGVJREJDdXJzb3I6OnJlc2V0QW5kUmViaW5kUHJlSQog
ICAgIH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEoa2V5KTsKLSAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVu
dEJpbmRBcmd1bWVudCsrLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpICE9IFNRTElU
RV9PSykgeworICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50Qmlu
ZEFyZ3VtZW50KyssICpidWZmZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1Io
IkNvdWxkIG5vdCBiaW5kIGlkIGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKGtleSkiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGJ1ZmZlciA9IHNlcmlhbGl6ZUlEQktl
eURhdGEobV9jdXJyZW50SW5kZXhSZWNvcmRWYWx1ZSk7Ci0gICAgaWYgKG1fcHJlSW5kZXhTdGF0
ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgYnVmZmVyLT5kYXRhKCksIGJ1
ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9wcmVJbmRleFN0YXRlbWVu
dC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0sp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgYmluZCBpZCBhcmd1bWVudCB0byBwcmUg
c3RhdGVtZW50ICh2YWx1ZSkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTUw
Nyw5ICs1MDcsOSBAQCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1CiAK
ICAgICByZWNvcmQucm93SUQgPSBzdGF0ZW1lbnQtPmNvbHVtbkludDY0KDApOwogICAgIEFTU0VS
VChyZWNvcmQucm93SUQpOwotICAgIGF1dG8ga2V5RGF0YVZpZXcgPSBzdGF0ZW1lbnQtPmNvbHVt
bkJsb2JWaWV3KDEpOworICAgIGF1dG8ga2V5RGF0YVNwYW4gPSBzdGF0ZW1lbnQtPmNvbHVtbkJs
b2JBc1NwYW4oMSk7CiAKLSAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhVmll
dy5kYXRhKCksIGtleURhdGFWaWV3LnNpemUoKSwgcmVjb3JkLnJlY29yZC5rZXkpKSB7CisgICAg
aWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEoa2V5RGF0YVNwYW4uZGF0YSgpLCBrZXlEYXRhU3Bh
bi5zaXplKCksIHJlY29yZC5yZWNvcmQua2V5KSkgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJs
ZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGFkdmFuY2luZyBj
dXJzb3IiKTsKICAgICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwogICAgICAgICByZXR1cm4g
RmV0Y2hSZXN1bHQ6OkZhaWx1cmU7CkBAIC01NDQsNyArNTQ0LDcgQEAgU1FMaXRlSURCQ3Vyc29y
OjpGZXRjaFJlc3VsdCBTUUxpdGVJREJDdQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2Nh
Y2hlZE9iamVjdFN0b3JlU3RhdGVtZW50Ci0gICAgICAgICAgICB8fCBtX2NhY2hlZE9iamVjdFN0
b3JlU3RhdGVtZW50LT5iaW5kQmxvYigxLCBrZXlEYXRhLmRhdGEoKSwga2V5RGF0YS5zaXplKCkp
ICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgbV9jYWNoZWRPYmplY3RTdG9yZVN0YXRlbWVu
dC0+YmluZEJsb2IoMSwga2V5RGF0YSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBtX2Nh
Y2hlZE9iamVjdFN0b3JlU3RhdGVtZW50LT5iaW5kSW50NjQoMiwgbV9vYmplY3RTdG9yZUlEKSAh
PSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNyZWF0ZSBp
bmRleCBjdXJzb3Igc3RhdGVtZW50IGludG8gb2JqZWN0IHN0b3JlIHJlY29yZHMgKCVpKSAnJXMn
IiwgZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKICAgICAg
ICAgICAgIG1hcmtBc0Vycm9yZWQocmVjb3JkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAko
cmV2aXNpb24gMjc4NjEwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODE1LDcgKzgxNSw3IEBA
IGJvb2wgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnN0b3JlKEFwcGwKICAgICAgICAgZGF0YVN0
YXRlbWVudC0+YmluZFRleHQoMiwgcGF0aCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJl
c291cmNlLT5kYXRhKCkuc2l6ZSgpKQotICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJs
b2IoMSwgcmVzb3VyY2UtPmRhdGEoKS5kYXRhKCksIHJlc291cmNlLT5kYXRhKCkuc2l6ZSgpKTsK
KyAgICAgICAgICAgIGRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIHJlc291cmNlLT5kYXRhKCkp
OwogICAgIH0KICAgICAKICAgICBpZiAoIWRhdGFTdGF0ZW1lbnQtPmV4ZWN1dGVDb21tYW5kKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1l
bnQuY3BwCShyZXZpc2lvbiAyNzg2MTApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTQgKzg1LDE0IEBAIGJv
b2wgU1FMaXRlU3RhdGVtZW50OjpleGVjdXRlQ29tbWFuZCgpCiAgICAgcmV0dXJuIHN0ZXAoKSA9
PSBTUUxJVEVfRE9ORTsKIH0KIAotaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGlu
ZGV4LCBjb25zdCB2b2lkKiBibG9iLCBpbnQgc2l6ZSkKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OmJp
bmRCbG9iKGludCBpbmRleCwgU3Bhbjxjb25zdCB1aW50OF90PiBibG9iKQogewogICAgIEFTU0VS
VChpbmRleCA+IDApOwogICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5kZXgpIDw9
IGJpbmRQYXJhbWV0ZXJDb3VudCgpKTsKLSAgICBBU1NFUlQoYmxvYiB8fCAhc2l6ZSk7Ci0gICAg
QVNTRVJUKHNpemUgPj0gMCk7CisgICAgQVNTRVJUKGJsb2IuZGF0YSgpIHx8ICFibG9iLnNpemUo
KSk7CisgICAgQVNTRVJUKGJsb2Iuc2l6ZSgpID49IDApOwogCi0gICAgcmV0dXJuIHNxbGl0ZTNf
YmluZF9ibG9iKG1fc3RhdGVtZW50LCBpbmRleCwgYmxvYiwgc2l6ZSwgU1FMSVRFX1RSQU5TSUVO
VCk7CisgICAgcmV0dXJuIHNxbGl0ZTNfYmluZF9ibG9iKG1fc3RhdGVtZW50LCBpbmRleCwgYmxv
Yi5kYXRhKCksIGJsb2Iuc2l6ZSgpLCBTUUxJVEVfVFJBTlNJRU5UKTsKIH0KIAogaW50IFNRTGl0
ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHRleHQpCkBAIC0x
MDcsNyArMTA3LDcgQEAgaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LAog
ICAgIGVsc2UKICAgICAgICAgY2hhcmFjdGVycyA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKIAot
ICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgY2hhcmFjdGVycywgdGV4dC5sZW5ndGgoKSAqIHNp
emVvZihVQ2hhcikpOworICAgIHJldHVybiBiaW5kQmxvYihpbmRleCwgU3BhbiB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNoYXJhY3RlcnMpLCB0ZXh0Lmxlbmd0aCgpICogc2l6
ZW9mKFVDaGFyKSB9KTsKIH0KIAogaW50IFNRTGl0ZVN0YXRlbWVudDo6YmluZFRleHQoaW50IGlu
ZGV4LCBTdHJpbmdWaWV3IHRleHQpCkBAIC0yODIsMTEgKzI4MiwxMSBAQCBTdHJpbmcgU1FMaXRl
U3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTdHJpCiAKIFZlY3Rvcjx1aW50OF90PiBTUUxpdGVTdGF0
ZW1lbnQ6OmNvbHVtbkJsb2IoaW50IGNvbCkKIHsKLSAgICBhdXRvIGJsb2JWaWV3ID0gY29sdW1u
QmxvYlZpZXcoY29sKTsKLSAgICByZXR1cm4geyBibG9iVmlldy5kYXRhKCksIGJsb2JWaWV3LnNp
emUoKSB9OworICAgIGF1dG8gc3BhbiA9IGNvbHVtbkJsb2JBc1NwYW4oY29sKTsKKyAgICByZXR1
cm4geyBzcGFuLmRhdGEoKSwgc3Bhbi5zaXplKCkgfTsKIH0KIAotYXV0byBTUUxpdGVTdGF0ZW1l
bnQ6OmNvbHVtbkJsb2JWaWV3KGludCBjb2wpIC0+IEJsb2JWaWV3CitTcGFuPGNvbnN0IHVpbnQ4
X3Q+IFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxvYkFzU3BhbihpbnQgY29sKQogewogICAgIEFT
U0VSVChjb2wgPj0gMCk7CiAKQEAgLTMwNCw3ICszMDQsNyBAQCBhdXRvIFNRTGl0ZVN0YXRlbWVu
dDo6Y29sdW1uQmxvYlZpZXcoaW50CiAgICAgaWYgKGJsb2JTaXplIDw9IDApCiAgICAgICAgIHJl
dHVybiB7IH07CiAKLSAgICByZXR1cm4geyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihibG9iKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihibG9iU2l6ZSkgfTsKKyAgICByZXR1cm4geyBz
dGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oYmxvYiksIHN0YXRpY19jYXN0PHNpemVfdD4oYmxv
YlNpemUpIH07CiB9CiAKIGJvb2wgU1FMaXRlU3RhdGVtZW50OjpoYXNTdGFydGVkU3RlcHBpbmco
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
aAkocmV2aXNpb24gMjc4NjEwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KIAogc3RydWN0IHNxbGl0ZTNfc3RtdDsKIApAQCAtMzgsNyArMzksNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNRTGl0ZVN0YXRlbWVudCgpOwogICAgIFdFQkNPUkVf
RVhQT1JUIFNRTGl0ZVN0YXRlbWVudChTUUxpdGVTdGF0ZW1lbnQmJik7CiAgICAgCi0gICAgV0VC
Q09SRV9FWFBPUlQgaW50IGJpbmRCbG9iKGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50
IHNpemUpOworICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48
Y29uc3QgdWludDhfdD4pOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5k
ZXgsIGNvbnN0IFN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQg
aW5kZXgsIFN0cmluZ1ZpZXcpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCBiaW5kSW50KGludCBp
bmRleCwgaW50KTsKQEAgLTcyLDIzICs3Myw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgY29sdW1uQmxvYkFzU3RyaW5nKGludCBjb2wpOwogICAgIFdFQkNPUkVfRVhQT1JU
IFZlY3Rvcjx1aW50OF90PiBjb2x1bW5CbG9iKGludCBjb2wpOwogCi0gICAgY2xhc3MgQmxvYlZp
ZXcgewotICAgIHB1YmxpYzoKLSAgICAgICAgQmxvYlZpZXcoKSA9IGRlZmF1bHQ7Ci0gICAgICAg
IEJsb2JWaWV3KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICAgICAg
OiBtX2RhdGEoZGF0YSkKLSAgICAgICAgICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgIHsgfQot
Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KLSAgICAg
ICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAg
ICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3Qgc2l6
ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICB9OwotICAgIC8vIFRoZSByZXR1cm5lZCBCbG9iVmlldyBz
dGF5cyB2YWxpZCB1bnRpbCB0aGUgbmV4dCBzdGVwKCkgLyByZXNldCgpIG9yIGRlc3RydWN0aW9u
IG9mIHRoZSBzdGF0ZW1lbnQuCi0gICAgQmxvYlZpZXcgY29sdW1uQmxvYlZpZXcoaW50IGNvbCk7
CisgICAgLy8gVGhlIHJldHVybmVkIFNwYW4gc3RheXMgdmFsaWQgdW50aWwgdGhlIG5leHQgc3Rl
cCgpIC8gcmVzZXQoKSBvciBkZXN0cnVjdGlvbiBvZiB0aGUgc3RhdGVtZW50LgorICAgIFNwYW48
Y29uc3QgdWludDhfdD4gY29sdW1uQmxvYkFzU3BhbihpbnQgY29sKTsKIAogICAgIFNRTGl0ZURh
dGFiYXNlJiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2U7IH0KICAgICAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNzg2MTApCisrKyBTb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU5LDEwICs0NTksMTAgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4
dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3RyaW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNh
Y2hlKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRU
ZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAg
IHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEu
d29ya2VyVHlwZSkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50
LT5iaW5kQmxvYig5LCBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUo
KSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9i
KDksIFNwYW4geyBjc3BFbmNvZGVyLmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQo
MTAsIGRhdGEucmVmZXJyZXJQb2xpY3kpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5z
ZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigxMSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZl
cigpLCBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTIsIGNlcnRpZmljYXRl
SW5mb0VuY29kZXIuYnVmZmVyKCksIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2Io
MTEsIFNwYW4geyBzY3JpcHRSZXNvdXJjZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291
cmNlTWFwRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8
fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDEyLCBTcGFuIHsgY2VydGlmaWNhdGVJbmZvRW5j
b2Rlci5idWZmZXIoKSwgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0g
U1FMSVRFX09LCiAgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJ
VEVfRE9ORSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwg
IkZhaWxlZCB0byBzdG9yZSByZWdpc3RyYXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVp
KSAtICVzIiwgbV9kYXRhYmFzZS0+bGFzdEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxNSw5ICs1MTUsOSBAQCBTdHJp
bmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgIGF1dG8gd29ya2Vy
VHlwZSA9IHN0cmluZ1RvV29ya2VyVHlwZShzcWwtPmNvbHVtblRleHQoNykpOwogCiAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8Q29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250
ZW50U2VjdXJpdHlQb2xpY3k7Ci0gICAgICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RGF0
YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDgpOwotICAgICAgICBpZiAoY29udGVudFNlY3Vy
aXR5UG9saWN5RGF0YVZpZXcuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuZGF0YSgp
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhVmlldy5zaXplKCkpOworICAgICAgICBhdXRvIGNv
bnRlbnRTZWN1cml0eVBvbGljeURhdGFTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFuKDgpOwor
ICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uc2l6ZSgpKSB7CisgICAg
ICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3Vy
aXR5UG9saWN5RGF0YVNwYW4uZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5z
aXplKCkpOwogICAgICAgICAgICAgY3NwRGVjb2RlciA+PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7
CiAgICAgICAgICAgICBpZiAoIWNvbnRlbnRTZWN1cml0eVBvbGljeSkgewogICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFz
ZTo6aW1wb3J0UmVjb3JkczogRmFpbGVkIHRvIGRlY29kZSBjb250ZW50U2VjdXJpdHlQb2xpY3ki
KTsKQEAgLTUyOCw5ICs1MjgsOSBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9y
dFJlY29yCiAgICAgICAgIGF1dG8gcmVmZXJyZXJQb2xpY3kgPSBzcWwtPmNvbHVtblRleHQoOSk7
CiAKICAgICAgICAgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0
ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwotICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNl
TWFwRGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JWaWV3KDEwKTsKLSAgICAgICAgaWYgKHNjcmlw
dFJlc291cmNlTWFwRGF0YVZpZXcuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBXVEY6OlBlcnNpc3Rl
bmNlOjpEZWNvZGVyIHNjcmlwdFJlc291cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJjZU1hcERh
dGFWaWV3LmRhdGEoKSwgc2NyaXB0UmVzb3VyY2VNYXBEYXRhVmlldy5zaXplKCkpOworICAgICAg
ICBhdXRvIHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4o
MTApOworICAgICAgICBpZiAoc2NyaXB0UmVzb3VyY2VNYXBEYXRhU3Bhbi5zaXplKCkpIHsKKyAg
ICAgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNv
ZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0YVNwYW4uZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERh
dGFTcGFuLnNpemUoKSk7CiAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJ
bXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRz
OwogICAgICAgICAgICAgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNl
TWFwV2l0aG91dFNjcmlwdHM7CiAgICAgICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0
aG91dFNjcmlwdHMpIHsKQEAgLTU0MCwxMCArNTQwLDEwIEBAIFN0cmluZyBSZWdpc3RyYXRpb25E
YXRhYmFzZTo6aW1wb3J0UmVjb3IKICAgICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFwID0gcG9w
dWxhdGVTY3JpcHRTb3VyY2VzRnJvbURpc2soc2NyaXB0U3RvcmFnZSgpLCAqa2V5LCBXVEZNb3Zl
KCpzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzKSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGNlcnRpZmljYXRlSW5mb0RhdGFWaWV3ID0gc3FsLT5jb2x1bW5CbG9iVmlldygxMSk7
CisgICAgICAgIGF1dG8gY2VydGlmaWNhdGVJbmZvRGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JB
c1NwYW4oMTEpOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlm
aWNhdGVJbmZvOwogCi0gICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNh
dGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhVmlldy5kYXRhKCksIGNlcnRpZmljYXRl
SW5mb0RhdGFWaWV3LnNpemUoKSk7CisgICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIg
Y2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0ZUluZm9EYXRhU3Bhbi5kYXRhKCksIGNl
cnRpZmljYXRlSW5mb0RhdGFTcGFuLnNpemUoKSk7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0Rl
Y29kZXIgPj4gY2VydGlmaWNhdGVJbmZvOwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykg
ewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJh
dGlvbkRhdGFiYXNlOjppbXBvcnRSZWNvcmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRl
SW5mbyIpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODYxNykKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDggIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IFdURjo6U3BhbiBp
biBTUUxpdGVTdGF0ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Okljb25EYXRhYmFzZTo6YWRkSWNvbik6CisgICAgICAgIEFkb3B0IG5ldyBiaW5k
QmxvYigpIHNpZ25hdHVyZS4KKwogMjAyMS0wNi0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVxdWlyZSB0aGF0IGNhbGxzaXRlcyBvZiBgU25hcHNob3RP
cHRpb25zYCBzcGVjaWZ5IGEgYFBpeGVsRm9ybWF0YCBhbmQgYERlc3RpbmF0aW9uQ29sb3JTcGFj
ZWAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0ljb25EYXRhYmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSWNvbkRh
dGFiYXNlLmNwcAkocmV2aXNpb24gMjc4NjEwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk4LDcgKzM5OCw3
IEBAIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gSWNvbkRhdGFiYXNlOjphZGQKICAgICBtX2FkZElj
b25TdGF0ZW1lbnQtPnJlc2V0KCk7CiAKICAgICBhdXRvIGljb25JRCA9IG1fZGIubGFzdEluc2Vy
dFJvd0lEKCk7Ci0gICAgaWYgKG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBp
Y29uSUQpICE9IFNRTElURV9PSyB8fCBtX2FkZEljb25EYXRhU3RhdGVtZW50LT5iaW5kQmxvYigy
LCBpY29uRGF0YS5kYXRhKCksIGljb25EYXRhLnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAg
aWYgKG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgxLCBpY29uSUQpICE9IFNRTElU
RV9PSyB8fCBtX2FkZEljb25EYXRhU3RhdGVtZW50LT5iaW5kQmxvYigyLCBpY29uRGF0YSkgIT0g
U1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiSWNvbkRhdGFiYXNlOjphZGRJY29uIGZh
aWxlZDogJXMiLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430867</attachid>
            <date>2021-06-08 11:19:28 -0700</date>
            <delta_ts>2021-06-08 22:03:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226773-20210608111927.patch</filename>
            <type>text/plain</type>
            <size>33498</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3ODYyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDIxLTA2LTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBXVEY6OlNwYW4gaW4gU1FM
aXRlU3RhdGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBEbyBzb21lIGluaXRpYWwgYWRvcHRpb24gb2YgV1RGOjpTcGFuIGJ5IGFkb3B0aW5nIGl0
IGluIFNRTGl0ZVN0YXRlbWVudC4KKyAgICAgICAgCisgICAgICAgIC0gUmVtb3ZlcyBjbGFzcyBC
bG9iVmlldy4KKyAgICAgICAgLSBSZW5hbWVzIGNvbHVtbkJsb2JWaWV3IHRvIGNvbHVtbkJsb2JB
c1NwYW4oKSAobWlycm9ycyBjb2x1bW5CbG9iQXNTdHJpbmcoKSBuYW1pbmcpCisgICAgICAgICAg
YW5kIGhhdmUgaXQgcmV0dXJuIGEgU3Bhbjxjb25zdCB1aW50OF90Pi4KKyAgICAgICAgLSBSZXBs
YWNlIGJpbmRCbG9iKGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpIHdpdGgg
YmluZEJsb2IoaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+KS4KKworICAgICAgICBEdWUg
dG8gaW1wbGljaXQgY29uc3RydWN0aW9uIGZvciB0eXBlcyB3aXRoIGRhdGEoKSBhbmQgc2l6ZSgp
IGZ1bmN0aW9ucyAoYWN0dWFsbHkgYW55dGhpbmcKKyAgICAgICAgdGhhdCBzdGQ6OmRhdGEoKSBh
bmQgc3RkOjpzaXplKCkgY2FuIHJlYXNvbiBhYm91dCksIFZlY3RvciBhbmQgU2hhcmVkQnVmZmVy
IGNsZWFubHkgd29yaworICAgICAgICB0byBjb252ZXJ0IHRvIFNwYW4gb2YgdGhlIHNhbWUgdW5k
ZXJseWluZyB0eXBlLiBUaGlzIG1lYW5zIHRoYXQgbWFueSBjYWxsZXJzIG9mIGJpbmRCbG9iCisg
ICAgICAgIGFyZSBub3cgc2ltcGxlciwgYXMgaW5zdGVhZCBvZiBkb2luZzoKKworICAgICAgICAg
ICAgYmluZEJsb2IoMSwgZm9vLT5kYXRhKCksIGZvby0+c2l6ZSgpKTsKKworICAgICAgICB3ZSBp
bnN0ZWFkIGRvOgorCisgICAgICAgICAgICBiaW5kQmxvYigxLCAqZm9vKTsKKworICAgICAgICBU
aGVyZSBpcyBtdWNoIG11Y2ggbW9yZSB0byBkbyB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGlzIG5l
dyB0eXBlLCBidXQgdGhpcyBpcworICAgICAgICBrZXB0IGludGVudGlvbmFsbHkgc21hbGwsIGFz
IHRoZSBwdWxsaW5nIGJhY2sgdGhlIG9uaW9uIGNhbiBnbyB2ZXJ5IGRlZXAuIAorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6bWlncmF0
ZUluZGV4SW5mb1RhYmxlRm9ySURVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVy
OjpTUUxpdGVJREJCYWNraW5nU3RvcmU6Om1pZ3JhdGVJbmRleFJlY29yZHNUYWJsZUZvcklEVXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRFeGlzdGluZ0luZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRl
SURCQmFja2luZ1N0b3JlOjpleHRyYWN0RXhpc3RpbmdEYXRhYmFzZUluZm8pOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3Jl
OjpjcmVhdGVJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6dW5jaGVja2VkSGFzSW5kZXhSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tlZFB1dEluZGV4UmVjb3Jk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpr
ZXlFeGlzdHNJbk9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FM
aXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYmpl
Y3RTdG9yZVJlY29yZHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJC
YWNraW5nU3RvcmU6OnVuY2hlY2tlZEdldEluZGV4UmVjb3JkRm9yT25lS2V5KToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudCk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6YmluZEFyZ3VtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OlNRTGl0ZUlEQkN1cnNvcjo6cmVzZXRB
bmRSZWJpbmRQcmVJbmRleFN0YXRlbWVudElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQ3Vyc29yOjppbnRlcm5hbEZldGNoTmV4dFJlY29yZCk6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzdG9yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
UUxpdGVTdGF0ZW1lbnQ6OmJpbmRCbG9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRl
bWVudDo6Y29sdW1uQmxvYik6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OmNv
bHVtbkJsb2JBc1NwYW4pOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Ojpjb2x1
bW5CbG9iVmlldyk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpCbG9iVmlldzo6Qmxv
YlZpZXcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpCbG9i
Vmlldzo6ZGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6
OkJsb2JWaWV3OjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3Jkcyk6CisKIDIw
MjEtMDYtMDggIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEZh
Y3RvciBNYXJrZWRUZXh0IGNvbGxlY3Rpb24gb3V0IG9mIExlZ2FjeUlubGluZVRleHRCb3gKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCShyZXZpc2lvbiAyNzg2MjEpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUwLDcgKzU1MCw3IEBAIGJvb2wgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjptaWdyYXRlSW5kZXgKICAgICAgICAgICAgIFN0cmluZyBuYW1lID0g
c3RhdGVtZW50LT5jb2x1bW5UZXh0KDEpOwogICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50NjQoMik7CiAgICAgICAgICAgICB1aW50NjRfdCBu
ZXdJRCA9IGluZGV4SURNYXAuZ2V0KHsgb2JqZWN0U3RvcmVJRCwgaWQgfSk7Ci0gICAgICAgICAg
ICBhdXRvIGtleVBhdGhCdWZmZXJWaWV3ID0gc3RhdGVtZW50LT5jb2x1bW5CbG9iVmlldygzKTsK
KyAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlclNwYW4gPSBzdGF0ZW1lbnQtPmNvbHVtbkJs
b2JBc1NwYW4oMyk7CiAgICAgICAgICAgICBib29sIHVuaXF1ZSA9IHN0YXRlbWVudC0+Y29sdW1u
SW50KDQpOwogICAgICAgICAgICAgYm9vbCBtdWx0aUVudHJ5ID0gc3RhdGVtZW50LT5jb2x1bW5J
bnQoNSk7CiAKQEAgLTU1OSw3ICs1NTksNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
bWlncmF0ZUluZGV4CiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgbmV3SUQp
ICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMiwgbmFtZSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMywgb2JqZWN0
U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0
LCBrZXlQYXRoQnVmZmVyVmlldy5kYXRhKCksIGtleVBhdGhCdWZmZXJWaWV3LnNpemUoKSkgIT0g
U1FMSVRFX09LCisgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCBrZXlQYXRoQnVm
ZmVyU3BhbikgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDUs
IHVuaXF1ZSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDYs
IG11bHRpRW50cnkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgp
ICE9IFNRTElURV9ET05FKSB7CkBAIC02MTMsMTYgKzYxMywxNiBAQCBib29sIFNRTGl0ZUlEQkJh
Y2tpbmdTdG9yZTo6bWlncmF0ZUluZGV4CiAgICAgICAgICAgICB1aW50NjRfdCBpZCA9IHN0YXRl
bWVudC0+Y29sdW1uSW50NjQoMCk7CiAgICAgICAgICAgICB1aW50NjRfdCBvYmplY3RTdG9yZUlE
ID0gc3RhdGVtZW50LT5jb2x1bW5JbnQ2NCgxKTsKICAgICAgICAgICAgIHVpbnQ2NF90IG5ld0lE
ID0gaW5kZXhJRE1hcC5nZXQoeyBvYmplY3RTdG9yZUlELCBpZCB9KTsKLSAgICAgICAgICAgIGF1
dG8ga2V5QnVmZmVyVmlldyA9IHN0YXRlbWVudC0+Y29sdW1uQmxvYlZpZXcoMik7Ci0gICAgICAg
ICAgICBhdXRvIHZhbHVlQnVmZmVyVmlldyA9IHN0YXRlbWVudC0+Y29sdW1uQmxvYlZpZXcoMyk7
CisgICAgICAgICAgICBhdXRvIGtleUJ1ZmZlclNwYW4gPSBzdGF0ZW1lbnQtPmNvbHVtbkJsb2JB
c1NwYW4oMik7CisgICAgICAgICAgICBhdXRvIHZhbHVlQnVmZmVyU3BhbiA9IHN0YXRlbWVudC0+
Y29sdW1uQmxvYkFzU3BhbigzKTsKICAgICAgICAgICAgIHVpbnQ2NF90IHJlY29yZElEID0gc3Rh
dGVtZW50LT5jb2x1bW5JbnQ2NCg0KTsKIAogICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnQoU1FMOjpQdXRUZW1wSW5kZXhSZWNvcmQsICJJTlNFUlQgSU5UTyBfVGVtcF9JbmRl
eFJlY29yZHMgVkFMVUVTICg/LCA/LCBDQVNUKD8gQVMgVEVYVCksIENBU1QoPyBBUyBURVhUKSwg
Pyk7Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5i
aW5kSW50NjQoMSwgbmV3SUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+
YmluZEludDY0KDIsIG9iamVjdFN0b3JlSUQpICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAg
IHx8IHNxbC0+YmluZEJsb2IoMywga2V5QnVmZmVyVmlldy5kYXRhKCksIGtleUJ1ZmZlclZpZXcu
c2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDQs
IHZhbHVlQnVmZmVyVmlldy5kYXRhKCksIHZhbHVlQnVmZmVyVmlldy5zaXplKCkpICE9IFNRTElU
RV9PSworICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywga2V5QnVmZmVyU3Bhbikg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCB2YWx1ZUJ1
ZmZlclNwYW4pICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0
KDUsIHJlY29yZElEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAo
KSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiRXJyb3IgYWRk
aW5nIGluZGV4IHJlY29yZCB0byBfVGVtcF9JbmRleFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwg
ZGF0YWJhc2UubGFzdEVycm9yKCksIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKQEAgLTY5OCw3
ICs2OTgsNyBAQCBib29sIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkRXhpc3RpbmdJCiAgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIGluZm8ubmFtZSgpKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDMsIGluZm8ub2JqZWN0U3RvcmVJ
ZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0
LCBrZXlQYXRoQmxvYi0+ZGF0YSgpLCBrZXlQYXRoQmxvYi0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sK
KyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoNCwgKmtleVBhdGhCbG9iKSAhPSBTUUxJVEVf
T0sKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludCg1LCBpbmZvLnVuaXF1ZSgpKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludCg2LCBpbmZvLm11bHRpRW50cnkoKSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkg
ewpAQCAtNzE3LDkgKzcxNyw5IEBAIGJvb2wgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRFeGlz
dGluZ0kKIAogICAgICAgICBpbnQgcmVzdWx0ID0gc3FsLT5zdGVwKCk7CiAgICAgICAgIHdoaWxl
IChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgYXV0byBrZXlCdWZmZXJWaWV3
ID0gc3FsLT5jb2x1bW5CbG9iVmlldygwKTsKKyAgICAgICAgICAgIGF1dG8ga2V5QnVmZmVyU3Bh
biA9IHNxbC0+Y29sdW1uQmxvYkFzU3BhbigwKTsKICAgICAgICAgICAgIElEQktleURhdGEga2V5
RGF0YTsKLSAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleUJ1ZmZlclZp
ZXcuZGF0YSgpLCBrZXlCdWZmZXJWaWV3LnNpemUoKSwga2V5RGF0YSkpIHsKKyAgICAgICAgICAg
IGlmICghZGVzZXJpYWxpemVJREJLZXlEYXRhKGtleUJ1ZmZlclNwYW4uZGF0YSgpLCBrZXlCdWZm
ZXJTcGFuLnNpemUoKSwga2V5RGF0YSkpIHsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBkZXNlcmlhbGl6ZSBrZXkgZGF0YSBmcm9tIGRhdGFiYXNlIHdoaWxlIGdldHRpbmcg
YWxsIHJlY29yZHMiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CkBAIC04MTgsMTAgKzgxOCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VJbmZv
PiBTUUxpdGVJCiAgICAgICAgIHdoaWxlIChyZXN1bHQgPT0gU1FMSVRFX1JPVykgewogICAgICAg
ICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCA9IHNxbC0+Y29sdW1uSW50NjQoMCk7CiAgICAg
ICAgICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lID0gc3FsLT5jb2x1bW5UZXh0KDEpOwotICAg
ICAgICAgICAgYXV0byBrZXlQYXRoQnVmZmVyVmlldyA9IHNxbC0+Y29sdW1uQmxvYlZpZXcoMik7
CisgICAgICAgICAgICBhdXRvIGtleVBhdGhCdWZmZXJTcGFuID0gc3FsLT5jb2x1bW5CbG9iQXNT
cGFuKDIpOwogCiAgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPElEQktleVBhdGg+IG9iamVjdFN0
b3JlS2V5UGF0aDsKLSAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJLZXlQYXRoKGtleVBh
dGhCdWZmZXJWaWV3LmRhdGEoKSwga2V5UGF0aEJ1ZmZlclZpZXcuc2l6ZSgpLCBvYmplY3RTdG9y
ZUtleVBhdGgpKSB7CisgICAgICAgICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5UGF0aChrZXlQ
YXRoQnVmZmVyU3Bhbi5kYXRhKCksIGtleVBhdGhCdWZmZXJTcGFuLnNpemUoKSwgb2JqZWN0U3Rv
cmVLZXlQYXRoKSkgewogICAgICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGV4dHJh
Y3Qga2V5IHBhdGggZnJvbSBkYXRhYmFzZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgfQpAQCAtODU0LDEwICs4NTQsMTAgQEAgc3RkOjp1bmlxdWVfcHRy
PElEQkRhdGFiYXNlSW5mbz4gU1FMaXRlSQogICAgICAgICAgICAgdWludDY0X3QgaW5kZXhJRCA9
IHNxbC0+Y29sdW1uSW50NjQoMCk7CiAgICAgICAgICAgICBTdHJpbmcgaW5kZXhOYW1lID0gc3Fs
LT5jb2x1bW5UZXh0KDEpOwogICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0U3RvcmVJRCA9IHNx
bC0+Y29sdW1uSW50NjQoMik7Ci0gICAgICAgICAgICBhdXRvIGtleVBhdGhCdWZmZXJWaWV3ID0g
c3FsLT5jb2x1bW5CbG9iVmlldygzKTsKKyAgICAgICAgICAgIGF1dG8ga2V5UGF0aEJ1ZmZlclNw
YW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMyk7CiAKICAgICAgICAgICAgIHN0ZDo6b3B0aW9u
YWw8SURCS2V5UGF0aD4gaW5kZXhLZXlQYXRoOwotICAgICAgICAgICAgaWYgKCFkZXNlcmlhbGl6
ZUlEQktleVBhdGgoa2V5UGF0aEJ1ZmZlclZpZXcuZGF0YSgpLCBrZXlQYXRoQnVmZmVyVmlldy5z
aXplKCksIGluZGV4S2V5UGF0aCkpIHsKKyAgICAgICAgICAgIGlmICghZGVzZXJpYWxpemVJREJL
ZXlQYXRoKGtleVBhdGhCdWZmZXJTcGFuLmRhdGEoKSwga2V5UGF0aEJ1ZmZlclNwYW4uc2l6ZSgp
LCBpbmRleEtleVBhdGgpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8g
ZXh0cmFjdCBrZXkgcGF0aCBmcm9tIGRhdGFiYXNlIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC0xMTgyLDcgKzExODIsNyBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iCiAgICAgICAgIGlmICghc3FsCiAgICAgICAg
ICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBpbmZvLmlkZW50aWZpZXIoKSkgIT0gU1FMSVRFX09L
CiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIGluZm8ubmFtZSgpKSAhPSBTUUxJVEVf
T0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywga2V5UGF0aEJsb2ItPmRhdGEoKSwg
a2V5UGF0aEJsb2ItPnNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzcWwtPmJp
bmRCbG9iKDMsICprZXlQYXRoQmxvYikgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzcWwt
PmJpbmRJbnQoNCwgaW5mby5hdXRvSW5jcmVtZW50KCkpICE9IFNRTElURV9PSwogICAgICAgICAg
ICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiQ291bGQgbm90IGFkZCBvYmplY3Qgc3RvcmUgJyVzJyB0byBPYmplY3RTdG9yZUluZm8gdGFi
bGUgKCVpKSAtICVzIiwgaW5mby5uYW1lKCkudXRmOCgpLmRhdGEoKSwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKQEAgLTEzOTYsNyArMTM5Niw3
IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW4KICAgICAgICAgICAg
IHx8IHNxbC0+YmluZEludDY0KDEsIGluZm8uaWRlbnRpZmllcigpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMiwgaW5mby5uYW1lKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMywgaW5mby5vYmplY3RTdG9yZUlkZW50aWZp
ZXIoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDQsIGtleVBh
dGhCbG9iLT5kYXRhKCksIGtleVBhdGhCbG9iLT5zaXplKCkpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCAqa2V5UGF0aEJsb2IpICE9IFNRTElURV9PSwogICAg
ICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDUsIGluZm8udW5pcXVlKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50KDYsIGluZm8ubXVsdGlFbnRyeSgpKSAhPSBTUUxJ
VEVfT0sKICAgICAgICAgICAgIHx8IHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CkBAIC0x
NDcwLDcgKzE0NzAsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVuY2hlY2tl
CiAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpIYXNJbmRleFJlY29yZCwgIlNF
TEVDVCByb3dpZCBGUk9NIEluZGV4UmVjb3JkcyBXSEVSRSBpbmRleElEID0gPyBBTkQga2V5ID0g
Q0FTVCg/IEFTIFRFWFQpOyJfcyk7CiAgICAgaWYgKCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5k
SW50NjQoMSwgaW5mby5pZGVudGlmaWVyKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzcWwt
PmJpbmRCbG9iKDIsIGluZGV4S2V5QnVmZmVyLT5kYXRhKCksIGluZGV4S2V5QnVmZmVyLT5zaXpl
KCkpICE9IFNRTElURV9PSykgeworICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICppbmRleEtl
eUJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiRXJyb3IgY2hlY2tp
bmcgZm9yIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJFcnJvciBjaGVja2luZyBmb3IgaW5kZXggcmVjb3JkIGluIGRh
dGFiYXNlIl9zIH07CiAgICAgfQpAQCAtMTU0Nyw4ICsxNTQ3LDggQEAgSURCRXJyb3IgU1FMaXRl
SURCQmFja2luZ1N0b3JlOjp1bmNoZWNrZQogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAg
fHwgc3FsLT5iaW5kSW50NjQoMSwgaW5kZXhJRCkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzcWwtPmJpbmRJbnQ2NCgyLCBvYmplY3RTdG9yZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAg
ICAgIHx8IHNxbC0+YmluZEJsb2IoMywgaW5kZXhLZXlCdWZmZXItPmRhdGEoKSwgaW5kZXhLZXlC
dWZmZXItPnNpemUoKSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9i
KDQsIHZhbHVlQnVmZmVyLT5kYXRhKCksIHZhbHVlQnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9P
SworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigzLCAqaW5kZXhLZXlCdWZmZXIpICE9IFNR
TElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYig0LCAqdmFsdWVCdWZmZXIpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoNSwgcmVjb3JkSUQpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsK
ICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IHB1dCBpbmRleCByZWNvcmQgZm9yIGlu
ZGV4ICUiIFBSSWk2NCAiIGluIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBpbiBSZWNvcmRzIHRh
YmxlICglaSkgLSAlcyIsIGluZGV4SUQsIG9iamVjdFN0b3JlSUQsIG1fc3FsaXRlREItPmxhc3RF
cnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CkBAIC0xNjY2LDcgKzE2NjYsNyBA
QCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmtleUV4aXN0CiAgICAgYXV0byBzcWwg
PSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpLZXlFeGlzdHNJbk9iamVjdFN0b3JlLCAiU0VMRUNUIGtl
eSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBB
UyBURVhUKSBMSU1JVCAxOyJfcyk7CiAgICAgaWYgKCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5k
SW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNxbC0+Ymlu
ZEJsb2IoMiwga2V5QnVmZmVyLT5kYXRhKCksIGtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVf
T0spIHsKKyAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAqa2V5QnVmZmVyKSAhPSBTUUxJVEVf
T0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IHJlY29yZCBmcm9tIG9iamVj
dCBzdG9yZSAlIiBQUklpNjQgIiBmcm9tIFJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgb2JqZWN0
U3RvcmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRv
IGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSURCS2V5IGluIG9iamVjdCBzdG9yZSJfcyB9OwogICAg
IH0KQEAgLTE3NTIsNyArMTc1Miw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6
ZGVsZXRlUmUKIAogICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50
NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBzcWwtPmJp
bmRCbG9iKDIsIGtleUJ1ZmZlci0+ZGF0YSgpLCBrZXlCdWZmZXItPnNpemUoKSkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsICprZXlCdWZmZXIpICE9IFNR
TElURV9PSykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZGVsZXRlIHJlY29y
ZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlE
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGRl
bGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUiX3MgfTsKICAgICAgICAgfQpAQCAtMTc5OSw3
ICsxNzk5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVSZQogCiAg
ICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmplY3RT
dG9yZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwga2V5
QnVmZmVyLT5kYXRhKCksIGtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmtleUJ1ZmZlcikgIT0gU1FMSVRFX09LCiAgICAgICAg
ICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJDb3VsZCBub3QgZGVsZXRlIHJlY29yZCBmcm9tIG9iamVjdCBzdG9yZSAlIiBQUklpNjQg
IiAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9z
cWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGRlbGV0ZSByZWNvcmQgZnJvbSBvYmplY3Qgc3RvcmUi
X3MgfTsKQEAgLTE5NzAsOCArMTk3MCw4IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9y
ZTo6YWRkUmVjb3IKICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpBZGRP
YmplY3RTdG9yZVJlY29yZCwgIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVTICg/LCBDQVNUKD8g
QVMgVEVYVCksID8sIE5VTEwpOyJfcyk7CiAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICB8
fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9yZUluZm8uaWRlbnRpZmllcigpKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwga2V5QnVmZmVyLT5kYXRhKCks
IGtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+Ymlu
ZEJsb2IoMywgdmFsdWUuZGF0YSgpLmRhdGEoKS0+ZGF0YSgpLCB2YWx1ZS5kYXRhKCkuZGF0YSgp
LT5zaXplKCkpICE9IFNRTElURV9PSworICAgICAgICAgICAgfHwgc3FsLT5iaW5kQmxvYigyLCAq
a2V5QnVmZmVyKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywg
KnZhbHVlLmRhdGEoKS5kYXRhKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3FsLT5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IHB1dCByZWNvcmQgZm9yIG9iamVjdCBzdG9yZSAlIiBQUklpNjQgIiBpbiBSZWNvcmRzIHRhYmxl
ICglaSkgLSAlcyIsIG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCksIG1fc3FsaXRlREItPmxh
c3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gc3RvcmUgcmVjb3JkIGluIG9i
amVjdCBzdG9yZSJfcyB9OwpAQCAtMTk4Niw3ICsxOTg2LDcgQEAgSURCRXJyb3IgU1FMaXRlSURC
QmFja2luZ1N0b3JlOjphZGRSZWNvcgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVu
dChTUUw6OkRlbGV0ZU9iamVjdFN0b3JlUmVjb3JkLCAiREVMRVRFIEZST00gUmVjb3JkcyBXSEVS
RSBvYmplY3RTdG9yZUlEID0gPyBBTkQga2V5ID0gQ0FTVCg/IEFTIFRFWFQpOyJfcyk7CiAgICAg
ICAgIGlmICghc3FsCiAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBvYmplY3RTdG9y
ZUluZm8uaWRlbnRpZmllcigpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHNxbC0+Ymlu
ZEJsb2IoMiwga2V5QnVmZmVyLT5kYXRhKCksIGtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVf
T0sKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmtleUJ1ZmZlcikgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICB8fCBzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAg
ICAgICAgTE9HX0VSUk9SKCJJbmRleGluZyBuZXcgb2JqZWN0IHN0b3JlIHJlY29yZCBmYWlsZWQs
IGJ1dCB1bmFibGUgdG8gcmVtb3ZlIHRoZSBvYmplY3Qgc3RvcmUgcmVjb3JkIGl0c2VsZiIpOwog
ICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiSW5kZXhpbmcgbmV3
IG9iamVjdCBzdG9yZSByZWNvcmQgZmFpbGVkLCBidXQgdW5hYmxlIHRvIHJlbW92ZSB0aGUgb2Jq
ZWN0IHN0b3JlIHJlY29yZCBpdHNlbGYiX3MgfTsKQEAgLTIxNzEsOCArMjE3MSw4IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6Z2V0UmVjb3IKIAogICAgICAgICBpZiAoIXNxbAog
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMSVRF
X09LCi0gICAgICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDIsIGxvd2VyQnVmZmVyLT5kYXRhKCks
IGxvd2VyQnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3FsLT5i
aW5kQmxvYigzLCB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1ZmZlci0+c2l6ZSgpKSAhPSBT
UUxJVEVfT0spIHsKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgKmxvd2VyQnVmZmVy
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMywgKnVwcGVyQnVm
ZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGdl
dCBrZXkgcmFuZ2UgcmVjb3JkIGZyb20gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGZyb20gUmVj
b3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJy
b3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgcmV0dXJuIElE
QkVycm9yIHsgVW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGxvb2sgdXAgcmVjb3JkIGluIG9iamVj
dCBzdG9yZSBieSBrZXkgcmFuZ2UiX3MgfTsKICAgICAgICAgfQpAQCAtMjI4OCw4ICsyMjg4LDgg
QEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRBbGxPYgogICAgIGF1dG8gc3Fs
ID0gY2FjaGVkU3RhdGVtZW50Rm9yR2V0QWxsT2JqZWN0U3RvcmVSZWNvcmRzKGdldEFsbFJlY29y
ZHNEYXRhKTsKICAgICBpZiAoIXNxbAogICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCBnZXRB
bGxSZWNvcmRzRGF0YS5vYmplY3RTdG9yZUlkZW50aWZpZXIpICE9IFNRTElURV9PSwotICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDIsIGxvd2VyQnVmZmVyLT5kYXRhKCksIGxvd2VyQnVmZmVyLT5z
aXplKCkpICE9IFNRTElURV9PSwotICAgICAgICB8fCBzcWwtPmJpbmRCbG9iKDMsIHVwcGVyQnVm
ZmVyLT5kYXRhKCksIHVwcGVyQnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSykgeworICAgICAg
ICB8fCBzcWwtPmJpbmRCbG9iKDIsICpsb3dlckJ1ZmZlcikgIT0gU1FMSVRFX09LCisgICAgICAg
IHx8IHNxbC0+YmluZEJsb2IoMywgKnVwcGVyQnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAg
ICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IGtleSByYW5nZSByZWNvcmQgZnJvbSBvYmplY3Qg
c3RvcmUgJSIgUFJJaTY0ICIgZnJvbSBSZWNvcmRzIHRhYmxlICglaSkgLSAlcyIsIGdldEFsbFJl
Y29yZHNEYXRhLm9iamVjdFN0b3JlSWRlbnRpZmllciwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCks
IG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
VW5rbm93bkVycm9yLCAiRmFpbGVkIHRvIGxvb2sgdXAgcmVjb3JkIGluIG9iamVjdCBzdG9yZSBi
eSBrZXkgcmFuZ2UiX3MgfTsKICAgICB9CkBAIC0yMzA4LDkgKzIzMDgsOSBAQCBJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OmdldEFsbE9iCiAgICAgdWludDMyX3QgcmV0dXJuZWRSZXN1
bHRzID0gMDsKIAogICAgIHdoaWxlIChzcWxSZXN1bHQgPT0gU1FMSVRFX1JPVyAmJiByZXR1cm5l
ZFJlc3VsdHMgPCB0YXJnZXRSZXN1bHRzKSB7Ci0gICAgICAgIGF1dG8ga2V5QnVmZmVyVmlldyA9
IHNxbC0+Y29sdW1uQmxvYlZpZXcoMCk7CisgICAgICAgIGF1dG8ga2V5QnVmZmVyU3BhbiA9IHNx
bC0+Y29sdW1uQmxvYkFzU3BhbigwKTsKICAgICAgICAgSURCS2V5RGF0YSBrZXlEYXRhOwotICAg
ICAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlCdWZmZXJWaWV3LmRhdGEoKSwga2V5
QnVmZmVyVmlldy5zaXplKCksIGtleURhdGEpKSB7CisgICAgICAgIGlmICghZGVzZXJpYWxpemVJ
REJLZXlEYXRhKGtleUJ1ZmZlclNwYW4uZGF0YSgpLCBrZXlCdWZmZXJTcGFuLnNpemUoKSwga2V5
RGF0YSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtl
eSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUgZ2V0dGluZyBhbGwgcmVjb3JkcyIpOwogICAgICAg
ICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCAiVW5hYmxlIHRvIGRlc2VyaWFs
aXplIGtleSBkYXRhIHdoaWxlIGdldHRpbmcgYWxsIHJlY29yZHMiX3MgfTsKICAgICAgICAgfQpA
QCAtMjQ1MCw3ICsyNDUwLDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1bmNo
ZWNrZQogCiAgICAgaWYgKCFzcWwKICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgaW5kZXhJ
RCkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHNxbC0+YmluZEJsb2IoMiwgYnVmZmVyLT5kYXRh
KCksIGJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgfHwgc3FsLT5iaW5k
QmxvYigyLCAqYnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9SKCJVbmFi
bGUgdG8gbG9va3VwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gbG9va3VwIGluZGV4IHJlY29yZCBp
biBkYXRhYmFzZSJfcyB9OwogICAgIH0KQEAgLTI0NjUsOSArMjQ2NSw5IEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6dW5jaGVja2UKICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
fTsKIAogICAgIElEQktleURhdGEgb2JqZWN0U3RvcmVLZXk7Ci0gICAgYXV0byBrZXlWaWV3ID0g
c3FsLT5jb2x1bW5CbG9iVmlldygwKTsKKyAgICBhdXRvIGtleVNwYW4gPSBzcWwtPmNvbHVtbkJs
b2JBc1NwYW4oMCk7CiAKLSAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlWaWV3LmRh
dGEoKSwga2V5Vmlldy5zaXplKCksIG9iamVjdFN0b3JlS2V5KSkgeworICAgIGlmICghZGVzZXJp
YWxpemVJREJLZXlEYXRhKGtleVNwYW4uZGF0YSgpLCBrZXlTcGFuLnNpemUoKSwgb2JqZWN0U3Rv
cmVLZXkpKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBs
b29raW5nIHVwIGluZGV4IHJlY29yZCBpbiBkYXRhYmFzZSIpOwogICAgICAgICByZXR1cm4gSURC
RXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gZGVzZXJpYWxpemUga2V5IGxvb2tpbmcg
dXAgaW5kZXggcmVjb3JkIGluIGRhdGFiYXNlIl9zIH07CiAgICAgfQpAQCAtMjUzMiw4ICsyNTMy
LDggQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpnZXRDb3VudAogICAgICAgICAK
ICAgICAgICAgaWYgKCFzdGF0ZW1lbnQKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZElu
dDY0KDEsIG9iamVjdFN0b3JlSWRlbnRpZmllcikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmRCbG9iKDIsIGxvd2VyQnVmZmVyLT5kYXRhKCksIGxvd2VyQnVmZmVy
LT5zaXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxv
YigzLCB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVf
T0spIHsKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwgKmxvd2VyQnVmZmVy
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgKnVw
cGVyQnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNvdW50IHJlY29yZHMgaW4gb2JqZWN0IHN0b3JlICUiIFBSSWk2NCAiIGZyb20gUmVjb3Jk
cyB0YWJsZSAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIG1fc3FsaXRlREItPmxh
c3RFcnJvcigpLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1
cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gY291bnQgcmVjb3JkcyBpbiBv
YmplY3Qgc3RvcmUgZHVlIHRvIGJpbmRpbmcgZmFpbHVyZSJfcyB9OwogICAgICAgICB9CkBAIC0y
NTQ5LDggKzI1NDksOCBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmdldENvdW50
CiAKICAgICAgICAgaWYgKCFzdGF0ZW1lbnQKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+Ymlu
ZEludDY0KDEsIGluZGV4SWRlbnRpZmllcikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBz
dGF0ZW1lbnQtPmJpbmRCbG9iKDIsIGxvd2VyQnVmZmVyLT5kYXRhKCksIGxvd2VyQnVmZmVyLT5z
aXplKCkpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5iaW5kQmxvYigz
LCB1cHBlckJ1ZmZlci0+ZGF0YSgpLCB1cHBlckJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMiwgKmxvd2VyQnVmZmVyKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZEJsb2IoMywgKnVwcGVy
QnVmZmVyKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90
IGNvdW50IHJlY29yZHMgd2l0aCBpbmRleCAlIiBQUklpNjQgIiBmcm9tIEluZGV4UmVjb3JkcyB0
YWJsZSAoJWkpIC0gJXMiLCBpbmRleElkZW50aWZpZXIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigp
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICByZXR1cm4gSURCRXJy
b3IgeyBVbmtub3duRXJyb3IsICJVbmFibGUgdG8gY291bnQgcmVjb3JkcyBmb3IgaW5kZXggZHVl
IHRvIGJpbmRpbmcgZmFpbHVyZSJfcyB9OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vyc29yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQ3Vy
c29yLmNwcAkocmV2aXNpb24gMjc4NjIxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkN1cnNvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCwx
MyArMjcwLDEzIEBAIGJvb2wgU1FMaXRlSURCQ3Vyc29yOjpiaW5kQXJndW1lbnRzKCkKICAgICB9
CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRh
KG1fY3VycmVudExvd2VyS2V5KTsKLSAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJl
bnRCaW5kQXJndW1lbnQrKywgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJ
VEVfT0spIHsKKyAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1l
bnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQg
bm90IGNyZWF0ZSBjdXJzb3Igc3RhdGVtZW50IChsb3dlciBrZXkpIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBidWZmZXIgPSBzZXJpYWxpemVJREJLZXlEYXRhKG1fY3Vy
cmVudFVwcGVyS2V5KTsKLSAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5k
QXJndW1lbnQrKywgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywg
KmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGNy
ZWF0ZSBjdXJzb3Igc3RhdGVtZW50ICh1cHBlciBrZXkpIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC0zMTYsMTMgKzMxNiwxMyBAQCBib29sIFNRTGl0ZUlEQkN1cnNvcjo6cmVz
ZXRBbmRSZWJpbmRQcmVJCiAgICAgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShrZXkpOwotICAgIGlmIChtX3ByZUluZGV4U3RhdGVtZW50
LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXIt
PnNpemUoKSkgIT0gU1FMSVRFX09LKSB7CisgICAgaWYgKG1fcHJlSW5kZXhTdGF0ZW1lbnQtPmJp
bmRCbG9iKGN1cnJlbnRCaW5kQXJndW1lbnQrKywgKmJ1ZmZlcikgIT0gU1FMSVRFX09LKSB7CiAg
ICAgICAgIExPR19FUlJPUigiQ291bGQgbm90IGJpbmQgaWQgYXJndW1lbnQgdG8gcHJlIHN0YXRl
bWVudCAoa2V5KSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYnVmZmVy
ID0gc2VyaWFsaXplSURCS2V5RGF0YShtX2N1cnJlbnRJbmRleFJlY29yZFZhbHVlKTsKLSAgICBp
ZiAobV9wcmVJbmRleFN0YXRlbWVudC0+YmluZEJsb2IoY3VycmVudEJpbmRBcmd1bWVudCsrLCBi
dWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpICE9IFNRTElURV9PSykgeworICAgIGlmICht
X3ByZUluZGV4U3RhdGVtZW50LT5iaW5kQmxvYihjdXJyZW50QmluZEFyZ3VtZW50KyssICpidWZm
ZXIpICE9IFNRTElURV9PSykgewogICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBiaW5kIGlk
IGFyZ3VtZW50IHRvIHByZSBzdGF0ZW1lbnQgKHZhbHVlKSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtNTA3LDkgKzUwNyw5IEBAIFNRTGl0ZUlEQkN1cnNvcjo6RmV0Y2hSZXN1
bHQgU1FMaXRlSURCQ3UKIAogICAgIHJlY29yZC5yb3dJRCA9IHN0YXRlbWVudC0+Y29sdW1uSW50
NjQoMCk7CiAgICAgQVNTRVJUKHJlY29yZC5yb3dJRCk7Ci0gICAgYXV0byBrZXlEYXRhVmlldyA9
IHN0YXRlbWVudC0+Y29sdW1uQmxvYlZpZXcoMSk7CisgICAgYXV0byBrZXlEYXRhU3BhbiA9IHN0
YXRlbWVudC0+Y29sdW1uQmxvYkFzU3BhbigxKTsKIAotICAgIGlmICghZGVzZXJpYWxpemVJREJL
ZXlEYXRhKGtleURhdGFWaWV3LmRhdGEoKSwga2V5RGF0YVZpZXcuc2l6ZSgpLCByZWNvcmQucmVj
b3JkLmtleSkpIHsKKyAgICBpZiAoIWRlc2VyaWFsaXplSURCS2V5RGF0YShrZXlEYXRhU3Bhbi5k
YXRhKCksIGtleURhdGFTcGFuLnNpemUoKSwgcmVjb3JkLnJlY29yZC5rZXkpKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGRlc2VyaWFsaXplIGtleSBkYXRhIGZyb20gZGF0YWJhc2Ug
d2hpbGUgYWR2YW5jaW5nIGN1cnNvciIpOwogICAgICAgICBtYXJrQXNFcnJvcmVkKHJlY29yZCk7
CiAgICAgICAgIHJldHVybiBGZXRjaFJlc3VsdDo6RmFpbHVyZTsKQEAgLTU0NCw3ICs1NDQsNyBA
QCBTUUxpdGVJREJDdXJzb3I6OkZldGNoUmVzdWx0IFNRTGl0ZUlEQkN1CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIW1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQKLSAgICAgICAgICAgIHx8
IG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmJpbmRCbG9iKDEsIGtleURhdGEuZGF0YSgp
LCBrZXlEYXRhLnNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBtX2NhY2hlZE9i
amVjdFN0b3JlU3RhdGVtZW50LT5iaW5kQmxvYigxLCBrZXlEYXRhKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgIHx8IG1fY2FjaGVkT2JqZWN0U3RvcmVTdGF0ZW1lbnQtPmJpbmRJbnQ2NCgyLCBt
X29iamVjdFN0b3JlSUQpICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZCBub3QgY3JlYXRlIGluZGV4IGN1cnNvciBzdGF0ZW1lbnQgaW50byBvYmplY3Qgc3RvcmUg
cmVjb3JkcyAoJWkpICclcyciLCBkYXRhYmFzZS5sYXN0RXJyb3IoKSwgZGF0YWJhc2UubGFzdEVy
cm9yTXNnKCkpOwogICAgICAgICAgICAgbWFya0FzRXJyb3JlZChyZWNvcmQpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyNzg2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MTUsNyArODE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3RvcmUoQXBw
bAogICAgICAgICBkYXRhU3RhdGVtZW50LT5iaW5kVGV4dCgyLCBwYXRoKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBpZiAocmVzb3VyY2UtPmRhdGEoKS5zaXplKCkpCi0gICAgICAgICAgICBkYXRh
U3RhdGVtZW50LT5iaW5kQmxvYigxLCByZXNvdXJjZS0+ZGF0YSgpLmRhdGEoKSwgcmVzb3VyY2Ut
PmRhdGEoKS5zaXplKCkpOworICAgICAgICAgICAgZGF0YVN0YXRlbWVudC0+YmluZEJsb2IoMSwg
cmVzb3VyY2UtPmRhdGEoKSk7CiAgICAgfQogICAgIAogICAgIGlmICghZGF0YVN0YXRlbWVudC0+
ZXhlY3V0ZUNvbW1hbmQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAJKHJldmlzaW9uIDI3ODYyMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NSwxNCArODUsMTQgQEAgYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6OmV4ZWN1dGVDb21tYW5kKCkKICAg
ICByZXR1cm4gc3RlcCgpID09IFNRTElURV9ET05FOwogfQogCi1pbnQgU1FMaXRlU3RhdGVtZW50
OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IHZvaWQqIGJsb2IsIGludCBzaXplKQoraW50IFNR
TGl0ZVN0YXRlbWVudDo6YmluZEJsb2IoaW50IGluZGV4LCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGJs
b2IpCiB7CiAgICAgQVNTRVJUKGluZGV4ID4gMCk7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihpbmRleCkgPD0gYmluZFBhcmFtZXRlckNvdW50KCkpOwotICAgIEFTU0VSVChibG9i
IHx8ICFzaXplKTsKLSAgICBBU1NFUlQoc2l6ZSA+PSAwKTsKKyAgICBBU1NFUlQoYmxvYi5kYXRh
KCkgfHwgIWJsb2Iuc2l6ZSgpKTsKKyAgICBBU1NFUlQoYmxvYi5zaXplKCkgPj0gMCk7CiAKLSAg
ICByZXR1cm4gc3FsaXRlM19iaW5kX2Jsb2IobV9zdGF0ZW1lbnQsIGluZGV4LCBibG9iLCBzaXpl
LCBTUUxJVEVfVFJBTlNJRU5UKTsKKyAgICByZXR1cm4gc3FsaXRlM19iaW5kX2Jsb2IobV9zdGF0
ZW1lbnQsIGluZGV4LCBibG9iLmRhdGEoKSwgYmxvYi5zaXplKCksIFNRTElURV9UUkFOU0lFTlQp
OwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0
cmluZyYgdGV4dCkKQEAgLTEwNyw3ICsxMDcsNyBAQCBpbnQgU1FMaXRlU3RhdGVtZW50OjpiaW5k
QmxvYihpbnQgaW5kZXgsCiAgICAgZWxzZQogICAgICAgICBjaGFyYWN0ZXJzID0gdXBjb252ZXJ0
ZWRDaGFyYWN0ZXJzOwogCi0gICAgcmV0dXJuIGJpbmRCbG9iKGluZGV4LCBjaGFyYWN0ZXJzLCB0
ZXh0Lmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKSk7CisgICAgcmV0dXJuIGJpbmRCbG9iKGluZGV4
LCBTcGFuIHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY2hhcmFjdGVycyksIHRl
eHQubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpIH0pOwogfQogCiBpbnQgU1FMaXRlU3RhdGVtZW50
OjpiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcgdGV4dCkKQEAgLTI4MiwxMSArMjgyLDEx
IEBAIFN0cmluZyBTUUxpdGVTdGF0ZW1lbnQ6OmNvbHVtbkJsb2JBc1N0cmkKIAogVmVjdG9yPHVp
bnQ4X3Q+IFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxvYihpbnQgY29sKQogewotICAgIGF1dG8g
YmxvYlZpZXcgPSBjb2x1bW5CbG9iVmlldyhjb2wpOwotICAgIHJldHVybiB7IGJsb2JWaWV3LmRh
dGEoKSwgYmxvYlZpZXcuc2l6ZSgpIH07CisgICAgYXV0byBzcGFuID0gY29sdW1uQmxvYkFzU3Bh
bihjb2wpOworICAgIHJldHVybiB7IHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSB9OwogfQogCi1h
dXRvIFNRTGl0ZVN0YXRlbWVudDo6Y29sdW1uQmxvYlZpZXcoaW50IGNvbCkgLT4gQmxvYlZpZXcK
K1NwYW48Y29uc3QgdWludDhfdD4gU1FMaXRlU3RhdGVtZW50Ojpjb2x1bW5CbG9iQXNTcGFuKGlu
dCBjb2wpCiB7CiAgICAgQVNTRVJUKGNvbCA+PSAwKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAkocmV2aXNpb24gMjc4NjIxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUg
IlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KIAogc3RydWN0IHNxbGl0
ZTNfc3RtdDsKIApAQCAtMzgsNyArMzksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
flNRTGl0ZVN0YXRlbWVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNRTGl0ZVN0YXRlbWVudChT
UUxpdGVTdGF0ZW1lbnQmJik7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGJpbmRCbG9i
KGludCBpbmRleCwgY29uc3Qgdm9pZCogYmxvYiwgaW50IHNpemUpOworICAgIFdFQkNPUkVfRVhQ
T1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIFNwYW48Y29uc3QgdWludDhfdD4pOwogICAgIFdF
QkNPUkVfRVhQT1JUIGludCBiaW5kQmxvYihpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGludCBiaW5kVGV4dChpbnQgaW5kZXgsIFN0cmluZ1ZpZXcpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGludCBiaW5kSW50KGludCBpbmRleCwgaW50KTsKQEAgLTcyLDIzICs3
Myw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY29sdW1uQmxvYkFzU3Ry
aW5nKGludCBjb2wpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3Rvcjx1aW50OF90PiBjb2x1bW5C
bG9iKGludCBjb2wpOwogCi0gICAgY2xhc3MgQmxvYlZpZXcgewotICAgIHB1YmxpYzoKLSAgICAg
ICAgQmxvYlZpZXcoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIEJsb2JWaWV3KGNvbnN0IHVpbnQ4X3Qq
IGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICAgICAgOiBtX2RhdGEoZGF0YSkKLSAgICAgICAg
ICAgICwgbV9zaXplKHNpemUpCi0gICAgICAgIHsgfQotCi0gICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KLSAgICAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVy
biBtX3NpemU7IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIG1fZGF0
YSB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3Qgc2l6ZV90IG1fc2l6ZSB7IDAgfTsKLSAgICB9
OwotICAgIC8vIFRoZSByZXR1cm5lZCBCbG9iVmlldyBzdGF5cyB2YWxpZCB1bnRpbCB0aGUgbmV4
dCBzdGVwKCkgLyByZXNldCgpIG9yIGRlc3RydWN0aW9uIG9mIHRoZSBzdGF0ZW1lbnQuCi0gICAg
QmxvYlZpZXcgY29sdW1uQmxvYlZpZXcoaW50IGNvbCk7CisgICAgLy8gVGhlIHJldHVybmVkIFNw
YW4gc3RheXMgdmFsaWQgdW50aWwgdGhlIG5leHQgc3RlcCgpIC8gcmVzZXQoKSBvciBkZXN0cnVj
dGlvbiBvZiB0aGUgc3RhdGVtZW50LgorICAgIFNwYW48Y29uc3QgdWludDhfdD4gY29sdW1uQmxv
YkFzU3BhbihpbnQgY29sKTsKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSgpIHsgcmV0
dXJuIG1fZGF0YWJhc2U7IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3Bw
CShyZXZpc2lvbiAyNzg2MjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDEwICs0
NTksMTAgQEAgYm9vbCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZG9QdXNoQ2hhbmdlcwogICAgICAg
ICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kVGV4dCg2LCB1cGRhdGVWaWFDYWNoZVRvU3Ry
aW5nKGRhdGEucmVnaXN0cmF0aW9uLnVwZGF0ZVZpYUNhY2hlKSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRUZXh0KDcsIGRhdGEuc2NyaXB0VVJMLnN0
cmluZygpKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IGluc2VydFN0YXRlbWVudC0+Ymlu
ZFRleHQoOCwgd29ya2VyVHlwZVRvU3RyaW5nKGRhdGEud29ya2VyVHlwZSkpICE9IFNRTElURV9P
SwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYig5LCBjc3BFbmNvZGVy
LmJ1ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
ICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRCbG9iKDksIFNwYW4geyBjc3BFbmNvZGVyLmJ1
ZmZlcigpLCBjc3BFbmNvZGVyLmJ1ZmZlclNpemUoKSB9KSAhPSBTUUxJVEVfT0sKICAgICAgICAg
ICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZFRleHQoMTAsIGRhdGEucmVmZXJyZXJQb2xpY3kp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgaW5zZXJ0U3RhdGVtZW50LT5iaW5kQmxvYigx
MSwgc2NyaXB0UmVzb3VyY2VNYXBFbmNvZGVyLmJ1ZmZlcigpLCBzY3JpcHRSZXNvdXJjZU1hcEVu
Y29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGluc2VydFN0
YXRlbWVudC0+YmluZEJsb2IoMTIsIGNlcnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyKCksIGNl
cnRpZmljYXRlSW5mb0VuY29kZXIuYnVmZmVyU2l6ZSgpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IGluc2VydFN0YXRlbWVudC0+YmluZEJsb2IoMTEsIFNwYW4geyBzY3JpcHRSZXNvdXJj
ZU1hcEVuY29kZXIuYnVmZmVyKCksIHNjcmlwdFJlc291cmNlTWFwRW5jb2Rlci5idWZmZXJTaXpl
KCkgfSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBpbnNlcnRTdGF0ZW1lbnQtPmJpbmRC
bG9iKDEyLCBTcGFuIHsgY2VydGlmaWNhdGVJbmZvRW5jb2Rlci5idWZmZXIoKSwgY2VydGlmaWNh
dGVJbmZvRW5jb2Rlci5idWZmZXJTaXplKCkgfSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBpbnNlcnRTdGF0ZW1lbnQtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIkZhaWxlZCB0byBzdG9yZSByZWdpc3Ry
YXRpb24gZGF0YSBpbnRvIHJlY29yZHMgdGFibGUgKCVpKSAtICVzIiwgbV9kYXRhYmFzZS0+bGFz
dEVycm9yKCksIG1fZGF0YWJhc2UtPmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTUxNSw5ICs1MTUsOSBAQCBTdHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6
OmltcG9ydFJlY29yCiAgICAgICAgIGF1dG8gd29ya2VyVHlwZSA9IHN0cmluZ1RvV29ya2VyVHlw
ZShzcWwtPmNvbHVtblRleHQoNykpOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjb250ZW50U2VjdXJpdHlQb2xpY3k7Ci0gICAg
ICAgIGF1dG8gY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcgPSBzcWwtPmNvbHVtbkJsb2JW
aWV3KDgpOwotICAgICAgICBpZiAoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuc2l6ZSgp
KSB7Ci0gICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIGNzcERlY29kZXIoY29u
dGVudFNlY3VyaXR5UG9saWN5RGF0YVZpZXcuZGF0YSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3lE
YXRhVmlldy5zaXplKCkpOworICAgICAgICBhdXRvIGNvbnRlbnRTZWN1cml0eVBvbGljeURhdGFT
cGFuID0gc3FsLT5jb2x1bW5CbG9iQXNTcGFuKDgpOworICAgICAgICBpZiAoY29udGVudFNlY3Vy
aXR5UG9saWN5RGF0YVNwYW4uc2l6ZSgpKSB7CisgICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNl
OjpEZWNvZGVyIGNzcERlY29kZXIoY29udGVudFNlY3VyaXR5UG9saWN5RGF0YVNwYW4uZGF0YSgp
LCBjb250ZW50U2VjdXJpdHlQb2xpY3lEYXRhU3Bhbi5zaXplKCkpOwogICAgICAgICAgICAgY3Nw
RGVjb2RlciA+PiBjb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgICAgICAgICBpZiAoIWNvbnRl
bnRTZWN1cml0eVBvbGljeSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNl
cnZpY2VXb3JrZXIsICJSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3JkczogRmFpbGVk
IHRvIGRlY29kZSBjb250ZW50U2VjdXJpdHlQb2xpY3kiKTsKQEAgLTUyOCw5ICs1MjgsOSBAQCBT
dHJpbmcgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmltcG9ydFJlY29yCiAgICAgICAgIGF1dG8gcmVm
ZXJyZXJQb2xpY3kgPSBzcWwtPmNvbHVtblRleHQoOSk7CiAKICAgICAgICAgSGFzaE1hcDxVUkws
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNl
TWFwOwotICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNlTWFwRGF0YVZpZXcgPSBzcWwtPmNvbHVt
bkJsb2JWaWV3KDEwKTsKLSAgICAgICAgaWYgKHNjcmlwdFJlc291cmNlTWFwRGF0YVZpZXcuc2l6
ZSgpKSB7Ci0gICAgICAgICAgICBXVEY6OlBlcnNpc3RlbmNlOjpEZWNvZGVyIHNjcmlwdFJlc291
cmNlTWFwRGVjb2RlcihzY3JpcHRSZXNvdXJjZU1hcERhdGFWaWV3LmRhdGEoKSwgc2NyaXB0UmVz
b3VyY2VNYXBEYXRhVmlldy5zaXplKCkpOworICAgICAgICBhdXRvIHNjcmlwdFJlc291cmNlTWFw
RGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTApOworICAgICAgICBpZiAoc2NyaXB0
UmVzb3VyY2VNYXBEYXRhU3Bhbi5zaXplKCkpIHsKKyAgICAgICAgICAgIFdURjo6UGVyc2lzdGVu
Y2U6OkRlY29kZXIgc2NyaXB0UmVzb3VyY2VNYXBEZWNvZGVyKHNjcmlwdFJlc291cmNlTWFwRGF0
YVNwYW4uZGF0YSgpLCBzY3JpcHRSZXNvdXJjZU1hcERhdGFTcGFuLnNpemUoKSk7CiAgICAgICAg
ICAgICBzdGQ6Om9wdGlvbmFsPEhhc2hNYXA8VVJMLCBJbXBvcnRlZFNjcmlwdEF0dHJpYnV0ZXM+
PiBzY3JpcHRSZXNvdXJjZU1hcFdpdGhvdXRTY3JpcHRzOwogICAgICAgICAgICAgc2NyaXB0UmVz
b3VyY2VNYXBEZWNvZGVyID4+IHNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHM7CiAgICAg
ICAgICAgICBpZiAoIXNjcmlwdFJlc291cmNlTWFwV2l0aG91dFNjcmlwdHMpIHsKQEAgLTU0MCwx
MCArNTQwLDEwIEBAIFN0cmluZyBSZWdpc3RyYXRpb25EYXRhYmFzZTo6aW1wb3J0UmVjb3IKICAg
ICAgICAgICAgIHNjcmlwdFJlc291cmNlTWFwID0gcG9wdWxhdGVTY3JpcHRTb3VyY2VzRnJvbURp
c2soc2NyaXB0U3RvcmFnZSgpLCAqa2V5LCBXVEZNb3ZlKCpzY3JpcHRSZXNvdXJjZU1hcFdpdGhv
dXRTY3JpcHRzKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGNlcnRpZmljYXRlSW5mb0Rh
dGFWaWV3ID0gc3FsLT5jb2x1bW5CbG9iVmlldygxMSk7CisgICAgICAgIGF1dG8gY2VydGlmaWNh
dGVJbmZvRGF0YVNwYW4gPSBzcWwtPmNvbHVtbkJsb2JBc1NwYW4oMTEpOwogICAgICAgICBzdGQ6
Om9wdGlvbmFsPENlcnRpZmljYXRlSW5mbz4gY2VydGlmaWNhdGVJbmZvOwogCi0gICAgICAgIFdU
Rjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2RlcihjZXJ0aWZpY2F0
ZUluZm9EYXRhVmlldy5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGFWaWV3LnNpemUoKSk7Cisg
ICAgICAgIFdURjo6UGVyc2lzdGVuY2U6OkRlY29kZXIgY2VydGlmaWNhdGVJbmZvRGVjb2Rlcihj
ZXJ0aWZpY2F0ZUluZm9EYXRhU3Bhbi5kYXRhKCksIGNlcnRpZmljYXRlSW5mb0RhdGFTcGFuLnNp
emUoKSk7CiAgICAgICAgIGNlcnRpZmljYXRlSW5mb0RlY29kZXIgPj4gY2VydGlmaWNhdGVJbmZv
OwogICAgICAgICBpZiAoIWNlcnRpZmljYXRlSW5mbykgewogICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoU2VydmljZVdvcmtlciwgIlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjppbXBvcnRSZWNv
cmRzOiBGYWlsZWQgdG8gZGVjb2RlIGNlcnRpZmljYXRlSW5mbyIpOwpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI3ODYyMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYtMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgorCisgICAgICAgIEFkb3B0IFdURjo6U3BhbiBpbiBTUUxpdGVTdGF0ZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjc3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9nbGliL0ljb25EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okljb25EYXRhYmFzZTo6
YWRkSWNvbik6CisgICAgICAgIEFkb3B0IG5ldyBiaW5kQmxvYigpIHNpZ25hdHVyZS4KKwogMjAy
MS0wNi0wOCAgVHJ1aXR0IFNhdmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJldmVydGluZyByMjc4NjA5LgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvSWNvbkRhdGFiYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCShyZXZpc2lvbiAyNzg2MjEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JY29uRGF0YWJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTgsNyArMzk4LDcgQEAgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBJY29u
RGF0YWJhc2U6OmFkZAogICAgIG1fYWRkSWNvblN0YXRlbWVudC0+cmVzZXQoKTsKIAogICAgIGF1
dG8gaWNvbklEID0gbV9kYi5sYXN0SW5zZXJ0Um93SUQoKTsKLSAgICBpZiAobV9hZGRJY29uRGF0
YVN0YXRlbWVudC0+YmluZEludDY0KDEsIGljb25JRCkgIT0gU1FMSVRFX09LIHx8IG1fYWRkSWNv
bkRhdGFTdGF0ZW1lbnQtPmJpbmRCbG9iKDIsIGljb25EYXRhLmRhdGEoKSwgaWNvbkRhdGEuc2l6
ZSgpKSAhPSBTUUxJVEVfT0spIHsKKyAgICBpZiAobV9hZGRJY29uRGF0YVN0YXRlbWVudC0+Ymlu
ZEludDY0KDEsIGljb25JRCkgIT0gU1FMSVRFX09LIHx8IG1fYWRkSWNvbkRhdGFTdGF0ZW1lbnQt
PmJpbmRCbG9iKDIsIGljb25EYXRhKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgTE9HX0VSUk9S
KCJJY29uRGF0YWJhc2U6OmFkZEljb24gZmFpbGVkOiAlcyIsIG1fZGIubGFzdEVycm9yTXNnKCkp
OwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>