<?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>127717</bug_id>
          
          <creation_ts>2014-01-27 15:38:08 -0800</creation_ts>
          <short_desc>IDB: Rename &quot;IDBTransactionIdentifier&quot; to be more general purpose</short_desc>
          <delta_ts>2014-01-27 17:13:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972616</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 15:38:08 -0800</bug_when>
    <thetext>IDB: Rename &quot;IDBTransactionIdentifier&quot; to be more general purpose

The purpose of IDBTransactionIdentifier is to pair a DatabaseProcessIDBConnection with an integer ID for unique hashing.

Previously we only cared about transaction integer IDs but now we&apos;ll need to use for cursor integer IDs also.

My proposed rename is to &quot;IDBIdentifier&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972618</commentid>
    <comment_count>1</comment_count>
      <attachid>222371</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 15:40:43 -0800</bug_when>
    <thetext>Created attachment 222371
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972624</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 15:44:28 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162877</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972635</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 15:54:40 -0800</bug_when>
    <thetext>This was incomplete.  Since the type name no longer carries all the information, variable names will need to be updated as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972642</commentid>
    <comment_count>4</comment_count>
      <attachid>222376</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 16:00:44 -0800</bug_when>
    <thetext>Created attachment 222376
Patch take 2 (v1)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972681</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-27 17:13:40 -0800</bug_when>
    <thetext>Followup landed in http://trac.webkit.org/changeset/162891</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222371</attachid>
            <date>2014-01-27 15:40:43 -0800</date>
            <delta_ts>2014-01-27 15:41:35 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>74644</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1NjYzYTUxLi44MGJkNDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMg
QEAKIDIwMTQtMDEtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIElEQjogUmVuYW1lICJJREJUcmFuc2FjdGlvbklkZW50aWZpZXIiIHRvIGJlIG1vcmUgZ2Vu
ZXJhbCBwdXJwb3NlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjc3MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBHbG9iYWwgcmVuYW1lIG9mIElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciB0byBJREJJZGVu
dGlmaWVyLgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJJZGVudGlm
aWVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL0lEQlRyYW5zYWN0aW9uSWRlbnRpZmllci5oLgorCisgICAgICAgICogRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcDoKKworICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKwor
ICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9T
UUxpdGVJREJUcmFuc2FjdGlvbi5oOgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIERhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FM
aXRlLmNwcDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9Vbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oOgorCisgICAgICAgICogU2hhcmVkL1dl
YkNyb3NzVGhyZWFkQ29waWVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJlYWRD
b3BpZXIuaDoKKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KworMjAxNC0wMS0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAg
ICAgSURCOiBMZXZlbERCIGJhY2tpbmcgc3RvcmUgc2hvdWxkbid0IGtub3cgYWJvdXQgSURCQ3Vy
c29yIG9yIElEQkNhbGxiYWNrcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI3NzA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb24uY3BwCmluZGV4IGE4MGQ0ODAuLjE1MDVkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9E
YXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcApAQCAtMzAsNyArMzAsNyBAQAogCiAjaW5j
bHVkZSAiRGF0YWJhc2VQcm9jZXNzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3ND
b25uZWN0aW9uLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiSURCSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJV
bmlxdWVJREJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgpA
QCAtOTEsNyArOTEsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om9wZW5U
cmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdAogCiAgICAgSW5kZXhlZERC
OjpUcmFuc2FjdGlvbk1vZGUgbW9kZSA9IHN0YXRpY19jYXN0PEluZGV4ZWREQjo6VHJhbnNhY3Rp
b25Nb2RlPihpbnRNb2RlKTsKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5vcGVuVHJhbnNh
Y3Rpb24oSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2Jq
ZWN0U3RvcmVJRHMsIG1vZGUsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2Vzcykg
eworICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPm9wZW5UcmFuc2FjdGlvbihJREJJZGVudGlmaWVy
KCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRHMsIG1vZGUsIFtjb25uZWN0aW9u
LCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRPcGVuVHJhbnNhY3Rpb24ocmVxdWVz
dElELCBzdWNjZXNzKSk7CiAgICAgfSk7CiB9CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBEYXRh
YmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpiZWdpblRyYW5zYWN0aW9uKHVpbnQ2NF90IHJlcXVl
c3RJRCwgaW50NjRfdAogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3MgYmVnaW5UcmFuc2Fj
dGlvbiByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCiAgICAgUmVmUHRyPERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJE
YXRhYmFzZS0+YmVnaW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbklkZW50aWZpZXIoKnRoaXMs
IHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsK
KyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5iZWdpblRyYW5zYWN0aW9uKElEQklkZW50aWZpZXIo
KnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nl
c3MpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6RGlkQmVnaW5UcmFuc2FjdGlvbihyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKICAgICB9
KTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b246OmNvbW1pdFRyYW5zYWN0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdAogICAgIExP
RyhJREIsICJEYXRhYmFzZVByb2Nlc3MgY29tbWl0VHJhbnNhY3Rpb24gcmVxdWVzdCBJRCAlbGx1
IiwgcmVxdWVzdElEKTsKIAogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9u
PiBjb25uZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPmNvbW1pdFRyYW5z
YWN0aW9uKElEQlRyYW5zYWN0aW9uSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIFtj
b25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgeworICAgIG1fdW5pcXVlSURCRGF0
YWJhc2UtPmNvbW1pdFRyYW5zYWN0aW9uKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9u
SUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQ29tbWl0
VHJhbnNhY3Rpb24ocmVxdWVzdElELCBzdWNjZXNzKSk7CiAgICAgfSk7CiB9CkBAIC0xMjcsNyAr
MTI3LDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpyZXNldFRyYW5zYWN0
aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdAogICAgIExPRyhJREIsICJEYXRhYmFzZVBy
b2Nlc3MgcmVzZXRUcmFuc2FjdGlvbiByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCiAg
ICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7
Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+cmVzZXRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElE
XShib29sIHN1Y2Nlc3MpIHsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5yZXNldFRyYW5zYWN0
aW9uKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVx
dWVzdElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkUmVzZXRUcmFuc2FjdGlvbihyZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKICAgICB9KTsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVz
dElELCBpbnQ2NAogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3Mgcm9sbGJhY2tUcmFuc2Fj
dGlvbiByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCiAgICAgUmVmUHRyPERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJE
YXRhYmFzZS0+cm9sbGJhY2tUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbklkZW50aWZpZXIoKnRo
aXMsIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3Mp
IHsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5yb2xsYmFja1RyYW5zYWN0aW9uKElEQklkZW50
aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29s
IHN1Y2Nlc3MpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyQ29ubmVjdGlvbjo6RGlkUm9sbGJhY2tUcmFuc2FjdGlvbihyZXF1ZXN0SUQsIHN1Y2Nlc3Mp
KTsKICAgICB9KTsKIH0KQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb246OmNoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGlu
dAogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3MgY2hhbmdlRGF0YWJhc2VWZXJzaW9uIHJl
cXVlc3QgSUQgJWxsdSwgbmV3IHZlcnNpb24gJWxsdSIsIHJlcXVlc3RJRCwgbmV3VmVyc2lvbik7
CiAKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0
aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5jaGFuZ2VEYXRhYmFzZVZlcnNpb24oSURC
VHJhbnNhY3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgbmV3VmVyc2lvbiwg
W2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgbV91bmlxdWVJREJE
YXRhYmFzZS0+Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5z
YWN0aW9uSUQpLCBuZXdWZXJzaW9uLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nl
c3MpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29u
bmVjdGlvbjo6RGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHJlcXVlc3RJRCwgc3VjY2VzcykpOwog
ICAgIH0pOwogfQpAQCAtMTYyLDcgKzE2Miw3IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90CiAK
ICAgICBMT0coSURCLCAiRGF0YWJhc2VQcm9jZXNzIGNyZWF0ZU9iamVjdFN0b3JlIHJlcXVlc3Qg
SUQgJWxsdSwgb2JqZWN0IHN0b3JlIG5hbWUgJyVzJyIsIHJlcXVlc3RJRCwgbWV0YWRhdGEubmFt
ZS51dGY4KCkuZGF0YSgpKTsKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5jcmVhdGVPYmpl
Y3RTdG9yZShJREJUcmFuc2FjdGlvbklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBt
ZXRhZGF0YSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgbV91
bmlxdWVJREJEYXRhYmFzZS0+Y3JlYXRlT2JqZWN0U3RvcmUoSURCSWRlbnRpZmllcigqdGhpcywg
dHJhbnNhY3Rpb25JRCksIG1ldGFkYXRhLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1
Y2Nlc3MpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6RGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdElELCBzdWNjZXNzKSk7CiAg
ICAgfSk7CiB9CkBAIC0xNzMsNyArMTczLDcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QKIAog
ICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3MgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWVzdCBJ
RCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7
CiAgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhp
cyk7Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUoSURCVHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgW2Nv
bm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUoSURCSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25J
RCksIG9iamVjdFN0b3JlSUQsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2Vzcykg
ewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpEaWREZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKICAgICB9KTsK
IH0KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246
OmNsZWFyT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90CiAKICAgICBMT0co
SURCLCAiRGF0YWJhc2VQcm9jZXNzIGNsZWFyT2JqZWN0U3RvcmUgcmVxdWVzdCBJRCAlbGx1LCBv
YmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVm
UHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAg
bV91bmlxdWVJREJEYXRhYmFzZS0+Y2xlYXJPYmplY3RTdG9yZShJREJUcmFuc2FjdGlvbklkZW50
aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBvYmplY3RTdG9yZUlELCBbY29ubmVjdGlvbiwg
cmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5jbGVh
ck9iamVjdFN0b3JlKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBvYmplY3RT
dG9yZUlELCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAg
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQ2xl
YXJPYmplY3RTdG9yZShyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKICAgICB9KTsKIH0KQEAgLTE5NSw3
ICsxOTUsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNyZWF0ZUluZGV4
KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFucwogCiAgICAgTE9HKElEQiwgIkRhdGFi
YXNlUHJvY2VzcyBjcmVhdGVJbmRleCByZXF1ZXN0IElEICVsbHUsIG9iamVjdCBzdG9yZSBpZCAl
bGxpIiwgcmVxdWVzdElELCBvYmplY3RTdG9yZUlEKTsKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFi
YXNlLT5jcmVhdGVJbmRleChJREJUcmFuc2FjdGlvbklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0
aW9uSUQpLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0o
Ym9vbCBzdWNjZXNzKSB7CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+Y3JlYXRlSW5kZXgoSURC
SWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIG1ldGFkYXRh
LCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKICAgICAgICAgY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQ3JlYXRlSW5k
ZXgocmVxdWVzdElELCBzdWNjZXNzKSk7CiAgICAgfSk7CiB9CkBAIC0yMDYsNyArMjA2LDcgQEAg
dm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpkZWxldGVJbmRleCh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGludDY0X3QgdHJhbnMKIAogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3Mg
ZGVsZXRlSW5kZXggcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVl
c3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+ZGVsZXRl
SW5kZXgoSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2Jq
ZWN0U3RvcmVJRCwgaW5kZXhJRCwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNz
KSB7CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+ZGVsZXRlSW5kZXgoSURCSWRlbnRpZmllcigq
dGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIFtjb25uZWN0aW9u
LCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgewogICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWREZWxldGVJbmRleChyZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKICAgICB9KTsKIH0KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb246OnB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0
X3QgdHJhbnNhYwogCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBwdXRSZWNvcmQgcmVx
dWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3Rv
cmVJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rp
b24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+cHV0UmVjb3JkKElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGtleSwg
dmFsdWUsIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMsIFtjb25uZWN0aW9uLCByZXF1ZXN0
SURdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5wdXRSZWNv
cmQoSURCSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGtl
eSwgdmFsdWUsIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMsIFtjb25uZWN0aW9uLCByZXF1
ZXN0SURdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkUHV0UmVjb3JkKHJlcXVlc3RJRCwga2V5
RGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKICAgICB9KTsKIH0KQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmdldFJlY29yZCh1aW50
NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhYwogCiAgICAgTE9HKElEQiwgIkRhdGFiYXNl
UHJvY2VzcyBnZXRSZWNvcmQgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIs
IHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+
Z2V0UmVjb3JkKElEQlRyYW5zYWN0aW9uSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCks
IG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGtleVJhbmdlLCBzdGF0aWNfY2FzdDxJbmRleGVkREI6
OkN1cnNvclR5cGU+KGN1cnNvclR5cGUpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJ
REJHZXRSZXN1bHQmIGdldFJlc3VsdCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgeworICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPmdldFJlY29yZChJREJJ
ZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwg
a2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yVHlwZT4oY3Vyc29yVHlwZSks
IFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAg
IGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEdl
dFJlY29yZChyZXF1ZXN0SUQsIGdldFJlc3VsdCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsK
ICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvSURCSWRlbnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9JREJJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uYWIxMzEzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvSURCSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBJREJJZGVudGlmaWVyX2gKKyNkZWZpbmUgSURCSWRlbnRpZmllcl9o
CisKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCisKKyNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdI
YXNoZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb247CisKK2NsYXNzIElEQklkZW50aWZpZXIgeworcHVibGljOgorICAgIElEQklk
ZW50aWZpZXIoKQorICAgICAgICA6IG1fY29ubmVjdGlvbihudWxscHRyKQorICAgICAgICAsIG1f
aWRlbnRpZmllcigwKQorICAgIHsKKyAgICB9CisKKyAgICBJREJJZGVudGlmaWVyKERhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGludDY0X3QgaWRlbnRpZmllcikKKyAg
ICAgICAgOiBtX2Nvbm5lY3Rpb24oJmNvbm5lY3Rpb24pCisgICAgICAgICwgbV9pZGVudGlmaWVy
KGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKworICAgIElEQklkZW50aWZpZXIgaXNvbGF0ZWRD
b3B5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBi
b29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX2Nvbm5lY3Rpb24g
JiYgIW1faWRlbnRpZmllcjsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHVpbnQ2NF90IGhhc2hDb2Rlc1syXSA9IHsgcmVpbnRlcnByZXRfY2FzdDx1
aW50NjRfdD4obV9jb25uZWN0aW9uKSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1faWRlbnRpZmll
cikgfTsKKyAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFz
aENvZGVzKT4oaGFzaENvZGVzKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
SURCSWRlbnRpZmllciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jb25u
ZWN0aW9uID09IG90aGVyLm1fY29ubmVjdGlvbiAmJiBtX2lkZW50aWZpZXIgPT0gb3RoZXIubV9p
ZGVudGlmaWVyOworICAgIH0KKworICAgIElEQklkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxl
dGVkVmFsdWVUeXBlKQorICAgICAgICA6IG1fY29ubmVjdGlvbihudWxscHRyKQorICAgICAgICAs
IG1faWRlbnRpZmllcigtMSkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0hhc2hUYWJsZURl
bGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIW1fY29ubmVjdGlvbiAm
JiBtX2lkZW50aWZpZXIgPT0gLTE7CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIElmIGFueSBt
ZW1iZXJzIGFyZSBhZGRlZCB0aGF0IGNhbm5vdCBiZSBzYWZlbHkgY29waWVkIGFjcm9zcyB0aHJl
YWRzLCBpc29sYXRlZENvcHkoKSBtdXN0IGJlIHVwZGF0ZWQuCisgICAgRGF0YWJhc2VQcm9jZXNz
SURCQ29ubmVjdGlvbiogbV9jb25uZWN0aW9uOworICAgIGludDY0X3QgbV9pZGVudGlmaWVyOwor
fTsKKworc3RydWN0IElEQklkZW50aWZpZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFz
aChjb25zdCBJREJJZGVudGlmaWVyJiBhKSB7IHJldHVybiBhLmhhc2goKTsgfQorICAgIHN0YXRp
YyBib29sIGVxdWFsKGNvbnN0IElEQklkZW50aWZpZXImIGEsIGNvbnN0IElEQklkZW50aWZpZXIm
IGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Cit9OworCitzdHJ1Y3QgSURCSWRlbnRpZmllckhh
c2hUcmFpdHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxJREJJZGVudGlmaWVyPiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSXNFbXB0eVZhbHVlRnVuY3Rpb24gPSB0cnVlOworICAg
IHN0YXRpYyBib29sIGlzRW1wdHlWYWx1ZShjb25zdCBJREJJZGVudGlmaWVyJiBpbmZvKSB7IHJl
dHVybiBpbmZvLmlzRW1wdHkoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKK25h
bWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6SURC
SWRlbnRpZmllcj4gOiBXZWJLaXQ6OklEQklkZW50aWZpZXJIYXNoVHJhaXRzIHsgfTsKK3RlbXBs
YXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYktpdDo6SURCSWRlbnRpZmllcj4geworICAgIHR5
cGVkZWYgV2ViS2l0OjpJREJJZGVudGlmaWVySGFzaCBIYXNoOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERB
VEFCQVNFX1BST0NFU1MpCisjZW5kaWYgLy8gSURCSWRlbnRpZmllcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlRyYW5zYWN0aW9uSWRl
bnRpZmllci5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJU
cmFuc2FjdGlvbklkZW50aWZpZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY4
N2FiNmMuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9JREJUcmFuc2FjdGlvbklkZW50aWZpZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJUcmFuc2FjdGlvbklkZW50aWZpZXJfaAot
I2RlZmluZSBJREJUcmFuc2FjdGlvbklkZW50aWZpZXJfaAotCi0jaWYgRU5BQkxFKElOREVYRURf
REFUQUJBU0UpICYmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQotCi0jaW5jbHVkZSA8d3RmL0hh
c2hUcmFpdHMuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nSGFzaGVyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOwotCi1jbGFzcyBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXIgewotcHVibGljOgotICAgIElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllcigpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKG51bGxwdHIpCi0gICAgICAgICwgbV90
cmFuc2FjdGlvbklEKDApCi0gICAgewotICAgIH0KLQotICAgIElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllcihEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBpbnQ2NF90IHRy
YW5zYWN0aW9uSUQpCi0gICAgICAgIDogbV9jb25uZWN0aW9uKCZjb25uZWN0aW9uKQotICAgICAg
ICAsIG1fdHJhbnNhY3Rpb25JRCh0cmFuc2FjdGlvbklEKQotICAgIHsKLSAgICB9Ci0KLSAgICBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXIgaXNvbGF0ZWRDb3B5KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuICFtX2Nvbm5lY3Rpb24gJiYgIW1fdHJhbnNhY3Rpb25JRDsKLSAg
ICB9Ci0KLSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHVpbnQ2NF90
IGhhc2hDb2Rlc1syXSA9IHsgcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV9jb25uZWN0aW9u
KSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdHJhbnNhY3Rpb25JRCkgfTsKLSAgICAgICAgcmV0
dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2YoaGFzaENvZGVzKT4oaGFzaENvZGVz
KTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24g
PT0gb3RoZXIubV9jb25uZWN0aW9uICYmIG1fdHJhbnNhY3Rpb25JRCA9PSBvdGhlci5tX3RyYW5z
YWN0aW9uSUQ7Ci0gICAgfQotCi0gICAgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyKFdURjo6SGFz
aFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX2Nvbm5lY3Rpb24obnVsbHB0cikK
LSAgICAgICAgLCBtX3RyYW5zYWN0aW9uSUQoLTEpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFt
X2Nvbm5lY3Rpb24gJiYgbV90cmFuc2FjdGlvbklEID09IC0xOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICAvLyBJZiBhbnkgbWVtYmVycyBhcmUgYWRkZWQgdGhhdCBjYW5ub3QgYmUgc2FmZWx5IGNv
cGllZCBhY3Jvc3MgdGhyZWFkcywgaXNvbGF0ZWRDb3B5KCkgbXVzdCBiZSB1cGRhdGVkLgotICAg
IERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24qIG1fY29ubmVjdGlvbjsKLSAgICBpbnQ2NF90
IG1fdHJhbnNhY3Rpb25JRDsKLX07Ci0KLXN0cnVjdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXJI
YXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImIGEpIHsgcmV0dXJuIGEuaGFzaCgpOyB9Ci0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBhLCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVU
b0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gZmFsc2U7Ci19OwotCi1zdHJ1Y3QgSURCVHJhbnNh
Y3Rpb25JZGVudGlmaWVySGFzaFRyYWl0cyA6IFdURjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPElE
QlRyYW5zYWN0aW9uSWRlbnRpZmllcj4gewotICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0lzRW1w
dHlWYWx1ZUZ1bmN0aW9uID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpbmZvKSB7IHJldHVybiBpbmZvLmlzRW1wdHko
KTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYktpdDo6SURCVHJhbnNhY3Rpb25JZGVudGlm
aWVyPiA6IFdlYktpdDo6SURCVHJhbnNhY3Rpb25JZGVudGlmaWVySGFzaFRyYWl0cyB7IH07Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxXZWJLaXQ6OklEQlRyYW5zYWN0aW9uSWRlbnRp
Zmllcj4gewotICAgIHR5cGVkZWYgV2ViS2l0OjpJREJUcmFuc2FjdGlvbklkZW50aWZpZXJIYXNo
IEhhc2g7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKLSNlbmRpZiAvLyBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCBl
YWIxM2Y4Li4yNTYzZGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcApAQCAtMjI4LDMy
ICsyMjgsMzIgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkJhY2tpbmdTdG9yZUFu
ZFJlYWRNZXRhZGF0YShjb25zdCBJREJEYXRhYmFzZU1ldGEKICAgICB9CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMs
IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29s
KT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlblRyYW5zYWN0
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6
ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIHBvc3RUcmFuc2Fj
dGlvbk9wZXJhdGlvbihpZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlEcywgbW9kZSksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CiAKLXZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVy
JiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJh
Y2spCiB7CiAgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGlkZW50aWZpZXIsIGNyZWF0ZUFz
eW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdTdG9yZVRyYW5z
YWN0aW9uLCBpZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlm
aWVyJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFj
aykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0Nh
bGxiYWNrKQogewogICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihpZGVudGlmaWVyLCBjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24sIGlkZW50aWZpZXIpLCBzdWNjZXNzQ2FsbGJhY2spOwogfQogCi12b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpyZXNldFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllciYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldFRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQogewogICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihpZGVudGlmaWVyLCBj
cmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbiwgaWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nl
c3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wp
PiBzdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGlkZW50
aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFj
a0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNrKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4gdGFzaywgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJh
Y2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24oY29u
c3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4g
dGFzaywgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bklkZW50aWZpZXImCiAgICAgbV9wZW5kaW5nVHJhbnNhY3Rpb25SZXF1ZXN0cy5hZGQoaWRlbnRp
ZmllciwgcmVxdWVzdC5yZWxlYXNlKCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
aWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgYm9vbCBzdWNjZXNzKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBib29sIHN1Y2Nlc3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApA
QCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJh
bnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVuCiAgICAgcmVxdWVzdC0+
Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpj
aGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1
Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVy
c2lvbihjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9u
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6ZGlkQ29tcGxldGVCb29sUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
c3VjY2VzcykKICAgICByZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2Vzcyk7CiB9CiAKLXZv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
bWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlk
ZW50aQogICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVl
SURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
aWRlbnRpZmllciwgbWV0YWRhdGEpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVy
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCkBAIC00MTAsNyArNDEwLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVu
dGkKICAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlE
QkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlk
ZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKIApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVu
dGlmCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlk
ZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlSW5kZXgoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmIG1l
dGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50
aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRh
ZGF0YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImIGlkZW50aWZpZXIsCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCBpZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSkpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRl
eElELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCkBAIC01MDEsNyArNTAxLDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLAogICAgIHBv
c3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgaWRlbnRpZmllciwgb2JqZWN0
U3RvcmVJRCwgaW5kZXhJRCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNv
cmQoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBp
bmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4mIGluZGV4S2V5cywgc3Rk
OjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5n
Jik+IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURC
S2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRf
dCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8
VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
SURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTI0LDcgKzUyNCw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGluCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
aWRlbnRpZmllciwgbV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwg
a2V5RGF0YSwgdmFsdWUudmVjdG9yKCksIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMpKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90
IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBX
ZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OklEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcm
KT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURC
SWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGlu
ZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBXZWJD
b3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29yVHlwZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IFdlYkNvcmU6OklEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4g
Y2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTQ3LDcgKzU0
Nyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25zdCBJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGluCiAgICAgcG9zdERhdGFiYXNlVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMu
Z2V0KG9iamVjdFN0b3JlSUQpLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1cnNvclR5cGUpKTsK
IH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC01
NTcsNyArNTU3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmkKICAgICBwb3N0TWFpblRocmVh
ZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBs
ZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIGlkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKIH0KIAotdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIpCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpiZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpiZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRp
ZgogICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgaWRlbnRpZmllciwg
c3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3Rv
cmVUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIp
Cit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC01NzcsNyArNTc3LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGkKICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5
bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25P
cGVyYXRpb24sIGlkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6cmVzZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImIGlkZW50aWZpZXIpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsK
QEAgLTU4Nyw3ICs1ODcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldEJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZgogICAgIHBvc3RNYWlu
VGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
Q29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgaWRlbnRpZmllciwgc3VjY2VzcykpOwogfQog
Ci12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xsYmFja0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3ZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRl
bnRpZmllciYgaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAg
ICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwpAQCAtNTk3LDcgKzU5Nyw3IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JZGVuCiAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uLCBp
ZGVudGlmaWVyLCBzdWNjZXNzKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5n
ZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9u
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVy
LCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELAogICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uLCByZXF1ZXN0
SUQsIHN1Y2Nlc3MpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0
U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
bWV0YWRhdGEpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZUlu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29ucwogICAgIHBvc3RNYWluVGhyZWFk
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRl
T2JqZWN0U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUlu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgaWRl
bnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC02MjcsNyArNjI3LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnMKICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5
bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZU9iamVjdFN0b3JlLCBy
ZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJP
YmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCit2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdAogICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZV
bmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2xlYXJPYmplY3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNz
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhN
ZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleElu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgaWRl
bnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1l
dGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBB
U1NFUlQobV9iYWNraW5nU3RvcmUpOwpAQCAtNjQ3LDcgKzY0Nyw3IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJREJUCiAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleCwgcmVxdWVzdElELCBzdWNjZXNzKSk7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50
aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElEKQordm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgaW50NjRfdCBpbmRleElEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC02NTcsNyArNjU3LDcgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IElEQlQKICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZUluZGV4LCByZXF1ZXN0SUQsIHN1Y2Nlc3Mp
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIHRyYW5z
YWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RTdG9yZU1ldGFkYXRh
LCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVl
LCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0
IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtleXMpCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
JiBvYmplY3RTdG9yZU1ldGFkYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtl
eXMpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2lu
Z1N0b3JlKTsKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQ
dXRSZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQgogICAg
IHJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXlEYXRhLCBlcnJvckNvZGUsIGVycm9yTWVzc2Fn
ZSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIHRy
YW5zYWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmplY3RT
dG9yZU1ldGFkYXRhLCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYga2V5UmFuZ2VEYXRhLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUgY3Vyc29y
VHlwZSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZEZyb21CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbiwgY29u
c3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSwg
aW50NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmIGtleVJhbmdl
RGF0YSwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuaAppbmRleCA2N2NlMThlLi44ZTgyMzZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJ
REJEYXRhYmFzZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKLSNpbmNsdWRlICJJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJREJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVk
REIuaD4KICNpbmNsdWRlIDxmdW5jdGlvbmFsPgpAQCAtNjgsMjEgKzY4LDIxIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZ2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sLCBjb25zdCBXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJik+IGNvbXBs
ZXRpb25DYWxsYmFjayk7CiAKLSAgICB2b2lkIG9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURz
LCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgc3RkOjpmdW5jdGlvbjx2b2lk
KGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgYmVnaW5UcmFuc2FjdGlvbihjb25z
dCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1
Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjayk7Ci0gICAgdm9pZCByZXNldFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllciYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAg
ICB2b2lkIHJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVy
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQg
b3BlblRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwg
c3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQgYmVn
aW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNr
KTsKKyAgICB2b2lkIHJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIHJvbGxiYWNr
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29s
KT4gc3VjY2Vzc0NhbGxiYWNrKTsKIAotICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIGNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6
OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nl
c3NDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVJ
bmRleChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBkZWxldGVJbmRleChjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5k
ZXhJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZv
aWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZpZXImLCB1aW50NjRfdCBu
ZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Cisg
ICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4g
c3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklk
ZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29s
KT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
SWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCSWRl
bnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhN
ZXRhZGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAg
ICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spOwogCi0gICAgdm9pZCBwdXRSZWNvcmQoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25z
dCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6
OklEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6SURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOwotICAg
IHZvaWQgZ2V0UmVjb3JkKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5n
ZURhdGEmLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1bHQmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+
IGNhbGxiYWNrKTsKKyAgICB2b2lkIHB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OklEQktleURhdGE+
PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOworICAgIHZvaWQgZ2V0UmVj
b3JkKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3Qg
aW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgV2ViQ29yZTo6SW5kZXhl
ZERCOjpDdXJzb3JUeXBlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCR2V0
UmVzdWx0JiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjayk7CiAKIHByaXZhdGU6
CiAgICAgVW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
Jik7CkBAIC0xMDksMzMgKzEwOSwzMyBAQCBwcml2YXRlOgogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIG9yaWdpbiBjYW4gdXNlIHRoZSBzYW1lIGRhdGFiYXNlcyBhcyB0aGUgZ2l2ZW4gb3Jp
Z2luLgogICAgIGJvb2wgY2FuU2hhcmVEYXRhYmFzZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJikgY29uc3Q7CiAKLSAgICB2b2lkIHBvc3RUcmFu
c2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8QXN5bmNUYXNrPiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spOworICAgIHZvaWQgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50
aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spOwogICAgIAogICAgIC8vIFRvIGJlIGNhbGxlZCBmcm9tIHRo
ZSBkYXRhYmFzZSB3b3JrcXVldWUgdGhyZWFkIG9ubHkKICAgICB2b2lkIHBlcmZvcm1OZXh0RGF0
YWJhc2VUYXNrKCk7CiAgICAgdm9pZCBwb3N0TWFpblRocmVhZFRhc2soc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4pOwogICAgIHZvaWQgb3BlbkJhY2tpbmdTdG9yZUFuZFJlYWRNZXRhZGF0YShj
b25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNl
RGlyZWN0b3J5KTsKLSAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0
b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7Ci0gICAgdm9pZCBi
ZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciYpOwotICAgIHZvaWQgY29tbWl0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyJik7Ci0gICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYpOwotICAgIHZvaWQgcm9sbGJhY2tC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImKTsK
LQotICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCB1aW50NjRfdCBuZXdW
ZXJzaW9uKTsKLSAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJD
b3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJik7Ci0gICAgdm9pZCBkZWxldGVPYmplY3RTdG9y
ZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJhbnNhY3Rpb25J
ZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0
U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCk7Ci0gICAgdm9pZCBjcmVhdGVJ
bmRleEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJJ
bmRleE1ldGFkYXRhJik7Ci0gICAgdm9pZCBkZWxldGVJbmRleEluQmFja2luZ1N0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQpOwotICAgIHZvaWQgcHV0UmVjb3JkSW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5RGF0YSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWUsIGludDY0X3QgcHV0
TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3Rv
cjxXZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cyk7Ci0gICAgdm9pZCBnZXRSZWNvcmRG
cm9tQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJhbnNhY3Rpb25J
ZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGludDY0
X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgV2ViQ29yZTo6SW5k
ZXhlZERCOjpDdXJzb3JUeXBlKTsKKyAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlv
bihjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpOworICAgIHZvaWQgYmVn
aW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJik7CisgICAgdm9p
ZCBjb21taXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJik7Cisg
ICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXIm
KTsKKyAgICB2b2lkIHJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRl
bnRpZmllciYpOworCisgICAgdm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9y
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCB1aW50NjRfdCBuZXdW
ZXJzaW9uKTsKKyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYpOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdT
dG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQpOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCk7CisgICAgdm9pZCBjcmVhdGVJbmRleEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3Qg
V2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYpOworICAgIHZvaWQgZGVsZXRlSW5kZXhJbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCk7CisgICAgdm9pZCBwdXRSZWNvcmRJbkJh
Y2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCBjb25z
dCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3Jl
OjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cyk7CisgICAgdm9pZCBnZXRSZWNvcmRGcm9tQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYsIGNvbnN0IFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdl
YkNvcmU6OklEQktleVJhbmdlRGF0YSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSk7
CiAKICAgICB2b2lkIHNodXRkb3duQmFja2luZ1N0b3JlKCk7CiAKICAgICAvLyBDYWxsYmFja3Mg
ZnJvbSB0aGUgZGF0YWJhc2Ugd29ya3F1ZXVlIHRocmVhZCwgdG8gYmUgcGVyZm9ybWVkIG9uIHRo
ZSBtYWluIHRocmVhZCBvbmx5CiAgICAgdm9pZCBwZXJmb3JtTmV4dE1haW5UaHJlYWRUYXNrKCk7
CiAgICAgdm9pZCBkaWRPcGVuQmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFdlYkNv
cmU6OklEQkRhdGFiYXNlTWV0YWRhdGEmLCBib29sIHN1Y2Nlc3MpOwotICAgIHZvaWQgZGlkQ29t
cGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIm
LCBib29sIHN1Y2Nlc3MpOworICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlv
bihjb25zdCBJREJJZGVudGlmaWVyJiwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZENoYW5n
ZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAgICAg
dm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vz
cyk7CiAgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgc3VjY2Vzcyk7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fYWNj
ZXB0aW5nTmV3UmVxdWVzdHM7CiAKICAgICBEZXF1ZTxSZWZQdHI8QXN5bmNSZXF1ZXN0Pj4gbV9w
ZW5kaW5nTWV0YWRhdGFSZXF1ZXN0czsKLSAgICBIYXNoTWFwPElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgUmVmUHRyPEFzeW5jUmVxdWVzdD4+IG1fcGVuZGluZ1RyYW5zYWN0aW9uUmVxdWVzdHM7
CisgICAgSGFzaE1hcDxJREJJZGVudGlmaWVyLCBSZWZQdHI8QXN5bmNSZXF1ZXN0Pj4gbV9wZW5k
aW5nVHJhbnNhY3Rpb25SZXF1ZXN0czsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXN5
bmNSZXF1ZXN0Pj4gbV9wZW5kaW5nRGF0YWJhc2VUYXNrczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhPiBtX21ldGFkYXRhOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCmluZGV4IDY3M2I0NTYuLmVkNzg5YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKQEAgLTQy
LDcgKzQyLDcgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1jbGFzcyBJREJUcmFuc2FjdGlvbklkZW50aWZpZXI7CitjbGFzcyBJREJJZGVu
dGlmaWVyOwogCiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CkBAIC01
MCwyNiArNTAsMjYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4gZ2V0T3JFc3RhYmxpc2hNZXRhZGF0YSgpID0gMDsK
IAotICAgIHZpcnR1YWwgYm9vbCBlc3RhYmxpc2hUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBX
ZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSkgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25J
ZGVudGlmaWVyJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCByZXNldFRyYW5zYWN0aW9uKGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgcm9sbGJh
Y2tUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGVzdGFibGlzaFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6
OlRyYW5zYWN0aW9uTW9kZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBiZWdpblRyYW5zYWN0aW9u
KGNvbnN0IElEQklkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvbW1pdFRyYW5z
YWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKSA9IDA7CisgICAgdmlydHVhbCBib29sIHJlc2V0
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
cm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJikgPSAwOwogCi0gICAgdmly
dHVhbCBib29sIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImLCB1aW50NjRfdCBuZXdWZXJzaW9uKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjbGVhck9iamVjdFN0b3JlKGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRh
dGEmKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4KGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElEKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJJZGVu
dGlmaWVyJiwgdWludDY0X3QgbmV3VmVyc2lvbikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjcmVh
dGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoY29u
c3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6
SURCSW5kZXhNZXRhZGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXgoY29u
c3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElE
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBnZW5lcmF0
ZUtleShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdl
YkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0cykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBw
dXRSZWNvcmQoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RT
dG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBjb25zdCB1aW50OF90KiB2YWx1ZUJ1ZmZl
ciwgc2l6ZV90IHZhbHVlU2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVLZXlHZW5l
cmF0b3IoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBib29sIGNoZWNrQ3VycmVudCkgPSAwOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IGdlbmVyYXRlS2V5KGNvbnN0IElE
QklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wga2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBv
YmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBib29sJiBrZXlFeGlzdHMpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3Qq
IHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVw
ZGF0ZUtleUdlbmVyYXRvcihjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBib29sIGNoZWNrQ3VycmVudCkgPSAwOwogCi0g
ICAgdmlydHVhbCBib29sIGdldEtleVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6
OklEQktleSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQpID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0S2V5UmFuZ2VSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURC
VHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJD
b3JlOjpJREJLZXlSYW5nZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQs
IFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+JiByZXN1bHRLZXkpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0S2V5UmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiByZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0S2V5UmFu
Z2VSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2UmLCBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiYgcmVzdWx0S2V5
KSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAxZDNlNDkyLi5kZDNhMzZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxp
dGVJREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU1FM
aXRlSURCVHJhbnNhY3Rpb246OlNRTGl0ZUlEQlRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9k
ZSkKK1NRTGl0ZUlEQlRyYW5zYWN0aW9uOjpTUUxpdGVJREJUcmFuc2FjdGlvbihjb25zdCBJREJJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQog
ICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX21vZGUobW9kZSkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5oCmluZGV4IGY2ZjhjNjAuLmUy
Y2MxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCVHJhbnNhY3Rpb24uaApAQCAt
MjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIEVOQUJMRShE
QVRBQkFTRV9QUk9DRVNTKQogCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmgi
CisjaW5jbHVkZSAiSURCSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NywxNCArNDcsMTQgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBTUUxpdGVJREJUcmFuc2FjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoU1FMaXRlSURCVHJhbnNhY3Rpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+IGNyZWF0ZShjb25zdCBJREJUcmFuc2FjdGlv
bklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlIG1vZGUpCisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJUcmFuc2FjdGlv
bj4gY3JlYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4
ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPihuZXcgU1FMaXRlSURCVHJhbnNhY3Rpb24o
aWRlbnRpZmllciwgbW9kZSkpOwogICAgIH0KIAogICAgIH5TUUxpdGVJREJUcmFuc2FjdGlvbigp
OwogCi0gICAgY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgSURCSWRlbnRpZmllciYgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgYm9vbCBiZWdp
bihXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpOwogICAgIGJvb2wgY29tbWl0KCk7CkBAIC02NSw5
ICs2NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGluUHJvZ3Jlc3MoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBTUUxpdGVJREJUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CisgICAgU1FMaXRlSURC
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlKTsKIAotICAgIElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CisgICAgSURCSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6SW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OlNRTGl0ZVRyYW5zYWN0aW9uPiBtX3NxbGl0ZVRyYW5zYWN0aW9uOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURC
RGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGUuY3BwCmluZGV4IGI2ZDkzZDkuLjA1MGVkYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKQEAg
LTI2Nyw3ICsyNjcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VNZXRhZGF0YT4gVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdldE9yRQogICAgIHJldHVybiBtZXRh
ZGF0YTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZXN0
YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlm
aWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSBtb2RlKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6
ZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUg
bW9kZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMjc5LDcgKzI3OSw3
IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmVzdGFibGlzaFRy
YW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmJlZ2luVHJhbnNhY3Rpb24oY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyKQorYm9vbCBVbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCkBA
IC0yOTIsNyArMjkyLDcgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkkKICAgICByZXR1cm4gdHJh
bnNhY3Rpb24tPmJlZ2luKCptX3NxbGl0ZURCKTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiBpZGVudGlmaWVyKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIApAQCAtMzA1LDcgKzMwNSw3
IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNvbW1pdFRyYW5z
YWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uCiAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLT5jb21t
aXQoKTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cmVz
ZXRUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIp
Citib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpyZXNldFRyYW5zYWN0
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAKQEAgLTMxOCw3ICszMTgsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlOjpyZXNldFRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9u
SQogICAgIHJldHVybiB0cmFuc2FjdGlvbi0+cmVzZXQoKTsKIH0KIAotYm9vbCBVbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlOjpyb2xsYmFja1RyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZp
ZXImIGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKQEAgLTMz
MSw3ICszMzEsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpy
b2xsYmFja1RyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aQogICAgIHJldHVybiB0cmFuc2Fj
dGlvbi0+cm9sbGJhY2soKTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllciYgaWRlbnRpZmllciwgdWludDY0X3QgbmV3VmVyc2lvbikKK2Jvb2wgVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKQEAgLTM2MCw3ICsz
NjAsNyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjaGFuZ2VE
YXRhYmFzZVZlcnNpb24oY29uc3QgSURCVHJhbnNhYwogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgaWRl
bnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwpAQCAtMzk3
LDcgKzM5Nyw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmRlbGV0ZU9iamVj
dFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlEKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50
NjRfdCBvYmplY3RTdG9yZUlEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX3NxbGl0ZURCKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBib29sIFVuaXF1ZUlEQkRh
dGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlU1FMaXRlOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQorYm9vbCBVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCiB7CiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwpAQCAtNDg2LDcg
KzQ4Niw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNsZWFy
T2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RT
dG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKK2Jvb2wg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwpAQCAtNTI0LDcgKzUyNCw3IEBAIGJv
b2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlRyYW5z
YWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2
NF90IGluZGV4SUQpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpk
ZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVj
dFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CkBAIC01NTUsMTkgKzU1NSwxOSBAQCBib29sIFVu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpkZWxldGVJbmRleChjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aQogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXNzUmVmUHRyPElEQktl
eT4gVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdlbmVyYXRlS2V5KGNvbnN0
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKK1Bhc3NS
ZWZQdHI8SURCS2V5PiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Z2VuZXJh
dGVLZXkoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKIHsKICAg
ICAvLyBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzE1ODc3OTA5Pik6IEltcGxlbWVudAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FM
aXRlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCS2V5JiwgYm9vbCYga2V5RXhpc3Rz
KQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6a2V5RXhpc3RzSW5P
YmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBj
b25zdCBJREJLZXkmLCBib29sJiBrZXlFeGlzdHMpCiB7CiAgICAgLy8gRklYTUU6IFdoZW4gR2V0
IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQsIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgYWxzbyAo
PHJkYXI6Ly9wcm9ibGVtLzE1Nzc5NjQ0PikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnB1dFJlY29yZChjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
Y29uc3QgSURCS2V5JiBrZXksIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFs
dWVTaXplKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cHV0UmVj
b3JkKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3Qg
dmFsdWVTaXplKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X3NxbGl0ZURCKTsKQEAgLTYwMywxMyArNjAzLDEzIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OnB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGU6OnVwZGF0ZUtleUdlbmVyYXRvcihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJvb2wgY2hlY2tDdXJy
ZW50KQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6dXBkYXRlS2V5
R2VuZXJhdG9yKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IElEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KQogewogICAgIC8vIEZJWE1FICg8cmRhcjov
L3Byb2JsZW0vMTU4Nzc5MDk+KTogSW1wbGVtZW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpnZXRLZXlSZWNvcmRGcm9t
T2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYga2V5LCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0KQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZTo6Z2V0S2V5UmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklk
ZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5JiBrZXksIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwpA
QCAtNjU1LDcgKzY1NSw3IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGU6OmdldEtleVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJUCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdldEtl
eVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlSYW5nZSYga2V5UmFuZ2UsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQs
IFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+JiByZXN1bHRLZXkpCitib29sIFVuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlOjpnZXRLZXlSYW5nZVJlY29yZEZyb21PYmplY3RTdG9yZShj
b25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNv
bnN0IFdlYkNvcmU6OklEQktleVJhbmdlJiBrZXlSYW5nZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mIHJlc3VsdCwgUmVmUHRyPFdlYkNvcmU6OklEQktleT4mIHJlc3VsdEtleSkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0
ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGUuaAppbmRleCA5ZDgyYjE0Li4xMzVkOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgK
QEAgLTU0LDI2ICs1NCwyNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhPiBnZXRPckVzdGFibGlzaE1ldGFkYXRhKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3Qg
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjb21taXRUcmFuc2FjdGlvbihj
b25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVzZXRUcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBjaGFuZ2VE
YXRhYmFzZVZlcnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgdWludDY0X3Qg
bmV3VmVyc2lvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlTWV0YWRhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJbmRleChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0
YWRhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5kZXgoY29uc3QgSURC
VHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGlu
ZGV4SUQpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktl
eT4gZ2VuZXJhdGVLZXkoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBv
YmplY3RTdG9yZUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmpl
Y3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0cykgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0
IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9yKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiwgYm9v
bCBjaGVja0N1cnJlbnQpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIGdldEtleVJlY29y
ZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBnZXRLZXlS
YW5nZVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIm
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlJiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCwgUmVmUHRyPFdlYkNvcmU6OklEQktl
eT4mIHJlc3VsdEtleSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGVzdGFibGlzaFRyYW5z
YWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVj
dFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJJ
ZGVudGlmaWVyJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHJlc2V0VHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCByb2xsYmFj
a1RyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKSBvdmVycmlkZTsKKworICAgIHZpcnR1
YWwgYm9vbCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYsIHVpbnQ2
NF90IG5ld1ZlcnNpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgaW50
NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5k
ZXgoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCSW5kZXhNZXRhZGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBkZWxl
dGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2
NF90IGluZGV4SUQpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQktleT4gZ2VuZXJhdGVLZXkoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5JiwgYm9vbCYga2V5RXhpc3RzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgcHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXpl
X3QgdmFsdWVTaXplKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlS2V5R2VuZXJh
dG9yKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdl
YkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSBvdmVycmlkZTsKKworICAgIHZpcnR1
YWwgYm9vbCBnZXRLZXlSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29s
IGdldEtleVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlJiwgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCwgUmVmUHRyPFdlYkNvcmU6OklEQktleT4m
IHJlc3VsdEtleSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGUoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+IG1fc3FsaXRl
REI7CiAKLSAgICBIYXNoTWFwPElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPFNRTGl0ZUlEQlRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CisgICAgSGFzaE1hcDxJ
REJJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+PiBtX3Ry
YW5zYWN0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggYzdiMDY2OS4uOTc2ODI0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3Bw
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAotI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIklEQklkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0lEQktleURhdGEuaD4KIApAQCAtNDAsNyArNDAsNyBAQCBVbmlxdWVJREJEYXRh
YmFzZUlkZW50aWZpZXIgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVW5pcXVl
SURCRGF0YWJhcwogICAgIHJldHVybiBpZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOwogfQogCi1J
REJUcmFuc2FjdGlvbklkZW50aWZpZXIgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxz
ZSwgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyPjo6Y29weShjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImIGlkZW50aWZpZXIpCitJREJJZGVudGlmaWVyIENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIElEQklkZW50aWZpZXI+Ojpjb3B5KGNvbnN0IElEQklkZW50aWZpZXIm
IGlkZW50aWZpZXIpCiB7CiAgICAgcmV0dXJuIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIu
aCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oCmluZGV4IGE1
ZDBjNTguLmZkNDBlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9z
c1RocmVhZENvcGllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVh
ZENvcGllci5oCkBAIC0zMiw3ICszMiw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyOwor
Y2xhc3MgSURCSWRlbnRpZmllcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjsK
IH0KIApAQCAtNDYsOCArNDYsOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlSQogICAgIHN0YXRp
YyBXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciBjb3B5KGNvbnN0IFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBD
cm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJLaXQ6OklEQlRyYW5zYWN0aW9u
SWRlbnRpZmllcj4gewotICAgIHN0YXRpYyBXZWJLaXQ6OklEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciBjb3B5KGNvbnN0IFdlYktpdDo6SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJik7Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBXZWJLaXQ6OklE
QklkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViS2l0OjpJREJJZGVudGlmaWVyIGNvcHkoY29u
c3QgV2ViS2l0OjpJREJJZGVudGlmaWVyJik7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9z
c1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8aW50NjRfdD4+IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3
ZjA0ODM2Li4yOGYxMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODIsNiArNjgyLDcgQEAKIAkJNTE2N0VFQTAxNzAzNzdC
RjAwNzY4MUNBIC8qIERpc2tDYWNoZU1vbml0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjdFRTlFMTcwMzc3QkYwMDc2ODFDQSAvKiBEaXNrQ2Fj
aGVNb25pdG9yLmggKi87IH07CiAJCTUxNjdFRUExMTcwMzc3QkYwMDc2ODFDQSAvKiBEaXNrQ2Fj
aGVNb25pdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE2N0VFOUYxNzAzNzdCRjAwNzY4MUNBIC8qIERpc2tDYWNoZU1vbml0b3IubW0gKi87IH07
CiAJCTUxNkE0QTVEMTIwQTJDQ0QwMEMwNUI3RiAvKiBBUElFcnJvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2QTRBNUIxMjBBMkNDRDAwQzA1QjdG
IC8qIEFQSUVycm9yLmggKi87IH07CisJCTUxNzUwOTVBMTg5NzI0OTcwMDQwOEZBQyAvKiBJREJJ
ZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTc1MDk1OTE4OTcyNDk3MDA0MDhGQUMgLyogSURCSWRlbnRpZmllci5oICovOyB9OwogCQk1
MTc5NTU2NzE2Mjg3NkNCMDBGQTQzQjYgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUE4QTYxNTE2MjdGM0Y5MDAw
RDkwRTkgLyogTmV0d29ya1Byb2Nlc3NNYWMubW0gKi87IH07CiAJCTUxNzk1NTY4MTYyODc2Q0Yw
MEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBDQzdERjE2MTM4RTI5MDBEMDNFRDMgLyogTmV0d29ya1By
b2Nlc3MuY3BwICovOyB9OwogCQk1MTc5NTU2QTE2Mjg3NkYzMDBGQTQzQjYgLyogTmV0d29ya1By
b2Nlc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MENDN0UwMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5oICovOyB9OwpAQCAtNzYw
LDcgKzc2MSw2IEBACiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9u
c2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsg
fTsKIAkJNTFEMTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUyMTM4
MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggKi87IH07CiAJCTUxRDEzMDU4
MTM4MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQg
LyogV2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovOyB9OwotCQk1MUQ1NEE3MzE4NUJBQzQyMDAwQ0FF
RDIgLyogSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQ1NEE3MjE4NUJBQzQyMDAwQ0FFRDIgLyogSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyLmggKi87IH07CiAJCTUxREQ5RjI4MTYzNjdEQTIwMDE1NzhFOSAv
KiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUREOUYyNjE2MzY3REEy
MDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MUREOUYyOTE2MzY3REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFERDlGMjcxNjM2N0RBMjAwMTU3OEU5IC8qIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFFMzUxQ0ExODBGMkNDQzAwRTUz
QkU5IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUUzNTFDODE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmNw
cCAqLzsgfTsKQEAgLTIzNTgsNiArMjM1OCw3IEBACiAJCTUxNjdFRTlFMTcwMzc3QkYwMDc2ODFD
QSAvKiBEaXNrQ2FjaGVNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc2tDYWNoZU1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2N0VF
OUYxNzAzNzdCRjAwNzY4MUNBIC8qIERpc2tDYWNoZU1vbml0b3IubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNrQ2FjaGVNb25pdG9yLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTZBNEE1QjEyMEEyQ0NEMDBDMDVCN0YgLyogQVBJRXJyb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRXJyb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3NTA5NTkxODk3MjQ5NzAwNDA4RkFDIC8qIElEQklkZW50
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCSWRlbnRpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdBMzNCMzEzMEIzMDhDMDBGODBDQjUg
LyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRp
b25DYWNoZU1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdD
RjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNDQ2LDcgKzI0NDcsNiBAQAogCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFEMTMwNTIxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNlRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA1NzEzODJGMTA1MDAzNTFFREQgLyog
V2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk1MUQ1NEE3MjE4NUJBQzQyMDAwQ0FFRDIgLyogSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUREOUYyNjE2MzY3REEyMDAxNTc4
RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUREOUYyNzE2MzY3REEyMDAxNTc4RTkgLyogTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3NNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRTM1MUM4MTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCVXRpbGl0aWVzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1NzgsOSArNDU3OCw5IEBACiAJCQkJNTFEMEQ0MkUxODNC
MzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwICovLAogCQkJ
CTUxRDBENDJGMTgzQjM0MTMwMDk3MDQxRCAvKiBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9u
LmggKi8sCiAJCQkJNTFEMEQ0MzAxODNCMzQxMzAwOTcwNDFEIC8qIERhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gKi8sCisJCQkJNTE3NTA5NTkxODk3MjQ5NzAwNDA4RkFD
IC8qIElEQklkZW50aWZpZXIuaCAqLywKIAkJCQk1MTgzNTNEODE4ODVCRjhDMDBEOUZFNDQgLyog
SURCU2VyaWFsaXphdGlvbi5jcHAgKi8sCiAJCQkJNTE4MzUzRDkxODg1QkY4QzAwRDlGRTQ0IC8q
IElEQlNlcmlhbGl6YXRpb24uaCAqLywKLQkJCQk1MUQ1NEE3MjE4NUJBQzQyMDAwQ0FFRDIgLyog
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmggKi8sCiAJCQkJNTE1RTc3MkQxODQwMTU4MDAwMDcy
MDNGIC8qIFVuaXF1ZUlEQkRhdGFiYXNlLmNwcCAqLywKIAkJCQk1MTVFNzcyRTE4NDAxNTgwMDAw
NzIwM0YgLyogVW5pcXVlSURCRGF0YWJhc2UuaCAqLywKIAkJCQk1MTY1NEVGRjE4NEVGMzRBMDA3
REM4MzcgLyogVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCAqLywKQEAgLTY1MDMsNyAr
NjUwMyw2IEBACiAJCQkJNTE4MzUzREIxODg1QkY4QzAwRDlGRTQ0IC8qIElEQlNlcmlhbGl6YXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBREY1OTFCMTg5MDUyOEUwMDQzQzE0NSAvKiBXS1dl
YlZpZXdDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NDRGMDEyNjM4RkIz
MDA2RjBGMTIgLyogV2ViUG9wdXBJdGVtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MUQ1NEE3MzE4
NUJBQzQyMDAwQ0FFRDIgLyogSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzU3NEU2MzEyNjdEMDgwMDA2RjBGMTIgLyogV2ViUG9wdXBNZW51UHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OENERjJBMTg4NzU0OEIwMDg3MTUzNiAvKiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC02NzAyLDYg
KzY3MDEsNyBAQAogCQkJCTc1OUNDRDU5MTgwOEYxNjkwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwOTk4MDEy
NTZBOTgyMDAwODM3NTYgLyogV0tTdHJpbmdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTRBOUFBODEyQjdFNzk2MDA4RkU5ODQgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTc1MDk1QTE4OTcyNDk3MDA0MDhGQUMgLyogSURCSWRlbnRp
Zmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDgxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENUVCQkYxNzQ2QjA0QzAwMEMxQzQ1IC8qIFdL
VHlwZVJlZldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjBBMTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1VSTC5oIGluIEhlYWRlcnMgKi8sCg==
</data>
<flag name="review"
          id="246356"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222376</attachid>
            <date>2014-01-27 16:00:44 -0800</date>
            <delta_ts>2014-01-27 17:04:08 -0800</delta_ts>
            <desc>Patch take 2 (v1)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55991</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMTVhNTc0Li5iY2IyZjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTQtMDEtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIElEQjogUmVuYW1lICJJREJUcmFuc2FjdGlvbklkZW50aWZpZXIiIHRvIGJlIG1vcmUgZ2Vu
