<?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>201318</bug_id>
          
          <creation_ts>2019-08-29 16:19:40 -0700</creation_ts>
          <short_desc>Add &quot;IsolatedCopy&quot; in the name of String getters that call isolatedCopy() on the string</short_desc>
          <delta_ts>2019-08-29 21:37:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=200990</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1566450</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 16:19:40 -0700</bug_when>
    <thetext>Add &quot;IsolatedCopy&quot; in the name of String getters that call isolatedCopy() on the string, for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566455</commentid>
    <comment_count>1</comment_count>
      <attachid>377651</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 16:33:44 -0700</bug_when>
    <thetext>Created attachment 377651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566456</commentid>
    <comment_count>2</comment_count>
      <attachid>377652</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 16:40:15 -0700</bug_when>
    <thetext>Created attachment 377652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566458</commentid>
    <comment_count>3</comment_count>
      <attachid>377653</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-08-29 16:46:56 -0700</bug_when>
    <thetext>Created attachment 377653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566545</commentid>
    <comment_count>4</comment_count>
      <attachid>377653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-29 21:36:05 -0700</bug_when>
    <thetext>Comment on attachment 377653
Patch

Clearing flags on attachment: 377653

Committed r249313: &lt;https://trac.webkit.org/changeset/249313&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566546</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-29 21:36:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566547</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-29 21:37:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/54869360&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377651</attachid>
            <date>2019-08-29 16:33:44 -0700</date>
            <delta_ts>2019-08-29 16:40:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201318-20190829163343.patch</filename>
            <type>text/plain</type>
            <size>38711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwM2JmYzY3ZDgxNWE5
