<?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>213912</bug_id>
          
          <creation_ts>2020-07-02 17:52:38 -0700</creation_ts>
          <short_desc>Change the names of MIMETypeRegistry methods to comply with webkit naming style</short_desc>
          <delta_ts>2020-07-03 17:42:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213826</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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>berto</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668434</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 17:52:38 -0700</bug_when>
    <thetext>Change the name of the following methods:

MIMETypeRegistry::getMIMETypeForExtension
MIMETypeRegistry::getExtensionsForMIMEType
MIMETypeRegistry::getPreferredExtensionForMIMEType
MIMETypeRegistry::getMediaMIMETypeForExtension
MIMETypeRegistry::getMIMETypeForPath
MIMETypeRegistry::getNormalizedMIMEType

To be:

MIMETypeRegistry::mimeTypeForExtension
MIMETypeRegistry::extensionsForMIMEType
MIMETypeRegistry::preferredExtensionForMIMEType
MIMETypeRegistry::mediaMIMETypeForExtension
MIMETypeRegistry::mimeTypeForPath
MIMETypeRegistry::normalizedMIMEType</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668438</commentid>
    <comment_count>1</comment_count>
      <attachid>403424</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 18:00:47 -0700</bug_when>
    <thetext>Created attachment 403424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668445</commentid>
    <comment_count>2</comment_count>
      <attachid>403427</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 18:10:39 -0700</bug_when>
    <thetext>Created attachment 403427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668446</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-02 18:11:44 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668522</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-03 02:35:52 -0700</bug_when>
    <thetext>Committed r263890: &lt;https://trac.webkit.org/changeset/263890&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403427.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668523</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-03 02:36:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/65069686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668705</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-03 17:42:27 -0700</bug_when>
    <thetext>Committed r263923: &lt;https://trac.webkit.org/changeset/263923&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403424</attachid>
            <date>2020-07-02 18:00:47 -0700</date>
            <delta_ts>2020-07-02 18:10:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213912-20200702180047.patch</filename>
            <type>text/plain</type>
            <size>30253</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDIwLTA3LTAyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBuYW1lcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8gY29tcGx5IHdpdGggd2Via2l0