ZXJhbCBwdXJwb3NlICh0YWtlIDIpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjc3MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgYWxsIHJlbGF0ZWQgdmFyaWFibGUgbmFtZXMgc2luY2UgdGhl
IHR5cGUgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSByZWxldmFudCBpbmZvLgorCisgICAgICAgICog
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAgICAg
ICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oOgorICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJ
REJUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvU1FMaXRlSURCVHJhbnNhY3Rpb24uaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6
CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0
YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJl
YWRDb3BpZXIuY3BwOgorCisyMDE0LTAxLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KKwogICAgICAgICBJREI6IFJlbmFtZSAiSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyIiB0
byBiZSBtb3JlIGdlbmVyYWwgcHVycG9zZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NzE3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5k
ZXggMjU2M2RhMy4uMzRmOTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTIy
OCwzMiArMjI4LDMyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3Rv
cmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VNZXRhCiAgICAgfQogfQogCi12b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYg
aWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgSW5kZXhl
ZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuVHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8aW50
NjRfdD4mIG9iamVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJh
bnNhY3Rpb25PcGVyYXRpb24oaWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6Om9wZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgaWRlbnRpZmllciwg
b2JqZWN0U3RvcmVJRHMsIG1vZGUpLCBzdWNjZXNzQ2FsbGJhY2spOworICAgIHBvc3RUcmFuc2Fj
dGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRHMsIG1vZGUpLCBzdWNjZXNzQ2FsbGJhY2sp
OwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YmVnaW5UcmFuc2FjdGlvbihjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewotICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlv
bihpZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
YmVnaW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbiwgaWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmJlZ2luQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFjayk7
CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRp
b24oaWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxi
YWNrKTsKKyAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y29tbWl0QmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uSWRlbnRpZmllciksIHN1Y2Nlc3NDYWxsYmFj
ayk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0VHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpyZXNldFRyYW5zYWN0aW9uKGNv
bnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3RkOjpmdW5jdGlvbjx2
b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7Ci0gICAgcG9zdFRyYW5zYWN0aW9uT3BlcmF0
aW9uKGlkZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpyZXNldEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxi
YWNrKTsKKyAgICBwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6cmVzZXRCYWNraW5n
U3RvcmVUcmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSwgc3VjY2Vzc0NhbGxiYWNr
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tUcmFuc2FjdGlvbihjb25z
dCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1
Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJvbGxiYWNrVHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKLSAgICBwb3N0VHJhbnNhY3Rpb25P
cGVyYXRpb24oaWRlbnRpZmllciwgY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OnJvbGxiYWNrQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24sIGlkZW50aWZpZXIpLCBzdWNj
ZXNzQ2FsbGJhY2spOworICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpyb2xs
YmFja0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpLCBzdWNj
ZXNzQ2FsbGJhY2spOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rp
b25PcGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVf
cHRyPEFzeW5jVGFzaz4gdGFzaywgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2Fs
bGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8QXN5bmNUYXNrPiB0YXNrLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxs
YmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0yNjIsNyArMjYyLDcg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0
IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX3BlbmRpbmdUcmFuc2FjdGlvblJlcXVlc3RzLmNvbnRhaW5zKGlkZW50aWZpZXIpKSB7
CisgICAgaWYgKG1fcGVuZGluZ1RyYW5zYWN0aW9uUmVxdWVzdHMuY29udGFpbnModHJhbnNhY3Rp
b25JZGVudGlmaWVyKSkgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHRpbmcgdG8gcXVldWUg
YW4gb3BlcmF0aW9uIGZvciBhIHRyYW5zYWN0aW9uIHRoYXQgYWxyZWFkeSBoYXMgYW4gb3BlcmF0
aW9uIHBlbmRpbmcuIEVhY2ggdHJhbnNhY3Rpb24gc2hvdWxkIG9ubHkgaGF2ZSBvbmUgb3BlcmF0
aW9uIHBlbmRpbmcgYXQgYSB0aW1lLiIpOwogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2Up
OwogICAgICAgICByZXR1cm47CkBAIC0yNzYsMjEgKzI3NiwyMSBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwb3N0VHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRl
bnRpZmllcgogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZmFsc2UpOwogICAgIH0pOwogCi0gICAg
bV9wZW5kaW5nVHJhbnNhY3Rpb25SZXF1ZXN0cy5hZGQoaWRlbnRpZmllciwgcmVxdWVzdC5yZWxl
YXNlKCkpOworICAgIG1fcGVuZGluZ1RyYW5zYWN0aW9uUmVxdWVzdHMuYWRkKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgcmVxdWVzdC5yZWxlYXNlKCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXIm
IGlkZW50aWZpZXIsIGJvb2wgc3VjY2VzcykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENv
bXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBib29sIHN1Y2Nlc3MpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAotICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBtX3BlbmRpbmdUcmFuc2Fj
dGlvblJlcXVlc3RzLnRha2UoaWRlbnRpZmllcik7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4g
cmVxdWVzdCA9IG1fcGVuZGluZ1RyYW5zYWN0aW9uUmVxdWVzdHMudGFrZSh0cmFuc2FjdGlvbklk
ZW50aWZpZXIpOwogICAgIGlmICghcmVxdWVzdCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVx
dWVzdC0+Y29tcGxldGVSZXF1ZXN0KHN1Y2Nlc3MpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmll
ciwgdWludDY0X3QgbmV3VmVyc2lvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24o
Y29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBuZXdW
ZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQklkZW50aWZpZXIm
IGlkZW50aWZpZXIsIHUKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0LT5yZXF1ZXN0
SUQoKTsKICAgICBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLmFkZChyZXF1ZXN0SUQsIHJlcXVlc3Qu
cmVsZWFzZSgpKTsKIAotICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlz
LCAmVW5pcXVlSURCRGF0YWJhc2U6OmNoYW5nZURhdGFiYXNlVmVyc2lvbkluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGlkZW50aWZpZXIsIG5ld1ZlcnNpb24pKTsKKyAgICBwb3N0RGF0YWJhc2VU
YXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRh
YmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG5ld1ZlcnNpb24pKTsKIH0KIAogdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ2hhbmdl
RGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQpAQCAtMzU1
LDcgKzM1NSw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlQm9vbFJlcXVl
c3QodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAgICAgcmVxdWVzdC0+Y29tcGxl
dGVSZXF1ZXN0KHN1Y2Nlc3MpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNj
ZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nl
c3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0zODAsMTAg
KzM4MCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdAogICAgIHVpbnQ2NF90IHJlcXVlc3RJ
RCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRk
KHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhj
cmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3Rv
cmVJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtZXRhZGF0YSkpOworICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBtZXRhZGF0YSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNr
KQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTQwNywxMCArNDA3LDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIs
IGludDY0CiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAg
ICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2Uo
KSk7CiAKLSAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1
ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQs
IGlkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZUlu
QmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3Rv
cmVJRCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKGNv
bnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBA
IC00MzAsMTAgKzQzMCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0XwogICAgIHVpbnQ2NF90
IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNl
VGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJP
YmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlkZW50aWZpZXIsIG9iamVjdFN0
b3JlSUQpKTsKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVu
aXF1ZUlEQkRhdGFiYXNlOjpjbGVhck9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJ
RCwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEKSk7CiB9CiAKLXZvaWQgVW5p
cXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZp
ZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0
YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNv
cmU6OklEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+
IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC00
NjQsMTAgKzQ2NCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjcmVhdGVJbmRleChjb25z
dCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iagogICAgIHVpbnQ2NF90IHJl
cXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFz
a3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNl
VGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlSW5k
ZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBt
ZXRhZGF0YSkpOworICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAm
VW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSkpOwogfQogCi12
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiBp
ZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogCkBAIC00OTgsMTAgKzQ5OCwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iagogICAg
IHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOwogICAgIG1fcGVuZGlu
Z0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwogCi0gICAg
cG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBvYmpl
Y3RTdG9yZUlELCBpbmRleElEKSk7CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQp
KTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50
aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCS2V5RGF0
YSYga2V5RGF0YSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRN
b2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9y
PElEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgSURCS2V5
RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3Qg
VmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRh
Pj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQktleURhdGEmLCB1aW50
MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKQEAgLTUyMSwxMCArNTIxLDEwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1
dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjCiAg
ICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CiAgICAgbV9wZW5k
aW5nRGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CiAKLSAg
ICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFi
YXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtX21l
dGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLCBrZXlEYXRhLCB2YWx1ZS52
ZWN0b3IoKSwgcHV0TW9kZSwgaW5kZXhJRHMsIGluZGV4S2V5cykpOworICAgIHBvc3REYXRhYmFz
ZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29y
ZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbV9tZXRh
ZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwga2V5RGF0YSwgdmFsdWUudmVj
dG9yKCksIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMpKTsKIH0KIAotdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBl
IGN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1
bHQmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6Z2V0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNv
cmU6OklEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1
cnNvclR5cGUgY3Vyc29yVHlwZSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OklE
QkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtNTQ0LDExNSArNTQ0LDExNSBAQCB2b2lkIFVu
aXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmll
ciwgaW50NjRfdCBvYmplYwogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVl
c3RJRCgpOwogICAgIG1fcGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVz
dC5yZWxlYXNlKCkpOwogCi0gICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRo
aXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVz
dElELCBpZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3Jl
SUQpLCBpbmRleElELCBrZXlSYW5nZURhdGEsIGN1cnNvclR5cGUpKTsKKyAgICBwb3N0RGF0YWJh
c2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpnZXRSZWNv
cmRGcm9tQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbV9t
ZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwgaW5kZXhJRCwga2V5UmFu
Z2VEYXRhLCBjdXJzb3JUeXBlKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5C
YWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSBtb2RlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9yZUlEcywgSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQo
bV9iYWNraW5nU3RvcmUpOwogCi0gICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmVz
dGFibGlzaFRyYW5zYWN0aW9uKGlkZW50aWZpZXIsIG9iamVjdFN0b3JlSURzLCBtb2RlKTsKKyAg
ICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24odHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEcywgbW9kZSk7CiAKLSAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIGlkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKKyAg
ICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIHRyYW5zYWN0aW9uSWRlbnRp
Zmllciwgc3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tp
bmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIpCit2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlOjpiZWdpbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogCi0gICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmJlZ2luVHJhbnNhY3Rpb24oaWRlbnRpZmllcik7CisgICAg
Ym9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmJlZ2luVHJhbnNhY3Rpb24odHJhbnNhY3Rp
b25JZGVudGlmaWVyKTsKIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2so
KnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlv
biwgaWRlbnRpZmllciwgc3VjY2VzcykpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVB
c3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlv
bk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdWNjZXNzKSk7CiB9CiAKLXZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmNvbW1pdEJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZXImIGlkZW50aWZpZXIpCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb21taXRC
YWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
YmFja2luZ1N0b3JlKTsKIAotICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jb21t
aXRUcmFuc2FjdGlvbihpZGVudGlmaWVyKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdT
dG9yZS0+Y29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKIAotICAgIHBv
c3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgaWRlbnRpZmllciwgc3VjY2Vzcykp
OworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9wZXJhdGlvbiwgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBzdWNjZXNzKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllcikK
K3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnJlc2V0QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKLSAgICBib29s
IHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+cmVzZXRUcmFuc2FjdGlvbihpZGVudGlmaWVyKTsK
KyAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+cmVzZXRUcmFuc2FjdGlvbih0cmFu
c2FjdGlvbklkZW50aWZpZXIpOwogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5zYWN0aW9uT3Bl
cmF0aW9uLCBpZGVudGlmaWVyLCBzdWNjZXNzKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNy
ZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDb21wbGV0ZVRyYW5z
YWN0aW9uT3BlcmF0aW9uLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN1Y2Nlc3MpKTsKIH0KIAot
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihj
b25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cm9sbGJhY2tCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
QVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKIAotICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0
b3JlLT5yb2xsYmFja1RyYW5zYWN0aW9uKGlkZW50aWZpZXIpOworICAgIGJvb2wgc3VjY2VzcyA9
IG1fYmFja2luZ1N0b3JlLT5yb2xsYmFja1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiAKLSAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5p
cXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24sIGlkZW50aWZp
ZXIsIHN1Y2Nlc3MpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24s
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1ZlcnNp
b24pCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tp
bmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgdWludDY0X3QgbmV3VmVyc2lvbikKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwogCi0gICAgYm9vbCBzdWNj
ZXNzID0gbV9iYWNraW5nU3RvcmUtPmNoYW5nZURhdGFiYXNlVmVyc2lvbihpZGVudGlmaWVyLCBu
ZXdWZXJzaW9uKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+Y2hhbmdlRGF0
YWJhc2VWZXJzaW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgbmV3VmVyc2lvbik7CiAKICAgICBw
b3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbiwgcmVxdWVzdElELCBzdWNjZXNzKSk7CiB9CiAK
LXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25z
dCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSkKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2Jh
Y2tpbmdTdG9yZS0+Y3JlYXRlT2JqZWN0U3RvcmUoaWRlbnRpZmllciwgbWV0YWRhdGEpOworICAg
IGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVPYmplY3RTdG9yZSh0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIG1ldGFkYXRhKTsKIAogICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVh
dGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ3JlYXRlT2JqZWN0U3Rv
cmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3Qg
SURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQordm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlT2JqZWN0U3RvcmUoaWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCk7Cisg
ICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZU9iamVjdFN0b3JlKHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCk7CiAKICAgICBwb3N0TWFpblRocmVhZFRh
c2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZU9i
amVjdFN0b3JlLCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y2xlYXJPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKIAotICAgIGJvb2wgc3VjY2VzcyA9IG1f
YmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKGlkZW50aWZpZXIsIG9iamVjdFN0b3JlSUQp
OworICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jbGVhck9iamVjdFN0b3JlKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCk7CiAKICAgICBwb3N0TWFpblRocmVh
ZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZENsZWFy
T2JqZWN0U3RvcmUsIHJlcXVlc3RJRCwgc3VjY2VzcykpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpjcmVhdGVJbmRleEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCBXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhJiBtZXRhZGF0YSkKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKIAot
ICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJbmRleChpZGVudGlmaWVy
LCBvYmplY3RTdG9yZUlELCBtZXRhZGF0YSk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5n
U3RvcmUtPmNyZWF0ZUluZGV4KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwg
bWV0YWRhdGEpOwogCiAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRDcmVhdGVJbmRleCwgcmVxdWVzdElELCBzdWNjZXNz
KSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCkKK3ZvaWQgVW5pcXVlSURCRGF0
YWJhc2U6OmRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgaW50NjRfdCBpbmRleElEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CiAKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2JhY2tp
bmdTdG9yZS0+ZGVsZXRlSW5kZXgoaWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCk7
CisgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZUluZGV4KHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCk7CiAKICAgICBwb3N0TWFpblRo
cmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERl
bGV0ZUluZGV4LCByZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
aAppbmRleCA4ZTgyMzZjLi41ZGU5NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCkBAIC02
OCwyMSArNjgsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRPckVzdGFibGlzaElEQkRhdGFi
YXNlTWV0YWRhdGEoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wsIGNvbnN0IFdlYkNvcmU6OklEQkRh
dGFiYXNlTWV0YWRhdGEmKT4gY29tcGxldGlvbkNhbGxiYWNrKTsKIAotICAgIHZvaWQgb3BlblRy
YW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9i
amVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSwgc3RkOjpm
dW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgYmVnaW5UcmFu
c2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBz
dWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRl
bnRpZmllciYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAg
ICB2b2lkIHJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIHJvbGxiYWNrVHJhbnNh
Y3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3Vj
Y2Vzc0NhbGxiYWNrKTsKLQotICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElE
QklkZW50aWZpZXImLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJ
REJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIGNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotICAgIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
Y29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29s
KT4gc3VjY2Vzc0NhbGxiYWNrKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50
aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgc3RkOjpmdW5j
dGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwotCi0gICAgdm9pZCBwdXRSZWNvcmQo
Y29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUsIGludDY0X3Qg
cHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZl
Y3RvcjxXZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cywgc3RkOjpmdW5jdGlvbjx2b2lk
KGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNh
bGxiYWNrKTsKLSAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJh
bmdlRGF0YSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgc3RkOjpmdW5jdGlvbjx2
b2lkKGNvbnN0IFdlYkNvcmU6OklEQkdldFJlc3VsdCYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcm
KT4gY2FsbGJhY2spOworICAgIHZvaWQgb3BlblRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RT
dG9yZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUsIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIGJlZ2luVHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCBjb21taXRUcmFuc2Fj
dGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHN0ZDo6ZnVu
Y3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIHJlc2V0VHJhbnNh
Y3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCByb2xsYmFja1Ry
YW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgc3Rk
OjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworCisgICAgdm9pZCBjaGFu
Z2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nl
c3NDYWxsYmFjayk7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3Jl
TWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7Cisg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJv
b2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAgIHZvaWQg
Y3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCBkZWxl
dGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0
X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9v
bCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisKKyAgICB2b2lkIHB1dFJlY29yZChjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29u
c3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUs
IGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3Qg
VmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cywgc3RkOjpmdW5j
dGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3Ry
aW5nJik+IGNhbGxiYWNrKTsKKyAgICB2b2lkIGdldFJlY29yZChjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBp
bmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBXZWJDb3JlOjpJbmRleGVk
REI6OkN1cnNvclR5cGUsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJREJHZXRS
ZXN1bHQmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKIAogcHJpdmF0ZToK
ICAgICBVbmlxdWVJREJEYXRhYmFzZShjb25zdCBVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXIm
KTsKQEAgLTEwOSwzMyArMTA5LDMzIEBAIHByaXZhdGU6CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHRoaXMgb3JpZ2luIGNhbiB1c2UgdGhlIHNhbWUgZGF0YWJhc2VzIGFzIHRoZSBnaXZlbiBvcmln
aW4uCiAgICAgYm9vbCBjYW5TaGFyZURhdGFiYXNlcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBjb25zdDsKIAotICAgIHZvaWQgcG9zdFRyYW5z
YWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImLCBzdGQ6OnVuaXF1ZV9wdHI8QXN5
bmNUYXNrPiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOworICAg
IHZvaWQgcG9zdFRyYW5zYWN0aW9uT3BlcmF0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4sIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKICAgICAKICAgICAvLyBUbyBiZSBjYWxs
ZWQgZnJvbSB0aGUgZGF0YWJhc2Ugd29ya3F1ZXVlIHRocmVhZCBvbmx5CiAgICAgdm9pZCBwZXJm
b3JtTmV4dERhdGFiYXNlVGFzaygpOwogICAgIHZvaWQgcG9zdE1haW5UaHJlYWRUYXNrKHN0ZDo6
dW5pcXVlX3B0cjxBc3luY1Rhc2s+KTsKICAgICB2b2lkIG9wZW5CYWNraW5nU3RvcmVBbmRSZWFk
TWV0YWRhdGEoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgdm9pZCBvcGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKKyAgICB2b2lkIG9w
ZW5CYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNv
cmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKICAgICB2b2lkIGJlZ2luQmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpOwogICAgIHZvaWQgY29tbWl0QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpOwogICAgIHZvaWQgcmVz
ZXRCYWNraW5nU3RvcmVUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJik7CiAgICAgdm9p
ZCByb2xsYmFja0JhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKTsK
IAotICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVyc2lvbik7Ci0g
ICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgSURCSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0
YWRhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlE
KTsKLSAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpOwotICAg
IHZvaWQgY3JlYXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklE
QkluZGV4TWV0YWRhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZUluZGV4SW5CYWNraW5nU3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlELCBpbnQ2NF90IGluZGV4SUQpOwotICAgIHZvaWQgcHV0UmVjb3JkSW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0
YT4+JiBpbmRleEtleXMpOwotICAgIHZvaWQgZ2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiwgaW50NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlSYW5nZURhdGEmLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUpOworICAgIHZvaWQg
Y2hhbmdlRGF0YWJhc2VWZXJzaW9uSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1Zl
cnNpb24pOworICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpOworICAgIHZvaWQgZGVsZXRl
T2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKTsK
KyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBv
YmplY3RTdG9yZUlEKTsKKyAgICB2b2lkIGNyZWF0ZUluZGV4SW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYp
OworICAgIHZvaWQgZGVsZXRlSW5kZXhJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQpOworICAgIHZvaWQgcHV0UmVjb3JkSW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBjb25z
dCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSwgaW50
NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0
b3I8VmVjdG9yPFdlYkNvcmU6OklEQktleURhdGE+PiYgaW5kZXhLZXlzKTsKKyAgICB2b2lkIGdl
dFJlY29yZEZyb21CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0
b3JlTWV0YWRhdGEmLCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
RGF0YSYsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSk7CiAKICAgICB2b2lkIHNodXRk
b3duQmFja2luZ1N0b3JlKCk7CiAKICAgICAvLyBDYWxsYmFja3MgZnJvbSB0aGUgZGF0YWJhc2Ug
d29ya3F1ZXVlIHRocmVhZCwgdG8gYmUgcGVyZm9ybWVkIG9uIHRoZSBtYWluIHRocmVhZCBvbmx5
CiAgICAgdm9pZCBwZXJmb3JtTmV4dE1haW5UaHJlYWRUYXNrKCk7CiAgICAgdm9pZCBkaWRPcGVu
QmFja2luZ1N0b3JlQW5kUmVhZE1ldGFkYXRhKGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlTWV0
YWRhdGEmLCBib29sIHN1Y2Nlc3MpOwotICAgIHZvaWQgZGlkQ29tcGxldGVUcmFuc2FjdGlvbk9w
ZXJhdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiwgYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lkIGRp
ZENvbXBsZXRlVHJhbnNhY3Rpb25PcGVyYXRpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkQ2hhbmdlRGF0YWJh
c2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRp
ZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAg
ICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNj
ZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaAppbmRl
eCBlZDc4OWMyLi4wMzUwMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZS5oCkBAIC01MCwyNiArNTAsMjYgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4gZ2V0T3JFc3RhYmxp
c2hNZXRhZGF0YSgpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBlc3RhYmxpc2hUcmFuc2FjdGlv
bihjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBvYmplY3RTdG9y
ZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBX
ZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBiZWdpblRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIHJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgcm9sbGJhY2tUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVy
JikgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJ
REJJZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVyc2lvbikgPSAwOwotICAgIHZpcnR1YWwgYm9v
bCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6
SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXIm
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSW5k
ZXgoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCSW5kZXhNZXRhZGF0YSYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlSW5k
ZXgoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBp
bmRleElEKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1ZlcnNp
b24pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RT
dG9yZU1ldGFkYXRhJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElE
QklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlE
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJD
b3JlOjpJREJJbmRleE1ldGFkYXRhJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRl
eChjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElEKSA9IDA7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiBnZW5lcmF0ZUtleShjb25zdCBJREJJZGVudGlmaWVyJiwgaW50
NjRfdCBvYmplY3RTdG9yZUlEKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29u
c3QgV2ViQ29yZTo6SURCS2V5JiwgYm9vbCYga2V5RXhpc3RzKSA9IDA7Ci0gICAgdmlydHVhbCBi
b29sIHB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlE
LCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBjb25zdCB1aW50OF90KiB2YWx1ZUJ1ZmZlciwgc2l6
ZV90IHZhbHVlU2l6ZSkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVLZXlHZW5lcmF0b3Io
Y29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5JiwgYm9vbCBjaGVja0N1cnJlbnQpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6SURCS2V5PiBnZW5lcmF0ZUtleShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJ
REJLZXkmLCBib29sJiBrZXlFeGlzdHMpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3Jk
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBjb25zdCB1aW50OF90KiB2YWx1ZUJ1
ZmZlciwgc2l6ZV90IHZhbHVlU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVLZXlH
ZW5lcmF0b3IoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJy
ZW50KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0S2V5UmVjb3JkRnJvbU9iamVjdFN0b3Jl
KGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNv
cmU6OklEQktleSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQpID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0S2V5UmFuZ2VSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3Qg
SURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURC
S2V5UmFuZ2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiYgcmVzdWx0S2V5KSA9IDA7CisgICAgdmlydHVhbCBib29sIGdldEtl
eVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5Jiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBnZXRLZXlSYW5nZVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5UmFuZ2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0
LCBSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiYgcmVzdWx0S2V5KSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQlRyYW5zYWN0aW9u
LmNwcAppbmRleCBkZDNhMzZmLi5kODIzODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FM
aXRlSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0zNCw4ICszNCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotU1FMaXRlSURCVHJhbnNhY3Rpb246OlNR
TGl0ZUlEQlRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCi0gICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKK1NRTGl0ZUlEQlRyYW5zYWN0aW9uOjpTUUxpdGVJREJUcmFuc2FjdGlvbihjb25zdCBJREJJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25N
b2RlIG1vZGUpCisgICAgOiBtX2lkZW50aWZpZXIodHJhbnNhY3Rpb25JZGVudGlmaWVyKQogICAg
ICwgbV9tb2RlKG1vZGUpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCVHJhbnNh
Y3Rpb24uaAppbmRleCBlMmNjMTgwLi5iOTA1MGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJREJUcmFuc2FjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1NR
TGl0ZUlEQlRyYW5zYWN0aW9uLmgKQEAgLTQ3LDE0ICs0NywxNCBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIFNRTGl0ZUlEQlRyYW5zYWN0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTUUxpdGVJREJUcmFuc2FjdGlvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxTUUxpdGVJREJUcmFuc2FjdGlvbj4gY3JlYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUpCisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTUUxpdGVJREJUcmFuc2FjdGlvbj4gY3JlYXRlKGNvbnN0
IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6SW5kZXhlZERC
OjpUcmFuc2FjdGlvbk1vZGUgbW9kZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8U1FMaXRlSURCVHJhbnNhY3Rpb24+KG5ldyBTUUxpdGVJREJUcmFuc2FjdGlvbihpZGVu
dGlmaWVyLCBtb2RlKSk7CisgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U1FMaXRlSURC
VHJhbnNhY3Rpb24+KG5ldyBTUUxpdGVJREJUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIG1vZGUpKTsKICAgICB9CiAKICAgICB+U1FMaXRlSURCVHJhbnNhY3Rpb24oKTsKIAotICAg
IGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKyAgICBjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAogICAgIGJvb2wgYmVnaW4oV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2UmKTsKICAgICBib29sIGNvbW1pdCgpOwpAQCAtNjUsNyArNjUsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBpblByb2dyZXNzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
U1FMaXRlSURCVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIFdlYkNvcmU6OkluZGV4
ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKKyAgICBTUUxpdGVJREJUcmFuc2FjdGlvbihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OkluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlKTsKIAogICAgIElEQklkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IFdlYkNvcmU6OkluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1fbW9kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlE
QkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FM
aXRlLmNwcAppbmRleCAwNTBlZGI5Li40NGE3MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCkBA
IC0yNjcsMTEgKzI2NywxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SURCRGF0YWJhc2VNZXRhZGF0YT4g
VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdldE9yRQogICAgIHJldHVybiBt
ZXRhZGF0YTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6
ZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUg
bW9kZSkKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmVzdGFibGlz
aFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
Y29uc3QgVmVjdG9yPGludDY0X3Q+JiwgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGUgbW9kZSkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGlmICghbV90
cmFuc2FjdGlvbnMuYWRkKGlkZW50aWZpZXIsIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpjcmVhdGUo
aWRlbnRpZmllciwgbW9kZSkpLmlzTmV3RW50cnkpIHsKKyAgICBpZiAoIW1fdHJhbnNhY3Rpb25z
LmFkZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsIFNRTGl0ZUlEQlRyYW5zYWN0aW9uOjpjcmVhdGUo
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBtb2RlKSkuaXNOZXdFbnRyeSkgewogICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gZXN0YWJsaXNoIHRyYW5zYWN0aW9uIGlkZW50aWZpZXIgdGhhdCBh
bHJlYWR5IGV4aXN0cyIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjc5LDEx
ICsyNzksMTEgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZXN0
YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6YmVnaW5UcmFuc2Fj
dGlvbihjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorYm9vbCBVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6YmVnaW5UcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CiAKLSAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYg
KCF0cmFuc2FjdGlvbikgewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gYmVnaW4gYSB0
cmFuc2FjdGlvbiB0aGF0IGhhc24ndCBiZWVuIGVzdGFibGlzaGVkIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTI5MiwxMSArMjkyLDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNr
aW5nU3RvcmVTUUxpdGU6OmJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYKICAg
ICByZXR1cm4gdHJhbnNhY3Rpb24tPmJlZ2luKCptX3NxbGl0ZURCKTsKIH0KIAotYm9vbCBVbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y29tbWl0VHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgaWRlbnRpZmllcikKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAg
IFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldChp
ZGVudGlmaWVyKTsKKyAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0
aW9uKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjb21taXQgYSB0cmFuc2FjdGlv
biB0aGF0IGhhc24ndCBiZWVuIGVzdGFibGlzaGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMwNSwxMSArMzA1LDExIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVT
UUxpdGU6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImCiAgICAgcmV0dXJu
IHRyYW5zYWN0aW9uLT5jb21taXQoKTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0ZTo6cmVzZXRUcmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cmVzZXRU
cmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7
CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBTUUxpdGVJREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgU1FM
aXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbikgewogICAgICAgICBMT0df
RVJST1IoIkF0dGVtcHQgdG8gcmVzZXQgYSB0cmFuc2FjdGlvbiB0aGF0IGhhc24ndCBiZWVuIGVz
dGFibGlzaGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMxOCwxMSArMzE4LDExIEBA
IGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnJlc2V0VHJhbnNhY3Rp
b24oY29uc3QgSURCSWRlbnRpZmllciYKICAgICByZXR1cm4gdHJhbnNhY3Rpb24tPnJlc2V0KCk7
CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnJvbGxiYWNr
VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllcikKK2Jvb2wgVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnJvbGxiYWNrVHJhbnNhY3Rpb24oY29uc3Qg
SURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwogCi0gICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0g
bV90cmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogICAgIGlmICghdHJhbnNhY3Rpb24pIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRv
IHJvbGxiYWNrIGEgdHJhbnNhY3Rpb24gdGhhdCBoYXNuJ3QgYmVlbiBlc3RhYmxpc2hlZCIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzEsMTMgKzMzMSwxMyBAQCBib29sIFVuaXF1ZUlE
QkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpyb2xsYmFja1RyYW5zYWN0aW9uKGNvbnN0IElE
QklkZW50aWZpZQogICAgIHJldHVybiB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKIH0KIAotYm9v
bCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y2hhbmdlRGF0YWJhc2VWZXJz
aW9uKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5ld1ZlcnNpb24p
Citib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjaGFuZ2VEYXRhYmFz
ZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50
NjRfdCBuZXdWZXJzaW9uKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0g
ICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KGlkZW50aWZpZXIpOworICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGNoYW5nZSBkYXRhYmFzZSB2ZXJzaW9uIHdpdGggYW4gZXN0YWJsaXNoZWQs
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM2
MCwxMyArMzYwLDEzIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6
OmNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJJZGVudGlmCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IElEQk9iamVj
dFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAg
ICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQo
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBjaGFu
Z2UgZGF0YWJhc2UgdmVyc2lvbiB3aXRoIGFuIGVzdGFibGlzaGVkLCBpbi1wcm9ncmVzcyB0cmFu
c2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zOTcsMTMgKzM5NywxMyBAQCBi
b29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBJREJJZGVudGlmaWVyJgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFVuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpCitib29sIFVu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZShjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxp
dGVEQik7CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFNRTGl0ZUlE
QlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVy
KTsKKyAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9u
cy5nZXQodHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0
cmFuc2FjdGlvbi0+aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0
byBjaGFuZ2UgZGF0YWJhc2UgdmVyc2lvbiB3aXRoIGFuIGVzdGFibGlzaGVkLCBpbi1wcm9ncmVz
cyB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDQsNyArNDQ0LDcg
QEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoYXV0
byBpbmRleElEIDogaW5kZXhJRHMpIHsKLSAgICAgICAgICAgIGlmICghZGVsZXRlSW5kZXgoaWRl
bnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCkpCisgICAgICAgICAgICBpZiAoIWRlbGV0
ZUluZGV4KHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDU2LDEz
ICs0NTYsMTMgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZGVs
ZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y2xlYXJPYmplY3RT
dG9yZShjb25zdCBJREJJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlEKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVChtX3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0g
ICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0
KGlkZW50aWZpZXIpOworICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1f
dHJhbnNhY3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNh
Y3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJBdHRlbXB0IHRvIGNoYW5nZSBkYXRhYmFzZSB2ZXJzaW9uIHdpdGggYW4gZXN0YWJsaXNoLCBp
bi1wcm9ncmVzcyB0cmFuc2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODYs
MTMgKzQ4NiwxMyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpj
bGVhck9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4
KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
Y29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEpCitib29sIFVuaXF1ZUlE
QkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGVJbmRleChjb25zdCBJREJJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3Qg
V2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwogICAgIEFTU0VSVChtX3NxbGl0
ZURCLT5pc09wZW4oKSk7CiAKLSAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24g
PSBtX3RyYW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgU1FMaXRlSURCVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmll
cik7CiAgICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkg
ewogICAgICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gY3JlYXRlIGluZGV4IHdpdGhvdXQgYW4g
ZXN0YWJsaXNoZWQsIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTUyNCwxMyArNTI0LDEzIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGU6OmNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGU6OmRlbGV0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElEKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7
CiAgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFNRTGl0ZUlEQlRyYW5z
YWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAg
ICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQo
dHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2Fj
dGlvbi0+aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBkZWxl
dGUgaW5kZXggd2l0aG91dCBhbiBlc3RhYmxpc2hlZCwgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24i
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTU1LDI1ICs1NTUsMjUgQEAgYm9vbCBVbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6ZGVsZXRlSW5kZXgoY29uc3QgSURCSWRl
bnRpZmllciYgaWRlbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUGFzc1JlZlB0cjxJREJLZXk+
IFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpnZW5lcmF0ZUtleShjb25zdCBJ
REJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQorUGFzc1JlZlB0cjxJREJLZXk+
IFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpnZW5lcmF0ZUtleShjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCkKIHsKICAgICAvLyBGSVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzE1ODc3OTA5Pik6IEltcGxlbWVu
dAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXIm
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleSYsIGJvb2wmIGtleUV4aXN0cykK
K2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmtleUV4aXN0c0luT2Jq
ZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleSYsIGJvb2wmIGtleUV4aXN0cykKIHsKICAg
ICAvLyBGSVhNRTogV2hlbiBHZXQgc3VwcG9ydCBpcyBpbXBsZW1lbnRlZCwgd2UgbmVlZCB0byBp
bXBsZW1lbnQgdGhpcyBhbHNvICg8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDQ+KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6
cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBz
aXplX3QgdmFsdWVTaXplKQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0
ZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXkmIGtleSwgY29uc3QgdWludDhfdCog
dmFsdWVCdWZmZXIsIHNpemVfdCB2YWx1ZVNpemUpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKG1fc3FsaXRlREIpOwogICAgIEFTU0VSVChtX3NxbGl0ZURCLT5p
c09wZW4oKSk7CiAKLSAgICBTUUxpdGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9ucy5nZXQoaWRlbnRpZmllcik7CisgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgaWYgKCF0cmFuc2FjdGlvbiB8fCAhdHJhbnNhY3Rpb24tPmluUHJvZ3Jlc3MoKSkgewogICAg
ICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcHV0IGEgcmVjb3JkIGludG8gZGF0YWJhc2Ugd2l0
aG91dCBhbiBlc3RhYmxpc2hlZCwgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24iKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNjAzLDE5ICs2MDMsMTkgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZTo6cHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50
aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZTo6dXBkYXRlS2V5R2VuZXJhdG9yKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KQorYm9v
bCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6dXBkYXRlS2V5R2VuZXJhdG9y
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBjb25zdCBJREJLZXkmLCBib29sIGNoZWNrQ3VycmVudCkKIHsKICAgICAvLyBG
SVhNRSAoPHJkYXI6Ly9wcm9ibGVtLzE1ODc3OTA5Pik6IEltcGxlbWVudAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Z2V0
S2V5UmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiBrZXksIFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQpCitib29sIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlOjpnZXRLZXlSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGNvbnN0IFdlYkNvcmU6OklEQktleSYga2V5LCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYgcmVzdWx0KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X3NxbGl0ZURCKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOwogCi0gICAgU1FM
aXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KGlkZW50
aWZpZXIpOworICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNh
Y3Rpb25zLmdldCh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghdHJhbnNhY3Rpb24g
fHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJBdHRl
bXB0IHRvIHB1dCBhIHJlY29yZCBpbnRvIGRhdGFiYXNlIHdpdGhvdXQgYW4gZXN0YWJsaXNoZWQs
IGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY1
NSwxMyArNjU1LDEzIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6
OmdldEtleVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmdldEtleVJh
bmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIGlkZW50aWZpZXIs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2UmIGtleVJh
bmdlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQdHI8V2ViQ29y
ZTo6SURCS2V5PiYgcmVzdWx0S2V5KQorYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6Z2V0S2V5UmFuZ2VSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0
IFdlYkNvcmU6OklEQktleVJhbmdlJiBrZXlSYW5nZSwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mIHJlc3VsdCwgUmVmUHRyPFdlYkNvcmU6OklEQktleT4mIHJlc3VsdEtleSkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CiAgICAg
QVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKIAotICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdldChpZGVudGlmaWVyKTsKKyAgICBTUUxp
dGVJREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0aW9ucy5nZXQodHJhbnNh
Y3Rpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+
aW5Qcm9ncmVzcygpKSB7CiAgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBwdXQgYSByZWNv
cmQgaW50byBkYXRhYmFzZSB3aXRob3V0IGFuIGVzdGFibGlzaGVkLCBpbi1wcm9ncmVzcyB0cmFu
c2FjdGlvbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaAppbmRleCAx
MzVkOGQ0Li4yNjFkMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1Vu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKQEAgLTU0LDI2ICs1NCwyNiBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZU1ldGFkYXRhPiBnZXRPckVzdGFibGlzaE1ldGFkYXRhKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgZXN0YWJsaXNoVHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYsIGNvbnN0
IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIFdlYkNvcmU6OkluZGV4ZWREQjo6VHJh
bnNhY3Rpb25Nb2RlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgZXN0YWJsaXNoVHJhbnNh
Y3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5z
YWN0aW9uTW9kZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGJlZ2luVHJhbnNhY3Rpb24o
Y29uc3QgSURCSWRlbnRpZmllciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBjb21taXRU
cmFuc2FjdGlvbihjb25zdCBJREJJZGVudGlmaWVyJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBi
b29sIHJlc2V0VHJhbnNhY3Rpb24oY29uc3QgSURCSWRlbnRpZmllciYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgYm9vbCByb2xsYmFja1RyYW5zYWN0aW9uKGNvbnN0IElEQklkZW50aWZpZXImKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3Qg
SURCSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgY29uc3QgV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RT
dG9yZUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShjb25z
dCBJREJJZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgY3JlYXRlSW5kZXgoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBkZWxldGVJbmRleChjb25zdCBJREJJZGVudGlmaWVyJiwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
Ym9vbCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgY2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBib29sIGNyZWF0ZUluZGV4KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJ
REJJbmRleE1ldGFkYXRhJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGRlbGV0ZUluZGV4
KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQktleT4gZ2VuZXJhdGVLZXkoY29uc3QgSURCSWRlbnRpZmllciYs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGtleUV4
aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiwgYm9vbCYga2V5RXhpc3RzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcHV0UmVjb3JkKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3QqIHZh
bHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlS2V5R2VuZXJhdG9yKGNvbnN0IElEQklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0
b3JlSWQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBnZW5lcmF0ZUtleShj
b25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0cykgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCBib29sIHB1dFJlY29yZChjb25zdCBJREJJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29y
ZTo6SURCS2V5JiwgY29uc3QgdWludDhfdCogdmFsdWVCdWZmZXIsIHNpemVfdCB2YWx1ZVNpemUp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVLZXlHZW5lcmF0b3IoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBnZXRLZXlSZWNvcmRGcm9tT2JqZWN0U3RvcmUoY29uc3QgSURCSWRl
bnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5Jiwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGdldEtleVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50
aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdl
JiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCwgUmVmUHRyPFdlYkNvcmU6
OklEQktleT4mIHJlc3VsdEtleSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGdldEtleVJl
Y29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGdldEtleVJhbmdlUmVjb3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlSYW5nZSYsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1
bHQsIFJlZlB0cjxXZWJDb3JlOjpJREJLZXk+JiByZXN1bHRLZXkpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlKGNvbnN0IFVuaXF1
ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3Rvcnkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAKaW5k
ZXggOTc2ODI0MC4uZTEzNTQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwCkBAIC00MCw5ICs0MCw5IEBAIFVuaXF1ZUlEQkRhdGFiYXNlSWRl
bnRpZmllciBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBVbmlxdWVJREJEYXRh
YmFzCiAgICAgcmV0dXJuIGlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLUlEQklkZW50
aWZpZXIgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCSWRlbnRpZmllcj46
OmNvcHkoY29uc3QgSURCSWRlbnRpZmllciYgaWRlbnRpZmllcikKK0lEQklkZW50aWZpZXIgQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCSWRlbnRpZmllcj46OmNvcHkoY29u
c3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKQogewotICAgIHJldHVybiBp
ZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIFZlY3RvcjxpbnQ2NF90PiBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8aW50NjRfdD4+Ojpjb3B5KGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgdmVjdG9yKQo=
</data>
<flag name="review"
          id="246362"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>