M2IzYTdlYzk1MDg3ZGQ2NmNkYWI2NjRhZS4uMjU2NzljODk3MTA4ZWRkMmQwOGUzMzUyZDE2ZDhi
ZWI1NjA0YWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA4LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkICJJc29sYXRlZENvcHki
IGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRoYXQgY2FsbCBpc29sYXRlZENvcHkoKSBv
biB0aGUgc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDEzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgIklzb2xhdGVkQ29weSIgaW4gdGhlIG5hbWUgb2YgU3RyaW5nIGdldHRlcnMgdGhh
dCBjYWxsIGlzb2xhdGVkQ29weSgpIG9uIHRoZSBzdHJpbmcsIGZvciBjbGFyaXR5LgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVtb3ZlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlbW92ZURhdGFi
YXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y29tcHV0ZVNwYWNlVXNlZEZv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6dXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRh
YmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVj
dG9yeVdpdGhVcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6ZGlzcGxheU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmRldGFpbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxFcnJvcjo6bWVzc2FnZUlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZGF0YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkgY29u
c3QpOgorCiAyMDE5LTA4LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bVEZDXSBVc2UgdGhlICJjb21wbGljYXRlZC1jYXNlcyIgY2F0ZWdvcnkgZm9y
IGNvbXB1dGluZyB0aGUgVEZDIHJvb3QncyBoZWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGEwYjA2NDE5NmQ0
ZjcyNzMxNmMzMzM5ZWYwNTk2MGRiODY1YzZhMS4uN2Y0MzFiYjBiMGMwZDE0MTIxMzgyMDM3NTZm
YWM3YzJhYzE5ODAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wOC0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCAiSXNvbGF0ZWRDb3B5
IiBpbiB0aGUgbmFtZSBvZiBTdHJpbmcgZ2V0dGVycyB0aGF0IGNhbGwgaXNvbGF0ZWRDb3B5KCkg
b24gdGhlIHN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxMzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkICJJc29sYXRlZENvcHkiIGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRo
YXQgY2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUgc3RyaW5nLCBmb3IgY2xhcml0eS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdG9yYWdlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpibG9iRGlyZWN0b3J5UGF0aElzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6QmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFn
ZTo6YmxvYlBhdGhGb3JIYXNoIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OmJhc2VQYXRoSXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp2ZXJzaW9uUGF0aCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWNvcmREaXJlY3Rv
cnlQYXRoRm9yS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnNocmluayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aDoKKwogMjAxOS0wOC0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQU09OXSBCdW1wIHRoZSBXZWJQYWdlJ3MgaWRlbnRpZmllciBldmVyeSB0aW1lIHdlIHBy
b2Nlc3Mtc3dhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBlYzBlNzdhMjdjNzZjZGJiYThkNGQ4ZDNmZGI3MWJk
ZTAzYjE2MjlkLi5hMTEyYjY2YmQ0YzUzODQwNTJlNjg3Y2NjMWU2MWY5MDU0NWIzNjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCA9IHRoaXMtPmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIGF1dG8gZGF0YWJhc2VE
aXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7
CiAgICAgaWYgKGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIElEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgUwogCiB2b2lkIElE
QlNlcnZlcjo6cGVyZm9ybUdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5kYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKTsKKyAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCA9IHRoaXMt
PmRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpOwogICAgIFN0cmluZyBvbGREaXJl
Y3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3QobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBkYXRhYmFzZURpcmVjdG9yeVBh
dGgsICJ2MCIpOwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShvbGREaXJlY3RvcnksICIqIl9zKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFz
ZXM7CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsRGF0YWJhc2VzRm9y
T3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIFdhbGxUaW1lIG0KIAogdm9pZCBJ
REJTZXJ2ZXI6OnJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBTdHJpbmcgdmVy
c2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCksIHZlcnNpb24pOworICAgIFN0cmluZyB2ZXJzaW9uUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29s
YXRlZENvcHkoKSwgdmVyc2lvbik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeSh2ZXJzaW9uUGF0aCwgIioiKSkgewogICAgICAgICBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9y
aW5nVHJhaWxpbmdTbGFzaChvcmlnaW5QYXRoKTsKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJh
c2VJZGVudGlmaWVyKSkKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVtb3Zl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
YwogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewot
ICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFk
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
cmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24obW9kaWZpZWRTaW5jZSwgInYw
Iik7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKG1vZGlm
aWVkU2luY2UsICJ2MSIpOwogICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIElEQlNlcnZl
cjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBt
b2RpZmllZFNpbgogCiB2b2lkIElEQlNlcnZlcjo6cmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNG
b3JWZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+ICZvcmlnaW5zLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgU3RyaW5nIHZlcnNpb25QYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLCB2ZXJz
aW9uKTsKKyAgICBTdHJpbmcgdmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCksIHZlcnNpb24p
OwogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICBTdHJp
bmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJz
aW9uUGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCkp
OwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgSURCU2VydmVyOjpyZW1vdmVEYXRhYmFzZXNXaXRo
T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luCiAgICAgCiB2b2lk
IElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBpZiAoIWRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLmlzRW1wdHkoKSkgeworICAg
IGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmlnaW5zLCAidjAi
KTsKICAgICAgICAgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9uKG9yaWdpbnMs
ICJ2MSIpOwogICAgIH0KQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIElEQlNlcnZlcjo6Y29tcHV0
ZVNwYWNlVXNlZEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRo
ID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVj
dG9yeVBhdGggPSB0aGlzLT5kYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAg
ICBhdXRvIG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6
OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2lu
LmNsaWVudE9yaWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKICAgICBhdXRvIG5l
d1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNl
RGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9y
aWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKICAgICBhdXRvIHNpemUgPSBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xkZXIob2xkVmVyc2lvbk9yaWdp
bkRpcmVjdG9yeSkgKyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xk
ZXIobmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSk7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBJ
REJTZXJ2ZXI6OmRlY3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdAogCiB2b2lkIElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3Nh
cnkoKQogewotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5k
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAgICBpZiAoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURp
cmVjdG9yeVBhdGgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBjNjUzZGZkM2U0Zjcz
YjQyZDM3OGQ4ZDA0MzY2NjNiOTBhYTcwZTE0Li5hOTdiYzdhMWY5YWMwYTcxZjk4MTViZGEzOWRk
YzM4YzE5MjNhNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIAotICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENv
cHkoKTsgfQorICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsgfQog
CiAgICAgdm9pZCBwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDA2Mzc0MTIzZTU2Zjg1NmI0ODEwNDI5ZTAwODNmMmQ2NTE2NDI4NDMuLjQ0YWMyNGY0
MmY5MWE3Njk0MGVkOTNmYTliODkyMTQ4YjZmOWRiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhV
cGdyYWRlKCkKIHsKLSAgICBhdXRvIGRhdGFiYXNlUm9vdERpcmVjdG9yeSA9IHRoaXMtPmRhdGFi
YXNlUm9vdERpcmVjdG9yeSgpOworICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0b3J5ID0gdGhp
cy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCk7CiAgICAgU3RyaW5nIG9sZE9y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7CiAgICAgU3RyaW5nIG9sZERhdGFiYXNl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdp
bkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7CiAgICAgU3RyaW5nIG5ld09y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7CkBAIC04NTcsNyArODU3LDcgQEAgdWlu
dDY0X3QgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRm9sZGVyKGNvbnN0
IFN0cmluZyYgZm9sZGVyKQogCiB1aW50NjRfdCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFi
YXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdAogewotICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0
b3J5ID0gdGhpcy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5KCk7CisgICAgYXV0byBkYXRhYmFzZVJv
b3REaXJlY3RvcnkgPSB0aGlzLT5kYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkoKTsK
ICAgICBTdHJpbmcgb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7
CiAgICAgU3RyaW5nIG5ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MSIp
OwogICAgIHJldHVybiBkYXRhYmFzZXNTaXplRm9yRm9sZGVyKG9sZFZlcnNpb25PcmlnaW5EaXJl
Y3RvcnkpICsgZGF0YWJhc2VzU2l6ZUZvckZvbGRlcihuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5
KTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVCYWNraW5nU3RvcmUoKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRiRmlsZW5hbWUpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJh
c2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnkoKSkpOworICAgIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFi
YXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRD
b3B5KCkpKTsKIH0KIAogdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJz
b3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgK
aW5kZXggZGI2NDc3ZTdmZjNhYzhkOTM2Y2YwYjU4N2VmOWE2ODVlZTE5MGZmMy4uNzIyNjc5NDZj
ZTg3ZjczNTBjMDgyMDJkYmUyN2Q5ZGU5MDIyYzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGZ1bGxEYXRh
YmFzZVBhdGgoKSBjb25zdDsKICAgICBTdHJpbmcgZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVw
Z3JhZGUoKTsKICAgICAKLSAgICBTdHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KKyAgICBT
dHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAogICAgIGJvb2wgZW5z
dXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBib29sIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
VGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZS4uMTk1
ZTZmN2IyMTFjMWYxOTg3Yjg5ZjUzNWFlZTBhMzliNzkyNzFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTU4MCw3ICs1ODAsNyBA
QCB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgIGlmIChtX2RlbGV0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAo
JXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIHRoaXMp
OworICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkuYXNjaWkoKS5kYXRhKCksIHRoaXMpOwogICAgIG1f
ZGVsZXRlZCA9IHRydWU7CiAKICAgICBjbG9zZSgpOwpAQCAtNjAxLDE5ICs2MDEsMTkgQEAgdm9p
ZCBEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiYmIGNhbGxiYWNrLCBSZWZQdHIKICAgICBydW5UcmFuc2FjdGlvbihXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBudWxs
cHRyLCB0cnVlKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKCkgY29u
c3QKK1N0cmluZyBEYXRhYmFzZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpIGNvbnN0
CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNh
ZmV0eQogICAgIHJldHVybiBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLVN0cmluZyBEYXRh
YmFzZTo6ZGlzcGxheU5hbWUoKSBjb25zdAorU3RyaW5nIERhdGFiYXNlOjpkaXNwbGF5TmFtZUlz
b2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYg
Y291bnRpbmcgdGhyZWFkIHNhZmV0eQogICAgIHJldHVybiBtX2Rpc3BsYXlOYW1lLmlzb2xhdGVk
Q29weSgpOwogfQogCi1TdHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbigpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAg
ICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQog
ICAgIHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKTsKQEAgLTYzMCw3ICs2
MzAsNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRFc3RpbWF0ZWRTaXplKHVuc2lnbmVkIGxvbmcgbG9u
ZyBlc3RpbWF0ZWRTaXplKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKHNlY3VyaXR5T3JpZ2luKCksIG1fbmFtZSwgbV9kaXNwbGF5TmFtZSwgbV9l
c3RpbWF0ZWRTaXplKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICAvLyBS
ZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CiAgICAgcmV0
dXJuIG1fZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CkBAIC02MzksNyArNjM5LDcgQEAgU3RyaW5n
IERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRl
dGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3Ig
ZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMsIHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZh
bnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0
cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lSXNvbGF0ZWRDb3B5KCksIGVz
dGltYXRlZFNpemUoKSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpkaXNhYmxlQXV0aG9yaXplcigpCkBAIC03ODYsNyArNzg2LDcgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpCiAKIHZvaWQgRGF0YWJhc2U6OmRp
ZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoc2VjdXJpdHlPcmlnaW4oKSwgc3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKHNlY3VyaXR5T3JpZ2luKCksIHN0cmluZ0lkZW50aWZp
ZXJJc29sYXRlZENvcHkoKSk7CiB9CiAKIGJvb2wgRGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKCkK
QEAgLTc5OSw3ICs3OTksNyBAQCBib29sIERhdGFiYXNlOjpkaWRFeGNlZWRRdW90YSgpCiAgICAg
ICAgIC8vIG9sZFF1b3RhICsgNU1CIHNvIHRoYXQgdGhlIGNsaWVudCBhY3R1YWxseSBpbmNyZWFz
ZXMgdGhlIHF1b3RhLgogICAgICAgICBzZXRFc3RpbWF0ZWRTaXplKG9sZFF1b3RhICsgcXVvdGFJ
bmNyZWFzZVNpemUpOwogICAgIH0KLSAgICBkYXRhYmFzZUNvbnRleHQoKS5kYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoc3RyaW5nSWRlbnRpZmllcigpLCBkZXRhaWxzKCkpOworICAgIGRhdGFiYXNlQ29u
dGV4dCgpLmRhdGFiYXNlRXhjZWVkZWRRdW90YShzdHJpbmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5
KCksIGRldGFpbHMoKSk7CiAgICAgcmV0dXJuIHRyYWNrZXIucXVvdGEoc2VjdXJpdHlPcmlnaW4o
KSkgPiBvbGRRdW90YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCmluZGV4IDk3Yjk2NmM0Zjc3MjIyODJkZmI0MDUzOTg0NDBhMjVmNDM1OTk1
ZGIuLjBkMmE5NWFiYzVjNzFkZjQ0NWU2MWUwMjdjMTg0OTQ5MDJmODczOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKQEAgLTg2LDExICs4Niwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIC8vIEludGVybmFs
IGVuZ2luZSBzdXBwb3J0Ci0gICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKLSAg
ICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgZXhwZWN0ZWRWZXJzaW9u
KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTdHJp
bmcgZXhwZWN0ZWRWZXJzaW9uSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGVzdGltYXRlZFNpemUoKSBjb25zdDsKLSAgICBTdHJpbmcgZmlsZU5hbWUoKSBjb25z
dDsKKyAgICBTdHJpbmcgZmlsZU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICBEYXRhYmFz
ZURldGFpbHMgZGV0YWlscygpIGNvbnN0OwogICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRh
YmFzZSgpIHsgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDY5
YzNiMmVkM2E4NDY4ZDIxMTkyMTRkMjRmNDBjNzI5YzhkYzJhNjIuLjM3MTI4Y2MxZWYyZDk0ODZl
YzNmMjZlYTgyMzRjMWM4YTE4ODRhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFz
ZSYgZGF0YWJhc2UpCiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBxdW90YU5vTG9j
ayhvcmlnaW4pOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkaXNrVXNhZ2UgPSB1c2FnZShvcmln
aW4pOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZUZpbGVTaXplID0gU1FMaXRlRmls
ZVN5c3RlbTo6Z2V0RGF0YWJhc2VGaWxlU2l6ZShkYXRhYmFzZS5maWxlTmFtZSgpKTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJhc2VGaWxlU2l6ZSA9IFNRTGl0ZUZpbGVTeXN0ZW06Omdl
dERhdGFiYXNlRmlsZVNpemUoZGF0YWJhc2UuZmlsZU5hbWVJc29sYXRlZENvcHkoKSk7CiAgICAg
QVNTRVJUKGRhdGFiYXNlRmlsZVNpemUgPD0gZGlza1VzYWdlKTsKIAogICAgIGlmIChkaXNrVXNh
Z2UgPiBxdW90YSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
RGF0YWJhc2VEZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAog
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNlKERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwot
ICAgIGRvbmVDcmVhdGluZ0RhdGFiYXNlKGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCksIGRhdGFi
YXNlLnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJh
c2Uuc2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29w
eSgpKTsKIH0KIAogVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRh
dGFiYXNlcygpCkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
LT5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lTWFwKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgbmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9
IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRh
YmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAg
ICAgICAgIGRhdGFiYXNlU2V0ID0gbmV3IERhdGFiYXNlU2V0OwpAQCAtNTYzLDcgKzU2Myw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNl
KQogCiAgICAgZGF0YWJhc2VTZXQtPmFkZCgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VB
UEksICJBZGRlZCBvcGVuIERhdGFiYXNlICVzICglcClcbiIsIGRhdGFiYXNlLnN0cmluZ0lkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpLCAmZGF0YWJhc2UpOworICAgIExPRyhTdG9yYWdlQVBJLCAi
QWRkZWQgb3BlbiBEYXRhYmFzZSAlcyAoJXApXG4iLCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVy
SXNvbGF0ZWRDb3B5KCkudXRmOCgpLmRhdGEoKSwgJmRhdGFiYXNlKTsKIH0KIAogdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCkBAIC01
ODEsNyArNTgxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcg
bmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9IGRh
dGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRhYmFz
ZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiAgICAg
ZGF0YWJhc2VTZXQtPnJlbW92ZSgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VBUEksICJS
ZW1vdmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmll
cigpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CisgICAgTE9HKFN0b3JhZ2VBUEksICJSZW1v
dmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklz
b2xhdGVkQ29weSgpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CiAKICAgICBpZiAoIWRhdGFi
YXNlU2V0LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaAppbmRleCA2YjA3MmJiYjQyN2E4OWJiZmYzYWEw
NDAwM2E5ZmU3MWVkODI5MjdhLi4xNDVjYTUwMDMzNTc2ZTcwMjdlODAyZjBkMjljODI1OTI0NGE1
YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1bnNpZ25lZCBjb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlOyB9Ci0gICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7IH0KKyAgICBTdHJpbmcgbWVzc2FnZUlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKTsgfQogCiAg
ICAgZW51bSBTUUxFcnJvckNvZGUgewogICAgICAgICBVTktOT1dOX0VSUiA9IDAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaWRsCmluZGV4IGRkNDU1
ZTI3NmY4NmZiMTM3M2E4MzFkYmViYTY5NzQwYzY4NTllYjIuLmVkOTMwYzc0NWJiMWU3NDJlNjA2
NmM4ZGNhYTRhZDAwYzc3YmM5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMRXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMRXJyb3IuaWRsCkBAIC0zMSw3ICszMSw3IEBACiAgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJTUUwsCiBdIGludGVyZmFjZSBTUUxFcnJvciB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgY29kZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG1lc3NhZ2U7CisgICAgW0ltcGxlbWVudGVkQXM9bWVzc2FnZUlzb2xhdGVkQ29weV0gcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOwogCiAgICAgLy8gU1FMRXJyb3JDb2RlOiB1
c2VkIG9ubHkgaW4gdGhlIGFzeW5jIERCIEFQSQogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFVO
S05PV05fRVJSID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIxZWFi
OGVjMWE4ZjYxODM2Ni4uYWM0OTBmNTc2ZDBjYmM1OGIxMTA3NTFiYTFiM2NmOWNmOTNiMzYxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKQEAgLTI2NSw3ICsyNjUsOCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9oYXNWZXJzaW9uTWlzbWF0Y2ggPSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNF
bXB0eSgpICYmIChtX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb24oKSAhPSBhY3R1YWxWZXJzaW9u
KTsKKyAgICBhdXRvIGV4cGVjdGVkVmVyc2lvbiA9IG1fZGF0YWJhc2UtPmV4cGVjdGVkVmVyc2lv
bklzb2xhdGVkQ29weSgpOworICAgIG1faGFzVmVyc2lvbk1pc21hdGNoID0gIWV4cGVjdGVkVmVy
c2lvbi5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRWZXJzaW9uICE9IGFjdHVhbFZlcnNpb247CiAKICAg
ICAvLyBTcGVjIDQuMy4yLjM6IFBlcmZvcm0gcHJlZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRo
ZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5IGZhaWwKICAgICBpZiAobV93cmFwcGVyICYmICFtX3dy
YXBwZXItPnBlcmZvcm1QcmVmbGlnaHQoKnRoaXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRl
eCAwODRiYTQwMzBlNGFlNTBmMGRjODc2MTgxNzJmNjJlZjUwNDIwZjg3Li5hMGJkY2JkMDVhZjNl
NDkyZTk0YTM2MzlkZGUwOWFjYzM5NDIyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgbmFtZXNwYWNlIHsKIHZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhl
Y3V0ZVNRTENhbGxiYWNrJiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yJiBlcnJvcikKIHsKICAg
ICBhdXRvIGVycm9yT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
OjpjcmVhdGUoKQotICAgICAgICAuc2V0TWVzc2FnZShlcnJvci5tZXNzYWdlKCkpCisgICAgICAg
IC5zZXRNZXNzYWdlKGVycm9yLm1lc3NhZ2VJc29sYXRlZENvcHkoKSkKICAgICAgICAgLnNldENv
ZGUoZXJyb3IuY29kZSgpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIHJlcXVlc3RDYWxsYmFj
ay5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGVycm9yT2JqZWN0KSk7CkBA
IC0yMDUsMTIgKzIwNSwxMiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENvbW1p
dExvYWQoKQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBmaW5kQnlGaWxl
TmFtZShkYXRhYmFzZS5maWxlTmFtZSgpKSkgeworICAgIGlmIChhdXRvIHJlc291cmNlID0gZmlu
ZEJ5RmlsZU5hbWUoZGF0YWJhc2UuZmlsZU5hbWVJc29sYXRlZENvcHkoKSkpIHsKICAgICAgICAg
cmVzb3VyY2UtPnNldERhdGFiYXNlKGRhdGFiYXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcmVzb3VyY2UgPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUo
ZGF0YWJhc2UsIGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCwgZGF0YWJhc2Uuc3RyaW5n
SWRlbnRpZmllcigpLCBkYXRhYmFzZS5leHBlY3RlZFZlcnNpb24oKSk7CisgICAgYXV0byByZXNv
dXJjZSA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmNyZWF0ZShkYXRhYmFzZSwgZGF0YWJh
c2Uuc2VjdXJpdHlPcmlnaW4oKS5ob3N0LCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVySXNvbGF0
ZWRDb3B5KCksIGRhdGFiYXNlLmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSgpKTsKICAgICBt
X3Jlc291cmNlcy5hZGQocmVzb3VyY2UtPmlkKCksIHJlc291cmNlLnB0cigpKTsKICAgICByZXNv
dXJjZS0+YmluZCgqbV9mcm9udGVuZERpc3BhdGNoZXIpOwogfQpAQCAtMzA0LDcgKzMwNCw3IEBA
IFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUlkKERhdGFiYXNlJiBkYXRh
YmFzZSkKIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UqIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmZpbmRCeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7CiAgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IG1fcmVzb3VyY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChyZXNvdXJj
ZS0+ZGF0YWJhc2UoKS5maWxlTmFtZSgpID09IGZpbGVOYW1lKQorICAgICAgICBpZiAocmVzb3Vy
Y2UtPmRhdGFiYXNlKCkuZmlsZU5hbWVJc29sYXRlZENvcHkoKSA9PSBmaWxlTmFtZSkKICAgICAg
ICAgICAgIHJldHVybiByZXNvdXJjZS5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDY1NzJmNDAxMjRjMjNlN2IxOGUyNzlh
ZGYzZmM2MWIwNjVlMjcwNTUuLmZjZmY5ODM5YjYyZjQ1M2I3NDcwMTdiY2NkM2FkZTQ3NTdiYzg1
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
ZnVsbEZpbGVuYW1lKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCgh
bV9kYXRhYmFzZSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+ZGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+ZGF0YWJh
c2VEaXJlY3RvcnlJc29sYXRlZENvcHkoKTsKICAgICBjbGVhbk9sZERhdGFiYXNlcyhkYXRhYmFz
ZURpcmVjdG9yeSk7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXIgUmVn
aXN0cmF0aW9uRGF0YWJhc2Ugb3BlbmluZyBmaWxlICVzIiwgZnVsbEZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCkpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNs
ZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAg
ICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgpOwotICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KCkp
OworICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5
KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oCmluZGV4IDJhYjQzOGMyMjc0MTU3YzkzM2VjZTdhNjA2MGE5NDk1MzVmNjU1MWYu
LmNjZTdkNTQ2NGNiZDZhN2NkNDA5ZDNhMWM5YTY1NjcyNmRkZjQ2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdp
c3RyYXRpb25EYXRhYmFzZShSZWdpc3RyYXRpb25TdG9yZSYsIFN0cmluZyYmIGRhdGFiYXNlRGly
ZWN0b3J5KTsKICAgICAKLSAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpOyB9CisgICAgU3RyaW5nIGRh
dGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZURp
cmVjdG9yeS5pc29sYXRlZENvcHkoKTsgfQogCiAgICAgdm9pZCBwb3N0VGFza1RvV29ya1F1ZXVl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggOTMwM2QyYWRjMTVlZjZm
YjMxMGI2ZmIxNmQwNzBjYzg1M2ZkYzNjMy4uOGE5Y2EyMDNlNTA5NTM0YjBhN2I4Mzg4MzNjOTMy
NDcxYjE1MGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTc2LDE0ICs3NiwxNCBAQCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZwogICAgICAgICB3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCk7CiB9CiAKLVN0
cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0b3JhZ2VEaXJl
Y3RvcnlQYXRoKCkgY29uc3QKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6OnN0b3JhZ2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsKIH0KIAogU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cmVzb3VyY2VMb2dG
aWxlUGF0aCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVj
dG9yeVBhdGgoKTsKKyAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0
aElzb2xhdGVkQ29weSgpOwogICAgIGlmIChzdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdT
dGF0aXN0aWNzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0
cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CisgICAgU3RyaW5nIHN0
b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAgICBBU1NF
UlQoIXN0b3JhZ2VQYXRoLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoc3RvcmFnZVBhdGgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKaW5kZXggNzFmMzRiZmEzZDZjMmI1Mjc2MTY4
OTQ0ZWUzMzRjNzNkYWY1MDMyNS4uZjNlODA3ZGM3NzQzNDRhOTVmOWJmMDcxZDExOGNmZjQ1MTI0
MDc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUltbWVkaWF0ZVdyaXRlKTsKIAogcHJpdmF0ZToK
LSAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2dGaWxlUGF0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydE1vbml0b3JpbmdEaXNrKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKaW5kZXggNzZlZjFjYmVmZTk0YWVmZDhmYmExMWU4ZTYzYTJlZjljYjdlYmYzMC4uODBm
Mjk3ODBkNTI4Y2UwMzkxZTE4NGJmMTM4ZjM5MTgxNzNmMGM1MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtNTkzLDkg
KzU5Myw5IEBAIHZvaWQgQ2FjaGU6OmNsZWFyKCkKICAgICBjbGVhcigtV2FsbFRpbWU6OmluZmlu
aXR5KCksIG51bGxwdHIpOwogfQogCi1TdHJpbmcgQ2FjaGU6OnJlY29yZHNQYXRoKCkgY29uc3QK
K1N0cmluZyBDYWNoZTo6cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3N0b3JhZ2UtPnJlY29yZHNQYXRoKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZS0+cmVj
b3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKIH0KIAogdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNv
bnN0IERhdGFLZXkmIGRhdGFLZXksIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVf
dCk+IGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggNTQyYTAyNjk5MDAzN2E0YWEwMTNkNWYwOWZh
ZTJkMjBlZGFhZWQyYi4uNDlhNTdmNTYzMzYzZDY5NTcwMDEyNTliZDBlZDE1YTU2MTI3N2RmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5oCkBAIC0xMzksNyArMTM5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQ29udGVudHNU
b0ZpbGUoKTsKIAotICAgIFN0cmluZyByZWNvcmRzUGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBy
ZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FD
SEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIq
IHNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoKSB7IHJldHVybiBtX3NwZWN1bGF0aXZlTG9hZE1hbmFn
ZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggOWNhZGE3YjYyMjYz
MDFjYzFhYzMxNTMwMDA1NTBmNThmYjFhNDZkYy4uNWU3ZTZiN2Y4MDMyNTdhNTMzMjEzNTg5MzM1
ODEyM2ZjODI5Y2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgQmxvYlN0b3JhZ2U6OkJsb2JTdG9yYWdlKGNvbnN0IFN0cmluZyYgYmxvYkRpcmVjdG9y
eVBhdGgsIFNhbHQgc2FsdCkKIHsKIH0KIAotU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iRGlyZWN0
b3J5UGF0aCgpIGNvbnN0CitTdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JEaXJlY3RvcnlQYXRoSXNv
bGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ibG9iRGlyZWN0b3J5UGF0aC5pc29s
YXRlZENvcHkoKTsKIH0KQEAgLTU1LDEwICs1NSwxMSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpzeW5j
aHJvbml6ZSgpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CisgICAgYXV0
byBibG9iRGlyZWN0b3J5UGF0aCA9IGJsb2JEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7Cisg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKTsKIAog
ICAgIG1fYXBwcm94aW1hdGVTaXplID0gMDsKLSAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9i
RGlyZWN0b3J5UGF0aCgpOworICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJsb2JEaXJlY3RvcnlQ
YXRoOwogICAgIHRyYXZlcnNlRGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRp
cmVjdG9yeV0oY29uc3QgU3RyaW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewog
ICAgICAgICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC03OSw3ICs4MCw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXpl
KCkKIFN0cmluZyBCbG9iU3RvcmFnZTo6YmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2Vz
dCYgaGFzaCkgY29uc3QKIHsKICAgICBhdXRvIGhhc2hBc1N0cmluZyA9IFNIQTE6OmhleERpZ2Vz
dChoYXNoKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGJsb2JEaXJlY3RvcnlQYXRoKCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7Cisg
ICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0
b3J5UGF0aElzb2xhdGVkQ29weSgpLCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOwog
fQogCiBCbG9iU3RvcmFnZTo6QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgRGF0YSYgZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaAppbmRleCA5NjEzYWNj
MWFkNThmNTIwYmY0NTNiZTQwZjE0NzJmMjBjZmZjNzdlLi41NzFkMWMyYmM2M2RiOGJhMGEyMGQx
NmY3M2VjYzVkMjNjOWYxZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oCkBAIC01Nyw3ICs1
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNocm9uaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
U3RyaW5nIGJsb2JEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIGJsb2JEaXJlY3Rv
cnlQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgU3RyaW5nIGJsb2JQYXRoRm9ySGFzaChj
b25zdCBTSEExOjpEaWdlc3QmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyBtX2Jsb2JEaXJl
Y3RvcnlQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKaW5kZXggODA0YzQyOThjYzNlM2MyODE0ZmRi
YzJiYmI2Y2JlZTU3NTg0YWU0NC4uYTM5MjRlNjBmN2NlMmRlYmI2YzY4MWEyYWM2N2UyY2I1ZDc3
NjY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCkBAIC0yNTEsMTcgKzI1MSwxNyBAQCBTdG9yYWdl
Ojp+U3RvcmFnZSgpCiAgICAgQVNTRVJUKCFtX3Nocmlua0luUHJvZ3Jlc3MpOwogfQogCi1TdHJp
bmcgU3RvcmFnZTo6YmFzZVBhdGgoKSBjb25zdAorU3RyaW5nIFN0b3JhZ2U6OmJhc2VQYXRoSXNv
bGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9iYXNlUGF0aC5pc29sYXRlZENvcHko
KTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnZlcnNpb25QYXRoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbWFrZVZlcnNpb25lZERpcmVjdG9yeVBhdGgoYmFzZVBhdGgoKSk7CisgICAgcmV0dXJuIG1h
a2VWZXJzaW9uZWREaXJlY3RvcnlQYXRoKGJhc2VQYXRoSXNvbGF0ZWRDb3B5KCkpOwogfQogCi1T
dHJpbmcgU3RvcmFnZTo6cmVjb3Jkc1BhdGgoKSBjb25zdAorU3RyaW5nIFN0b3JhZ2U6OnJlY29y
ZHNQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWNvcmRzUGF0aC5p
c29sYXRlZENvcHkoKTsKIH0KQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNo
cm9uaXplKCkKICAgICAgICAgdW5zaWduZWQgYmxvYkNvdW50ID0gMDsKIAogICAgICAgICBTdHJp
bmcgYW55VHlwZTsKLSAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwg
YW55VHlwZSwgWyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0
cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNv
cmREaXJlY3RvcnlQYXRoKSB7CisgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQ
YXRoSXNvbGF0ZWRDb3B5KCksIGFueVR5cGUsIFsmXShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2Is
IGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkgewogICAgICAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJl
Y3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAKICAgICAgICAgICAgIEtleTo6SGFzaFR5cGUgaGFzaDsK
QEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgICAg
ICBtX2Jsb2JTdG9yYWdlLnN5bmNocm9uaXplKCk7CiAKLSAgICAgICAgZGVsZXRlRW1wdHlSZWNv
cmRzRGlyZWN0b3JpZXMocmVjb3Jkc1BhdGgoKSk7CisgICAgICAgIGRlbGV0ZUVtcHR5UmVjb3Jk
c0RpcmVjdG9yaWVzKHJlY29yZHNQYXRoSXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBjYWNoZSBzeW5jaHJvbml6YXRp
b24gY29tcGxldGVkIHNpemU9JXp1IHJlY29yZENvdW50PSV1IiwgcmVjb3Jkc1NpemUsIHJlY29y
ZENvdW50KTsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJs
b2IoY29uc3QgS2V5JiBrZXkpIGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5
UGF0aEZvcktleShjb25zdCBLZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBl
KCkuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgp
LCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpLCBrZXkucGFydGl0aW9u
SGFzaEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29y
ZFBhdGhGb3JLZXkoY29uc3QgS2V5JiBrZXkpIGNvbnN0CkBAIC05MDMsNyArOTAzLDcgQEAgdm9p
ZCBTdG9yYWdlOjp0cmF2ZXJzZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJz
ZUZsYWc+IGZsYWdzLCBUcmF2ZXIKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQo
V1RGTW92ZSh0cmF2ZXJzZU9wZXJhdGlvblB0cikpOwogCiAgICAgaW9RdWV1ZSgpLmRpc3BhdGNo
KFt0aGlzLCAmdHJhdmVyc2VPcGVyYXRpb25dIHsKLSAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmls
ZXMocmVjb3Jkc1BhdGgoKSwgdHJhdmVyc2VPcGVyYXRpb24udHlwZSwgW3RoaXMsICZ0cmF2ZXJz
ZU9wZXJhdGlvbl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29y
ZERpcmVjdG9yeVBhdGgpIHsKKyAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1Bh
dGhJc29sYXRlZENvcHkoKSwgdHJhdmVyc2VPcGVyYXRpb24udHlwZSwgW3RoaXMsICZ0cmF2ZXJz
ZU9wZXJhdGlvbl0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29y
ZERpcmVjdG9yeVBhdGgpIHsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IHRyYXZlcnNlT3Bl
cmF0aW9uLnR5cGUgfHwgdHJhdmVyc2VPcGVyYXRpb24udHlwZS5pc0VtcHR5KCkpOwogICAgICAg
ICAgICAgaWYgKGlzQmxvYikKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05OTgsNyArOTk4
LDcgQEAgdm9pZCBTdG9yYWdlOjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1v
ZGlmaWVkU2luY2VUaW1lLCBDb21wbGV0aW9uSGEKICAgICBtX2FwcHJveGltYXRlUmVjb3Jkc1Np
emUgPSAwOwogCiAgICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG1vZGlmaWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgp
OworICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGhJc29sYXRlZENv
cHkoKTsKICAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFtt
b2RpZmllZFNpbmNlVGltZV0oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBo
YXNoU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcm
IHJlY29yZERpcmVjdG9yeVBhdGgpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmls
ZU5hbWUpOwogICAgICAgICAgICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjpp
bmZpbml0eSgpKSB7CkBAIC0xMDc0LDcgKzEwNzQsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygp
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHNocmlua2lu
ZyBjYWNoZSBhcHByb3hpbWF0ZVNpemU9JXp1IGNhcGFjaXR5PSV6dSIsIGFwcHJveGltYXRlU2l6
ZSgpLCBtX2NhcGFjaXR5KTsKIAogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgpOworICAgICAgICBhdXRvIHJl
Y29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKICAgICAgICAgU3Ry
aW5nIGFueVR5cGU7CiAgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCBh
bnlUeXBlLCBbdGhpc10oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNo
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJl
Y29yZERpcmVjdG9yeVBhdGgpIHsKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCkBAIC0xMTA5LDcg
KzExMDksNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAKIHZvaWQgU3RvcmFnZTo6ZGVsZXRl
T2xkVmVyc2lvbnMoKQogewotICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW2NhY2hl
UGF0aCA9IGJhc2VQYXRoKCldICgpIG11dGFibGUgeworICAgIGJhY2tncm91bmRJT1F1ZXVlKCku
ZGlzcGF0Y2goW2NhY2hlUGF0aCA9IGJhc2VQYXRoSXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUg
ewogICAgICAgICB0cmF2ZXJzZURpcmVjdG9yeShjYWNoZVBhdGgsIFsmY2FjaGVQYXRoXShjb25z
dCBTdHJpbmcmIHN1YmRpck5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7CiAgICAgICAg
ICAgICBpZiAodHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IDYxN2IyYjNhNWZkZTJhNTc1YjE4
ZmM3Y2I1N2NlZjFlMTgyNzJlYTkuLjg0N2JlNTQ3OTQ0ZjUwMWFhNjNjNjA3NjRlYjkzNWVlYjk4
NzQzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCkBAIC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0U3RhYmxlVmVyc2lvbiA9IDEzOwogI2VuZGlmCiAK
LSAgICBTdHJpbmcgYmFzZVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgYmFzZVBhdGhJc29sYXRl
ZENvcHkoKSBjb25zdDsKICAgICBTdHJpbmcgdmVyc2lvblBhdGgoKSBjb25zdDsKLSAgICBTdHJp
bmcgcmVjb3Jkc1BhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgcmVjb3Jkc1BhdGhJc29sYXRlZENv
cHkoKSBjb25zdDsKIAogICAgIGNvbnN0IFNhbHQmIHNhbHQoKSBjb25zdCB7IHJldHVybiBtX3Nh
bHQ7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377652</attachid>
            <date>2019-08-29 16:40:15 -0700</date>
            <delta_ts>2019-08-29 16:46:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201318-20190829164014.patch</filename>
            <type>text/plain</type>
            <size>39436</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwM2JmYzY3ZDgxNWE5