IG5hbWluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEzOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIHRoZSB2ZXJiICdnZXQnIGZyb20gdGhlIG5hbWUgb2Ygc29tZSBvZiB0aGUg
bWV0aG9kcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6aWYpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9y
VHlwZSk6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbToKKyAgICAg
ICAgKHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vbk1pbWVUeXBlc01h
cCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9y
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bm9y
bWFsaXplZE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFw
cGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVzRm9yRXh0ZW5z
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1J
TUVUeXBlRm9yUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lz
dHJ5OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L01JTUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJl
Z2lzdHJ5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1l
VHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpl
eHRlbnNpb25zRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3Ry
eTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VE
ZWNvZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6
OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vcGxh
eXN0YXRpb24vTUlNRVR5cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4
dGVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0
ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNG
b3JNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVm
ZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5z
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVu
c2lvbkZvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmV4
dGVuc2lvbnNGb3JNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9y
TUlNRVR5cGUpOiBEZWxldGVkLgorCiAyMDIwLTA3LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MDI3Nik6IG1lbnUgaXRl
bXMgaW4gZm9vdGVyIG9mIGh0dHBzOi8vc2Fsby5haSBhcmUgaW52aXNpYmxlIHVudGlsIHlvdSBo
b3ZlciBvciByZXNpemUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJj
aGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkFyY2hpdmVSZXNvdXJjZUZyb21OU0F0dHJpYnV0
ZWRTdHJpbmcubW0JKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRlZFN0cmluZy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEYXRhOihO
U0RhdGEgKilkCiAKICAgICBpZiAoW01JTUVUeXBlIGlzRXF1YWxUb1N0cmluZzpAImFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbSJdKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM2MDc0NDI5PiwgYW5kIGNhbiBiZSByZW1vdmVkIG9u
Y2UgdGhhdCBpcyBmaXhlZC4KLSAgICAgICAgYXV0byBtaW1lVHlwZUZyb21VUkwgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihVUkwucGF0aEV4dGVuc2lvbik7Cisg
ICAgICAgIGF1dG8gbWltZVR5cGVGcm9tVVJMID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVG
b3JFeHRlbnNpb24oVVJMLnBhdGhFeHRlbnNpb24pOwogICAgICAgICBpZiAoIW1pbWVUeXBlRnJv
bVVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBNSU1FVHlwZSA9IG1pbWVUeXBlRnJvbVVSTDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysr
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw3
ICsxMzYsNyBAQCB2b2lkIEZpbGU6OmNvbXB1dGVOYW1lQW5kQ29udGVudFR5cGUoY29uCiAgICAg
c2l6ZV90IGluZGV4ID0gZWZmZWN0aXZlTmFtZS5yZXZlcnNlRmluZCgnLicpOwogICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJmVm
ZmVjdGl2ZUNvbnRlbnRUeXBlLCAmZWZmZWN0aXZlTmFtZSwgaW5kZXhdIHsKLSAgICAgICAgICAg
IGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JF
eHRlbnNpb24oZWZmZWN0aXZlTmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSkuaXNvbGF0ZWRDb3B5
KCk7CisgICAgICAgICAgICBlZmZlY3RpdmVDb250ZW50VHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGVmZmVjdGl2ZU5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSkp
Lmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkocmV2aXNpb24gMjYzODMyKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3Niw3ICszNzYsNyBAQCBzdGF0aWMgUmVwbGFjZW1lbnRQbHVnaW4qIHBsdWdpblJlcGxhY2Vt
CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChleHRlbnNpb24uaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHR5cGUgPSBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAg
ICAgIHR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4
dGVuc2lvbik7CiAgICAgfQogCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCShyZXZpc2lvbiAy
NjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC03MSwxMSArNzEsMTEgQEAgTlNTdHJpbmcgKnN1Z2dlc3RlZEZp
bGVuYW1lV2l0aE1JTUVUeXBlKAogICAgIC8vIEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byB3b3Jy
eSBhYm91dCB0aGlzIGZvciB0aGUgaW1hZ2UgY2FzZQogICAgIC8vIElmIHRoZSB0eXBlIGlzIGtu
b3duLCBjaGVjayB0aGUgZXh0ZW5zaW9uIGFuZCBjb3JyZWN0IGl0IGlmIG5lY2Vzc2FyeS4KICAg
ICBpZiAobWltZVR5cGUgIT0gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgJiYgbWltZVR5cGUg
IT0gInRleHQvcGxhaW4iKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zID0gTUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKTsKIAogICAgICAgICBpZiAoZXh0ZW5zaW9ucy5pc0Vt
cHR5KCkgfHwgIWV4dGVuc2lvbnMuY29udGFpbnMoU3RyaW5nKGV4dGVuc2lvbikpKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgZXh0ZW5zaW9uIGRvZXNuJ3QgbWF0Y2ggdGhlIE1JTUUgdHlwZS4gQ29y
cmVjdCB0aGlzLgotICAgICAgICAgICAgTlNTdHJpbmcgKmNvcnJlY3RFeHRlbnNpb24gPSBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7
CisgICAgICAgICAgICBOU1N0cmluZyAqY29ycmVjdEV4dGVuc2lvbiA9IE1JTUVUeXBlUmVnaXN0
cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICAgICAgICAg
IGlmIChbY29ycmVjdEV4dGVuc2lvbiBsZW5ndGhdICE9IDApIHsKICAgICAgICAgICAgICAgICAv
LyBBcHBlbmQgdGhlIGNvcnJlY3QgZXh0ZW5zaW9uLgogICAgICAgICAgICAgICAgIGZpbGVuYW1l
ID0gW2ZpbGVuYW1lIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpjb3JyZWN0RXh0ZW5z
aW9uXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlw
ZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY5LDEwICszNjksMTAgQEAgc3RhdGlj
IGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8U3RyaQogICAgICAgICAgICAgQVNDSUlMaXRl
cmFsIHR5cGUgPSBwYWlyLnR5cGU7CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgZXh0ZW5zaW9u
ID0gcGFpci5leHRlbnNpb247CiAgICAgICAgICAgICBtYXAuZW5zdXJlKGV4dGVuc2lvbiwgW3R5
cGUsIGV4dGVuc2lvbl0gewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IHR5cGUgaW4gdGhlIHZl
Y3RvciBtdXN0IGFsd2F5cyBiZSB0aGUgb25lIGZyb20gZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24s
Ci0gICAgICAgICAgICAgICAgLy8gc28gd2UgY2FuIHVzZSB0aGUgbWFwIHdpdGhvdXQgYWxzbyBj
YWxsaW5nIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uIGVhY2ggdGltZS4KKyAgICAgICAgICAgICAg
ICAvLyBGaXJzdCB0eXBlIGluIHRoZSB2ZWN0b3IgbXVzdCBhbHdheXMgYmUgdGhlIG9uZSBmcm9t
IG1pbWVUeXBlRm9yRXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgIC8vIHNvIHdlIGNhbiB1c2Ug
dGhlIG1hcCB3aXRob3V0IGFsc28gY2FsbGluZyBtaW1lVHlwZUZvckV4dGVuc2lvbiBlYWNoIHRp
bWUuCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3lub255bXM7Ci0gICAgICAgICAg
ICAgICAgU3RyaW5nIHN5c3RlbVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZv
ckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICAgICAgICAgIFN0cmluZyBzeXN0ZW1UeXBl
ID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAg
ICAgICAgICAgICAgICBpZiAoIXN5c3RlbVR5cGUuaXNFbXB0eSgpICYmIHR5cGUgIT0gc3lzdGVt
VHlwZSkKICAgICAgICAgICAgICAgICAgICAgc3lub255bXMuYXBwZW5kKHN5c3RlbVR5cGUpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBzeW5vbnltczsKQEAgLTM5MSwzMSArMzkxLDIwIEBAIHN0
YXRpYyBjb25zdCBWZWN0b3I8U3RyaW5nPiogdHlwZXNGb3JDb20KICAgICByZXR1cm4gJm1hcEVu
dHJ5LT52YWx1ZTsKIH0KIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5
cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCitTdHJpbmcgTUlNRVR5cGVS
ZWdpc3RyeTo6bWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lv
bikKIHsKICAgICBhdXRvKiB2ZWN0b3IgPSB0eXBlc0ZvckNvbW1vbkV4dGVuc2lvbihleHRlbnNp
b24pOwogICAgIGlmICh2ZWN0b3IpCiAgICAgICAgIHJldHVybiAoKnZlY3RvcilbMF07Ci0gICAg
cmV0dXJuIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgcmV0dXJuIG1p
bWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiB9CiAKLVZlY3RvcjxTdHJpbmc+IE1JTUVU
eXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVzRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQotewotICAgIGF1dG8qIHZlY3RvciA9IHR5cGVzRm9yQ29tbW9uRXh0ZW5zaW9u
KGV4dGVuc2lvbik7Ci0gICAgaWYgKHZlY3RvcikKLSAgICAgICAgcmV0dXJuICp2ZWN0b3I7Ci0g
ICAgU3RyaW5nIHR5cGUgPSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwotICAg
IGlmICghdHlwZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHsgeyB0eXBlIH0gfTsKLSAgICBy
ZXR1cm4geyB9OwotfQotCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlw
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIHNpemVfdCBwb3MgPSBwYXRoLnJl
dmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgewogICAgICAgICBTdHJp
bmcgZXh0ZW5zaW9uID0gcGF0aC5zdWJzdHJpbmcocG9zICsgMSk7Ci0gICAgICAgIFN0cmluZyBy
ZXN1bHQgPSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICBTdHJp
bmcgcmVzdWx0ID0gbWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgaWYg
KHJlc3VsdC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAt
NDI2LDcgKzQxNSw3IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU0K
IHsKICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlwZSA9IGdldE5vcm1hbGl6ZWRNSU1FVHlwZShtaW1l
VHlwZSk7CisgICAgU3RyaW5nIG5vcm1hbGl6ZWRNSU1FVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
Om5vcm1hbGl6ZWRNSU1FVHlwZShtaW1lVHlwZSk7CiAgICAgcmV0dXJuIHN1cHBvcnRlZEltYWdl
TUlNRVR5cGVzKCkuY29udGFpbnMobm9ybWFsaXplZE1JTUVUeXBlKSB8fCBhZGRpdGlvbmFsU3Vw
cG9ydGVkSW1hZ2VNSU1FVHlwZXMoKS5jb250YWlucyhub3JtYWxpemVkTUlNRVR5cGUpOwogfQog
CkBAIC03MTQsMTQgKzcwMywxNCBAQCBib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3lzdGVtUHJl
dmlld01JCiAKIC8vIEZJWE1FOiBOb3Qgc3VyZSB3aHkgaXQgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBh
IGNyb3NzLXBsYXRmb3JtIGZ1bmN0aW9uIHdoZW4gb25seSBDVVJMIGhhcyB0aGUgY29uY2VwdAog
Ly8gb2YgYSAibm9ybWFsaXplZCIgTUlNRSB0eXBlLgotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6Om5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewogICAgIHJldHVybiBtaW1lVHlwZTsKIH0KIAogI2Vsc2UKIAotU3RyaW5nIE1JTUVUeXBl
UmVnaXN0cnk6OmdldE5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQor
U3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om5vcm1hbGl6ZWRNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQogewogICAgIHN0YXRpYyBjb25zdCBhdXRvIG1pbWVUeXBlQXNzb2NpYXRpb25N
YXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10gewogICAgICAgICBzdGF0aWMgY29uc3Qgc3RkOjpw
YWlyPEFTQ0lJTGl0ZXJhbCwgQVNDSUlMaXRlcmFsPiBtaW1lVHlwZUFzc29jaWF0aW9uc1tdID0g
ewpAQCAtNzkyLDcgKzc4MSw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxl
RXh0ZW4KICAgICBpZiAoZmlsZW5hbWUuaXNFbXB0eSgpIHx8IGZpbGVuYW1lLmNvbnRhaW5zKCcu
JykgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShtaW1lVHlwZSwgZGVmYXVsdE1JTUVUeXBlKCkp
KQogICAgICAgICByZXR1cm4gZmlsZW5hbWU7CiAKLSAgICBhdXRvIHByZWZlcnJlZEV4dGVuc2lv
biA9IGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICBhdXRv
IHByZWZlcnJlZEV4dGVuc2lvbiA9IHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVU
eXBlKTsKICAgICBpZiAocHJlZmVycmVkRXh0ZW5zaW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZpbGVuYW1lOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE1ICs1NCwxMiBAQCBwcml2
YXRlOgogCiBjbGFzcyBNSU1FVHlwZVJlZ2lzdHJ5IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9y
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBTdHJpbmcgbWVkaWFNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbik7CiAKLSAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNob3Vs
ZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZXMgb2YgdGhlc2UgZnVuY3Rpb25z
LgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRFeHRlbnNpb25z
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBnZXRNZWRpYU1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKLSAgICBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gZ2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pOwotCi0gICAgc3RhdGljIFN0cmluZyBnZXRNSU1FVHlwZUZvclBhdGgoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgpOwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNSU1FVHlwZVJlZ2lzdHJ5
VGhyZWFkR2xvYmFsRGF0YT4gY3JlYXRlTUlNRVR5cGVSZWdpc3RyeVRocmVhZEdsb2JhbERhdGEo
KTsKIApAQCAtMTQwLDkgKzEzNyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgY29uc3QgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHVuc3Vw
cG9ydGVkVGV4dE1JTUVUeXBlcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgc3lzdGVtUHJldmlld01J
TUVUeXBlcygpOwogCi0gICAgLy8gRklYTUU6IFdlYktpdCBjb2Rpbmcgc3R5bGUgc2F5cyB3ZSBz
aG91bGQgbm90IGhhdmUgdGhlIHdvcmQgImdldCIgaW4gdGhlIG5hbWUgb2YgdGhpcyBmdW5jdGlv
bi4KICAgICAvLyBGSVhNRTogVW5jbGVhciB3aGF0IHRoZSBjb25jZXB0IG9mIGEgbm9ybWFsaXpl
ZCBNSU1FIHR5cGUgaXM7IGN1cnJlbnRseSBpdCdzIGEgcGxhdGZvcm0tc3BlY2lmaWMgbm90aW9u
LgotICAgIHN0YXRpYyBTdHJpbmcgZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYp
OworICAgIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBhcHBlbmRGaWxlRXh0ZW5zaW9uSWZO
ZWNlc3NhcnkoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1F
VHlwZVJlZ2lzdHJ5Q29jb2EubW0JKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtODgsMTkgKzg4LDE5IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zRm9yV2ls
ZGMKICAgICByZXR1cm4gZXh0ZW5zaW9uczsKIH0KIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQorU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uKQogewogICAgIHJldHVybiBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBw
aW5nc10gTUlNRVR5cGVGb3JFeHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uXTsKIH0KIAot
VmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSkKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmV4
dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUu
ZW5kc1dpdGgoJyonKSkKICAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVU
eXBlKHR5cGUpOwogICAgIHJldHVybiBtYWtlVmVjdG9yPFN0cmluZz4oW1tOU1VSTEZpbGVUeXBl
TWFwcGluZ3Mgc2hhcmVkTWFwcGluZ3NdIGV4dGVuc2lvbnNGb3JNSU1FVHlwZTp0eXBlXSk7CiB9
CiAKLVN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVy
cmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIC8vIFN5
c3RlbSBQcmV2aWV3cyBhY2NlcHQgc29tZSBub24tc3RhbmRhcmQgTUlNRVR5cGVzLCBzbyB3ZSBj
YW4ndCByZWx5IG9uCiAgICAgLy8gdGhlIGZpbGUgdHlwZSBtYXBwaW5ncy4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGMKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0
UGF0aENvbXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwogICAgICAgICAgICAgaWYgKHBvcyAhPSBu
b3RGb3VuZCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb24gPSBsYXN0UGF0aENv
bXBvbmVudC5zdWJzdHJpbmcocG9zICsgMSkudG9TdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBT
dHJpbmcgbWVkaWFUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZUZvckV4
dGVuc2lvbihleHRlbnNpb24pOworICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYVR5cGUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiAg
ICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZSB7IFdURk1vdmUobWVkaWFUeXBlKSB9
OwogICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4
dGVuc2lvbiA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9JbWFnZURlY29kZXJBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVj
b2RlckFWRk9iakMubW0JKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTUxNiw3ICs1MTYsNyBAQCBTdHJpbmcgSW1hZ2VEZWNvZGVyQVZGT2Jq
Qzo6dXRpKCkgY29uc3QKIAogU3RyaW5nIEltYWdlRGVjb2RlckFWRk9iakM6OmZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVy
cmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7CisgICAgcmV0dXJuIE1JTUVUeXBl
UmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1fbWltZVR5cGUpOwogfQog
CiBJbnRTaXplIEltYWdlRGVjb2RlckFWRk9iakM6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbWFnZURlY29kZXJHU3Ry
ZWFtZXIuaAkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fc2FtcGxlRGF0YS5zaXplKCk7IH0KICAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIHV0aSgpIGNvbnN0IGZp
bmFsOwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1fbWlt
ZVR5cGUpOyB9CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9t
aW1lVHlwZSk7IH0KICAgICBPcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQogCiAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHNpemUoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcGxheXN0YXRpb24vTUlNRVR5cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5
UGxheVN0YXRpb24uY3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHN0YXRpYyBjb25zdCBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8VHlwZUUKICAgICByZXR1cm4gcGxhdGZvcm1NZWRpYVR5cGVzOwogfQogCi1TdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pCiB7CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHBsYXRmb3Jt
TWVkaWFUeXBlcygpKSB7CiAgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGV4dGVu
c2lvbiwgZW50cnkuZXh0ZW5zaW9uLmNoYXJhY3RlcnMoKSkpCkBAIC03MSw3ICs3MSw3IEBAIGJv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWcKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLVN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JN
SU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IHBsYXRmb3JtTWVkaWFUeXBlcygpKSB7CiAgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBlbnRyeS50eXBlLmNoYXJhY3Rl
cnMoKSkpCkBAIC04MCw3ICs4MCw3IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVm
ZXJyZWRFeHQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotVmVjdG9yPFN0cmluZz4g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYp
CitWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAg
IHJldHVybiB7IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyBtaW1lVHlwZUZvckV4dGVuc2lvbihjb25z
dAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Omdl
dFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1N0cmlu
ZyBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgU3RyaW5nIHBhdGggPSAiTUlNRVxcRGF0YWJhc2VcXENvbnRl
bnQgVHlwZVxcIiArIHR5cGU7CiAgICAgV0NIQVIgZXh0U3RyW01BWF9QQVRIXTsKQEAgLTYzLDcg
KzYzLDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBl
Rm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6
Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBib29sIE1JTUVUeXBlUmVnaXN0
cnk6OmlzQXBwbGljYXRpb25QbHVnCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1WZWN0b3I8U3Ry
aW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3Ry
aW5nJikKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1F
VHlwZShjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7
CiAgICAgcmV0dXJuIHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1F
VHlwZVJlZ2lzdHJ5WGRnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhkZy5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBpZiAoZXh0ZW5zaW9uLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNTEsNyArNTEsNyBAQCBib29sIE1JTUVUeXBl
UmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSkKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRF
eHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIGlmICht
aW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTY2LDcgKzY2
LDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dAogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KIAotVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpCitWZWN0b3I8U3RyaW5nPiBNSU1F
VHlwZVJlZ2lzdHJ5OjpleHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKIHsKICAg
ICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAgIHJldHVybiB7IH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjYzODc3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAyMC0wNy0wMiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIENoYW5nZSB0aGUgbmFtZXMgb2Yg
TUlNRVR5cGVSZWdpc3RyeSBtZXRob2RzIHRvIGNvbXBseSB3aXRoIHdlYmtpdCBuYW1pbmcgc3R5
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzkx
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6Om1p
bWVUeXBlSW5mZXJyZWRGcm9tRmlsZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OkF0dGFjaG1l
bnQ6OnNldEZpbGVXcmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09w
ZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6ZmlsZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9T
dG9yZTo6ZmluZFBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVV
cGxvYWRQYW5lbC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgcHJlc2VudFdpdGhQ
YXJhbWV0ZXJzOnJlc3VsdExpc3RlbmVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUpOgorCiAyMDIwLTA3LTAyICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEN1c3RvbSBV
Ukwgc2NoZW1lcyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhcHAtYm91bmQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2Nv
YS5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBA
QCBuYW1lc3BhY2UgQVBJIHsKIHN0YXRpYyBXVEY6OlN0cmluZyBtaW1lVHlwZUluZmVycmVkRnJv
bUZpbGVFeHRlbnNpb24oY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQogewogICAg
IGlmIChOU1N0cmluZyAqZmlsZUV4dGVuc2lvbiA9IFsoTlNTdHJpbmcgKilhdHRhY2htZW50LmZp
bGVOYW1lKCkgcGF0aEV4dGVuc2lvbl0pCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmaWxlRXh0ZW5zaW9uKTsKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9u
KGZpbGVFeHRlbnNpb24pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBA
QCB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyQW5kVXBkYXRlCiAgICAgICAgICAgICBj
b250ZW50VHlwZSA9IChOU1N0cmluZyAqKWtVVFR5cGVEaXJlY3Rvcnk7CiAgICAgICAgIGVsc2Ug
aWYgKGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlKSB7CiAgICAgICAgICAgICBpZiAoTlNTdHJpbmcg
KnBhdGhFeHRlbnNpb24gPSAoZmlsZVdyYXBwZXIuZmlsZW5hbWUubGVuZ3RoID8gZmlsZVdyYXBw
ZXIuZmlsZW5hbWUgOiBmaWxlV3JhcHBlci5wcmVmZXJyZWRGaWxlbmFtZSkucGF0aEV4dGVuc2lv
bikKLSAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhdGhFeHRlbnNpb24pOworICAgICAgICAgICAg
ICAgIGNvbnRlbnRUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24ocGF0aEV4dGVuc2lvbik7CiAgICAgICAgICAgICBpZiAoIWNvbnRlbnRUeXBlLmxl
bmd0aCkKICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IChOU1N0cmluZyAqKWtVVFR5cGVE
YXRhOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0JKHJldmlzaW9uIDI2Mzgz
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFt
ZXRlcnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dAogCiAgICAgW2FjY2VwdGVkTUlNRVR5cGVzIGVudW1l
cmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRlZ2VyIGlu
ZGV4LCBCT09MKiBzdG9wKSB7CiAgICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29udGFpbnNTdHJp
bmc6QCIvIl0pOwotICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6OkFycmF5OjpjcmVhdGVT
dHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlN
RVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQVBJOjpBcnJheTo6
Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKG1pbWVUeXBlKSk7CiAgICAgICAgIFthbGxvd2VkRmlsZUV4dGVuc2lvbnMgYWRk
T2JqZWN0c0Zyb21BcnJheTp3cmFwcGVyKGV4dGVuc2lvbnMpXTsKICAgICB9XTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NjEsNyArODYxLDcgQEAgc3RhdGljIGJvb2wgZmlsZUNhbkJlQWNjZXB0ZWRGb3JV
cGxvYWQoYwogICAgIGlmIChhbGxvd2VkRmlsZUV4dGVuc2lvbnMuY29udGFpbnMoZXh0ZW5zaW9u
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBTdHJpbmcgbWFwcGVkTUlNRVR5cGUgPSBX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRlbnNp
b24pLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CisgICAgU3RyaW5nIG1hcHBlZE1JTUVUeXBl
ID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5z
aW9uKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIGlmIChtYXBwZWRNSU1FVHlwZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5mb1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luSW5m
b1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkwLDcgKzE5MCw3IEBAIFBsdWdpbk1vZHVs
ZUluZm8gUGx1Z2luSW5mb1N0b3JlOjpmaW5kUGwKICAgICAgICAgICAgIHJldHVybiBwbHVnaW47
CiAgICAgICAgIAogICAgICAgICAvLyBGaW5hbGx5LCB0cnkgdG8gZ2V0IHRoZSBNSU1FIHR5cGUg
ZnJvbSB0aGUgZXh0ZW5zaW9uIGluIGEgcGxhdGZvcm0gc3BlY2lmaWMgbWFubmVyIGFuZCB1c2Ug
dGhhdC4KLSAgICAgICAgU3RyaW5nIGV4dGVuc2lvbk1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3Ry
eTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIGV4
dGVuc2lvbk1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24o
ZXh0ZW5zaW9uKTsKICAgICAgICAgaWYgKCFleHRlbnNpb25NaW1lVHlwZS5pc051bGwoKSkgewog
ICAgICAgICAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4gPSBmaW5kUGx1Z2luRm9yTUlNRVR5
cGUoZXh0ZW5zaW9uTWltZVR5cGUsIGFsbG93ZWRQbHVnaW5UeXBlcyk7CiAgICAgICAgICAgICBp
ZiAoIXBsdWdpbi5wYXRoLmlzTnVsbCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCShyZXZpc2lvbiAy
NjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2Fk
UGFuZWwubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCAtICh2b2lkKXByZXNl
bnRXaXRoUGFyYW1ldGVyczooQVBJOjpPcGVuCiAKICAgICBSZWY8QVBJOjpBcnJheT4gYWNjZXB0
RmlsZUV4dGVuc2lvbnMgPSBwYXJhbWV0ZXJzLT5hY2NlcHRGaWxlRXh0ZW5zaW9ucygpOwogICAg
IGZvciAoYXV0byBleHRlbnNpb24gOiBhY2NlcHRGaWxlRXh0ZW5zaW9ucy0+ZWxlbWVudHNPZlR5
cGU8QVBJOjpTdHJpbmc+KCkpIHsKLSAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gV2ViQ29yZTo6
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uLT5zdHJp
bmdWaWV3KCkuc3Vic3RyaW5nKDEpLnRvU3RyaW5nKCkpOworICAgICAgICBTdHJpbmcgbWltZVR5
cGUgPSBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24tPnN0cmluZ1ZpZXcoKS5zdWJzdHJpbmcoMSkudG9TdHJpbmcoKSk7CiAgICAgICAgIGlm
ICghbWltZVR5cGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgW21pbWVUeXBlcyBhZGRPYmplY3Q6
bWltZVR5cGVdOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY3Nyw3ICsx
Njc3LDcgQEAgT2JqZWN0Q29udGVudFR5cGUgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OgogICAgICAg
ICBhdXRvIGV4dGVuc2lvbiA9IHBhdGguc3Vic3RyaW5nKGRvdFBvc2l0aW9uICsgMSkuY29udmVy
dFRvQVNDSUlMb3dlcmNhc2UoKTsKIAogICAgICAgICAvLyBUcnkgdG8gZ3Vlc3MgdGhlIE1JTUUg
dHlwZSBmcm9tIHRoZSBleHRlbnNpb24uCi0gICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAgICAgbWltZVR5
cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwog
ICAgICAgICBpZiAobWltZVR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBDaGVjayBp
ZiB0aGVyZSdzIGEgcGx1Zy1pbiBhcm91bmQgdGhhdCBjYW4gaGFuZGxlIHRoZSBleHRlbnNpb24u
CiAgICAgICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNl
L1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMjAtMDctMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNv
bT4KKworICAgICAgICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVnaXN0cnkgbWV0aG9k
cyB0byBjb21wbHkgd2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM5MTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk1JTUVUeXBl
UmVnaXN0cnkubW06CisgICAgICAgICgrW1dlYk1JTUVUeXBlUmVnaXN0cnkgbWltZVR5cGVGb3JF
eHRlbnNpb246XSk6CisgICAgICAgICgrW1dlYk1JTUVUeXBlUmVnaXN0cnkgcHJlZmVycmVkRXh0
ZW5zaW9uRm9yTUlNRVR5cGU6XSk6CisKIDIwMjAtMDUtMTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgZW51bSBzZXJpYWxpemF0aW9u
IGluc3RlYWQgb2YgY2FzdGluZyB0by9mcm9tIHVpbnQzMl90CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYk1JTUVUeXBl
UmVnaXN0cnkubW0JKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9z
L1dlYkNvcmVTdXBwb3J0L1dlYk1JTUVUeXBlUmVnaXN0cnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDEyICszNSwxMiBAQCB1c2luZyBXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OwogCiArIChO
U1N0cmluZyAqKW1pbWVUeXBlRm9yRXh0ZW5zaW9uOihOU1N0cmluZyAqKWV4dGVuc2lvbgogewot
ICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihleHRl
bnNpb24pOworICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lv
bihleHRlbnNpb24pOwogfQogCiArIChOU1N0cmluZyAqKXByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlOihOU1N0cmluZyAqKW1pbWVUeXBlCiB7Ci0gICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0
cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKKyAgICByZXR1
cm4gTUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5
cGUpOwogfQogCiArIChCT09MKWlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZTooTlNTdHJpbmcgKilt
aW1lVHlwZQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjYzODMy
KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjAtMDctMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KKworICAgICAgICBDaGFuZ2UgdGhlIG5hbWVzIG9mIE1JTUVUeXBlUmVn
aXN0cnkgbWV0aG9kcyB0byBjb21wbHkgd2l0aCB3ZWJraXQgbmFtaW5nIHN0eWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM5MTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViVmlldzo6TUlNRVR5cGVGb3JFeHRlbnNpb24pOgorCiAyMDIwLTA3LTAxICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgQWxs
b3cgdGhlIEZpbGUgb2JqZWN0IHRvIGJlIGNyZWF0ZWQgd2l0aCBhIHJlcGxhY2VtZW50IGZpbGUK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyNjM4MzIpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTcwNyw3ICs1NzA3LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpNSU1FVHlwZUZvckV4dGVuc2lvbihf
SQogICAgIGlmICghbWltZVR5cGUpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICAq
bWltZVR5cGUgPSBCU3RyaW5nKE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5z
aW9uKHRvU3RyaW5nKGV4dGVuc2lvbikpKS5yZWxlYXNlKCk7CisgICAgKm1pbWVUeXBlID0gQlN0
cmluZyhNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbih0b1N0cmluZyhleHRl
bnNpb24pKSkucmVsZWFzZSgpOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403427</attachid>
            <date>2020-07-02 18:10:39 -0700</date>
            <delta_ts>2020-07-03 02:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213912-20200702181038.patch</filename>
            <type>text/plain</type>
            <size>33863</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA3LTAyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHRo
ZSBuYW1lcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8gY29tcGx5IHdpdGggd2Via2l0
IG5hbWluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEzOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIHRoZSB2ZXJiICdnZXQnIGZyb20gdGhlIG5hbWUgb2Ygc29tZSBvZiB0aGUg
bWV0aG9kcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5LgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9X
ZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6aWYpOgorICAgICAgICAqIGZpbGVhcGkvRmlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxlOjpjb21wdXRlTmFtZUFuZENvbnRlbnRUeXBlKToKKyAgICAgICAgKiBodG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsdWdpblJlcGxhY2VtZW50Rm9y
VHlwZSk6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbToKKyAgICAg
ICAgKHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vbk1pbWVUeXBlc01h
cCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9y
RXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEltYWdlTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bm9y
bWFsaXplZE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmFw
cGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVzRm9yRXh0ZW5z
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgRGVsZXRlIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgaXMg
bm90IHVzZWQuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVU
eXBlRm9yUGF0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5
OjpnZXROb3JtYWxpemVkTUlNRVR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lz
dHJ5Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlw
ZUZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpleHRl
bnNpb25zRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6
cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4
dGVuc2lvbkZvck1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2RlckFWRk9iakM6OmZp
bGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpp
bnZva2VEaWRSZWNlaXZlUmVzcG9uc2VGb3JGaWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9wbGF5
c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0
ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Omdl
dFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRl
bnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zv
ck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZl
cnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0veGRnL01JTUVUeXBlUmVnaXN0cnlYZGcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5z
aW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1J
TUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JN
SU1FVHlwZSk6IERlbGV0ZWQuCisKIDIwMjAtMDctMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjYwMjc2KTogbWVudSBpdGVt
cyBpbiBmb290ZXIgb2YgaHR0cHM6Ly9zYWxvLmFpIGFyZSBpbnZpc2libGUgdW50aWwgeW91IGhv
dmVyIG9yIHJlc2l6ZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJBcmNo
aXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQXJjaGl2ZVJlc291cmNlRnJvbU5TQXR0cmlidXRl
ZFN0cmluZy5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJBcmNoaXZlUmVzb3VyY2VGcm9tTlNBdHRyaWJ1dGVkU3RyaW5nLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERhdGE6KE5T
RGF0YSAqKWQKIAogICAgIGlmIChbTUlNRVR5cGUgaXNFcXVhbFRvU3RyaW5nOkAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIl0pIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJv
dW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMzYwNzQ0Mjk+LCBhbmQgY2FuIGJlIHJlbW92ZWQgb25j
ZSB0aGF0IGlzIGZpeGVkLgotICAgICAgICBhdXRvIG1pbWVUeXBlRnJvbVVSTCA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKFVSTC5wYXRoRXh0ZW5zaW9uKTsKKyAg
ICAgICAgYXV0byBtaW1lVHlwZUZyb21VUkwgPSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZv
ckV4dGVuc2lvbihVUkwucGF0aEV4dGVuc2lvbik7CiAgICAgICAgIGlmICghbWltZVR5cGVGcm9t
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIE1JTUVUeXBlID0gbWltZVR5cGVGcm9tVVJMOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkocmV2aXNpb24gMjYzODMyKQorKysg
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcg
KzEzNiw3IEBAIHZvaWQgRmlsZTo6Y29tcHV0ZU5hbWVBbmRDb250ZW50VHlwZShjb24KICAgICBz
aXplX3QgaW5kZXggPSBlZmZlY3RpdmVOYW1lLnJldmVyc2VGaW5kKCcuJyk7CiAgICAgaWYgKGlu
ZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmZWZm
ZWN0aXZlQ29udGVudFR5cGUsICZlZmZlY3RpdmVOYW1lLCBpbmRleF0gewotICAgICAgICAgICAg
ZWZmZWN0aXZlQ29udGVudFR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4
dGVuc2lvbihlZmZlY3RpdmVOYW1lLnN1YnN0cmluZyhpbmRleCArIDEpKS5pc29sYXRlZENvcHko
KTsKKyAgICAgICAgICAgIGVmZmVjdGl2ZUNvbnRlbnRUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
bWltZVR5cGVGb3JFeHRlbnNpb24oZWZmZWN0aXZlTmFtZS5zdWJzdHJpbmcoaW5kZXggKyAxKSku
aXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgIH0pOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzc2LDcgKzM3Niw3IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW0K
ICAgICBpZiAodHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGV4dGVuc2lvbi5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgdHlwZSA9IE1JTUVUeXBl
UmVnaXN0cnk6OmdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICAg
ICAgdHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0
ZW5zaW9uKTsKICAgICB9CiAKICAgICBpZiAodHlwZS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvbWFjL0xvYWRlck5TVVJMRXh0cmFzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0JKHJldmlzaW9uIDI2
MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTcxLDExICs3MSwxMSBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmls
ZW5hbWVXaXRoTUlNRVR5cGUoCiAgICAgLy8gSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIHdvcnJ5
IGFib3V0IHRoaXMgZm9yIHRoZSBpbWFnZSBjYXNlCiAgICAgLy8gSWYgdGhlIHR5cGUgaXMga25v
d24sIGNoZWNrIHRoZSBleHRlbnNpb24gYW5kIGNvcnJlY3QgaXQgaWYgbmVjZXNzYXJ5LgogICAg
IGlmIChtaW1lVHlwZSAhPSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiAmJiBtaW1lVHlwZSAh
PSAidGV4dC9wbGFpbiIpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5zaW9ucyA9IE1J
TUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnMgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpleHRlbnNp
b25zRm9yTUlNRVR5cGUobWltZVR5cGUpOwogCiAgICAgICAgIGlmIChleHRlbnNpb25zLmlzRW1w
dHkoKSB8fCAhZXh0ZW5zaW9ucy5jb250YWlucyhTdHJpbmcoZXh0ZW5zaW9uKSkpIHsKICAgICAg
ICAgICAgIC8vIFRoZSBleHRlbnNpb24gZG9lc24ndCBtYXRjaCB0aGUgTUlNRSB0eXBlLiBDb3Jy
ZWN0IHRoaXMuCi0gICAgICAgICAgICBOU1N0cmluZyAqY29ycmVjdEV4dGVuc2lvbiA9IE1JTUVU
eXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlKTsK
KyAgICAgICAgICAgIE5TU3RyaW5nICpjb3JyZWN0RXh0ZW5zaW9uID0gTUlNRVR5cGVSZWdpc3Ry
eTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOwogICAgICAgICAgICAg
aWYgKFtjb3JyZWN0RXh0ZW5zaW9uIGxlbmd0aF0gIT0gMCkgewogICAgICAgICAgICAgICAgIC8v
IEFwcGVuZCB0aGUgY29ycmVjdCBleHRlbnNpb24uCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUg
PSBbZmlsZW5hbWUgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOmNvcnJlY3RFeHRlbnNp
b25dOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5j
cHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBl
UmVnaXN0cnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjksMTAgKzM2OSwxMCBAQCBzdGF0aWMg
Y29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpCiAgICAgICAgICAgICBBU0NJSUxpdGVy
YWwgdHlwZSA9IHBhaXIudHlwZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24g
PSBwYWlyLmV4dGVuc2lvbjsKICAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlw
ZSwgZXh0ZW5zaW9uXSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlyc3QgdHlwZSBpbiB0aGUgdmVj
dG9yIG11c3QgYWx3YXlzIGJlIHRoZSBvbmUgZnJvbSBnZXRNSU1FVHlwZUZvckV4dGVuc2lvbiwK
LSAgICAgICAgICAgICAgICAvLyBzbyB3ZSBjYW4gdXNlIHRoZSBtYXAgd2l0aG91dCBhbHNvIGNh
bGxpbmcgZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24gZWFjaCB0aW1lLgorICAgICAgICAgICAgICAg
IC8vIEZpcnN0IHR5cGUgaW4gdGhlIHZlY3RvciBtdXN0IGFsd2F5cyBiZSB0aGUgb25lIGZyb20g
bWltZVR5cGVGb3JFeHRlbnNpb24sCisgICAgICAgICAgICAgICAgLy8gc28gd2UgY2FuIHVzZSB0
aGUgbWFwIHdpdGhvdXQgYWxzbyBjYWxsaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uIGVhY2ggdGlt
ZS4KICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBzeW5vbnltczsKLSAgICAgICAgICAg
ICAgICBTdHJpbmcgc3lzdGVtVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9y
RXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN5c3RlbVR5cGUg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwogICAg
ICAgICAgICAgICAgIGlmICghc3lzdGVtVHlwZS5pc0VtcHR5KCkgJiYgdHlwZSAhPSBzeXN0ZW1U
eXBlKQogICAgICAgICAgICAgICAgICAgICBzeW5vbnltcy5hcHBlbmQoc3lzdGVtVHlwZSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN5bm9ueW1zOwpAQCAtMzkxLDMxICszOTEsMjAgQEAgc3Rh
dGljIGNvbnN0IFZlY3RvcjxTdHJpbmc+KiB0eXBlc0ZvckNvbQogICAgIHJldHVybiAmbWFwRW50
cnktPnZhbHVlOwogfQogCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlw
ZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK1N0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjptZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
KQogewogICAgIGF1dG8qIHZlY3RvciA9IHR5cGVzRm9yQ29tbW9uRXh0ZW5zaW9uKGV4dGVuc2lv
bik7CiAgICAgaWYgKHZlY3RvcikKICAgICAgICAgcmV0dXJuICgqdmVjdG9yKVswXTsKLSAgICBy
ZXR1cm4gZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gbWlt
ZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKIH0KIAotVmVjdG9yPFN0cmluZz4gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pCi17Ci0gICAgYXV0byogdmVjdG9yID0gdHlwZXNGb3JDb21tb25FeHRlbnNpb24o
ZXh0ZW5zaW9uKTsKLSAgICBpZiAodmVjdG9yKQotICAgICAgICByZXR1cm4gKnZlY3RvcjsKLSAg
ICBTdHJpbmcgdHlwZSA9IGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7Ci0gICAg
aWYgKCF0eXBlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4geyB7IHR5cGUgfSB9OwotICAgIHJl
dHVybiB7IH07Ci19Ci0KLVN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBh
dGgoY29uc3QgU3RyaW5nJiBwYXRoKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgc2l6ZV90IHBvcyA9IHBhdGgucmV2
ZXJzZUZpbmQoJy4nKTsKICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIFN0cmlu
ZyBleHRlbnNpb24gPSBwYXRoLnN1YnN0cmluZyhwb3MgKyAxKTsKLSAgICAgICAgU3RyaW5nIHJl
c3VsdCA9IGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgIFN0cmlu
ZyByZXN1bHQgPSBtaW1lVHlwZUZvckV4dGVuc2lvbihleHRlbnNpb24pOwogICAgICAgICBpZiAo
cmVzdWx0Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00
MjYsNyArNDE1LDcgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTQog
ewogICAgIGlmIChtaW1lVHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBTdHJpbmcgbm9ybWFsaXplZE1JTUVUeXBlID0gZ2V0Tm9ybWFsaXplZE1JTUVUeXBlKG1pbWVU
eXBlKTsKKyAgICBTdHJpbmcgbm9ybWFsaXplZE1JTUVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
bm9ybWFsaXplZE1JTUVUeXBlKG1pbWVUeXBlKTsKICAgICByZXR1cm4gc3VwcG9ydGVkSW1hZ2VN
SU1FVHlwZXMoKS5jb250YWlucyhub3JtYWxpemVkTUlNRVR5cGUpIHx8IGFkZGl0aW9uYWxTdXBw
b3J0ZWRJbWFnZU1JTUVUeXBlcygpLmNvbnRhaW5zKG5vcm1hbGl6ZWRNSU1FVHlwZSk7CiB9CiAK
QEAgLTcxNCwxNCArNzAzLDE0IEBAIGJvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNTeXN0ZW1QcmV2
aWV3TUkKIAogLy8gRklYTUU6IE5vdCBzdXJlIHdoeSBpdCBtYWtlcyBzZW5zZSB0byBoYXZlIGEg
Y3Jvc3MtcGxhdGZvcm0gZnVuY3Rpb24gd2hlbiBvbmx5IENVUkwgaGFzIHRoZSBjb25jZXB0CiAv
LyBvZiBhICJub3JtYWxpemVkIiBNSU1FIHR5cGUuCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitTdHJpbmcgTUlN
RVR5cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7CiAgICAgcmV0dXJuIG1pbWVUeXBlOwogfQogCiAjZWxzZQogCi1TdHJpbmcgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0Tm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bm9ybWFsaXplZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IGF1dG8gbWltZVR5cGVBc3NvY2lhdGlvbk1h
cCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OnBh
aXI8QVNDSUlMaXRlcmFsLCBBU0NJSUxpdGVyYWw+IG1pbWVUeXBlQXNzb2NpYXRpb25zW10gPSB7
CkBAIC03OTIsNyArNzgxLDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVF
eHRlbgogICAgIGlmIChmaWxlbmFtZS5pc0VtcHR5KCkgfHwgZmlsZW5hbWUuY29udGFpbnMoJy4n
KSB8fCBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKG1pbWVUeXBlLCBkZWZhdWx0TUlNRVR5cGUoKSkp
CiAgICAgICAgIHJldHVybiBmaWxlbmFtZTsKIAotICAgIGF1dG8gcHJlZmVycmVkRXh0ZW5zaW9u
ID0gZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUpOworICAgIGF1dG8g
cHJlZmVycmVkRXh0ZW5zaW9uID0gcHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5
cGUpOwogICAgIGlmIChwcmVmZXJyZWRFeHRlbnNpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmlsZW5hbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJl
Z2lzdHJ5LmgJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01J
TUVUeXBlUmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTUgKzU0LDEyIEBAIHByaXZh
dGU6CiAKIGNsYXNzIE1JTUVUeXBlUmVnaXN0cnkgewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZ2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFN0cmluZyBtZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKTsKIAotICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxk
IG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lvbnNG
b3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBTdHJpbmcgZ2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldE1lZGlhTUlNRVR5cGVG
b3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwotICAgIHN0YXRpYyBWZWN0b3I8
U3RyaW5nPiBnZXRNZWRpYU1JTUVUeXBlc0ZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbik7Ci0KLSAgICBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yUGF0aChjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIHN0YXRpYyBTdHJpbmcgbWltZVR5cGVGb3JQYXRoKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPE1JTUVUeXBlUmVnaXN0cnlU
aHJlYWRHbG9iYWxEYXRhPiBjcmVhdGVNSU1FVHlwZVJlZ2lzdHJ5VGhyZWFkR2xvYmFsRGF0YSgp
OwogCkBAIC0xNDAsOSArMTM3LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBjb25zdCBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdW5zdXBw
b3J0ZWRUZXh0TUlNRVR5cGVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IEhh
c2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiBzeXN0ZW1QcmV2aWV3TUlN
RVR5cGVzKCk7CiAKLSAgICAvLyBGSVhNRTogV2ViS2l0IGNvZGluZyBzdHlsZSBzYXlzIHdlIHNo
b3VsZCBub3QgaGF2ZSB0aGUgd29yZCAiZ2V0IiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9u
LgogICAgIC8vIEZJWE1FOiBVbmNsZWFyIHdoYXQgdGhlIGNvbmNlcHQgb2YgYSBub3JtYWxpemVk
IE1JTUUgdHlwZSBpczsgY3VycmVudGx5IGl0J3MgYSBwbGF0Zm9ybS1zcGVjaWZpYyBub3Rpb24u
Ci0gICAgc3RhdGljIFN0cmluZyBnZXROb3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIFN0cmluZyBub3JtYWxpemVkTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGFwcGVuZEZpbGVFeHRlbnNpb25JZk5l
Y2Vzc2FyeShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVU
eXBlUmVnaXN0cnlDb2NvYS5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC04OCwxOSArODgsMTkgQEAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnNGb3JXaWxk
YwogICAgIHJldHVybiBleHRlbnNpb25zOwogfQogCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCitTdHJpbmcg
TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRl
bnNpb24pCiB7CiAgICAgcmV0dXJuIFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBp
bmdzXSBNSU1FVHlwZUZvckV4dGVuc2lvbjooTlNTdHJpbmcgKilleHRlbnNpb25dOwogfQogCi1W
ZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQorVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6ZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAodHlwZS5l
bmRzV2l0aCgnKicpKQogICAgICAgICByZXR1cm4gZXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5
cGUodHlwZSk7CiAgICAgcmV0dXJuIG1ha2VWZWN0b3I8U3RyaW5nPihbW05TVVJMRmlsZVR5cGVN
YXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlOnR5cGVdKTsKIH0K
IAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVU
eXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJy
ZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgLy8gU3lz
dGVtIFByZXZpZXdzIGFjY2VwdCBzb21lIG5vbi1zdGFuZGFyZCBNSU1FVHlwZXMsIHNvIHdlIGNh
bid0IHJlbHkgb24KICAgICAvLyB0aGUgZmlsZSB0eXBlIG1hcHBpbmdzLgpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNp
b24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgYwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQ
YXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IG5v
dEZvdW5kKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGxhc3RQYXRoQ29t
cG9uZW50LnN1YnN0cmluZyhwb3MgKyAxKS50b1N0cmluZygpOwotICAgICAgICAgICAgICAgIFN0
cmluZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0
ZW5zaW9uKGV4dGVuc2lvbik7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1lZGlhVHlwZSA9IE1J
TUVUeXBlUmVnaXN0cnk6Om1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW1lZGlhVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAg
ICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlIHsgV1RGTW92ZShtZWRpYVR5cGUpIH07
CiAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0
ZW5zaW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0ltYWdlRGVjb2RlckFWRk9iakMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNv
ZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW1hZ2VEZWNvZGVyQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTE2LDcgKzUxNiw3IEBAIFN0cmluZyBJbWFnZURlY29kZXJBVkZPYmpD
Ojp1dGkoKSBjb25zdAogCiBTdHJpbmcgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdAogewotICAgIHJldHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJy
ZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtX21pbWVUeXBlKTsKKyAgICByZXR1cm4gTUlNRVR5cGVS
ZWdpc3RyeTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1lVHlwZSk7CiB9CiAK
IEludFNpemUgSW1hZ2VEZWNvZGVyQVZGT2JqQzo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2RlckdTdHJl
YW1lci5oCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zYW1wbGVEYXRhLnNpemUoKTsgfQogICAgIFJlcGV0aXRpb25Db3VudCBy
ZXBldGl0aW9uQ291bnQoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgdXRpKCkgY29uc3QgZmlu
YWw7Ci0gICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobV9taW1l
VHlwZSk7IH0KKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtX21p
bWVUeXBlKTsgfQogICAgIE9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CiAKICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgo
c2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29u
c3QgZmluYWwgeyByZXR1cm4gc2l6ZSgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAJKHJldmlzaW9uIDI2Mzgz
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpp
bnZva2VEaWRSZWNlaXZlUmVzcG9uCiAgICAgQVNTRVJUKHVybC5pc0xvY2FsRmlsZSgpKTsKIAog
ICAgIC8vIERldGVybWluZSB0aGUgTUlNRSB0eXBlIGJhc2VkIG9uIHRoZSBwYXRoLgotICAgIGF1
dG8gbWltZVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvclBhdGgodXJsLnBh
dGgoKS50b1N0cmluZygpKTsKKyAgICBhdXRvIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6
bWltZVR5cGVGb3JQYXRoKHVybC5wYXRoKCkudG9TdHJpbmcoKSk7CiAKICAgICAvLyBEaWRSZWNl
aXZlUmVzcG9uc2UgbXVzdCBub3QgYmUgY2FsbGVkIGltbWVkaWF0ZWx5CiAgICAgcnVuT25Xb3Jr
ZXJUaHJlYWRJZlJlcXVpcmVkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHVybCA9IGNyb3NzVGhyZWFkQ29weSh1cmwpLCBtaW1lVHlwZSA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKG1pbWVUeXBlKSldKCkgbXV0YWJsZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0
cnlQbGF5U3RhdGlvbi5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDcgKzU3LDcgQEAgc3RhdGljIGNvbnN0IHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxUeXBlRQogICAgIHJldHVybiBwbGF0Zm9ybU1lZGlhVHlwZXM7CiB9CiAKLVN0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4
dGVuc2lvbikKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKIHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogcGxhdGZv
cm1NZWRpYVR5cGVzKCkpIHsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoZXh0
ZW5zaW9uLCBlbnRyeS5leHRlbnNpb24uY2hhcmFjdGVycygpKSkKQEAgLTcxLDcgKzcxLDcgQEAg
Ym9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1ZwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZv
ck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitTdHJpbmcgTUlNRVR5cGVSZWdpc3Ry
eTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkK
IHsKICAgICBmb3IgKGF1dG8mIGVudHJ5IDogcGxhdGZvcm1NZWRpYVR5cGVzKCkpIHsKICAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobWltZVR5cGUsIGVudHJ5LnR5cGUuY2hhcmFj
dGVycygpKSkKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFBy
ZWZlcnJlZEV4dAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1WZWN0b3I8U3RyaW5n
PiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
JikKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1FVHlw
ZShjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAg
ICAgcmV0dXJuIHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlw
ZVJlZ2lzdHJ5V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5nIG1pbWVUeXBlRm9yRXh0ZW5zaW9uKGNv
bnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6
Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQorU3Ry
aW5nIE1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0
IFN0cmluZyYgdHlwZSkKIHsKICAgICBTdHJpbmcgcGF0aCA9ICJNSU1FXFxEYXRhYmFzZVxcQ29u
dGVudCBUeXBlXFwiICsgdHlwZTsKICAgICBXQ0hBUiBleHRTdHJbTUFYX1BBVEhdOwpAQCAtNjMs
NyArNjMsNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCitTdHJpbmcgTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTE0LDcgKzExNCw3IEBAIGJvb2wgTUlNRVR5cGVSZWdp
c3RyeTo6aXNBcHBsaWNhdGlvblBsdWcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVZlY3RvcjxT
dHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBT
dHJpbmcmKQorVmVjdG9yPFN0cmluZz4gTUlNRVR5cGVSZWdpc3RyeTo6ZXh0ZW5zaW9uc0Zvck1J
TUVUeXBlKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQo
KTsKICAgICByZXR1cm4geyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01J
TUVUeXBlUmVnaXN0cnlYZGcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcAkocmV2aXNpb24gMjYzODMyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01JTUVUeXBlUmVnaXN0cnlYZGcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIGlmIChleHRlbnNpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC01MSw3ICs1MSw3IEBAIGJvb2wgTUlNRVR5
cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWcKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVN0
cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKQorU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJl
ZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgaWYg
KG1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtNjYsNyAr
NjYsNyBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0CiAgICAgcmV0
dXJuIHJldHVyblZhbHVlOwogfQogCi1WZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKK1ZlY3RvcjxTdHJpbmc+IE1J
TUVUeXBlUmVnaXN0cnk6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQogewog
ICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgcmV0dXJuIHsgfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjM4NzgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDIwLTA3LTAyICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBuYW1lcyBv
ZiBNSU1FVHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8gY29tcGx5IHdpdGggd2Via2l0IG5hbWluZyBz
dHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEz
OTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRTZW5kUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW06CisgICAgICAgIChBUEk6Om1p
bWVUeXBlSW5mZXJyZWRGcm9tRmlsZUV4dGVuc2lvbik6CisgICAgICAgIChBUEk6OkF0dGFjaG1l
bnQ6OnNldEZpbGVXcmFwcGVyQW5kVXBkYXRlQ29udGVudFR5cGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tOgorICAgICAgICAoLVtXS09w
ZW5QYW5lbFBhcmFtZXRlcnMgX2FsbG93ZWRGaWxlRXh0ZW5zaW9uc10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdl
YmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zmls
ZUNhbkJlQWNjZXB0ZWRGb3JVcGxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6Zmlu
ZFBsdWdpbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5l
bC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgcHJlc2VudFdpdGhQYXJhbWV0ZXJz
OnJlc3VsdExpc3RlbmVyOl0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6b2JqZWN0Q29udGVudFR5cGUpOgorCiAyMDIwLTA3LTAyICBLYXRlIENoZW5leSAg
PGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIEN1c3RvbSBVUkwgc2NoZW1l
cyBzaG91bGQgYmUgdHJlYXRlZCBhcyBhcHAtYm91bmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJ
KHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9O
ZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ0LDcgKzM0NCw3IEBA
IHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkU2VuZFJlcXVlc3QKICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0U25pZmZlZENvbnRlbnRUeXBlKHNvdXBfcmVxdWVzdF9nZXRfY29udGVudF90
eXBlKG1fc291cFJlcXVlc3QuZ2V0KCkpKTsKICAgICAgICAgbV9yZXNwb25zZS51cGRhdGVGcm9t
U291cE1lc3NhZ2UobV9zb3VwTWVzc2FnZS5nZXQoKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNl
Lm1pbWVUeXBlKCkuaXNFbXB0eSgpICYmIG1fc291cE1lc3NhZ2UtPnN0YXR1c19jb2RlICE9IFNP
VVBfU1RBVFVTX05PVF9NT0RJRklFRCkKLSAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5
cGUoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKG1fcmVzcG9uc2UudXJsKCku
cGF0aCgpLnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUo
TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fcmVzcG9uc2UudXJsKCkucGF0aCgp
LnRvU3RyaW5nKCkpKTsKIAogICAgICAgICBpZiAoc2hvdWxkU3RhcnRIVFRQUmVkaXJlY3Rpb24o
KSkgewogICAgICAgICAgICAgbV9pbnB1dFN0cmVhbSA9IFdURk1vdmUoaW5wdXRTdHJlYW0pOwpA
QCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkU2VuZFJlcXVl
c3QKICAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0
RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgICAgICBtX3Jlc3BvbnNlLnNldEV4cGVj
dGVkQ29udGVudExlbmd0aChzb3VwX3JlcXVlc3RfZ2V0X2NvbnRlbnRfbGVuZ3RoKG1fc291cFJl
cXVlc3QuZ2V0KCkpKTsKICAgICAgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1JTUVUeXBlRm9yUGF0aChtX3Jlc3BvbnNlLnVybCgpLnBhdGgoKS50b1N0cmluZygpKSk7
CisgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1p
bWVUeXBlRm9yUGF0aChtX3Jlc3BvbnNlLnVybCgpLnBhdGgoKS50b1N0cmluZygpKSk7CiAKICAg
ICAgICAgbV9pbnB1dFN0cmVhbSA9IFdURk1vdmUoaW5wdXRTdHJlYW0pOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElBdHRhY2htZW50Q29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSUF0dGFj
aG1lbnRDb2NvYS5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL0FQSUF0dGFjaG1lbnRDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEs
NyArNDEsNyBAQCBuYW1lc3BhY2UgQVBJIHsKIHN0YXRpYyBXVEY6OlN0cmluZyBtaW1lVHlwZUlu
ZmVycmVkRnJvbUZpbGVFeHRlbnNpb24oY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50
KQogewogICAgIGlmIChOU1N0cmluZyAqZmlsZUV4dGVuc2lvbiA9IFsoTlNTdHJpbmcgKilhdHRh
Y2htZW50LmZpbGVOYW1lKCkgcGF0aEV4dGVuc2lvbl0pCi0gICAgICAgIHJldHVybiBXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihmaWxlRXh0ZW5zaW9u
KTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9y
RXh0ZW5zaW9uKGZpbGVFeHRlbnNpb24pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTEwNCw3
ICsxMDQsNyBAQCB2b2lkIEF0dGFjaG1lbnQ6OnNldEZpbGVXcmFwcGVyQW5kVXBkYXRlCiAgICAg
ICAgICAgICBjb250ZW50VHlwZSA9IChOU1N0cmluZyAqKWtVVFR5cGVEaXJlY3Rvcnk7CiAgICAg
ICAgIGVsc2UgaWYgKGZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlKSB7CiAgICAgICAgICAgICBpZiAo
TlNTdHJpbmcgKnBhdGhFeHRlbnNpb24gPSAoZmlsZVdyYXBwZXIuZmlsZW5hbWUubGVuZ3RoID8g
ZmlsZVdyYXBwZXIuZmlsZW5hbWUgOiBmaWxlV3JhcHBlci5wcmVmZXJyZWRGaWxlbmFtZSkucGF0
aEV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IFdlYkNvcmU6Ok1JTUVU
eXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKHBhdGhFeHRlbnNpb24pOworICAg
ICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWlt
ZVR5cGVGb3JFeHRlbnNpb24ocGF0aEV4dGVuc2lvbik7CiAgICAgICAgICAgICBpZiAoIWNvbnRl
bnRUeXBlLmxlbmd0aCkKICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9IChOU1N0cmluZyAq
KWtVVFR5cGVEYXRhOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0JKHJldmlz
aW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0LDcgQEAgLSAoTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9hbGxvd2VkRmlsZUV4dAogCiAgICAgW2FjY2VwdGVkTUlNRVR5
cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJ
bnRlZ2VyIGluZGV4LCBCT09MKiBzdG9wKSB7CiAgICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29u
dGFpbnNTdHJpbmc6QCIvIl0pOwotICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6OkFycmF5
OjpjcmVhdGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNp
b25zRm9yTUlNRVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgYXV0byBleHRlbnNpb25zID0gQVBJ
OjpBcnJheTo6Y3JlYXRlU3RyaW5nQXJyYXkoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6ZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKSk7CiAgICAgICAgIFthbGxvd2VkRmlsZUV4dGVu
c2lvbnMgYWRkT2JqZWN0c0Zyb21BcnJheTp3cmFwcGVyKGV4dGVuc2lvbnMpXTsKICAgICB9XTsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xODMsNyArMTgzLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0VVJJU2No
ZW1lUmVxdWVzdFJlYWRDYQogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYt
PnRhc2stPnJlcXVlc3QoKS51cmwoKSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShwcml2
LT5jb250ZW50VHlwZS5kYXRhKCkpLCBwcml2LT5zdHJlYW1MZW5ndGgsIGVtcHR5U3RyaW5nKCkp
OwogICAgICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJv
bU1lZGlhVHlwZShwcml2LT5jb250ZW50VHlwZS5kYXRhKCkpKTsKICAgICAgICAgaWYgKHJlc3Bv
bnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzcG9uc2Uuc2V0TWltZVR5
cGUoTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JQYXRoKHJlc3BvbnNlLnVybCgpLnBh
dGgoKS50b1N0cmluZygpKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShNSU1F
VHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRvU3Ry
aW5nKCkpKTsKICAgICAgICAgcHJpdi0+dGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAyNjM4MzIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYxLDcgKzg2MSw3IEBAIHN0YXRpYyBib29sIGZp
bGVDYW5CZUFjY2VwdGVkRm9yVXBsb2FkKGMKICAgICBpZiAoYWxsb3dlZEZpbGVFeHRlbnNpb25z
LmNvbnRhaW5zKGV4dGVuc2lvbikpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RyaW5n
IG1hcHBlZE1JTUVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVG
b3JFeHRlbnNpb24oZXh0ZW5zaW9uKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIFN0
cmluZyBtYXBwZWRNSU1FVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBl
Rm9yRXh0ZW5zaW9uKGV4dGVuc2lvbikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKICAgICBp
ZiAobWFwcGVkTUlNRVR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuY3BwCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsx
OTAsNyBAQCBQbHVnaW5Nb2R1bGVJbmZvIFBsdWdpbkluZm9TdG9yZTo6ZmluZFBsCiAgICAgICAg
ICAgICByZXR1cm4gcGx1Z2luOwogICAgICAgICAKICAgICAgICAgLy8gRmluYWxseSwgdHJ5IHRv
IGdldCB0aGUgTUlNRSB0eXBlIGZyb20gdGhlIGV4dGVuc2lvbiBpbiBhIHBsYXRmb3JtIHNwZWNp
ZmljIG1hbm5lciBhbmQgdXNlIHRoYXQuCi0gICAgICAgIFN0cmluZyBleHRlbnNpb25NaW1lVHlw
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7
CisgICAgICAgIFN0cmluZyBleHRlbnNpb25NaW1lVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6Om1p
bWVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lvbik7CiAgICAgICAgIGlmICghZXh0ZW5zaW9uTWlt
ZVR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIFBsdWdpbk1vZHVsZUluZm8gcGx1Z2luID0g
ZmluZFBsdWdpbkZvck1JTUVUeXBlKGV4dGVuc2lvbk1pbWVUeXBlLCBhbGxvd2VkUGx1Z2luVHlw
ZXMpOwogICAgICAgICAgICAgaWYgKCFwbHVnaW4ucGF0aC5pc051bGwoKSkgewpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQ
YW5lbC5tbQkocmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUw
LDcgQEAgLSAodm9pZClwcmVzZW50V2l0aFBhcmFtZXRlcnM6KEFQSTo6T3BlbgogCiAgICAgUmVm
PEFQSTo6QXJyYXk+IGFjY2VwdEZpbGVFeHRlbnNpb25zID0gcGFyYW1ldGVycy0+YWNjZXB0Rmls
ZUV4dGVuc2lvbnMoKTsKICAgICBmb3IgKGF1dG8gZXh0ZW5zaW9uIDogYWNjZXB0RmlsZUV4dGVu
c2lvbnMtPmVsZW1lbnRzT2ZUeXBlPEFQSTo6U3RyaW5nPigpKSB7Ci0gICAgICAgIFN0cmluZyBt
aW1lVHlwZSA9IFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGV4dGVuc2lvbi0+c3RyaW5nVmlldygpLnN1YnN0cmluZygxKS50b1N0cmluZygpKTsKKyAg
ICAgICAgU3RyaW5nIG1pbWVUeXBlID0gV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5
cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uLT5zdHJpbmdWaWV3KCkuc3Vic3RyaW5nKDEpLnRvU3Ry
aW5nKCkpOwogICAgICAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKICAgICAgICAgICAgIFtt
aW1lVHlwZXMgYWRkT2JqZWN0Om1pbWVUeXBlXTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NzcsNyArMTY3Nyw3IEBAIE9iamVjdENvbnRlbnRUeXBlIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjoKICAgICAgICAgYXV0byBleHRlbnNpb24gPSBwYXRoLnN1YnN0cmluZyhkb3RQ
b3NpdGlvbiArIDEpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiAKICAgICAgICAgLy8gVHJ5
IHRvIGd1ZXNzIHRoZSBNSU1FIHR5cGUgZnJvbSB0aGUgZXh0ZW5zaW9uLgotICAgICAgICBtaW1l
VHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7CisgICAgICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRl
bnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgaWYgKG1pbWVUeXBlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBhIHBsdWctaW4gYXJvdW5kIHRoYXQgY2FuIGhh
bmRsZSB0aGUgZXh0ZW5zaW9uLgogICAgICAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA3LTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNh
Ym91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBuYW1lcyBvZiBNSU1F
VHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8gY29tcGx5IHdpdGggd2Via2l0IG5hbWluZyBzdHlsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTEyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoK1tXZWJNSU1FVHlwZVJl
Z2lzdHJ5IG1pbWVUeXBlRm9yRXh0ZW5zaW9uOl0pOgorICAgICAgICAoK1tXZWJNSU1FVHlwZVJl
Z2lzdHJ5IHByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlOl0pOgorCiAyMDIwLTA1LTE1ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNl
IGVudW0gc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNhc3RpbmcgdG8vZnJvbSB1aW50MzJfdApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViTUlNRVR5cGVS
ZWdpc3RyeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1tCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJNSU1FVHlwZVJlZ2lzdHJ5Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTIgQEAgdXNpbmcgV2ViQ29yZTo6TUlNRVR5
cGVSZWdpc3RyeTsKIAogKyAoTlNTdHJpbmcgKiltaW1lVHlwZUZvckV4dGVuc2lvbjooTlNTdHJp
bmcgKilleHRlbnNpb24KIHsKLSAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5
cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3RyeTo6
bWltZVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKIH0KIAogKyAoTlNTdHJpbmcgKilwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZTooTlNTdHJpbmcgKiltaW1lVHlwZQogewotICAgIHJl
dHVybiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZSht
aW1lVHlwZSk7CisgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OnByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKG1pbWVUeXBlKTsKIH0KIAogKyAoQk9PTClpc1N1cHBvcnRlZEltYWdlTUlN
RVR5cGU6KE5TU3RyaW5nICopbWltZVR5cGUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MzgzMikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTAyICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgQ2hhbmdlIHRoZSBu
YW1lcyBvZiBNSU1FVHlwZVJlZ2lzdHJ5IG1ldGhvZHMgdG8gY29tcGx5IHdpdGggd2Via2l0IG5h
bWluZyBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjEzOTEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Ok1JTUVUeXBlRm9yRXh0ZW5zaW9u
KToKKwogMjAyMC0wNy0wMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFsbG93IHRoZSBGaWxlIG9iamVjdCB0byBiZSBjcmVhdGVkIHdpdGgg
YSByZXBsYWNlbWVudCBmaWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAko
cmV2aXNpb24gMjYzODMyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU3MDcsNyArNTcwNyw3IEBAIEhSRVNVTFQgV2ViVmlldzo6TUlN
RVR5cGVGb3JFeHRlbnNpb24oX0kKICAgICBpZiAoIW1pbWVUeXBlKQogICAgICAgICByZXR1cm4g
RV9QT0lOVEVSOwogCi0gICAgKm1pbWVUeXBlID0gQlN0cmluZyhNSU1FVHlwZVJlZ2lzdHJ5Ojpn
ZXRNSU1FVHlwZUZvckV4dGVuc2lvbih0b1N0cmluZyhleHRlbnNpb24pKSkucmVsZWFzZSgpOwor
ICAgICptaW1lVHlwZSA9IEJTdHJpbmcoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRl
bnNpb24odG9TdHJpbmcoZXh0ZW5zaW9uKSkpLnJlbGVhc2UoKTsKIAogICAgIHJldHVybiBTX09L
OwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>