M2IzYTdlYzk1MDg3ZGQ2NmNkYWI2NjRhZS4uMjU2NzljODk3MTA4ZWRkMmQwOGUzMzUyZDE2ZDhi
ZWI1NjA0YWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA4LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkICJJc29sYXRlZENvcHki
IGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRoYXQgY2FsbCBpc29sYXRlZENvcHkoKSBv
biB0aGUgc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDEzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgIklzb2xhdGVkQ29weSIgaW4gdGhlIG5hbWUgb2YgU3RyaW5nIGdldHRlcnMgdGhh
dCBjYWxsIGlzb2xhdGVkQ29weSgpIG9uIHRoZSBzdHJpbmcsIGZvciBjbGFyaXR5LgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVtb3ZlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlbW92ZURhdGFi
YXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y29tcHV0ZVNwYWNlVXNlZEZv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6dXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRh
YmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVj
dG9yeVdpdGhVcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6ZGlzcGxheU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmRldGFpbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxFcnJvcjo6bWVzc2FnZUlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZGF0YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkgY29u
c3QpOgorCiAyMDE5LTA4LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bVEZDXSBVc2UgdGhlICJjb21wbGljYXRlZC1jYXNlcyIgY2F0ZWdvcnkgZm9y
IGNvbXB1dGluZyB0aGUgVEZDIHJvb3QncyBoZWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGEwYjA2NDE5NmQ0
ZjcyNzMxNmMzMzM5ZWYwNTk2MGRiODY1YzZhMS4uN2Y0MzFiYjBiMGMwZDE0MTIxMzgyMDM3NTZm
YWM3YzJhYzE5ODAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wOC0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCAiSXNvbGF0ZWRDb3B5
IiBpbiB0aGUgbmFtZSBvZiBTdHJpbmcgZ2V0dGVycyB0aGF0IGNhbGwgaXNvbGF0ZWRDb3B5KCkg
b24gdGhlIHN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxMzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkICJJc29sYXRlZENvcHkiIGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRo
YXQgY2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUgc3RyaW5nLCBmb3IgY2xhcml0eS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdG9yYWdlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpibG9iRGlyZWN0b3J5UGF0aElzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6QmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFn
ZTo6YmxvYlBhdGhGb3JIYXNoIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OmJhc2VQYXRoSXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp2ZXJzaW9uUGF0aCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWNvcmREaXJlY3Rv
cnlQYXRoRm9yS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnNocmluayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aDoKKwogMjAxOS0wOC0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQU09OXSBCdW1wIHRoZSBXZWJQYWdlJ3MgaWRlbnRpZmllciBldmVyeSB0aW1lIHdlIHBy
b2Nlc3Mtc3dhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBlYzBlNzdhMjdjNzZjZGJiYThkNGQ4ZDNmZGI3MWJk
ZTAzYjE2MjlkLi5hMTEyYjY2YmQ0YzUzODQwNTJlNjg3Y2NjMWU2MWY5MDU0NWIzNjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCA9IHRoaXMtPmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIGF1dG8gZGF0YWJhc2VE
aXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7
CiAgICAgaWYgKGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIElEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgUwogCiB2b2lkIElE
QlNlcnZlcjo6cGVyZm9ybUdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5kYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKTsKKyAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCA9IHRoaXMt
PmRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpOwogICAgIFN0cmluZyBvbGREaXJl
Y3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3QobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBkYXRhYmFzZURpcmVjdG9yeVBh
dGgsICJ2MCIpOwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShvbGREaXJlY3RvcnksICIqIl9zKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFz
ZXM7CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsRGF0YWJhc2VzRm9y
T3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIFdhbGxUaW1lIG0KIAogdm9pZCBJ
REJTZXJ2ZXI6OnJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBTdHJpbmcgdmVy
c2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCksIHZlcnNpb24pOworICAgIFN0cmluZyB2ZXJzaW9uUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29s
YXRlZENvcHkoKSwgdmVyc2lvbik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeSh2ZXJzaW9uUGF0aCwgIioiKSkgewogICAgICAgICBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9y
aW5nVHJhaWxpbmdTbGFzaChvcmlnaW5QYXRoKTsKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJh
c2VJZGVudGlmaWVyKSkKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVtb3Zl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
YwogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewot
ICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFk
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
cmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24obW9kaWZpZWRTaW5jZSwgInYw
Iik7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKG1vZGlm
aWVkU2luY2UsICJ2MSIpOwogICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIElEQlNlcnZl
cjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBt
b2RpZmllZFNpbgogCiB2b2lkIElEQlNlcnZlcjo6cmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNG
b3JWZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+ICZvcmlnaW5zLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgU3RyaW5nIHZlcnNpb25QYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLCB2ZXJz
aW9uKTsKKyAgICBTdHJpbmcgdmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCksIHZlcnNpb24p
OwogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICBTdHJp
bmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJz
aW9uUGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCkp
OwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgSURCU2VydmVyOjpyZW1vdmVEYXRhYmFzZXNXaXRo
T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luCiAgICAgCiB2b2lk
IElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBpZiAoIWRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLmlzRW1wdHkoKSkgeworICAg
IGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmlnaW5zLCAidjAi
KTsKICAgICAgICAgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9uKG9yaWdpbnMs
ICJ2MSIpOwogICAgIH0KQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIElEQlNlcnZlcjo6Y29tcHV0
ZVNwYWNlVXNlZEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRo
ID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVj
dG9yeVBhdGggPSB0aGlzLT5kYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAg
ICBhdXRvIG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6
OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2lu
LmNsaWVudE9yaWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKICAgICBhdXRvIG5l
d1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNl
RGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9y
aWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKICAgICBhdXRvIHNpemUgPSBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xkZXIob2xkVmVyc2lvbk9yaWdp
bkRpcmVjdG9yeSkgKyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xk
ZXIobmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSk7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBJ
REJTZXJ2ZXI6OmRlY3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdAogCiB2b2lkIElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3Nh
cnkoKQogewotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5k
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAgICBpZiAoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURp
cmVjdG9yeVBhdGgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBjNjUzZGZkM2U0Zjcz
YjQyZDM3OGQ4ZDA0MzY2NjNiOTBhYTcwZTE0Li5hOTdiYzdhMWY5YWMwYTcxZjk4MTViZGEzOWRk
YzM4YzE5MjNhNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIAotICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENv
cHkoKTsgfQorICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsgfQog
CiAgICAgdm9pZCBwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDA2Mzc0MTIzZTU2Zjg1NmI0ODEwNDI5ZTAwODNmMmQ2NTE2NDI4NDMuLjQ0YWMyNGY0
MmY5MWE3Njk0MGVkOTNmYTliODkyMTQ4YjZmOWRiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhV
cGdyYWRlKCkKIHsKLSAgICBhdXRvIGRhdGFiYXNlUm9vdERpcmVjdG9yeSA9IHRoaXMtPmRhdGFi
YXNlUm9vdERpcmVjdG9yeSgpOworICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0b3J5ID0gdGhp
cy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCk7CiAgICAgU3RyaW5nIG9sZE9y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7CiAgICAgU3RyaW5nIG9sZERhdGFiYXNl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdp
bkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7CiAgICAgU3RyaW5nIG5ld09y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7CkBAIC04NTcsNyArODU3LDcgQEAgdWlu
dDY0X3QgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRm9sZGVyKGNvbnN0
IFN0cmluZyYgZm9sZGVyKQogCiB1aW50NjRfdCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFi
YXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdAogewotICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0
b3J5ID0gdGhpcy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5KCk7CisgICAgYXV0byBkYXRhYmFzZVJv
b3REaXJlY3RvcnkgPSB0aGlzLT5kYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkoKTsK
ICAgICBTdHJpbmcgb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7
CiAgICAgU3RyaW5nIG5ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MSIp
OwogICAgIHJldHVybiBkYXRhYmFzZXNTaXplRm9yRm9sZGVyKG9sZFZlcnNpb25PcmlnaW5EaXJl
Y3RvcnkpICsgZGF0YWJhc2VzU2l6ZUZvckZvbGRlcihuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5
KTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVCYWNraW5nU3RvcmUoKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRiRmlsZW5hbWUpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJh
c2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnkoKSkpOworICAgIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFi
YXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRD
b3B5KCkpKTsKIH0KIAogdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJz
b3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgK
aW5kZXggZGI2NDc3ZTdmZjNhYzhkOTM2Y2YwYjU4N2VmOWE2ODVlZTE5MGZmMy4uNzIyNjc5NDZj
ZTg3ZjczNTBjMDgyMDJkYmUyN2Q5ZGU5MDIyYzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGZ1bGxEYXRh
YmFzZVBhdGgoKSBjb25zdDsKICAgICBTdHJpbmcgZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVw
Z3JhZGUoKTsKICAgICAKLSAgICBTdHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KKyAgICBT
dHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAogICAgIGJvb2wgZW5z
dXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBib29sIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
VGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZS4uMTk1
ZTZmN2IyMTFjMWYxOTg3Yjg5ZjUzNWFlZTBhMzliNzkyNzFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTU4MCw3ICs1ODAsNyBA
QCB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgIGlmIChtX2RlbGV0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAo
JXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIHRoaXMp
OworICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkuYXNjaWkoKS5kYXRhKCksIHRoaXMpOwogICAgIG1f
ZGVsZXRlZCA9IHRydWU7CiAKICAgICBjbG9zZSgpOwpAQCAtNjAxLDE5ICs2MDEsMTkgQEAgdm9p
ZCBEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiYmIGNhbGxiYWNrLCBSZWZQdHIKICAgICBydW5UcmFuc2FjdGlvbihXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBudWxs
cHRyLCB0cnVlKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKCkgY29u
c3QKK1N0cmluZyBEYXRhYmFzZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpIGNvbnN0
CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNh
ZmV0eQogICAgIHJldHVybiBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLVN0cmluZyBEYXRh
YmFzZTo6ZGlzcGxheU5hbWUoKSBjb25zdAorU3RyaW5nIERhdGFiYXNlOjpkaXNwbGF5TmFtZUlz
b2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYg
Y291bnRpbmcgdGhyZWFkIHNhZmV0eQogICAgIHJldHVybiBtX2Rpc3BsYXlOYW1lLmlzb2xhdGVk
Q29weSgpOwogfQogCi1TdHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbigpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAg
ICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQog
ICAgIHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKTsKQEAgLTYzMCw3ICs2
MzAsNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRFc3RpbWF0ZWRTaXplKHVuc2lnbmVkIGxvbmcgbG9u
ZyBlc3RpbWF0ZWRTaXplKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKHNlY3VyaXR5T3JpZ2luKCksIG1fbmFtZSwgbV9kaXNwbGF5TmFtZSwgbV9l
c3RpbWF0ZWRTaXplKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICAvLyBS
ZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CiAgICAgcmV0
dXJuIG1fZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CkBAIC02MzksNyArNjM5LDcgQEAgU3RyaW5n
IERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRl
dGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3Ig
ZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMsIHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZh
bnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0
cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lSXNvbGF0ZWRDb3B5KCksIGVz
dGltYXRlZFNpemUoKSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpkaXNhYmxlQXV0aG9yaXplcigpCkBAIC03ODYsNyArNzg2LDcgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpCiAKIHZvaWQgRGF0YWJhc2U6OmRp
ZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoc2VjdXJpdHlPcmlnaW4oKSwgc3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKHNlY3VyaXR5T3JpZ2luKCksIHN0cmluZ0lkZW50aWZp
ZXJJc29sYXRlZENvcHkoKSk7CiB9CiAKIGJvb2wgRGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKCkK
QEAgLTc5OSw3ICs3OTksNyBAQCBib29sIERhdGFiYXNlOjpkaWRFeGNlZWRRdW90YSgpCiAgICAg
ICAgIC8vIG9sZFF1b3RhICsgNU1CIHNvIHRoYXQgdGhlIGNsaWVudCBhY3R1YWxseSBpbmNyZWFz
ZXMgdGhlIHF1b3RhLgogICAgICAgICBzZXRFc3RpbWF0ZWRTaXplKG9sZFF1b3RhICsgcXVvdGFJ
bmNyZWFzZVNpemUpOwogICAgIH0KLSAgICBkYXRhYmFzZUNvbnRleHQoKS5kYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoc3RyaW5nSWRlbnRpZmllcigpLCBkZXRhaWxzKCkpOworICAgIGRhdGFiYXNlQ29u
dGV4dCgpLmRhdGFiYXNlRXhjZWVkZWRRdW90YShzdHJpbmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5
KCksIGRldGFpbHMoKSk7CiAgICAgcmV0dXJuIHRyYWNrZXIucXVvdGEoc2VjdXJpdHlPcmlnaW4o
KSkgPiBvbGRRdW90YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCmluZGV4IDk3Yjk2NmM0Zjc3MjIyODJkZmI0MDUzOTg0NDBhMjVmNDM1OTk1
ZGIuLjBkMmE5NWFiYzVjNzFkZjQ0NWU2MWUwMjdjMTg0OTQ5MDJmODczOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKQEAgLTg2LDExICs4Niwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIC8vIEludGVybmFs
IGVuZ2luZSBzdXBwb3J0Ci0gICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKLSAg
ICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgZXhwZWN0ZWRWZXJzaW9u
KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTdHJp
bmcgZXhwZWN0ZWRWZXJzaW9uSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGVzdGltYXRlZFNpemUoKSBjb25zdDsKLSAgICBTdHJpbmcgZmlsZU5hbWUoKSBjb25z
dDsKKyAgICBTdHJpbmcgZmlsZU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICBEYXRhYmFz
ZURldGFpbHMgZGV0YWlscygpIGNvbnN0OwogICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRh
YmFzZSgpIHsgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDY5
YzNiMmVkM2E4NDY4ZDIxMTkyMTRkMjRmNDBjNzI5YzhkYzJhNjIuLjM3MTI4Y2MxZWYyZDk0ODZl
YzNmMjZlYTgyMzRjMWM4YTE4ODRhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFz
ZSYgZGF0YWJhc2UpCiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBxdW90YU5vTG9j
ayhvcmlnaW4pOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkaXNrVXNhZ2UgPSB1c2FnZShvcmln
aW4pOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZUZpbGVTaXplID0gU1FMaXRlRmls
ZVN5c3RlbTo6Z2V0RGF0YWJhc2VGaWxlU2l6ZShkYXRhYmFzZS5maWxlTmFtZSgpKTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJhc2VGaWxlU2l6ZSA9IFNRTGl0ZUZpbGVTeXN0ZW06Omdl
dERhdGFiYXNlRmlsZVNpemUoZGF0YWJhc2UuZmlsZU5hbWVJc29sYXRlZENvcHkoKSk7CiAgICAg
QVNTRVJUKGRhdGFiYXNlRmlsZVNpemUgPD0gZGlza1VzYWdlKTsKIAogICAgIGlmIChkaXNrVXNh
Z2UgPiBxdW90YSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
RGF0YWJhc2VEZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAog
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNlKERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwot
ICAgIGRvbmVDcmVhdGluZ0RhdGFiYXNlKGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCksIGRhdGFi
YXNlLnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJh
c2Uuc2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29w
eSgpKTsKIH0KIAogVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRh
dGFiYXNlcygpCkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
LT5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lTWFwKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgbmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9
IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRh
YmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAg
ICAgICAgIGRhdGFiYXNlU2V0ID0gbmV3IERhdGFiYXNlU2V0OwpAQCAtNTYzLDcgKzU2Myw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNl
KQogCiAgICAgZGF0YWJhc2VTZXQtPmFkZCgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VB
UEksICJBZGRlZCBvcGVuIERhdGFiYXNlICVzICglcClcbiIsIGRhdGFiYXNlLnN0cmluZ0lkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpLCAmZGF0YWJhc2UpOworICAgIExPRyhTdG9yYWdlQVBJLCAi
QWRkZWQgb3BlbiBEYXRhYmFzZSAlcyAoJXApXG4iLCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVy
SXNvbGF0ZWRDb3B5KCkudXRmOCgpLmRhdGEoKSwgJmRhdGFiYXNlKTsKIH0KIAogdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCkBAIC01
ODEsNyArNTgxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcg
bmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9IGRh
dGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRhYmFz
ZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiAgICAg
ZGF0YWJhc2VTZXQtPnJlbW92ZSgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VBUEksICJS
ZW1vdmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmll
cigpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CisgICAgTE9HKFN0b3JhZ2VBUEksICJSZW1v
dmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklz
b2xhdGVkQ29weSgpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CiAKICAgICBpZiAoIWRhdGFi
YXNlU2V0LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaAppbmRleCA2YjA3MmJiYjQyN2E4OWJiZmYzYWEw
NDAwM2E5ZmU3MWVkODI5MjdhLi4xNDVjYTUwMDMzNTc2ZTcwMjdlODAyZjBkMjljODI1OTI0NGE1
YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVy
cm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5o
CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB1bnNpZ25lZCBjb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlOyB9Ci0gICAgU3RyaW5nIG1lc3NhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7IH0KKyAgICBTdHJpbmcgbWVzc2FnZUlzb2xh
dGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZS5pc29sYXRlZENvcHkoKTsgfQogCiAg
ICAgZW51bSBTUUxFcnJvckNvZGUgewogICAgICAgICBVTktOT1dOX0VSUiA9IDAsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaWRsCmluZGV4IGRkNDU1
ZTI3NmY4NmZiMTM3M2E4MzFkYmViYTY5NzQwYzY4NTllYjIuLmVkOTMwYzc0NWJiMWU3NDJlNjA2
NmM4ZGNhYTRhZDAwYzc3YmM5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvU1FMRXJyb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMRXJyb3IuaWRsCkBAIC0zMSw3ICszMSw3IEBACiAgICAgRW5hYmxlZEF0UnVu
dGltZT1XZWJTUUwsCiBdIGludGVyZmFjZSBTUUxFcnJvciB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgY29kZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG1lc3NhZ2U7CisgICAgW0ltcGxlbWVudGVkQXM9bWVzc2FnZUlzb2xhdGVkQ29weV0gcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOwogCiAgICAgLy8gU1FMRXJyb3JDb2RlOiB1
c2VkIG9ubHkgaW4gdGhlIGFzeW5jIERCIEFQSQogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFVO
S05PV05fRVJSID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbi5jcHAKaW5kZXggNGNiMDQxZTQ1MmM4MGY1ZjU5YmIyNzIxZWFi
OGVjMWE4ZjYxODM2Ni4uYWM0OTBmNTc2ZDBjYmM1OGIxMTA3NTFiYTFiM2NmOWNmOTNiMzYxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvbi5jcHAKQEAgLTI2NSw3ICsyNjUsOCBAQCB2b2lkIFNRTFRyYW5zYWN0aW9uOjpvcGVu
VHJhbnNhY3Rpb25BbmRQcmVmbGlnaHQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9oYXNWZXJzaW9uTWlzbWF0Y2ggPSAhbV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkuaXNF
bXB0eSgpICYmIChtX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb24oKSAhPSBhY3R1YWxWZXJzaW9u
KTsKKyAgICBhdXRvIGV4cGVjdGVkVmVyc2lvbiA9IG1fZGF0YWJhc2UtPmV4cGVjdGVkVmVyc2lv
bklzb2xhdGVkQ29weSgpOworICAgIG1faGFzVmVyc2lvbk1pc21hdGNoID0gIWV4cGVjdGVkVmVy
c2lvbi5pc0VtcHR5KCkgJiYgZXhwZWN0ZWRWZXJzaW9uICE9IGFjdHVhbFZlcnNpb247CiAKICAg
ICAvLyBTcGVjIDQuMy4yLjM6IFBlcmZvcm0gcHJlZmxpZ2h0IHN0ZXBzLCBqdW1waW5nIHRvIHRo
ZSBlcnJvciBjYWxsYmFjayBpZiB0aGV5IGZhaWwKICAgICBpZiAobV93cmFwcGVyICYmICFtX3dy
YXBwZXItPnBlcmZvcm1QcmVmbGlnaHQoKnRoaXMpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAppbmRl
eCAwODRiYTQwMzBlNGFlNTBmMGRjODc2MTgxNzJmNjJlZjUwNDIwZjg3Li5hMGJkY2JkMDVhZjNl
NDkyZTk0YTM2MzlkZGUwOWFjYzM5NDIyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKQEAgLTYw
LDcgKzYwLDcgQEAgbmFtZXNwYWNlIHsKIHZvaWQgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQoRXhl
Y3V0ZVNRTENhbGxiYWNrJiByZXF1ZXN0Q2FsbGJhY2ssIFNRTEVycm9yJiBlcnJvcikKIHsKICAg
ICBhdXRvIGVycm9yT2JqZWN0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9y
OjpjcmVhdGUoKQotICAgICAgICAuc2V0TWVzc2FnZShlcnJvci5tZXNzYWdlKCkpCisgICAgICAg
IC5zZXRNZXNzYWdlKGVycm9yLm1lc3NhZ2VJc29sYXRlZENvcHkoKSkKICAgICAgICAgLnNldENv
ZGUoZXJyb3IuY29kZSgpKQogICAgICAgICAucmVsZWFzZSgpOwogICAgIHJlcXVlc3RDYWxsYmFj
ay5zZW5kU3VjY2VzcyhudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKGVycm9yT2JqZWN0KSk7CkBA
IC0yMDUsMTIgKzIwNSwxMiBAQCB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZENvbW1p
dExvYWQoKQogCiB2b2lkIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6OmRpZE9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgaWYgKGF1dG8gcmVzb3VyY2UgPSBmaW5kQnlGaWxl
TmFtZShkYXRhYmFzZS5maWxlTmFtZSgpKSkgeworICAgIGlmIChhdXRvIHJlc291cmNlID0gZmlu
ZEJ5RmlsZU5hbWUoZGF0YWJhc2UuZmlsZU5hbWVJc29sYXRlZENvcHkoKSkpIHsKICAgICAgICAg
cmVzb3VyY2UtPnNldERhdGFiYXNlKGRhdGFiYXNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gcmVzb3VyY2UgPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUo
ZGF0YWJhc2UsIGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCkuaG9zdCwgZGF0YWJhc2Uuc3RyaW5n
SWRlbnRpZmllcigpLCBkYXRhYmFzZS5leHBlY3RlZFZlcnNpb24oKSk7CisgICAgYXV0byByZXNv
dXJjZSA9IEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2U6OmNyZWF0ZShkYXRhYmFzZSwgZGF0YWJh
c2Uuc2VjdXJpdHlPcmlnaW4oKS5ob3N0LCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVySXNvbGF0
ZWRDb3B5KCksIGRhdGFiYXNlLmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSgpKTsKICAgICBt
X3Jlc291cmNlcy5hZGQocmVzb3VyY2UtPmlkKCksIHJlc291cmNlLnB0cigpKTsKICAgICByZXNv
dXJjZS0+YmluZCgqbV9mcm9udGVuZERpc3BhdGNoZXIpOwogfQpAQCAtMzA0LDcgKzMwNCw3IEBA
IFN0cmluZyBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkYXRhYmFzZUlkKERhdGFiYXNlJiBkYXRh
YmFzZSkKIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UqIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ6
OmZpbmRCeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7CiAgICAgZm9yIChhdXRv
JiByZXNvdXJjZSA6IG1fcmVzb3VyY2VzLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChyZXNvdXJj
ZS0+ZGF0YWJhc2UoKS5maWxlTmFtZSgpID09IGZpbGVOYW1lKQorICAgICAgICBpZiAocmVzb3Vy
Y2UtPmRhdGFiYXNlKCkuZmlsZU5hbWVJc29sYXRlZENvcHkoKSA9PSBmaWxlTmFtZSkKICAgICAg
ICAgICAgIHJldHVybiByZXNvdXJjZS5nZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCmluZGV4IDY1NzJmNDAxMjRjMjNlN2IxOGUyNzlh
ZGYzZmM2MWIwNjVlMjcwNTUuLmZjZmY5ODM5YjYyZjQ1M2I3NDcwMTdiY2NkM2FkZTQ3NTdiYzg1
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVn
aXN0cmF0aW9uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2UuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9p
ZCBSZWdpc3RyYXRpb25EYXRhYmFzZTo6b3BlblNRTGl0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYg
ZnVsbEZpbGVuYW1lKQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCgh
bV9kYXRhYmFzZSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+ZGF0YWJh
c2VEaXJlY3RvcnkoKTsKKyAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+ZGF0YWJh
c2VEaXJlY3RvcnlJc29sYXRlZENvcHkoKTsKICAgICBjbGVhbk9sZERhdGFiYXNlcyhkYXRhYmFz
ZURpcmVjdG9yeSk7CiAKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VXb3JrZXIgUmVn
aXN0cmF0aW9uRGF0YWJhc2Ugb3BlbmluZyBmaWxlICVzIiwgZnVsbEZpbGVuYW1lLnV0ZjgoKS5k
YXRhKCkpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgUmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNs
ZWFyQWxsKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlCiAgICAg
ICAgIG1fZGF0YWJhc2UgPSBudWxscHRyOwogCiAgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRl
bGV0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlRmlsZVBhdGgpOwotICAgICAgICBTUUxpdGVGaWxl
U3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5KGRhdGFiYXNlRGlyZWN0b3J5KCkp
OworICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxldGVFbXB0eURhdGFiYXNlRGlyZWN0b3J5
KGRhdGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25EYXRhYmFz
ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oCmluZGV4IDJhYjQzOGMyMjc0MTU3YzkzM2VjZTdhNjA2MGE5NDk1MzVmNjU1MWYu
LmNjZTdkNTQ2NGNiZDZhN2NkNDA5ZDNhMWM5YTY1NjcyNmRkZjQ2YTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlv
bkRhdGFiYXNlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSZWdp
c3RyYXRpb25EYXRhYmFzZShSZWdpc3RyYXRpb25TdG9yZSYsIFN0cmluZyYmIGRhdGFiYXNlRGly
ZWN0b3J5KTsKICAgICAKLSAgICBTdHJpbmcgZGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5Lmlzb2xhdGVkQ29weSgpOyB9CisgICAgU3RyaW5nIGRh
dGFiYXNlRGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZURp
cmVjdG9yeS5pc29sYXRlZENvcHkoKTsgfQogCiAgICAgdm9pZCBwb3N0VGFza1RvV29ya1F1ZXVl
KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKaW5kZXggOTMwM2QyYWRjMTVlZjZm
YjMxMGI2ZmIxNmQwNzBjYzg1M2ZkYzNjMy4uOGE5Y2EyMDNlNTA5NTM0YjBhN2I4Mzg4MzNjOTMy
NDcxYjE1MGEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTc2LDE0ICs3NiwxNCBAQCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6On5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZwogICAgICAgICB3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCk7CiB9CiAKLVN0
cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnN0b3JhZ2VEaXJl
Y3RvcnlQYXRoKCkgY29uc3QKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6OnN0b3JhZ2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9zdG9yYWdlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsKIH0KIAogU3Ry
aW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6cmVzb3VyY2VMb2dG
aWxlUGF0aCgpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVj
dG9yeVBhdGgoKTsKKyAgICBTdHJpbmcgc3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0
aElzb2xhdGVkQ29weSgpOwogICAgIGlmIChzdG9yYWdlUGF0aC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Om1vbml0b3JEaXJlY3RvcnlGb3JOZXdT
dGF0aXN0aWNzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIFN0
cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCk7CisgICAgU3RyaW5nIHN0
b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAgICBBU1NF
UlQoIXN0b3JhZ2VQYXRoLmlzRW1wdHkoKSk7CiAKICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMoc3RvcmFnZVBhdGgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKaW5kZXggNzFmMzRiZmEzZDZjMmI1Mjc2MTY4
OTQ0ZWUzMzRjNzNkYWY1MDMyNS4uZjNlODA3ZGM3NzQzNDRhOTVmOWJmMDcxZDExOGNmZjQ1MTI0
MDc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUltbWVkaWF0ZVdyaXRlKTsKIAogcHJpdmF0ZToK
LSAgICBTdHJpbmcgc3RvcmFnZURpcmVjdG9yeVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgc3Rv
cmFnZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2dGaWxlUGF0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzdGFydE1vbml0b3JpbmdEaXNrKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZS5jcHAKaW5kZXggNzZlZjFjYmVmZTk0YWVmZDhmYmExMWU4ZTYzYTJlZjljYjdlYmYzMC4uYWJk
MDI4MTM1OTFjMTBlMTY1MTdkOWZmNGZhYjc2ZTliOTNiM2NjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcApAQCAtMTA4LDcg
KzEwOCw3IEBAIENhY2hlOjpDYWNoZShOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIFJl
ZjxTdG9yYWdlPiYmIHN0b3JhZ2UsIE9wdGlvblNldDxDCiAjZW5kaWYKICNpZiBQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICAgICAgLy8gVHJpZ2dlcnMgd2l0aCAidG91Y2ggJGNh
Y2hlUGF0aC9kdW1wIi4KLSAgICAgICAgQ1N0cmluZyBkdW1wRmlsZVBhdGggPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG1fc3RvcmFnZS0+YmFzZVBh
dGgoKSwgImR1bXAiKSk7CisgICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gZmlsZVN5c3Rl
bVJlcHJlc2VudGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQ
YXRoSXNvbGF0ZWRDb3B5KCksICJkdW1wIikpOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBkdW1w
RmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGR1bXBGaWxlUGF0aC5kYXRhKCkp
KTsKICAgICAgICAgR0ZpbGVNb25pdG9yKiBtb25pdG9yID0gZ19maWxlX21vbml0b3JfZmlsZShk
dW1wRmlsZS5nZXQoKSwgR19GSUxFX01PTklUT1JfTk9ORSwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtb25pdG9yLCAiY2hhbmdlZCIsIEdfQ0FM
TEJBQ0soZHVtcEZpbGVDaGFuZ2VkKSwgdGhpcyk7CkBAIC01OTMsOSArNTkzLDkgQEAgdm9pZCBD
YWNoZTo6Y2xlYXIoKQogICAgIGNsZWFyKC1XYWxsVGltZTo6aW5maW5pdHkoKSwgbnVsbHB0cik7
CiB9CiAKLVN0cmluZyBDYWNoZTo6cmVjb3Jkc1BhdGgoKSBjb25zdAorU3RyaW5nIENhY2hlOjpy
ZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fc3RvcmFnZS0+
cmVjb3Jkc1BhdGgoKTsKKyAgICByZXR1cm4gbV9zdG9yYWdlLT5yZWNvcmRzUGF0aElzb2xhdGVk
Q29weSgpOwogfQogCiB2b2lkIENhY2hlOjpyZXRyaWV2ZURhdGEoY29uc3QgRGF0YUtleSYgZGF0
YUtleSwgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4gY29tcGxldGlvbkhh
bmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGUuaAppbmRleCA1NDJhMDI2OTkwMDM3YTRhYTAxM2Q1ZjA5ZmFlMmQyMGVkYWFlZDJiLi40
OWE1N2Y1NjMzNjNkNjk1NzAwMTI1OWJkMGVkMTVhNTYxMjc3ZGY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTEzOSw3ICsx
MzksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBDb250ZW50c1RvRmlsZSgpOwogCi0gICAg
U3RyaW5nIHJlY29yZHNQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHJlY29yZHNQYXRoSXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9S
RVZBTElEQVRJT04pCiAgICAgU3BlY3VsYXRpdmVMb2FkTWFuYWdlciogc3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcigpIHsgcmV0dXJuIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci5nZXQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVC
bG9iU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUJsb2JTdG9yYWdlLmNwcAppbmRleCA5Y2FkYTdiNjIyNjMwMWNjMWFjMzE1MzAwMDU1
MGY1OGZiMWE0NmRjLi41ZTdlNmI3ZjgwMzI1N2E1MzMyMTM1ODkzMzU4MTIzZmM4MjljZTkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZUJsb2JTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmNwcApAQCAtNDYsNyArNDYsNyBAQCBCbG9iU3RvcmFn
ZTo6QmxvYlN0b3JhZ2UoY29uc3QgU3RyaW5nJiBibG9iRGlyZWN0b3J5UGF0aCwgU2FsdCBzYWx0
KQogewogfQogCi1TdHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JEaXJlY3RvcnlQYXRoKCkgY29uc3QK
K1N0cmluZyBCbG9iU3RvcmFnZTo6YmxvYkRpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBjb25z
dAogewogICAgIHJldHVybiBtX2Jsb2JEaXJlY3RvcnlQYXRoLmlzb2xhdGVkQ29weSgpOwogfQpA
QCAtNTUsMTAgKzU1LDExIEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIEZpbGVTeXN0ZW06Om1ha2VBbGxE
aXJlY3RvcmllcyhibG9iRGlyZWN0b3J5UGF0aCgpKTsKKyAgICBhdXRvIGJsb2JEaXJlY3RvcnlQ
YXRoID0gYmxvYkRpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKKyAgICBGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgpOwogCiAgICAgbV9hcHByb3hpbWF0
ZVNpemUgPSAwOwotICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJsb2JEaXJlY3RvcnlQYXRoKCk7
CisgICAgYXV0byBibG9iRGlyZWN0b3J5ID0gYmxvYkRpcmVjdG9yeVBhdGg7CiAgICAgdHJhdmVy
c2VEaXJlY3RvcnkoYmxvYkRpcmVjdG9yeSwgW3RoaXMsICZibG9iRGlyZWN0b3J5XShjb25zdCBT
dHJpbmcmIG5hbWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7CiAgICAgICAgIGlmICh0eXBl
ICE9IERpcmVjdG9yeUVudHJ5VHlwZTo6RmlsZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc5
LDcgKzgwLDcgQEAgdm9pZCBCbG9iU3RvcmFnZTo6c3luY2hyb25pemUoKQogU3RyaW5nIEJsb2JT
dG9yYWdlOjpibG9iUGF0aEZvckhhc2goY29uc3QgU0hBMTo6RGlnZXN0JiBoYXNoKSBjb25zdAog
ewogICAgIGF1dG8gaGFzaEFzU3RyaW5nID0gU0hBMTo6aGV4RGlnZXN0KGhhc2gpOwotICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoYmxvYkRpcmVjdG9yeVBh
dGgoKSwgU3RyaW5nOjpmcm9tVVRGOChoYXNoQXNTdHJpbmcpKTsKKyAgICByZXR1cm4gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRoSXNvbGF0ZWRD
b3B5KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CiB9CiAKIEJsb2JTdG9yYWdl
OjpCbG9iIEJsb2JTdG9yYWdlOjphZGQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBEYXRhJiBk
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVCbG9iU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oCmluZGV4IDk2MTNhY2MxYWQ1OGY1MjBiZjQ1M2Jl
NDBmMTQ3MmYyMGNmZmM3N2UuLjU3MWQxYzJiYzYzZGI4YmEwYTIwZDE2ZjczZWNjNWQyM2M5ZjFm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc3luY2hyb25pemUoKTsKIAogcHJpdmF0ZToKLSAgICBTdHJpbmcgYmxvYkRpcmVj
dG9yeVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgYmxvYkRpcmVjdG9yeVBhdGhJc29sYXRlZENv
cHkoKSBjb25zdDsKICAgICBTdHJpbmcgYmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2Vz
dCYpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nIG1fYmxvYkRpcmVjdG9yeVBhdGg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcAppbmRleCA4MDRjNDI5OGNjM2UzYzI4MTRmZGJjMmJiYjZjYmVlNTc1ODRh
ZTQ0Li5hMzkyNGU2MGY3Y2UyZGViYjZjNjgxYTJhYzY3ZTJjYjVkNzc2NjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKQEAgLTI1MSwxNyArMjUxLDE3IEBAIFN0b3JhZ2U6On5TdG9yYWdlKCkKICAg
ICBBU1NFUlQoIW1fc2hyaW5rSW5Qcm9ncmVzcyk7CiB9CiAKLVN0cmluZyBTdG9yYWdlOjpiYXNl
UGF0aCgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZTo6YmFzZVBhdGhJc29sYXRlZENvcHkoKSBjb25z
dAogewogICAgIHJldHVybiBtX2Jhc2VQYXRoLmlzb2xhdGVkQ29weSgpOwogfQogCiBTdHJpbmcg
U3RvcmFnZTo6dmVyc2lvblBhdGgoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlVmVyc2lvbmVk
RGlyZWN0b3J5UGF0aChiYXNlUGF0aCgpKTsKKyAgICByZXR1cm4gbWFrZVZlcnNpb25lZERpcmVj
dG9yeVBhdGgoYmFzZVBhdGhJc29sYXRlZENvcHkoKSk7CiB9CiAKLVN0cmluZyBTdG9yYWdlOjpy
ZWNvcmRzUGF0aCgpIGNvbnN0CitTdHJpbmcgU3RvcmFnZTo6cmVjb3Jkc1BhdGhJc29sYXRlZENv
cHkoKSBjb25zdAogewogICAgIHJldHVybiBtX3JlY29yZHNQYXRoLmlzb2xhdGVkQ29weSgpOwog
fQpAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogICAgICAg
ICB1bnNpZ25lZCBibG9iQ291bnQgPSAwOwogCiAgICAgICAgIFN0cmluZyBhbnlUeXBlOwotICAg
ICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCgpLCBhbnlUeXBlLCBbJl0oY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgp
IHsKKyAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGhJc29sYXRlZENvcHko
KSwgYW55VHlwZSwgWyZdKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFz
aFN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiBy
ZWNvcmREaXJlY3RvcnlQYXRoKSB7CiAgICAgICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZERpcmVjdG9yeVBhdGgsIGZpbGVO
YW1lKTsKIAogICAgICAgICAgICAgS2V5OjpIYXNoVHlwZSBoYXNoOwpAQCAtMzIzLDcgKzMyMyw3
IEBAIHZvaWQgU3RvcmFnZTo6c3luY2hyb25pemUoKQogCiAgICAgICAgIG1fYmxvYlN0b3JhZ2Uu
c3luY2hyb25pemUoKTsKIAotICAgICAgICBkZWxldGVFbXB0eVJlY29yZHNEaXJlY3Rvcmllcyhy
ZWNvcmRzUGF0aCgpKTsKKyAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMocmVj
b3Jkc1BhdGhJc29sYXRlZENvcHkoKSk7CiAKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3Jh
Z2UsICIoTmV0d29ya1Byb2Nlc3MpIGNhY2hlIHN5bmNocm9uaXphdGlvbiBjb21wbGV0ZWQgc2l6
ZT0lenUgcmVjb3JkQ291bnQ9JXUiLCByZWNvcmRzU2l6ZSwgcmVjb3JkQ291bnQpOwogCkBAIC0z
NzQsNyArMzc0LDcgQEAgYm9vbCBTdG9yYWdlOjptYXlDb250YWluQmxvYihjb25zdCBLZXkmIGtl
eSkgY29uc3QKIFN0cmluZyBTdG9yYWdlOjpyZWNvcmREaXJlY3RvcnlQYXRoRm9yS2V5KGNvbnN0
IEtleSYga2V5KSBjb25zdAogewogICAgIEFTU0VSVCgha2V5LnR5cGUoKS5pc0VtcHR5KCkpOwot
ICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHJlY29yZHNQYXRoKCksIGtleS5wYXJ0aXRpb25I
YXNoQXNTdHJpbmcoKSksIGtleS50eXBlKCkpOworICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHJlY29yZHNQYXRoSXNvbGF0ZWRDb3B5KCksIGtleS5wYXJ0aXRpb25IYXNoQXNTdHJpbmcoKSks
IGtleS50eXBlKCkpOwogfQogCiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkUGF0aEZvcktleShjb25z
dCBLZXkmIGtleSkgY29uc3QKQEAgLTkwMyw3ICs5MDMsNyBAQCB2b2lkIFN0b3JhZ2U6OnRyYXZl
cnNlKGNvbnN0IFN0cmluZyYgdHlwZSwgT3B0aW9uU2V0PFRyYXZlcnNlRmxhZz4gZmxhZ3MsIFRy
YXZlcgogICAgIG1fYWN0aXZlVHJhdmVyc2VPcGVyYXRpb25zLmFkZChXVEZNb3ZlKHRyYXZlcnNl
T3BlcmF0aW9uUHRyKSk7CiAKICAgICBpb1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsICZ0cmF2ZXJz
ZU9wZXJhdGlvbl0gewotICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCgp
LCB0cmF2ZXJzZU9wZXJhdGlvbi50eXBlLCBbdGhpcywgJnRyYXZlcnNlT3BlcmF0aW9uXShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkg
eworICAgICAgICB0cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aElzb2xhdGVkQ29weSgp
LCB0cmF2ZXJzZU9wZXJhdGlvbi50eXBlLCBbdGhpcywgJnRyYXZlcnNlT3BlcmF0aW9uXShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0aCkg
ewogICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gdHJhdmVyc2VPcGVyYXRpb24udHlwZSB8fCB0
cmF2ZXJzZU9wZXJhdGlvbi50eXBlLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICBpZiAoaXNCbG9i
KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTk5OCw3ICs5OTgsNyBAQCB2b2lkIFN0b3Jh
Z2U6OmNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZVRpbWUs
IENvbXBsZXRpb25IYQogICAgIG1fYXBwcm94aW1hdGVSZWNvcmRzU2l6ZSA9IDA7CiAKICAgICBp
b1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
bW9kaWZpZWRTaW5jZVRpbWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIHR5cGUgPSB0eXBlLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgYXV0byByZWNvcmRzUGF0aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CisgICAgICAgIGF1dG8g
cmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpOwogICAgICAgICB0
cmF2ZXJzZVJlY29yZHNGaWxlcyhyZWNvcmRzUGF0aCwgdHlwZSwgW21vZGlmaWVkU2luY2VUaW1l
XShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0
IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5
UGF0aCkgewogICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CiAgICAgICAg
ICAgICBpZiAobW9kaWZpZWRTaW5jZVRpbWUgPiAtV2FsbFRpbWU6OmluZmluaXR5KCkpIHsKQEAg
LTEwNzQsNyArMTA3NCw3IEBAIHZvaWQgU3RvcmFnZTo6c2hyaW5rKCkKICAgICBMT0coTmV0d29y
a0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vzcykgc2hyaW5raW5nIGNhY2hlIGFwcHJveGlt
YXRlU2l6ZT0lenUgY2FwYWNpdHk9JXp1IiwgYXBwcm94aW1hdGVTaXplKCksIG1fY2FwYWNpdHkp
OwogCiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byByZWNvcmRzUGF0
aCA9IHRoaXMtPnJlY29yZHNQYXRoKCk7CisgICAgICAgIGF1dG8gcmVjb3Jkc1BhdGggPSB0aGlz
LT5yZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpOwogICAgICAgICBTdHJpbmcgYW55VHlwZTsKICAg
ICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIGFueVR5cGUsIFt0aGlzXShj
b25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVjb3JkRGlyZWN0b3J5UGF0
aCkgewogICAgICAgICAgICAgaWYgKGlzQmxvYikKQEAgLTExMDksNyArMTEwOSw3IEBAIHZvaWQg
U3RvcmFnZTo6c2hyaW5rKCkKIAogdm9pZCBTdG9yYWdlOjpkZWxldGVPbGRWZXJzaW9ucygpCiB7
Ci0gICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbY2FjaGVQYXRoID0gYmFzZVBhdGgo
KV0gKCkgbXV0YWJsZSB7CisgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbY2FjaGVQ
YXRoID0gYmFzZVBhdGhJc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIHRyYXZl
cnNlRGlyZWN0b3J5KGNhY2hlUGF0aCwgWyZjYWNoZVBhdGhdKGNvbnN0IFN0cmluZyYgc3ViZGly
TmFtZSwgRGlyZWN0b3J5RW50cnlUeXBlIHR5cGUpIHsKICAgICAgICAgICAgIGlmICh0eXBlICE9
IERpcmVjdG9yeUVudHJ5VHlwZTo6RGlyZWN0b3J5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVTdG9yYWdlLmgKaW5kZXggNjE3YjJiM2E1ZmRlMmE1NzViMThmYzdjYjU3Y2VmMWUxODI3
MmVhOS4uODQ3YmU1NDc5NDRmNTAxYWE2M2M2MDc2NGViOTM1ZWViOTg3NDNhMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmgKQEAgLTExMyw5ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxhc3RTdGFibGVWZXJzaW9uID0gMTM7CiAjZW5kaWYKIAotICAgIFN0cmluZyBiYXNl
UGF0aCgpIGNvbnN0OworICAgIFN0cmluZyBiYXNlUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0Owog
ICAgIFN0cmluZyB2ZXJzaW9uUGF0aCgpIGNvbnN0OwotICAgIFN0cmluZyByZWNvcmRzUGF0aCgp
IGNvbnN0OworICAgIFN0cmluZyByZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpIGNvbnN0OwogCiAg
ICAgY29uc3QgU2FsdCYgc2FsdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FsdDsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377653</attachid>
            <date>2019-08-29 16:46:56 -0700</date>
            <delta_ts>2019-08-29 21:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201318-20190829164656.patch</filename>
            <type>text/plain</type>
            <size>40175</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAwM2JmYzY3ZDgxNWE5
M2IzYTdlYzk1MDg3ZGQ2NmNkYWI2NjRhZS4uMjU2NzljODk3MTA4ZWRkMmQwOGUzMzUyZDE2ZDhi
ZWI1NjA0YWZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE5LTA4LTI5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkICJJc29sYXRlZENvcHki
IGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRoYXQgY2FsbCBpc29sYXRlZENvcHkoKSBv
biB0aGUgc3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDEzMTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgIklzb2xhdGVkQ29weSIgaW4gdGhlIG5hbWUgb2YgU3RyaW5nIGdldHRlcnMgdGhh
dCBjYWxsIGlzb2xhdGVkQ29weSgpIG9uIHRoZSBzdHJpbmcsIGZvciBjbGFyaXR5LgorCisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpwZXJmb3JtR2V0QWxsRGF0YWJhc2VO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6cmVtb3ZlRGF0
YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCU2Vy
dmVyOjpJREJTZXJ2ZXI6OnBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnJlbW92ZURhdGFi
YXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6Y29tcHV0ZVNwYWNlVXNlZEZv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcjo6dXBncmFk
ZUZpbGVzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9J
REJTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyOjpkYXRh
YmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVj
dG9yeVdpdGhVcGdyYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURC
QmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxldGVCYWNraW5nU3Rv
cmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0
b3JlOjpkYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
YWJhc2U6Om1hcmtBc0RlbGV0ZWRBbmRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFz
ZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZTo6ZGlzcGxheU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZmlsZU5hbWVJc29sYXRlZENvcHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmRldGFpbHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFi
YXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6YWRkT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVHJhY2tlcjo6cmVtb3ZlT3BlbkRhdGFiYXNl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTUUxFcnJvcjo6bWVzc2FnZUlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxUcmFuc2Fj
dGlvbjo6b3BlblRyYW5zYWN0aW9uQW5kUHJlZmxpZ2h0KToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpvcGVuU1FMaXRlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVnaXN0cmF0aW9uRGF0YWJhc2U6OmNsZWFyQWxsKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZWdpc3RyYXRpb25EYXRhYmFzZTo6ZGF0YWJhc2VEaXJlY3RvcnlJc29sYXRlZENvcHkgY29u
c3QpOgorCiAyMDE5LTA4LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0xGQ11bVEZDXSBVc2UgdGhlICJjb21wbGljYXRlZC1jYXNlcyIgY2F0ZWdvcnkgZm9y
IGNvbXB1dGluZyB0aGUgVEZDIHJvb3QncyBoZWlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGEwYjA2NDE5NmQ0
ZjcyNzMxNmMzMzM5ZWYwNTk2MGRiODY1YzZhMS4uN2Y0MzFiYjBiMGMwZDE0MTIxMzgyMDM3NTZm
YWM3YzJhYzE5ODAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxOS0wOC0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCAiSXNvbGF0ZWRDb3B5
IiBpbiB0aGUgbmFtZSBvZiBTdHJpbmcgZ2V0dGVycyB0aGF0IGNhbGwgaXNvbGF0ZWRDb3B5KCkg
b24gdGhlIHN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxMzE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkICJJc29sYXRlZENvcHkiIGluIHRoZSBuYW1lIG9mIFN0cmluZyBnZXR0ZXJzIHRo
YXQgY2FsbCBpc29sYXRlZENvcHkoKSBvbiB0aGUgc3RyaW5nLCBmb3IgY2xhcml0eS4KKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdG9yYWdlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6cmVzb3VyY2VMb2dGaWxlUGF0aCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6bW9uaXRvckRpcmVjdG9yeUZv
ck5ld1N0YXRpc3RpY3MpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrQ2FjaGU6OkJsb2JTdG9yYWdlOjpibG9iRGlyZWN0b3J5UGF0aElzb2xhdGVk
Q29weSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6QmxvYlN0b3JhZ2U6
OnN5bmNocm9uaXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpCbG9iU3RvcmFn
ZTo6YmxvYlBhdGhGb3JIYXNoIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OlN0b3JhZ2U6OmJhc2VQYXRoSXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjp2ZXJzaW9uUGF0aCBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnN5bmNocm9uaXpl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpyZWNvcmREaXJlY3Rv
cnlQYXRoRm9yS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTdG9y
YWdlOjp0cmF2ZXJzZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6
Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlN0b3JhZ2U6OnNocmluayk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lv
bnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aDoKKwogMjAxOS0wOC0yOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtQU09OXSBCdW1wIHRoZSBXZWJQYWdlJ3MgaWRlbnRpZmllciBldmVyeSB0aW1lIHdlIHBy
b2Nlc3Mtc3dhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmNwcAppbmRleCBlYzBlNzdhMjdjNzZjZGJiYThkNGQ4ZDNmZGI3MWJk
ZTAzYjE2MjlkLi5hMTEyYjY2YmQ0YzUzODQwNTJlNjg3Y2NjMWU2MWY5MDU0NWIzNjE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2Vy
dmVyLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJREJCYWNraW5nU3Rv
cmU+IElEQlNlcnZlcjo6Y3JlYXRlQmFja2luZ1N0b3JlKGNvbnN0IElEQkRhdGFiYXNlCiB7CiAg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5
UGF0aCA9IHRoaXMtPmRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpOworICAgIGF1dG8gZGF0YWJhc2VE
aXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7
CiAgICAgaWYgKGRhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmNyZWF0ZShtX3Nlc3Npb25JRCwgaWRlbnRpZmllcik7
CiAKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2b2lkIElEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1l
cyh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgUwogCiB2b2lkIElE
QlNlcnZlcjo6cGVyZm9ybUdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3Qgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgbWFpbkZyYW1lT3JpZ2lu
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9wZW5pbmdPcmlnaW4sIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5kYXRhYmFz
ZURpcmVjdG9yeVBhdGgoKTsKKyAgICBhdXRvIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCA9IHRoaXMt
PmRhdGFiYXNlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpOwogICAgIFN0cmluZyBvbGREaXJl
Y3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVU
b1Jvb3QobWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBkYXRhYmFzZURpcmVjdG9yeVBh
dGgsICJ2MCIpOwogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVzID0gRmlsZVN5c3RlbTo6bGlzdERp
cmVjdG9yeShvbGREaXJlY3RvcnksICIqIl9zKTsKICAgICBWZWN0b3I8U3RyaW5nPiBkYXRhYmFz
ZXM7CkBAIC02NDEsNyArNjQxLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsRGF0YWJhc2VzRm9y
T3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIFdhbGxUaW1lIG0KIAogdm9pZCBJ
REJTZXJ2ZXI6OnJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKFdhbGxUaW1l
IG1vZGlmaWVkU2luY2UsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikKIHsKLSAgICBTdHJpbmcgdmVy
c2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCksIHZlcnNpb24pOworICAgIFN0cmluZyB2ZXJzaW9uUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29s
YXRlZENvcHkoKSwgdmVyc2lvbik7CiAgICAgZm9yIChhdXRvJiBvcmlnaW5QYXRoIDogRmlsZVN5
c3RlbTo6bGlzdERpcmVjdG9yeSh2ZXJzaW9uUGF0aCwgIioiKSkgewogICAgICAgICBTdHJpbmcg
ZGF0YWJhc2VJZGVudGlmaWVyID0gRmlsZVN5c3RlbTo6bGFzdENvbXBvbmVudE9mUGF0aElnbm9y
aW5nVHJhaWxpbmdTbGFzaChvcmlnaW5QYXRoKTsKICAgICAgICAgaWYgKGF1dG8gc2VjdXJpdHlP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoZGF0YWJh
c2VJZGVudGlmaWVyKSkKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIElEQlNlcnZlcjo6cmVtb3Zl
RGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24oV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwg
YwogCiB2b2lkIElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewot
ICAgIGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFk
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKS5pc0VtcHR5KCkpIHsKICAgICAgICAg
cmVtb3ZlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZUZvclZlcnNpb24obW9kaWZpZWRTaW5jZSwgInYw
Iik7CiAgICAgICAgIHJlbW92ZURhdGFiYXNlc01vZGlmaWVkU2luY2VGb3JWZXJzaW9uKG1vZGlm
aWVkU2luY2UsICJ2MSIpOwogICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIElEQlNlcnZl
cjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZShXYWxsVGltZSBt
b2RpZmllZFNpbgogCiB2b2lkIElEQlNlcnZlcjo6cmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNG
b3JWZXJzaW9uKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+ICZvcmlnaW5zLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7Ci0gICAgU3RyaW5nIHZlcnNpb25QYXRoID0gRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLCB2ZXJz
aW9uKTsKKyAgICBTdHJpbmcgdmVyc2lvblBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCksIHZlcnNpb24p
OwogICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogb3JpZ2lucykgewogICAgICAgICBTdHJp
bmcgb3JpZ2luUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCh2ZXJz
aW9uUGF0aCwgb3JpZ2luLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKICAgICAgICAgcmVtb3ZlQWxs
RGF0YWJhc2VzRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCkp
OwpAQCAtNjc1LDcgKzY3NSw3IEBAIHZvaWQgSURCU2VydmVyOjpyZW1vdmVEYXRhYmFzZXNXaXRo
T3JpZ2luc0ZvclZlcnNpb24oY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luCiAgICAgCiB2b2lk
IElEQlNlcnZlcjo6cGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzRm9yT3JpZ2lucyhjb25z
dCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBpZiAoIWRhdGFiYXNlRGlyZWN0b3J5UGF0aCgpLmlzRW1wdHkoKSkgeworICAg
IGlmICghZGF0YWJhc2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIHJlbW92ZURhdGFiYXNlc1dpdGhPcmlnaW5zRm9yVmVyc2lvbihvcmlnaW5zLCAidjAi
KTsKICAgICAgICAgcmVtb3ZlRGF0YWJhc2VzV2l0aE9yaWdpbnNGb3JWZXJzaW9uKG9yaWdpbnMs
ICJ2MSIpOwogICAgIH0KQEAgLTc2OSw3ICs3NjksNyBAQCB2b2lkIElEQlNlcnZlcjo6Y29tcHV0
ZVNwYWNlVXNlZEZvck9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikKIHsKICAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRo
ID0gdGhpcy0+ZGF0YWJhc2VEaXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVj
dG9yeVBhdGggPSB0aGlzLT5kYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAg
ICBhdXRvIG9sZFZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6
OmRhdGFiYXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2lu
LmNsaWVudE9yaWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjAiKTsKICAgICBhdXRvIG5l
d1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBJREJEYXRhYmFzZUlkZW50aWZpZXI6OmRhdGFiYXNl
RGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3Qob3JpZ2luLnRvcE9yaWdpbiwgb3JpZ2luLmNsaWVudE9y
aWdpbiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLCAidjEiKTsKICAgICBhdXRvIHNpemUgPSBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xkZXIob2xkVmVyc2lvbk9yaWdp
bkRpcmVjdG9yeSkgKyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFiYXNlc1NpemVGb3JGb2xk
ZXIobmV3VmVyc2lvbk9yaWdpbkRpcmVjdG9yeSk7CkBAIC04MTYsNyArODE2LDcgQEAgdm9pZCBJ
REJTZXJ2ZXI6OmRlY3JlYXNlUG90ZW50aWFsU3BhY2VVc2VkKGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luLCB1aW50NjRfdAogCiB2b2lkIElEQlNlcnZlcjo6dXBncmFkZUZpbGVzSWZOZWNlc3Nh
cnkoKQogewotICAgIGF1dG8gZGF0YWJhc2VEaXJlY3RvcnlQYXRoID0gdGhpcy0+ZGF0YWJhc2VE
aXJlY3RvcnlQYXRoKCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeVBhdGggPSB0aGlzLT5k
YXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKTsKICAgICBpZiAoZGF0YWJhc2VEaXJl
Y3RvcnlQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkYXRhYmFzZURp
cmVjdG9yeVBhdGgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaAppbmRleCBjNjUzZGZkM2U0Zjcz
YjQyZDM3OGQ4ZDA0MzY2NjNiOTBhYTcwZTE0Li5hOTdiYzdhMWY5YWMwYTcxZjk4MTViZGEzOWRk
YzM4YzE5MjNhNTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oCkBAIC0xMzAsNyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAg
IFVuaXF1ZUlEQkRhdGFiYXNlJiBnZXRPckNyZWF0ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIAotICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9y
eVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENv
cHkoKTsgfQorICAgIFN0cmluZyBkYXRhYmFzZURpcmVjdG9yeVBhdGhJc29sYXRlZENvcHkoKSBj
b25zdCB7IHJldHVybiBtX2RhdGFiYXNlRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsgfQog
CiAgICAgdm9pZCBwZXJmb3JtR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBzZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmln
aW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkaWRHZXRBbGxEYXRhYmFzZU5hbWVzKHVpbnQ2NF90IHNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZGF0YWJhc2VOYW1lcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDA2Mzc0MTIzZTU2Zjg1NmI0ODEwNDI5ZTAwODNmMmQ2NTE2NDI4NDMuLjQ0YWMyNGY0
MmY5MWE3Njk0MGVkOTNmYTliODkyMTQ4YjZmOWRiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNr
aW5nU3RvcmUuY3BwCkBAIC03NjUsNyArNzY1LDcgQEAgU3RyaW5nIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6ZGF0YWJhc2VOYW1lRnJvbUZpbGUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpCiAK
IFN0cmluZyBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmZ1bGxEYXRhYmFzZURpcmVjdG9yeVdpdGhV
cGdyYWRlKCkKIHsKLSAgICBhdXRvIGRhdGFiYXNlUm9vdERpcmVjdG9yeSA9IHRoaXMtPmRhdGFi
YXNlUm9vdERpcmVjdG9yeSgpOworICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0b3J5ID0gdGhp
cy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCk7CiAgICAgU3RyaW5nIG9sZE9y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7CiAgICAgU3RyaW5nIG9sZERhdGFiYXNl
RGlyZWN0b3J5ID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KG9sZE9yaWdp
bkRpcmVjdG9yeSwgZmlsZW5hbWVGb3JEYXRhYmFzZU5hbWUoKSk7CiAgICAgU3RyaW5nIG5ld09y
aWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRhYmFzZURpcmVjdG9yeVJlbGF0aXZlVG9S
b290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYxIik7CkBAIC04NTcsNyArODU3LDcgQEAgdWlu
dDY0X3QgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkYXRhYmFzZXNTaXplRm9yRm9sZGVyKGNvbnN0
IFN0cmluZyYgZm9sZGVyKQogCiB1aW50NjRfdCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmRhdGFi
YXNlc1NpemVGb3JPcmlnaW4oKSBjb25zdAogewotICAgIGF1dG8gZGF0YWJhc2VSb290RGlyZWN0
b3J5ID0gdGhpcy0+ZGF0YWJhc2VSb290RGlyZWN0b3J5KCk7CisgICAgYXV0byBkYXRhYmFzZVJv
b3REaXJlY3RvcnkgPSB0aGlzLT5kYXRhYmFzZVJvb3REaXJlY3RvcnlJc29sYXRlZENvcHkoKTsK
ICAgICBTdHJpbmcgb2xkVmVyc2lvbk9yaWdpbkRpcmVjdG9yeSA9IG1faWRlbnRpZmllci5kYXRh
YmFzZURpcmVjdG9yeVJlbGF0aXZlVG9Sb290KGRhdGFiYXNlUm9vdERpcmVjdG9yeSwgInYwIik7
CiAgICAgU3RyaW5nIG5ld1ZlcnNpb25PcmlnaW5EaXJlY3RvcnkgPSBtX2lkZW50aWZpZXIuZGF0
YWJhc2VEaXJlY3RvcnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnksICJ2MSIp
OwogICAgIHJldHVybiBkYXRhYmFzZXNTaXplRm9yRm9sZGVyKG9sZFZlcnNpb25PcmlnaW5EaXJl
Y3RvcnkpICsgZGF0YWJhc2VzU2l6ZUZvckZvbGRlcihuZXdWZXJzaW9uT3JpZ2luRGlyZWN0b3J5
KTsKQEAgLTI1NjIsNyArMjU2Miw3IEBAIHZvaWQgU1FMaXRlSURCQmFja2luZ1N0b3JlOjpkZWxl
dGVCYWNraW5nU3RvcmUoKQogCiAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGRiRmlsZW5hbWUpOwogICAgIFNRTGl0ZUZpbGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJh
c2VEaXJlY3RvcnkobV9kYXRhYmFzZURpcmVjdG9yeSk7Ci0gICAgU1FMaXRlRmlsZVN5c3RlbTo6
ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShtX2lkZW50aWZpZXIuZGF0YWJhc2VEaXJlY3Rv
cnlSZWxhdGl2ZVRvUm9vdChkYXRhYmFzZVJvb3REaXJlY3RvcnkoKSkpOworICAgIFNRTGl0ZUZp
bGVTeXN0ZW06OmRlbGV0ZUVtcHR5RGF0YWJhc2VEaXJlY3RvcnkobV9pZGVudGlmaWVyLmRhdGFi
YXNlRGlyZWN0b3J5UmVsYXRpdmVUb1Jvb3QoZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRD
b3B5KCkpKTsKIH0KIAogdm9pZCBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVucmVnaXN0ZXJDdXJz
b3IoU1FMaXRlSURCQ3Vyc29yJiBjdXJzb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgK
aW5kZXggZGI2NDc3ZTdmZjNhYzhkOTM2Y2YwYjU4N2VmOWE2ODVlZTE5MGZmMy4uNzIyNjc5NDZj
ZTg3ZjczNTBjMDgyMDJkYmUyN2Q5ZGU5MDIyYzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGZ1bGxEYXRh
YmFzZVBhdGgoKSBjb25zdDsKICAgICBTdHJpbmcgZnVsbERhdGFiYXNlRGlyZWN0b3J5V2l0aFVw
Z3JhZGUoKTsKICAgICAKLSAgICBTdHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gbV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KKyAgICBT
dHJpbmcgZGF0YWJhc2VSb290RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZVJvb3REaXJlY3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAogICAgIGJvb2wgZW5z
dXJlVmFsaWRSZWNvcmRzVGFibGUoKTsKICAgICBib29sIGVuc3VyZVZhbGlkSW5kZXhSZWNvcmRz
VGFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHAKaW5kZXggNWI2NGEwODc0NmFmODA4MGNkMmU3MjUwM2ZhMDBkM2M5NDlmYjAwZS4uMTk1
ZTZmN2IyMTFjMWYxOTg3Yjg5ZjUzNWFlZTBhMzliNzkyNzFlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTU4MCw3ICs1ODAsNyBA
QCB2b2lkIERhdGFiYXNlOjptYXJrQXNEZWxldGVkQW5kQ2xvc2UoKQogICAgIGlmIChtX2RlbGV0
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAo
JXApIGFzIGRlbGV0ZWQiLCBzdHJpbmdJZGVudGlmaWVyKCkuYXNjaWkoKS5kYXRhKCksIHRoaXMp
OworICAgIExPRyhTdG9yYWdlQVBJLCAiTWFya2luZyAlcyAoJXApIGFzIGRlbGV0ZWQiLCBzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCkuYXNjaWkoKS5kYXRhKCksIHRoaXMpOwogICAgIG1f
ZGVsZXRlZCA9IHRydWU7CiAKICAgICBjbG9zZSgpOwpAQCAtNjAxLDE5ICs2MDEsMTkgQEAgdm9p
ZCBEYXRhYmFzZTo6cmVhZFRyYW5zYWN0aW9uKFJlZlB0cjxTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
PiYmIGNhbGxiYWNrLCBSZWZQdHIKICAgICBydW5UcmFuc2FjdGlvbihXVEZNb3ZlKGNhbGxiYWNr
KSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSwgV1RGTW92ZShzdWNjZXNzQ2FsbGJhY2spLCBudWxs
cHRyLCB0cnVlKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpzdHJpbmdJZGVudGlmaWVyKCkgY29u
c3QKK1N0cmluZyBEYXRhYmFzZTo6c3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29weSgpIGNvbnN0
CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNh
ZmV0eQogICAgIHJldHVybiBtX25hbWUuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKLVN0cmluZyBEYXRh
YmFzZTo6ZGlzcGxheU5hbWUoKSBjb25zdAorU3RyaW5nIERhdGFiYXNlOjpkaXNwbGF5TmFtZUlz
b2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYg
Y291bnRpbmcgdGhyZWFkIHNhZmV0eQogICAgIHJldHVybiBtX2Rpc3BsYXlOYW1lLmlzb2xhdGVk
Q29weSgpOwogfQogCi1TdHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbigpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmV4cGVjdGVkVmVyc2lvbklzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAg
ICAgLy8gUmV0dXJuIGEgZGVlcCBjb3B5IGZvciByZWYgY291bnRpbmcgdGhyZWFkIHNhZmV0eQog
ICAgIHJldHVybiBtX2V4cGVjdGVkVmVyc2lvbi5pc29sYXRlZENvcHkoKTsKQEAgLTYzMCw3ICs2
MzAsNyBAQCB2b2lkIERhdGFiYXNlOjpzZXRFc3RpbWF0ZWRTaXplKHVuc2lnbmVkIGxvbmcgbG9u
ZyBlc3RpbWF0ZWRTaXplKQogICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xldG9uKCkuc2V0RGF0
YWJhc2VEZXRhaWxzKHNlY3VyaXR5T3JpZ2luKCksIG1fbmFtZSwgbV9kaXNwbGF5TmFtZSwgbV9l
c3RpbWF0ZWRTaXplKTsKIH0KIAotU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CitT
dHJpbmcgRGF0YWJhc2U6OmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICAvLyBS
ZXR1cm4gYSBkZWVwIGNvcHkgZm9yIHJlZiBjb3VudGluZyB0aHJlYWQgc2FmZXR5CiAgICAgcmV0
dXJuIG1fZmlsZW5hbWUuaXNvbGF0ZWRDb3B5KCk7CkBAIC02MzksNyArNjM5LDcgQEAgU3RyaW5n
IERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBEYXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRl
dGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3Ig
ZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMsIHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZh
bnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0
cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CisgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhzdHJp
bmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lSXNvbGF0ZWRDb3B5KCksIGVz
dGltYXRlZFNpemUoKSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogfQogCiB2b2lk
IERhdGFiYXNlOjpkaXNhYmxlQXV0aG9yaXplcigpCkBAIC03ODYsNyArNzg2LDcgQEAgdW5zaWdu
ZWQgbG9uZyBsb25nIERhdGFiYXNlOjptYXhpbXVtU2l6ZSgpCiAKIHZvaWQgRGF0YWJhc2U6OmRp
ZENvbW1pdFdyaXRlVHJhbnNhY3Rpb24oKQogewotICAgIERhdGFiYXNlVHJhY2tlcjo6c2luZ2xl
dG9uKCkuc2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQoc2VjdXJpdHlPcmlnaW4oKSwgc3Ry
aW5nSWRlbnRpZmllcigpKTsKKyAgICBEYXRhYmFzZVRyYWNrZXI6OnNpbmdsZXRvbigpLnNjaGVk
dWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKHNlY3VyaXR5T3JpZ2luKCksIHN0cmluZ0lkZW50aWZp
ZXJJc29sYXRlZENvcHkoKSk7CiB9CiAKIGJvb2wgRGF0YWJhc2U6OmRpZEV4Y2VlZFF1b3RhKCkK
QEAgLTc5OSw3ICs3OTksNyBAQCBib29sIERhdGFiYXNlOjpkaWRFeGNlZWRRdW90YSgpCiAgICAg
ICAgIC8vIG9sZFF1b3RhICsgNU1CIHNvIHRoYXQgdGhlIGNsaWVudCBhY3R1YWxseSBpbmNyZWFz
ZXMgdGhlIHF1b3RhLgogICAgICAgICBzZXRFc3RpbWF0ZWRTaXplKG9sZFF1b3RhICsgcXVvdGFJ
bmNyZWFzZVNpemUpOwogICAgIH0KLSAgICBkYXRhYmFzZUNvbnRleHQoKS5kYXRhYmFzZUV4Y2Vl
ZGVkUXVvdGEoc3RyaW5nSWRlbnRpZmllcigpLCBkZXRhaWxzKCkpOworICAgIGRhdGFiYXNlQ29u
dGV4dCgpLmRhdGFiYXNlRXhjZWVkZWRRdW90YShzdHJpbmdJZGVudGlmaWVySXNvbGF0ZWRDb3B5
KCksIGRldGFpbHMoKSk7CiAgICAgcmV0dXJuIHRyYWNrZXIucXVvdGEoc2VjdXJpdHlPcmlnaW4o
KSkgPiBvbGRRdW90YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCmluZGV4IDk3Yjk2NmM0Zjc3MjIyODJkZmI0MDUzOTg0NDBhMjVmNDM1OTk1
ZGIuLjBkMmE5NWFiYzVjNzFkZjQ0NWU2MWUwMjdjMTg0OTQ5MDJmODczOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmgKQEAgLTg2LDExICs4Niwx
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkVHJhbnNhY3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0
aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrKTsKIAogICAgIC8vIEludGVybmFs
IGVuZ2luZSBzdXBwb3J0Ci0gICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXIoKSBjb25zdDsKLSAg
ICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdDsKLSAgICBTdHJpbmcgZXhwZWN0ZWRWZXJzaW9u
KCkgY29uc3Q7CisgICAgU3RyaW5nIHN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICBTdHJpbmcgZGlzcGxheU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICBTdHJp
bmcgZXhwZWN0ZWRWZXJzaW9uSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIGVzdGltYXRlZFNpemUoKSBjb25zdDsKLSAgICBTdHJpbmcgZmlsZU5hbWUoKSBjb25z
dDsKKyAgICBTdHJpbmcgZmlsZU5hbWVJc29sYXRlZENvcHkoKSBjb25zdDsKICAgICBEYXRhYmFz
ZURldGFpbHMgZGV0YWlscygpIGNvbnN0OwogICAgIFNRTGl0ZURhdGFiYXNlJiBzcWxpdGVEYXRh
YmFzZSgpIHsgcmV0dXJuIG1fc3FsaXRlRGF0YWJhc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDY5
YzNiMmVkM2E4NDY4ZDIxMTkyMTRkMjRmNDBjNzI5YzhkYzJhNjIuLjc4MTAxNzFkNTllNjJhNWJm
MGJhYjk0N2RkNjI5NTczZTM1MDM5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBA
QCB1bnNpZ25lZCBsb25nIGxvbmcgRGF0YWJhc2VUcmFja2VyOjptYXhpbXVtU2l6ZShEYXRhYmFz
ZSYgZGF0YWJhc2UpCiAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEgPSBxdW90YU5vTG9j
ayhvcmlnaW4pOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkaXNrVXNhZ2UgPSB1c2FnZShvcmln
aW4pOwotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBkYXRhYmFzZUZpbGVTaXplID0gU1FMaXRlRmls
ZVN5c3RlbTo6Z2V0RGF0YWJhc2VGaWxlU2l6ZShkYXRhYmFzZS5maWxlTmFtZSgpKTsKKyAgICB1
bnNpZ25lZCBsb25nIGxvbmcgZGF0YWJhc2VGaWxlU2l6ZSA9IFNRTGl0ZUZpbGVTeXN0ZW06Omdl
dERhdGFiYXNlRmlsZVNpemUoZGF0YWJhc2UuZmlsZU5hbWVJc29sYXRlZENvcHkoKSk7CiAgICAg
QVNTRVJUKGRhdGFiYXNlRmlsZVNpemUgPD0gZGlza1VzYWdlKTsKIAogICAgIGlmIChkaXNrVXNh
Z2UgPiBxdW90YSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2V0
RGF0YWJhc2VEZXRhaWxzKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdAog
dm9pZCBEYXRhYmFzZVRyYWNrZXI6OmRvbmVDcmVhdGluZ0RhdGFiYXNlKERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tEYXRhYmFzZShtX2RhdGFiYXNlR3VhcmQpOwot
ICAgIGRvbmVDcmVhdGluZ0RhdGFiYXNlKGRhdGFiYXNlLnNlY3VyaXR5T3JpZ2luKCksIGRhdGFi
YXNlLnN0cmluZ0lkZW50aWZpZXIoKSk7CisgICAgZG9uZUNyZWF0aW5nRGF0YWJhc2UoZGF0YWJh
c2Uuc2VjdXJpdHlPcmlnaW4oKSwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVkQ29w
eSgpKTsKIH0KIAogVmVjdG9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRh
dGFiYXNlcygpCkBAIC01NTQsNyArNTU0LDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OmFkZE9w
ZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIG1fb3BlbkRhdGFiYXNlTWFw
LT5hZGQob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lTWFwKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgbmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9
IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRh
YmFzZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAg
ICAgICAgIGRhdGFiYXNlU2V0ID0gbmV3IERhdGFiYXNlU2V0OwpAQCAtNTYzLDcgKzU2Myw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjphZGRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNl
KQogCiAgICAgZGF0YWJhc2VTZXQtPmFkZCgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VB
UEksICJBZGRlZCBvcGVuIERhdGFiYXNlICVzICglcClcbiIsIGRhdGFiYXNlLnN0cmluZ0lkZW50
aWZpZXIoKS51dGY4KCkuZGF0YSgpLCAmZGF0YWJhc2UpOworICAgIExPRyhTdG9yYWdlQVBJLCAi
QWRkZWQgb3BlbiBEYXRhYmFzZSAlcyAoJXApXG4iLCBkYXRhYmFzZS5zdHJpbmdJZGVudGlmaWVy
SXNvbGF0ZWRDb3B5KCkudXRmOCgpLmRhdGEoKSwgJmRhdGFiYXNlKTsKIH0KIAogdm9pZCBEYXRh
YmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShEYXRhYmFzZSYgZGF0YWJhc2UpCkBAIC01
ODEsNyArNTgxLDcgQEAgdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnJlbW92ZU9wZW5EYXRhYmFzZShE
YXRhYmFzZSYgZGF0YWJhc2UpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcg
bmFtZSA9IGRhdGFiYXNlLnN0cmluZ0lkZW50aWZpZXIoKTsKKyAgICBTdHJpbmcgbmFtZSA9IGRh
dGFiYXNlLnN0cmluZ0lkZW50aWZpZXJJc29sYXRlZENvcHkoKTsKICAgICBhdXRvKiBkYXRhYmFz
ZVNldCA9IG5hbWVNYXAtPmdldChuYW1lKTsKICAgICBpZiAoIWRhdGFiYXNlU2V0KSB7CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRGF0YWJh
c2VUcmFja2VyOjpyZW1vdmVPcGVuRGF0YWJhc2UoRGF0YWJhc2UmIGRhdGFiYXNlKQogCiAgICAg
ZGF0YWJhc2VTZXQtPnJlbW92ZSgmZGF0YWJhc2UpOwogCi0gICAgTE9HKFN0b3JhZ2VBUEksICJS
ZW1vdmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmll
cigpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CisgICAgTE9HKFN0b3JhZ2VBUEksICJSZW1v
dmVkIG9wZW4gRGF0YWJhc2UgJXMgKCVwKVxuIiwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklz
b2xhdGVkQ29weSgpLnV0ZjgoKS5kYXRhKCksICZkYXRhYmFzZSk7CiAKICAgICBpZiAoIWRhdGFi
YXNlU2V0LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMTAsNyArMTIxMCw3IEBA
IHZvaWQgRGF0YWJhc2VUcmFja2VyOjpyZW1vdmVEZWxldGVkT3BlbmVkRGF0YWJhc2VzKCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBkYXRhYmFzZSBoYXMgYmVl
biBkZWxldGVkIG9yIGlmIGl0cyBkYXRhYmFzZSBmaWxlIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBj
dXJyZW50IHZlcnNpb24sIHRoaXMgZGF0YWJhc2UgaXMgbm8gbG9uZ2VyIHZhbGlkIGFuZCBpdCBz
aG91bGQgYmUgbWFya2VkIGFzIGRlbGV0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZGF0YWJhc2VGaWxlTmFtZS5pc051bGwoKSB8fCBkYXRhYmFzZUZpbGVOYW1lICE9IEZpbGVTeXN0
ZW06OnBhdGhHZXRGaWxlTmFtZShkYi0+ZmlsZU5hbWUoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChkYXRhYmFzZUZpbGVOYW1lLmlzTnVsbCgpIHx8IGRhdGFiYXNlRmlsZU5hbWUg
IT0gRmlsZVN5c3RlbTo6cGF0aEdldEZpbGVOYW1lKGRiLT5maWxlTmFtZUlzb2xhdGVkQ29weSgp
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZWREYXRhYmFzZXMuYXBwZW5k
KGRiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZERlbGV0ZWREYXRhYmFzZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmgKaW5kZXggNmIwNzJiYmI0MjdhODliYmZmM2FhMDQw
MDNhOWZlNzFlZDgyOTI3YS4uMTQ1Y2E1MDAzMzU3NmU3MDI3ZTgwMmYwZDI5YzgyNTkyNDRhNWFj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMRXJyb3IuaApA
QCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdW5zaWduZWQgY29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29kZTsgfQotICAgIFN0cmluZyBtZXNzYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9tZXNzYWdlLmlzb2xhdGVkQ29weSgpOyB9CisgICAgU3RyaW5nIG1lc3NhZ2VJc29sYXRl
ZENvcHkoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7IH0KIAogICAg
IGVudW0gU1FMRXJyb3JDb2RlIHsKICAgICAgICAgVU5LTk9XTl9FUlIgPSAwLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxFcnJvci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTEVycm9yLmlkbAppbmRleCBkZDQ1NWUy
NzZmODZmYjEzNzNhODMxZGJlYmE2OTc0MGM2ODU5ZWIyLi5lZDkzMGM3NDViYjFlNzQyZTYwNjZj
OGRjYWE0YWQwMGM3N2JjOTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL1NRTEVycm9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTEVycm9yLmlkbApAQCAtMzEsNyArMzEsNyBAQAogICAgIEVuYWJsZWRBdFJ1bnRp
bWU9V2ViU1FMLAogXSBpbnRlcmZhY2UgU1FMRXJyb3IgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGNvZGU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBt
ZXNzYWdlOworICAgIFtJbXBsZW1lbnRlZEFzPW1lc3NhZ2VJc29sYXRlZENvcHldIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKIAogICAgIC8vIFNRTEVycm9yQ29kZTogdXNl
ZCBvbmx5IGluIHRoZSBhc3luYyBEQiBBUEkKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTktO
T1dOX0VSUiA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uY3BwCmluZGV4IDRjYjA0MWU0NTJjODBmNWY1OWJiMjcyMWVhYjhl
YzFhOGY2MTgzNjYuLmFjNDkwZjU3NmQwY2JjNThiMTEwNzUxYmExYjNjZjljZjkzYjM2MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uY3BwCkBAIC0yNjUsNyArMjY1LDggQEAgdm9pZCBTUUxUcmFuc2FjdGlvbjo6b3BlblRy
YW5zYWN0aW9uQW5kUHJlZmxpZ2h0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
aGFzVmVyc2lvbk1pc21hdGNoID0gIW1fZGF0YWJhc2UtPmV4cGVjdGVkVmVyc2lvbigpLmlzRW1w
dHkoKSAmJiAobV9kYXRhYmFzZS0+ZXhwZWN0ZWRWZXJzaW9uKCkgIT0gYWN0dWFsVmVyc2lvbik7
CisgICAgYXV0byBleHBlY3RlZFZlcnNpb24gPSBtX2RhdGFiYXNlLT5leHBlY3RlZFZlcnNpb25J
c29sYXRlZENvcHkoKTsKKyAgICBtX2hhc1ZlcnNpb25NaXNtYXRjaCA9ICFleHBlY3RlZFZlcnNp
b24uaXNFbXB0eSgpICYmIGV4cGVjdGVkVmVyc2lvbiAhPSBhY3R1YWxWZXJzaW9uOwogCiAgICAg
Ly8gU3BlYyA0LjMuMi4zOiBQZXJmb3JtIHByZWZsaWdodCBzdGVwcywganVtcGluZyB0byB0aGUg
ZXJyb3IgY2FsbGJhY2sgaWYgdGhleSBmYWlsCiAgICAgaWYgKG1fd3JhcHBlciAmJiAhbV93cmFw
cGVyLT5wZXJmb3JtUHJlZmxpZ2h0KCp0aGlzKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5kZXgg
MDg0YmE0MDMwZTRhZTUwZjBkYzg3NjE4MTcyZjYyZWY1MDQyMGY4Ny4uYTBiZGNiZDA1YWYzZTQ5
MmU5NGEzNjM5ZGRlMDlhY2MzOTQyMjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC02MCw3
ICs2MCw3IEBAIG5hbWVzcGFjZSB7CiB2b2lkIHJlcG9ydFRyYW5zYWN0aW9uRmFpbGVkKEV4ZWN1
dGVTUUxDYWxsYmFjayYgcmVxdWVzdENhbGxiYWNrLCBTUUxFcnJvciYgZXJyb3IpCiB7CiAgICAg
YXV0byBlcnJvck9iamVjdCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcjo6
Y3JlYXRlKCkKLSAgICAgICAgLnNldE1lc3NhZ2UoZXJyb3IubWVzc2FnZSgpKQorICAgICAgICAu
c2V0TWVzc2FnZShlcnJvci5tZXNzYWdlSXNvbGF0ZWRDb3B5KCkpCiAgICAgICAgIC5zZXRDb2Rl
KGVycm9yLmNvZGUoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKICAgICByZXF1ZXN0Q2FsbGJhY2su
c2VuZFN1Y2Nlc3MobnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShlcnJvck9iamVjdCkpOwpAQCAt
MjA1LDEyICsyMDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRDb21taXRM
b2FkKCkKIAogdm9pZCBJbnNwZWN0b3JEYXRhYmFzZUFnZW50OjpkaWRPcGVuRGF0YWJhc2UoRGF0
YWJhc2UmIGRhdGFiYXNlKQogewotICAgIGlmIChhdXRvIHJlc291cmNlID0gZmluZEJ5RmlsZU5h
bWUoZGF0YWJhc2UuZmlsZU5hbWUoKSkpIHsKKyAgICBpZiAoYXV0byByZXNvdXJjZSA9IGZpbmRC
eUZpbGVOYW1lKGRhdGFiYXNlLmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkpKSB7CiAgICAgICAgIHJl
c291cmNlLT5zZXREYXRhYmFzZShkYXRhYmFzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIHJlc291cmNlID0gSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZTo6Y3JlYXRlKGRh
dGFiYXNlLCBkYXRhYmFzZS5zZWN1cml0eU9yaWdpbigpLmhvc3QsIGRhdGFiYXNlLnN0cmluZ0lk
ZW50aWZpZXIoKSwgZGF0YWJhc2UuZXhwZWN0ZWRWZXJzaW9uKCkpOworICAgIGF1dG8gcmVzb3Vy
Y2UgPSBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlOjpjcmVhdGUoZGF0YWJhc2UsIGRhdGFiYXNl
LnNlY3VyaXR5T3JpZ2luKCkuaG9zdCwgZGF0YWJhc2Uuc3RyaW5nSWRlbnRpZmllcklzb2xhdGVk
Q29weSgpLCBkYXRhYmFzZS5leHBlY3RlZFZlcnNpb25Jc29sYXRlZENvcHkoKSk7CiAgICAgbV9y
ZXNvdXJjZXMuYWRkKHJlc291cmNlLT5pZCgpLCByZXNvdXJjZS5wdHIoKSk7CiAgICAgcmVzb3Vy
Y2UtPmJpbmQoKm1fZnJvbnRlbmREaXNwYXRjaGVyKTsKIH0KQEAgLTMwNCw3ICszMDQsNyBAQCBT
dHJpbmcgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDo6ZGF0YWJhc2VJZChEYXRhYmFzZSYgZGF0YWJh
c2UpCiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlKiBJbnNwZWN0b3JEYXRhYmFzZUFnZW50Ojpm
aW5kQnlGaWxlTmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewogICAgIGZvciAoYXV0byYg
cmVzb3VyY2UgOiBtX3Jlc291cmNlcy52YWx1ZXMoKSkgewotICAgICAgICBpZiAocmVzb3VyY2Ut
PmRhdGFiYXNlKCkuZmlsZU5hbWUoKSA9PSBmaWxlTmFtZSkKKyAgICAgICAgaWYgKHJlc291cmNl
LT5kYXRhYmFzZSgpLmZpbGVOYW1lSXNvbGF0ZWRDb3B5KCkgPT0gZmlsZU5hbWUpCiAgICAgICAg
ICAgICByZXR1cm4gcmVzb3VyY2UuZ2V0KCk7CiAgICAgfQogICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3Ry
YXRpb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcAppbmRleCA2NTcyZjQwMTI0YzIzZTdiMThlMjc5YWRm
M2ZjNjFiMDY1ZTI3MDU1Li5mY2ZmOTgzOWI2MmY0NTNiNzQ3MDE3YmNjZDNhZGU0NzU3YmM4NTdi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lz
dHJhdGlvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQg
UmVnaXN0cmF0aW9uRGF0YWJhc2U6Om9wZW5TUUxpdGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIGZ1
bGxGaWxlbmFtZSkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQoIW1f
ZGF0YWJhc2UpOwogCi0gICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPmRhdGFiYXNl
RGlyZWN0b3J5KCk7CisgICAgYXV0byBkYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPmRhdGFiYXNl
RGlyZWN0b3J5SXNvbGF0ZWRDb3B5KCk7CiAgICAgY2xlYW5PbGREYXRhYmFzZXMoZGF0YWJhc2VE
aXJlY3RvcnkpOwogCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyIFJlZ2lz
dHJhdGlvbkRhdGFiYXNlIG9wZW5pbmcgZmlsZSAlcyIsIGZ1bGxGaWxlbmFtZS51dGY4KCkuZGF0
YSgpKTsKQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFJlZ2lzdHJhdGlvbkRhdGFiYXNlOjpjbGVh
ckFsbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZQogICAgICAg
ICBtX2RhdGFiYXNlID0gbnVsbHB0cjsKIAogICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjpkZWxl
dGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZUZpbGVQYXRoKTsKLSAgICAgICAgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShkYXRhYmFzZURpcmVjdG9yeSgpKTsK
KyAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRW1wdHlEYXRhYmFzZURpcmVjdG9yeShk
YXRhYmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpKTsKIAogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvUmVnaXN0cmF0aW9uRGF0
YWJhc2UuaAppbmRleCAyYWI0MzhjMjI3NDE1N2M5MzNlY2U3YTYwNjBhOTQ5NTM1ZjY1NTFmLi5j
Y2U3ZDU0NjRjYmQ2YTdjZDQwOWQzYTFjOWE2NTY3MjZkZGY0NmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9SZWdpc3RyYXRpb25E
YXRhYmFzZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVnaXN0
cmF0aW9uRGF0YWJhc2UoUmVnaXN0cmF0aW9uU3RvcmUmLCBTdHJpbmcmJiBkYXRhYmFzZURpcmVj
dG9yeSk7CiAgICAgCi0gICAgU3RyaW5nIGRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhYmFzZURpcmVjdG9yeS5pc29sYXRlZENvcHkoKTsgfQorICAgIFN0cmluZyBkYXRh
YmFzZURpcmVjdG9yeUlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VEaXJl
Y3RvcnkuaXNvbGF0ZWRDb3B5KCk7IH0KIAogICAgIHZvaWQgcG9zdFRhc2tUb1dvcmtRdWV1ZShG
dW5jdGlvbjx2b2lkKCk+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCmluZGV4IDkzMDNkMmFkYzE1ZWY2ZmIz
MTBiNmZiMTZkMDcwY2M4NTNmZGMzYzMuLjhhOWNhMjAzZTUwOTUzNGIwYTdiODM4ODMzYzkzMjQ3
MWIxNTBhMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCkBAIC03NiwxNCArNzYsMTQgQEAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWcKICAgICAgICAgd3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpOwogfQogCi1TdHJp
bmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzdG9yYWdlRGlyZWN0
b3J5UGF0aCgpIGNvbnN0CitTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpzdG9yYWdlRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fc3RvcmFnZURpcmVjdG9yeVBhdGguaXNvbGF0ZWRDb3B5KCk7CiB9CiAKIFN0cmlu
ZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OnJlc291cmNlTG9nRmls
ZVBhdGgoKSBjb25zdAogewotICAgIFN0cmluZyBzdG9yYWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3Rv
cnlQYXRoKCk7CisgICAgU3RyaW5nIHN0b3JhZ2VQYXRoID0gc3RvcmFnZURpcmVjdG9yeVBhdGhJ
c29sYXRlZENvcHkoKTsKICAgICBpZiAoc3RvcmFnZVBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjptb25pdG9yRGlyZWN0b3J5Rm9yTmV3U3Rh
dGlzdGljcygpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBTdHJp
bmcgc3RvcmFnZVBhdGggPSBzdG9yYWdlRGlyZWN0b3J5UGF0aCgpOworICAgIFN0cmluZyBzdG9y
YWdlUGF0aCA9IHN0b3JhZ2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7CiAgICAgQVNTRVJU
KCFzdG9yYWdlUGF0aC5pc0VtcHR5KCkpOwogCiAgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHN0b3JhZ2VQYXRoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCmluZGV4IDcxZjM0YmZhM2Q2YzJiNTI3NjE2ODk0
NGVlMzM0YzczZGFmNTAzMjUuLmYzZTgwN2RjNzc0MzQ0YTk1ZjliZjA3MWQxMThjZmY0NTEyNDA3
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1
bGVPcldyaXRlTWVtb3J5U3RvcmUoRm9yY2VJbW1lZGlhdGVXcml0ZSk7CiAKIHByaXZhdGU6Ci0g
ICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHN0b3Jh
Z2VEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHJlc291cmNl
TG9nRmlsZVBhdGgoKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRNb25pdG9yaW5nRGlzaygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCmluZGV4IDc2ZWYxY2JlZmU5NGFlZmQ4ZmJhMTFlOGU2M2EyZWY5Y2I3ZWJmMzAuLmFiZDAy
ODEzNTkxYzEwZTE2NTE3ZDlmZjRmYWI3NmU5YjkzYjNjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTEwOCw3ICsx
MDgsNyBAQCBDYWNoZTo6Q2FjaGUoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBSZWY8
U3RvcmFnZT4mJiBzdG9yYWdlLCBPcHRpb25TZXQ8QwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCiAgICAgICAgIC8vIFRyaWdnZXJzIHdpdGggInRvdWNoICRjYWNo
ZVBhdGgvZHVtcCIuCi0gICAgICAgIENTdHJpbmcgZHVtcEZpbGVQYXRoID0gZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2UtPmJhc2VQYXRo
KCksICJkdW1wIikpOworICAgICAgICBDU3RyaW5nIGR1bXBGaWxlUGF0aCA9IGZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlLT5iYXNlUGF0
aElzb2xhdGVkQ29weSgpLCAiZHVtcCIpKTsKICAgICAgICAgR1JlZlB0cjxHRmlsZT4gZHVtcEZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChkdW1wRmlsZVBhdGguZGF0YSgpKSk7
CiAgICAgICAgIEdGaWxlTW9uaXRvciogbW9uaXRvciA9IGdfZmlsZV9tb25pdG9yX2ZpbGUoZHVt
cEZpbGUuZ2V0KCksIEdfRklMRV9NT05JVE9SX05PTkUsIG51bGxwdHIsIG51bGxwdHIpOwogICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobW9uaXRvciwgImNoYW5nZWQiLCBHX0NBTExC
QUNLKGR1bXBGaWxlQ2hhbmdlZCksIHRoaXMpOwpAQCAtNTkzLDkgKzU5Myw5IEBAIHZvaWQgQ2Fj
aGU6OmNsZWFyKCkKICAgICBjbGVhcigtV2FsbFRpbWU6OmluZmluaXR5KCksIG51bGxwdHIpOwog
fQogCi1TdHJpbmcgQ2FjaGU6OnJlY29yZHNQYXRoKCkgY29uc3QKK1N0cmluZyBDYWNoZTo6cmVj
b3Jkc1BhdGhJc29sYXRlZENvcHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3N0b3JhZ2UtPnJl
Y29yZHNQYXRoKCk7CisgICAgcmV0dXJuIG1fc3RvcmFnZS0+cmVjb3Jkc1BhdGhJc29sYXRlZENv
cHkoKTsKIH0KIAogdm9pZCBDYWNoZTo6cmV0cmlldmVEYXRhKGNvbnN0IERhdGFLZXkmIGRhdGFL
ZXksIEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVfdCk+IGNvbXBsZXRpb25IYW5k
bGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKaW5kZXggNTQyYTAyNjk5MDAzN2E0YWEwMTNkNWYwOWZhZTJkMjBlZGFhZWQyYi4uNDlh
NTdmNTYzMzYzZDY5NTcwMDEyNTliZDBlZDE1YTU2MTI3N2RmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0xMzksNyArMTM5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQ29udGVudHNUb0ZpbGUoKTsKIAotICAgIFN0
cmluZyByZWNvcmRzUGF0aCgpIGNvbnN0OworICAgIFN0cmluZyByZWNvcmRzUGF0aElzb2xhdGVk
Q29weSgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVW
QUxJREFUSU9OKQogICAgIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIqIHNwZWN1bGF0aXZlTG9hZE1h
bmFnZXIoKSB7IHJldHVybiBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXIuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQmxv
YlN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVCbG9iU3RvcmFnZS5jcHAKaW5kZXggOWNhZGE3YjYyMjYzMDFjYzFhYzMxNTMwMDA1NTBm
NThmYjFhNDZkYy4uNWU3ZTZiN2Y4MDMyNTdhNTMzMjEzNTg5MzM1ODEyM2ZjODI5Y2U5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVC
bG9iU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgQmxvYlN0b3JhZ2U6
OkJsb2JTdG9yYWdlKGNvbnN0IFN0cmluZyYgYmxvYkRpcmVjdG9yeVBhdGgsIFNhbHQgc2FsdCkK
IHsKIH0KIAotU3RyaW5nIEJsb2JTdG9yYWdlOjpibG9iRGlyZWN0b3J5UGF0aCgpIGNvbnN0CitT
dHJpbmcgQmxvYlN0b3JhZ2U6OmJsb2JEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9ibG9iRGlyZWN0b3J5UGF0aC5pc29sYXRlZENvcHkoKTsKIH0KQEAg
LTU1LDEwICs1NSwxMSBAQCB2b2lkIEJsb2JTdG9yYWdlOjpzeW5jaHJvbml6ZSgpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGly
ZWN0b3JpZXMoYmxvYkRpcmVjdG9yeVBhdGgoKSk7CisgICAgYXV0byBibG9iRGlyZWN0b3J5UGF0
aCA9IGJsb2JEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5KCk7CisgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKGJsb2JEaXJlY3RvcnlQYXRoKTsKIAogICAgIG1fYXBwcm94aW1hdGVT
aXplID0gMDsKLSAgICBhdXRvIGJsb2JEaXJlY3RvcnkgPSBibG9iRGlyZWN0b3J5UGF0aCgpOwor
ICAgIGF1dG8gYmxvYkRpcmVjdG9yeSA9IGJsb2JEaXJlY3RvcnlQYXRoOwogICAgIHRyYXZlcnNl
RGlyZWN0b3J5KGJsb2JEaXJlY3RvcnksIFt0aGlzLCAmYmxvYkRpcmVjdG9yeV0oY29uc3QgU3Ry
aW5nJiBuYW1lLCBEaXJlY3RvcnlFbnRyeVR5cGUgdHlwZSkgewogICAgICAgICBpZiAodHlwZSAh
PSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03OSw3
ICs4MCw3IEBAIHZvaWQgQmxvYlN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIFN0cmluZyBCbG9iU3Rv
cmFnZTo6YmxvYlBhdGhGb3JIYXNoKGNvbnN0IFNIQTE6OkRpZ2VzdCYgaGFzaCkgY29uc3QKIHsK
ICAgICBhdXRvIGhhc2hBc1N0cmluZyA9IFNIQTE6OmhleERpZ2VzdChoYXNoKTsKLSAgICByZXR1
cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGJsb2JEaXJlY3RvcnlQYXRo
KCksIFN0cmluZzo6ZnJvbVVURjgoaGFzaEFzU3RyaW5nKSk7CisgICAgcmV0dXJuIEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChibG9iRGlyZWN0b3J5UGF0aElzb2xhdGVkQ29w
eSgpLCBTdHJpbmc6OmZyb21VVEY4KGhhc2hBc1N0cmluZykpOwogfQogCiBCbG9iU3RvcmFnZTo6
QmxvYiBCbG9iU3RvcmFnZTo6YWRkKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgRGF0YSYgZGF0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlQmxvYlN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaAppbmRleCA5NjEzYWNjMWFkNThmNTIwYmY0NTNiZTQw
ZjE0NzJmMjBjZmZjNzdlLi41NzFkMWMyYmM2M2RiOGJhMGEyMGQxNmY3M2VjYzVkMjNjOWYxZmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUJsb2JTdG9yYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVCbG9iU3RvcmFnZS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN5bmNocm9uaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgU3RyaW5nIGJsb2JEaXJlY3Rv
cnlQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIGJsb2JEaXJlY3RvcnlQYXRoSXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CiAgICAgU3RyaW5nIGJsb2JQYXRoRm9ySGFzaChjb25zdCBTSEExOjpEaWdlc3Qm
KSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyBtX2Jsb2JEaXJlY3RvcnlQYXRoOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKaW5kZXggODA0YzQyOThjYzNlM2MyODE0ZmRiYzJiYmI2Y2JlZTU3NTg0YWU0
NC4uYTM5MjRlNjBmN2NlMmRlYmI2YzY4MWEyYWM2N2UyY2I1ZDc3NjY0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2UuY3BwCkBAIC0yNTEsMTcgKzI1MSwxNyBAQCBTdG9yYWdlOjp+U3RvcmFnZSgpCiAgICAg
QVNTRVJUKCFtX3Nocmlua0luUHJvZ3Jlc3MpOwogfQogCi1TdHJpbmcgU3RvcmFnZTo6YmFzZVBh
dGgoKSBjb25zdAorU3RyaW5nIFN0b3JhZ2U6OmJhc2VQYXRoSXNvbGF0ZWRDb3B5KCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9iYXNlUGF0aC5pc29sYXRlZENvcHkoKTsKIH0KIAogU3RyaW5nIFN0
b3JhZ2U6OnZlcnNpb25QYXRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVZlcnNpb25lZERp
cmVjdG9yeVBhdGgoYmFzZVBhdGgoKSk7CisgICAgcmV0dXJuIG1ha2VWZXJzaW9uZWREaXJlY3Rv
cnlQYXRoKGJhc2VQYXRoSXNvbGF0ZWRDb3B5KCkpOwogfQogCi1TdHJpbmcgU3RvcmFnZTo6cmVj
b3Jkc1BhdGgoKSBjb25zdAorU3RyaW5nIFN0b3JhZ2U6OnJlY29yZHNQYXRoSXNvbGF0ZWRDb3B5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9yZWNvcmRzUGF0aC5pc29sYXRlZENvcHkoKTsKIH0K
QEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKICAgICAgICAg
dW5zaWduZWQgYmxvYkNvdW50ID0gMDsKIAogICAgICAgICBTdHJpbmcgYW55VHlwZTsKLSAgICAg
ICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwgYW55VHlwZSwgWyZdKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgaGFzaFN0cmluZywgY29uc3QgU3RyaW5n
JiB0eXBlLCBib29sIGlzQmxvYiwgY29uc3QgU3RyaW5nJiByZWNvcmREaXJlY3RvcnlQYXRoKSB7
CisgICAgICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoSXNvbGF0ZWRDb3B5KCks
IGFueVR5cGUsIFsmXShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIGhhc2hT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCBpc0Jsb2IsIGNvbnN0IFN0cmluZyYgcmVj
b3JkRGlyZWN0b3J5UGF0aCkgewogICAgICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmREaXJlY3RvcnlQYXRoLCBmaWxlTmFt
ZSk7CiAKICAgICAgICAgICAgIEtleTo6SGFzaFR5cGUgaGFzaDsKQEAgLTMyMyw3ICszMjMsNyBA
QCB2b2lkIFN0b3JhZ2U6OnN5bmNocm9uaXplKCkKIAogICAgICAgICBtX2Jsb2JTdG9yYWdlLnN5
bmNocm9uaXplKCk7CiAKLSAgICAgICAgZGVsZXRlRW1wdHlSZWNvcmRzRGlyZWN0b3JpZXMocmVj
b3Jkc1BhdGgoKSk7CisgICAgICAgIGRlbGV0ZUVtcHR5UmVjb3Jkc0RpcmVjdG9yaWVzKHJlY29y
ZHNQYXRoSXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdl
LCAiKE5ldHdvcmtQcm9jZXNzKSBjYWNoZSBzeW5jaHJvbml6YXRpb24gY29tcGxldGVkIHNpemU9
JXp1IHJlY29yZENvdW50PSV1IiwgcmVjb3Jkc1NpemUsIHJlY29yZENvdW50KTsKIApAQCAtMzc0
LDcgKzM3NCw3IEBAIGJvb2wgU3RvcmFnZTo6bWF5Q29udGFpbkJsb2IoY29uc3QgS2V5JiBrZXkp
IGNvbnN0CiBTdHJpbmcgU3RvcmFnZTo6cmVjb3JkRGlyZWN0b3J5UGF0aEZvcktleShjb25zdCBL
ZXkmIGtleSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWtleS50eXBlKCkuaXNFbXB0eSgpKTsKLSAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChyZWNvcmRzUGF0aCgpLCBrZXkucGFydGl0aW9uSGFz
aEFzU3RyaW5nKCkpLCBrZXkudHlwZSgpKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChy
ZWNvcmRzUGF0aElzb2xhdGVkQ29weSgpLCBrZXkucGFydGl0aW9uSGFzaEFzU3RyaW5nKCkpLCBr
ZXkudHlwZSgpKTsKIH0KIAogU3RyaW5nIFN0b3JhZ2U6OnJlY29yZFBhdGhGb3JLZXkoY29uc3Qg
S2V5JiBrZXkpIGNvbnN0CkBAIC05MDMsNyArOTAzLDcgQEAgdm9pZCBTdG9yYWdlOjp0cmF2ZXJz
ZShjb25zdCBTdHJpbmcmIHR5cGUsIE9wdGlvblNldDxUcmF2ZXJzZUZsYWc+IGZsYWdzLCBUcmF2
ZXIKICAgICBtX2FjdGl2ZVRyYXZlcnNlT3BlcmF0aW9ucy5hZGQoV1RGTW92ZSh0cmF2ZXJzZU9w
ZXJhdGlvblB0cikpOwogCiAgICAgaW9RdWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCAmdHJhdmVyc2VP
cGVyYXRpb25dIHsKLSAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgoKSwg
dHJhdmVyc2VPcGVyYXRpb24udHlwZSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbl0oY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsK
KyAgICAgICAgdHJhdmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKSwg
dHJhdmVyc2VPcGVyYXRpb24udHlwZSwgW3RoaXMsICZ0cmF2ZXJzZU9wZXJhdGlvbl0oY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgpIHsK
ICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IHRyYXZlcnNlT3BlcmF0aW9uLnR5cGUgfHwgdHJh
dmVyc2VPcGVyYXRpb24udHlwZS5pc0VtcHR5KCkpOwogICAgICAgICAgICAgaWYgKGlzQmxvYikK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05OTgsNyArOTk4LDcgQEAgdm9pZCBTdG9yYWdl
OjpjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2VUaW1lLCBD
b21wbGV0aW9uSGEKICAgICBtX2FwcHJveGltYXRlUmVjb3Jkc1NpemUgPSAwOwogCiAgICAgaW9R
dWV1ZSgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1v
ZGlmaWVkU2luY2VUaW1lLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCB0eXBlID0gdHlwZS5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAg
IGF1dG8gcmVjb3Jkc1BhdGggPSB0aGlzLT5yZWNvcmRzUGF0aCgpOworICAgICAgICBhdXRvIHJl
Y29yZHNQYXRoID0gdGhpcy0+cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKICAgICAgICAgdHJh
dmVyc2VSZWNvcmRzRmlsZXMocmVjb3Jkc1BhdGgsIHR5cGUsIFttb2RpZmllZFNpbmNlVGltZV0o
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBh
dGgpIHsKICAgICAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQocmVjb3JkRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwogICAgICAgICAg
ICAgaWYgKG1vZGlmaWVkU2luY2VUaW1lID4gLVdhbGxUaW1lOjppbmZpbml0eSgpKSB7CkBAIC0x
MDc0LDcgKzEwNzQsNyBAQCB2b2lkIFN0b3JhZ2U6OnNocmluaygpCiAgICAgTE9HKE5ldHdvcmtD
YWNoZVN0b3JhZ2UsICIoTmV0d29ya1Byb2Nlc3MpIHNocmlua2luZyBjYWNoZSBhcHByb3hpbWF0
ZVNpemU9JXp1IGNhcGFjaXR5PSV6dSIsIGFwcHJveGltYXRlU2l6ZSgpLCBtX2NhcGFjaXR5KTsK
IAogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8gcmVjb3Jkc1BhdGgg
PSB0aGlzLT5yZWNvcmRzUGF0aCgpOworICAgICAgICBhdXRvIHJlY29yZHNQYXRoID0gdGhpcy0+
cmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKTsKICAgICAgICAgU3RyaW5nIGFueVR5cGU7CiAgICAg
ICAgIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKHJlY29yZHNQYXRoLCBhbnlUeXBlLCBbdGhpc10oY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiBoYXNoU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHR5cGUsIGJvb2wgaXNCbG9iLCBjb25zdCBTdHJpbmcmIHJlY29yZERpcmVjdG9yeVBhdGgp
IHsKICAgICAgICAgICAgIGlmIChpc0Jsb2IpCkBAIC0xMTA5LDcgKzExMDksNyBAQCB2b2lkIFN0
b3JhZ2U6OnNocmluaygpCiAKIHZvaWQgU3RvcmFnZTo6ZGVsZXRlT2xkVmVyc2lvbnMoKQogewot
ICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW2NhY2hlUGF0aCA9IGJhc2VQYXRoKCld
ICgpIG11dGFibGUgeworICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlzcGF0Y2goW2NhY2hlUGF0
aCA9IGJhc2VQYXRoSXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgewogICAgICAgICB0cmF2ZXJz
ZURpcmVjdG9yeShjYWNoZVBhdGgsIFsmY2FjaGVQYXRoXShjb25zdCBTdHJpbmcmIHN1YmRpck5h
bWUsIERpcmVjdG9yeUVudHJ5VHlwZSB0eXBlKSB7CiAgICAgICAgICAgICBpZiAodHlwZSAhPSBE
aXJlY3RvcnlFbnRyeVR5cGU6OkRpcmVjdG9yeSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3RvcmFnZS5oCmluZGV4IDYxN2IyYjNhNWZkZTJhNTc1YjE4ZmM3Y2I1N2NlZjFlMTgyNzJl
YTkuLjg0N2JlNTQ3OTQ0ZjUwMWFhNjNjNjA3NjRlYjkzNWVlYjk4NzQzYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5oCkBAIC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBsYXN0U3RhYmxlVmVyc2lvbiA9IDEzOwogI2VuZGlmCiAKLSAgICBTdHJpbmcgYmFzZVBh
dGgoKSBjb25zdDsKKyAgICBTdHJpbmcgYmFzZVBhdGhJc29sYXRlZENvcHkoKSBjb25zdDsKICAg
ICBTdHJpbmcgdmVyc2lvblBhdGgoKSBjb25zdDsKLSAgICBTdHJpbmcgcmVjb3Jkc1BhdGgoKSBj
b25zdDsKKyAgICBTdHJpbmcgcmVjb3Jkc1BhdGhJc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAg
IGNvbnN0IFNhbHQmIHNhbHQoKSBjb25zdCB7IHJldHVybiBtX3NhbHQ7IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>