<?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>173038</bug_id>
          
          <creation_ts>2017-06-06 15:34:06 -0700</creation_ts>
          <short_desc>Refactoring: MediaEngineSupportParameters should take a ContentType rather than separate type &amp; codecs strings</short_desc>
          <delta_ts>2017-06-07 15:15:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1316280</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-06 15:34:06 -0700</bug_when>
    <thetext>Refactoring: MediaEngineSupportParameters should take a ContentType rather than separate type &amp; codecs strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316285</commentid>
    <comment_count>1</comment_count>
      <attachid>312131</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-06 15:41:06 -0700</bug_when>
    <thetext>Created attachment 312131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316290</commentid>
    <comment_count>2</comment_count>
      <attachid>312133</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-06 16:02:43 -0700</bug_when>
    <thetext>Created attachment 312133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316562</commentid>
    <comment_count>3</comment_count>
      <attachid>312204</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 11:27:55 -0700</bug_when>
    <thetext>Created attachment 312204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316609</commentid>
    <comment_count>4</comment_count>
      <attachid>312204</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-06-07 13:28:37 -0700</bug_when>
    <thetext>Comment on attachment 312204
Patch

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

&gt; Source/WebCore/platform/ContentType.cpp:82
&gt;      String strippedType = m_type.stripWhiteSpace();

A little bird told me that we should use probably always stripWhite(isHTMLSpace).

&gt; Source/WebCore/platform/ContentType.cpp:92
&gt; +static String simplifyWhitespace(const String&amp; string)

...and that this was probably not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316645</commentid>
    <comment_count>5</comment_count>
      <attachid>312231</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-06-07 14:36:56 -0700</bug_when>
    <thetext>Created attachment 312231
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316668</commentid>
    <comment_count>6</comment_count>
      <attachid>312231</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 15:15:54 -0700</bug_when>
    <thetext>Comment on attachment 312231
Patch for landing

Clearing flags on attachment: 312231

Committed r217905: &lt;http://trac.webkit.org/changeset/217905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1316669</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-07 15:15:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312131</attachid>
            <date>2017-06-06 15:41:06 -0700</date>
            <delta_ts>2017-06-06 16:02:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173038-20170606154106.patch</filename>
            <type>text/plain</type>
            <size>36928</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyYmZiYmM2NjA5ZDUxZDFiNDM1MTgx
ODdkZmZiNDNlZDE0NDI4ZDcuLjNkNTAzZTg3NjA4ZTIzZmIyMDk4NDA5MjQ1MjFhYzk5YThlYmUx
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDYgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIgdGhhbiBzZXBhcmF0ZSB0
eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyaXZlIGJ5IGZpeDogYWRkIGEgdmVyc2lvbiBvZiBzcGxpdCB0aGF0IHRh
a2VzIGEgVUNoYXIgYW5kIHJldHVybnMgYSBWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0KToKKwogMjAx
Ny0wNi0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxv
dyBjbGllbnRzIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGNvZGVjcyB3aGljaCBzaG91bGQgcmVxdWly
ZSBoYXJkd2FyZSBkZWNvZGUgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmVmYWNjZmExNDAyYWRl
NjczYTRlM2UzMTVlNGQwN2E0OTkyN2MxLi43MzM5YjBmMjFjYjZjNTBjYjgwMjE4MGRmOTJmYjI0
MTJmYjJjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjYgQEAKIDIwMTctMDYtMDYgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIg
dGhhbiBzZXBhcmF0ZSB0eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JB
dWRpb1ZpZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2Fu
UGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4
dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6Y29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzaW1wbGlm
eVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5cGU6OmNvZGVjcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6cHJvZmlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFR5cGU6OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
bnRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29kZWNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBv
cnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OmFkZFNvdXJjZUJ1ZmZlcik6CisKKzIwMTctMDYtMDYgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgRXhlbXB0IGV4Y2x1c2l2ZWx5IHdhbGwt
cG93ZXJlZCBkZXZpY2VzIGZyb20gaGFyZHdhcmUgY29kZWMgcmVxdWlyZW1lbnQKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzAwOQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCBkYWQwNzJjNzY5NTE2MDliNjkxNWVjY2MwYmEwNzg2NzRlZWQw
YzljLi5hYjIxY2MyMjU0MGQxNWUxNjQxYzEwNTIzNjNhYmVkYzQxMzE3N2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTM2OSw3ICszNjksMTIgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKICAgICB9Ci0KKyAgICBWZWN0b3I8
U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIFZlY3RvcjxTdHJpbmc+IHNw
bGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDc1ODhiMDYyODVlMWQyOTRjZmQ3ZjAxYTU3NDgyODg1Y2M1MjI1NTYu
LmM1Y2U3Y2NhOTIwMTFmN2M1OWIxZDAyNTFhYTJjY2ZiNWIwOTFlNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQ4OCw4ICs0ODgsNyBA
QCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENE
TTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aQogICAgICAgICAvLyAgICAgICBjb21iaW5hdGlvbiBv
ZiBjb250YWluZXIsIG1lZGlhIHR5cGVzLCByb2J1c3RuZXNzIGFuZCBsb2NhbCBhY2N1bXVsYXRl
ZCBjb25maWd1cmF0aW9uIGluIGNvbWJpbmF0aW9uCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVz
dHJpY3Rpb25zOgogICAgICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLm1pbWVUeXBlKCk7Ci0g
ICAgICAgIHBhcmFtZXRlcnMuY29kZWNzID0gY29kZWNzOworICAgICAgICBwYXJhbWV0ZXJzLnR5
cGUgPSBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMsIG51bGxwdHIpKSB7CiAgICAgICAgICAgICAvLyBUcnkgd2l0aCBNZWRpYSBT
b3VyY2U6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCA2YWM4ZDAyOGM2MzllMzJkNTJkZDBkYTdjZDZhNjIyNzg2M2YzMDJkLi5jNzZiYzVhYzAz
ZjMzZjIyNzFmY2YxOTkyMzNhMzU1NzU5ZjExZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtODQ0LDggKzg0NCw3IEBA
IGJvb2wgTWVkaWFTb3VyY2U6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIHR5cGUpCiAg
ICAgLy8gNS4gSWYgdGhlIE1lZGlhU291cmNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpZmll
ZCBjb21iaW5hdGlvbiBvZiBtZWRpYSB0eXBlLCBtZWRpYSBzdWJ0eXBlLCBhbmQgY29kZWNzIHRo
ZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIDYuIFJldHVybiB0cnVlLgogICAgIE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250
ZW50VHlwZS50eXBlKCk7Ci0gICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb2RlY3M7CisgICAgcGFy
YW1ldGVycy50eXBlID0gY29udGVudFR5cGU7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycywgMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NmZhMWNjYjE0NDZiYmRmOTc2ODQzZTliMGU1
MzNiMGZiNjZkNzUuLjg0YWM1NzRmNTEyYmFkN2YxZTA4NTIxNmY3MTI5Yjg0ZmNhZGEzZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIFJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lCiAgICAgLy8gS2V5IHN5c3RlbSBpcyBub3QgYXBw
bGljYWJsZSBoZXJlLgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IGNs
aWVudChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygp
LCB1cmwuaG9zdCgpKTsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgcGFyYW1ldGVycy50eXBlID0gdHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBD
b250ZW50VHlwZSh0eXBlKTsKICAgICBwYXJhbWV0ZXJzLnVybCA9IHVybDsKICAgICBpZiAoTWVk
aWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCAmY2xpZW50KSkKICAgICAgICAgcmV0
dXJuIE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGNjYjBiOTQ4MGJiYTUyY2I0NmNiNWYwODhkODY0
MzZkNDgxYTY2YjcuLjJhNzg0NmM1YjA0YTA2MjA1MTgyNTQyMjFlNTAxMTZjOTg5M2Y3MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEzNCw4ICsxMTM0
LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKG1pbWVUeXBlKTsKLSAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKLSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxp
dGVyYWwoImNvZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAg
ICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnQgPSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKHBhcmFtZXRlcnMsIHRoaXMpOwogICAgIFN0cmluZyBjYW5QbGF5OwogCkBAIC00MzEw
LDkgKzQzMDksNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICAgICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLSAn
dHlwZScgaXMgJyVzJyIsIHRoaXMsIHR5cGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAg
ICAgICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAg
ICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKHR5cGUpOwotICAgICAgICAgICAgcGFyYW1ldGVy
cy50eXBlID0gY29udGVudFR5cGUudHlwZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJ
SUxpdGVyYWwoImNvZGVjcyIpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRl
bnRUeXBlKHR5cGUpOwogICAgICAgICAgICAgcGFyYW1ldGVycy51cmwgPSBtZWRpYVVSTDsKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgICAgICAgICAgcGFyYW1ldGVycy5pc01lZGlhU291
cmNlID0gbWVkaWFVUkwucHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKaW5kZXggODhhNzE0YjVmMzkyY2UxOTc5
ZWRiZWY0NGUyNTljZGJhMjJjMWZiOS4uYTZmZjdlNjBkY2VhNzAzYmE4ODdjNDM1YzBkNTJlYTBm
OGUyNDM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNSw2ICszNiwxOCBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKIH0KIAorY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29k
ZWNzUGFyYW1ldGVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2Rl
Y3MgeyBBU0NJSUxpdGVyYWwoImNvZGVjcyIpIH07CisgICAgcmV0dXJuIGNvZGVjczsKK30KKwor
Y29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6cHJvZmlsZXNQYXJhbWV0ZXIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHByb2ZpbGVzIHsgQVNDSUlMaXRlcmFsKCJwcm9m
aWxlcyIpIH07CisgICAgcmV0dXJuIHByb2ZpbGVzOworfQorCiBTdHJpbmcgQ29udGVudFR5cGU6
OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHBhcmFtZXRlclZhbHVlOwpAQCAtNjQsNyArNzcsNyBAQCBTdHJpbmcgQ29udGVudFR5cGU6
OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiAgICAgcmV0dXJu
IHBhcmFtZXRlclZhbHVlOwogfQogCi1TdHJpbmcgQ29udGVudFR5cGU6OnR5cGUoKSBjb25zdAor
U3RyaW5nIENvbnRlbnRUeXBlOjpjb250YWluZXJUeXBlKCkgY29uc3QKIHsKICAgICBTdHJpbmcg
c3RyaXBwZWRUeXBlID0gbV90eXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogCkBAIC03NiwxOSArODks
MTkgQEAgU3RyaW5nIENvbnRlbnRUeXBlOjp0eXBlKCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBw
ZWRUeXBlOwogfQogCi1WZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QK
K3N0YXRpYyBTdHJpbmcgc2ltcGxpZnlXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewotICAgIFN0cmluZyBjb2RlY3NQYXJhbWV0ZXIgPSBwYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJj
b2RlY3MiKSk7Ci0KLSAgICBpZiAoY29kZWNzUGFyYW1ldGVyLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgcmV0dXJuIHN0cmluZy5zaW1wbGlmeVdoaXRl
U3BhY2UoKTsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+IGNvZGVjczsKLSAgICBjb2RlY3NQYXJh
bWV0ZXIuc3BsaXQoJywnLCBjb2RlY3MpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29k
ZWNzLnNpemUoKTsgKytpKQotICAgICAgICBjb2RlY3NbaV0gPSBjb2RlY3NbaV0uc2ltcGxpZnlX
aGl0ZVNwYWNlKCk7CitWZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcGFyYW1ldGVyKGNvZGVjc1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1h
cChzaW1wbGlmeVdoaXRlc3BhY2UpOworfQogCi0gICAgcmV0dXJuIGNvZGVjczsKK1ZlY3RvcjxT
dHJpbmc+IENvbnRlbnRUeXBlOjpwcm9maWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmFt
ZXRlcihwcm9maWxlc1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1hcChzaW1wbGlmeVdoaXRlc3Bh
Y2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGVudFR5cGUuaAppbmRleCBmMzFhYzUwYTA4NzUzY2U3YTgwMWQ4NzVmYjNiMjExOGNkZGQxYzQ1
Li4wNmI2NzlkZDViZmU1YTk4ZGZmYTY1ZjE3ZDRjYTNjOGQ3NDIxYjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ29udGVu
dFR5cGVfaAogI2RlZmluZSBDb250ZW50VHlwZV9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNyw5ICszOCwxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAorICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOworICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHByb2ZpbGVzUGFyYW1ldGVyKCk7CisKICAgICBTdHJpbmcgcGFyYW1ldGVyKGNvbnN0
IFN0cmluZyYgcGFyYW1ldGVyTmFtZSkgY29uc3Q7Ci0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsK
KyAgICBTdHJpbmcgY29udGFpbmVyVHlwZSgpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNv
ZGVjcygpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHByb2ZpbGVzKCkgY29uc3Q7CiAgICAg
Y29uc3QgU3RyaW5nJiByYXcoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaXNFbXB0eSgpOyB9CiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IGRhMDliYmFmYTk5MmNmM2M1OWM2YWRiYzFkOWRhZjkxZTZiOWVmZmMuLmViOWQxODk0YTE5NmMx
YTMwMTJmZDk2YjRmZjI5OGQ1MzY4YWI0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4OCwxMiArMjg4LDYgQEAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwog
fQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb2RlY3MoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygiY29kZWNzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGNvZGVjczsKLX0KLQog
c3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9y
dFBhcmFtZXRlcnMoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gbnVsbHB0cikKIHsKICAgICBp
ZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ICYmICFwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCkBAIC0zMDIsOCArMjk2LDggQEAgc3RhdGlj
IGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFt
ZXRlcnMoY29uc3QgTWVkaWEKICAgICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gSW4gdGhlIGFi
c2VuY2Ugb2YgYSBzcGVjaWZpY2F0aW9uIHRvIHRoZSBjb250cmFyeSwgdGhlIE1JTUUgdHlwZSAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgogICAgIC8vIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRl
cnMsIGUuZy4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9dGhlb3JhIiwgaXMgYSB0
eXBlIHRoYXQgdGhlIHVzZXIgYWdlbnQga25vd3MgCiAgICAgLy8gaXQgY2Fubm90IHJlbmRlci4K
LSAgICBpZiAocGFyYW1ldGVycy50eXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkgewot
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBpZiAocGFyYW1l
dGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsK
KyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zODEsOCArMzc1LDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICAvLyBQcm90ZWN0IGFnYWluc3QgTWVkaWFQbGF5ZXIgYmVp
bmcgZGVzdHJveWVkIGR1cmluZyBhIE1lZGlhUGxheWVyQ2xpZW50IGNhbGxiYWNrLgogICAgIFJl
ZjxNZWRpYVBsYXllcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBtX2NvbnRlbnRNSU1F
VHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAg
IG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoY29kZWNzKCkpOwor
ICAgIG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsKICAgICBtX3VybCA9IHVybDsKICAgICBt
X2tleVN5c3RlbSA9IGtleVN5c3RlbS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIG1f
Y29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CkBAIC0zOTUs
OSArMzg4LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAjZW5kaWYKIAogICAgIC8vIElm
IHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3QgbWVhbmluZ2Z1bCwgdHJ5IHRvIGZp
Z3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgotICAgIGlmIChtX2NvbnRlbnRNSU1FVHlwZS5pc0Vt
cHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpIHx8
IG1fY29udGVudE1JTUVUeXBlID09IHRleHRQbGFpbigpKSB7CisgICAgQXRvbWljU3RyaW5nIGNv
bnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29u
dGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAo
bV91cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0g
bWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAgICAgICAgICBtX2NvbnRl
bnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQ
YXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CkBAIC00MDUsNyArMzk5LDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFz
dFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpOwogICAgICAgICAgICAgICAgIFN0cmlu
ZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGV4dGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0gbWVkaWFUeXBlOwor
ICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWVkaWFUeXBl
KTsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21F
eHRlbnNpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQy
Myw4ICs0MTcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIE1lZGlhU291cgogICAgIEFTU0VSVChtZWRpYVNv
dXJjZSk7CiAKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Ci0gICAgbV9jb250ZW50
TUlNRVR5cGUgPSBjb250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
LSAgICBtX2NvbnRlbnRUeXBlQ29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKGNvZGVjcygp
KTsKKyAgICBtX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgbV91cmwgPSB1cmw7CiAg
ICAgbV9rZXlTeXN0ZW0gPSBlbXB0eVN0cmluZygpOwogICAgIG1fY29udGVudE1JTUVUeXBlV2Fz
SW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CkBAIC00NDAsNyArNDMzLDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogCiAgICAg
bV9tZWRpYVN0cmVhbSA9ICZtZWRpYVN0cmVhbTsKICAgICBtX2tleVN5c3RlbSA9IGVtcHR5U3Ry
aW5nKCk7Ci0gICAgbV9jb250ZW50TUlNRVR5cGUgPSBlbXB0eVN0cmluZygpOworICAgIG1fY29u
dGVudFR5cGUgPSB7IH07CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRl
bnNpb24gPSBmYWxzZTsKICAgICBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSgwKTsKICAgICByZXR1
cm4gbV9jdXJyZW50TWVkaWFFbmdpbmU7CkBAIC00NTAsOCArNDQzLDcgQEAgYm9vbCBNZWRpYVBs
YXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogY29uc3QgTWVkaWFQ
bGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRp
YVBsYXllckZhY3RvcnkqIGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1fY29udGVudE1J
TUVUeXBlOwotICAgIHBhcmFtZXRlcnMuY29kZWNzID0gbV9jb250ZW50VHlwZUNvZGVjczsKKyAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwogICAgIHBhcmFtZXRlcnMudXJsID0g
bV91cmw7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFT
b3VyY2UgPSAhIW1fbWVkaWFTb3VyY2U7CkBAIC00ODIsMTYgKzQ3NCwxNiBAQCB2b2lkIE1lZGlh
UGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IGN1cnJlbnQpCiAKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIW1fY29udGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBNRURJQVNUUkVB
TSB8fCBNRURJQVNPVVJDRSkKKyAgICBpZiAoIW1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IE1F
RElBU1RSRUFNIHx8IE1FRElBU09VUkNFKQogICAgICAgICBlbmdpbmUgPSBuZXh0QmVzdE1lZGlh
RW5naW5lKGN1cnJlbnQpOwogCiAgICAgLy8gSWYgbm8gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBv
ciB0aGUgdHlwZSB3YXMgaW5mZXJyZWQgZnJvbSB0aGUgZmlsZSBleHRlbnNpb24sIGp1c3QgdXNl
IHRoZSBuZXh0IGVuZ2luZS4KLSAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50TUlNRVR5cGUu
aXNFbXB0eSgpIHx8IG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKSkK
KyAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50
TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24pKQogICAgICAgICBlbmdpbmUgPSBuZXh0
TWVkaWFFbmdpbmUoY3VycmVudCk7CiAKICAgICAvLyBEb24ndCBkZWxldGUgYW5kIHJlY3JlYXRl
IHRoZSBwbGF5ZXIgdW5sZXNzIGl0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgZW5naW5lLgogICAg
IGlmICghZW5naW5lKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyOjpsb2FkV2l0
aE5leHRNZWRpYUVuZ2luZSAtIG5vIG1lZGlhIGVuZ2luZSBmb3VuZCBmb3IgdHlwZSBcIiVzXCIi
LCBtX2NvbnRlbnRNSU1FVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lIC0gbm8gbWVkaWEgZW5naW5lIGZv
dW5kIGZvciB0eXBlIFwiJXNcIiIsIG1fY29udGVudFR5cGUucmF3KCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5naW5lOwogICAgICAgICBtX3ByaXZh
dGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVkaWFFbmdpbmUgIT0gZW5n
aW5lKSB7CkBAIC04NzksNyArODcxLDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKIHsKICAg
ICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBlKHR5cGUpIG1ldGhvZCBt
dXN0IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0eXBlIHRoYXQgdGhlIAog
ICAgIC8vIHVzZXIgYWdlbnQga25vd3MgaXQgY2Fubm90IHJlbmRlciBvciBpcyB0aGUgdHlwZSAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBw
bGljYXRpb25PY3RldFN0cmVhbSgpKQorICAgIEF0b21pY1N0cmluZyBjb250YWluZXJUeXBlID0g
cGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29udGFpbmVyVHlwZSA9
PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpCiAgICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRl
ZDsKIAogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5n
aW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC04OTYsNyArODg5LDcgQEAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0
IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+bWVkaWFQ
bGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkpIHsKICAgICAgICAgU3RyaW5nIGhvc3QgPSBj
bGllbnQtPm1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCk7CiAgICAgICAgIGlmICgoaG9zdC5lbmRz
V2l0aCgiLnlvdXR1YmUuY29tIiwgZmFsc2UpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGhvc3QsICJ5b3V0dWJlLmNvbSIpKQotICAgICAgICAgICAgJiYgKHBhcmFtZXRlcnMudHlw
ZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IHBhcmFtZXRlcnMudHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby94LWZsdiIsIGZhbHNlKSkpCisgICAgICAgICAgICAmJiAoY29udGFpbmVy
VHlwZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IGNvbnRhaW5lclR5cGUuc3Rh
cnRzV2l0aCgidmlkZW8veC1mbHYiLCBmYWxzZSkpKQogICAgICAgICAgICAgcmV0dXJuIElzTm90
U3VwcG9ydGVkOwogICAgIH0KICNlbHNlCkBAIC0xMTMwLDcgKzExMjMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKICAgICAvLyBsZXQgdGhlIG5leHQgZW5naW5l
IHRyeS4KICAgICBpZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBGb3JtYXRFcnJvciAm
JiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0
eSgpIHx8IG5leHRCZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKSkgeworICAg
ICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50
VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2lu
ZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAyMWFmNGZmYjYzOTU3YjEzMjEzNGQyZGY3Y2Ey
ZmRjNTdkNTExMzAwLi5kNjQxYTc4NWFiMDE2MzJhM2I4Yjc2YjE5OTQzNmRjOTA2NDYwYTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAg
LTExMCw4ICsxMTAsNyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAK
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzKCkgeyB9CiAKLSAgICBTdHJpbmcgdHlw
ZTsKLSAgICBTdHJpbmcgY29kZWNzOworICAgIENvbnRlbnRUeXBlIHR5cGU7CiAgICAgVVJMIHVy
bDsKICAgICBib29sIGlzTWVkaWFTb3VyY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNNZWRpYVN0
cmVhbSB7IGZhbHNlIH07CkBAIC01ODYsOCArNTg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpOwogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNsZWVwKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRNSU1FVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudE1JTUVUeXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZUNv
ZGVjcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFR5cGVDb2RlY3M7IH0KKyAgICBTdHJpbmcg
Y29udGVudE1JTUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZS5jb250YWluZXJU
eXBlKCk7IH0KKyAgICBTdHJpbmcgY29udGVudFR5cGVDb2RlY3MoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRUeXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOyB9
CiAgICAgYm9vbCBjb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbjsgfQog
CiAgICAgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdDsKQEAgLTYwNCw4ICs2MDMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0
ZTsKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1fY3VycmVudE1lZGlhRW5naW5lOwog
ICAgIFVSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9jb250ZW50TUlNRVR5cGU7Ci0gICAgU3RyaW5n
IG1fY29udGVudFR5cGVDb2RlY3M7CisgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAg
ICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBt
X3ByZWxvYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGZkMTY4Nzg4OTExZWNhZWFmMmRiYjgwM2ZmMDM4OTI5ODdhODM3YjMu
LjBkNzMzZTQwNTkzYjNmMDEzMTlhMjY0ODY0ZWVkMGJiOWY0NDMzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC04Miw3ICs4
Miw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtlCiAKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1
ZTsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBtaW1lVHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5
ZXI6OklzTm90U3VwcG9ydGVkOwogfQpAQCAtOTUsNyArOTUsNyBAQCBib29sIENETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIAogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1p
bWVUeXBlOworICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsKIAog
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAppbmRleCA4YTBhZDUwNWVkMDE4NDFlYmExMzMzMDcyNzVhMWE2YWIzMzc4ODlk
Li5iNGZhZDA3OTFhMDBhZGIyYzUzZGY1NzcyYjUwM2ZmOWJmMzFkMzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKQEAgLTkxMiwyMyArOTEyLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhCiAKIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkK
KyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgp
OworICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCiAgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAoIXN0YXRpY01J
TUVUeXBlTGlzdCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgJiYgIWF2Zk1JTUVUeXBlcygp
LmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgaWYgKCFzdGF0aWNNSU1FVHlwZUxpc3Qo
KS5jb250YWlucyhjb250YWluZXJUeXBlKSAmJiAhYXZmTUlNRVR5cGVzKCkuY29udGFpbnMoY29u
dGFpbmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7
CiAKKyAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICNpZiBIQVZFKEFWQ0ZVUkxfUExBWUFCTEVfTUlNRVRZ
UEUpCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNv
dXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50
bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0gICAgaWYgKHBhcmFt
ZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgIFN0cmluZyB0eXBl
U3RyaW5nID0gcGFyYW1ldGVycy50eXBlICsgIjsgY29kZWNzPVwiIiArIHBhcmFtZXRlcnMuY29k
ZWNzICsgIlwiIjsKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGNvbnRhaW5lclR5cGUgKyAiOyBj
b2RlY3M9XCIiICsgY29kZWNzICsgIlwiIjsKICAgICByZXR1cm4gQVZDRlVSTEFzc2V0SXNQbGF5
YWJsZUV4dGVuZGVkTUlNRVR5cGUodHlwZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSA/
IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsK
ICNlbHNlCi0gICAgaWYgKGF2Zk1JTUVUeXBlcygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkp
Ci0gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXll
cjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKGF2
Zk1JTUVUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gY29k
ZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVy
OjpJc1N1cHBvcnRlZDsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5MjNmZGI5NDE1Y2IzODhiOTVj
OTAxOWI5NWQxNWFjNjQyNjg1NjMwLi44Y2IyOTk2MmI0YWZmZDQ3MWIxMjE2ZTE0MWM4NDhkNzll
ZDY2ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTk0NSw5ICs5NDUsOSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktl
eTpBVlVSTEFzc2V0UmVxdWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5XTsKICNlbmRpZgogCi0gICAg
YXV0byYgdHlwZSA9IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsKKyAgICBhdXRvIHR5cGUg
PSBwbGF5ZXIoKS0+Y29udGVudE1JTUVUeXBlKCk7CiAgICAgaWYgKEFWVVJMQXNzZXRPdXRPZkJh
bmRNSU1FVHlwZUtleSAmJiAhdHlwZS5pc0VtcHR5KCkgJiYgIXBsYXllcigpLT5jb250ZW50TUlN
RVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24oKSkgewotICAgICAgICBhdXRvJiBjb2RlY3Mg
PSBwbGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKKyAgICAgICAgYXV0byBjb2RlY3MgPSBw
bGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3MuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKil0eXBlLCAoTlNT
dHJpbmcgKiljb2RlY3NdOwogICAgICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OnR5cGVTdHJp
bmcgZm9yS2V5OkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleV07CkBAIC0xNzE1LDE4ICsx
NzE1LDIwIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgaWYgKHBhcmFtZXRlcnMuaXNN
ZWRpYVN0cmVhbSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsK
ICNlbmRpZgotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkK
KworICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBl
KCk7CisgICAgaWYgKGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShjb250YWluZXJUeXBlKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIGlmICghc3RhdGlj
TUlNRVR5cGVMaXN0KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSAmJiAhQVZGb3VuZGF0aW9u
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkudHlwZXMoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5
cGUpKQorICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlw
ZSkgJiYgIUFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnR5cGVzKCkuY29u
dGFpbnMoY29udGFpbmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CiAKICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMg
YXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBj
b25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBp
ZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUu
Y29kZWNzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3Vw
cG9ydGVkOwogCi0gICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBl
LCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLmNvZGVjc107CisgICAgTlNTdHJpbmcgKnR5cGVTdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5T
U3RyaW5nICopY29udGFpbmVyVHlwZSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpXTsKICAgICByZXR1cm4gW0FWVVJM
QXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA0MzE1MjQzOTdkN2VkYjA2NWY3ZjA0N2M4MjFiNmY2
NDQ4MmNmZWVlLi44ZWY5NjE5MmU0ZjNiM2NhNDZkOGU5N2JkM2Q0ODVkODkwMTgzMjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yMTksMTAgKzIxOSwxMSBAQCBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3Vw
cG9ydHNUeXBlKGNvbgogCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50
b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4g
YmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0g
ICAgaWYgKHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBhdXRvIGNvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
KyAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpN
YXlCZVN1cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICpvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJz
LmNvZGVjczsKKyAgICBOU1N0cmluZyAqb3V0cHV0Q29kZWNzID0gY29kZWNzOwogICAgIGlmIChb
Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKQog
ICAgICAgICBvdXRwdXRDb2RlY3MgPSBbZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRw
dXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2Rl
Y3NdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQppbmRleCA1YjIwOWJmMzYzMTQ0M2M2NDBmOTE5Njc3ZWFlZjRlOWJlN2E1YmIy
Li4zODBmODFjZGVmNDgzYzZhMjJjNDUxNzBiZTQ0MjY2NWQ3ZmI4MDZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTY2
LDggKzY2LDcgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKGNvbnN0IEMKIHsKICAgICBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBlKCk7Ci0gICAg
cGFyYW1ldGVycy5jb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJj
b2RlY3MiKSk7CisgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7CiAgICAgaWYgKE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRl
cnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZCkKICAgICAgICAgcmV0dXJuIE5vdFN1
cHBvcnRlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCA5YjE3NjIwNDU4N2FlZTBjMDRmNGQxNjRkOGQ4NTA0ZDhhZjMyM2IxLi4zNThk
MDhmODhmN2NiNDFlNDYzODBiNjhhYjA5NTkzYzMyZjU2MzhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTkwMiwxMiArMTkwMiwxMiBA
QCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRQogICAgIGlmIChwYXJhbWV0ZXJzLmlzTWVkaWFTdHJl
YW0pCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlz
TnVsbCgpIHx8IHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKICAgICAvLyBzcGVjIHNh
eXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5IiBpZiB0aGUgY29kZWNzIHN0cmluZyBp
cyBlbXB0eQotICAgIGlmIChtaW1lVHlwZVNldCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkp
Ci0gICAgICAgIHJlc3VsdCA9IHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAo
bWltZVR5cGVTZXQoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpKSkK
KyAgICAgICAgcmVzdWx0ID0gcGFyYW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSA/IE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKIAog
ICAgIHJldHVybiBleHRlbmRlZFN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCByZXN1bHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCmluZGV4IGRjZjBmZWY4MDBiZjBiMDJiYzQ3ODgyMThkNTNiM2NmNzBhMWEyOWIuLjQw
MmUzN2UyYmZhNGI5ODczY2FhZjliNDc0YjFlZmJiNzNmMzk3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTg1
OCwyMiArODU4LDI0IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkCiAgICAgaWYgKCFwYXJhbWV0
ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKKyAgICBhdXRvIGNv
bnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIC8vIERp
c2FibGUgVlBYL09wdXMgb24gTVNFIGZvciBub3csIG1wNC9hdmMxIHNlZW1zIHdheSBtb3JlIHJl
bGlhYmxlIGN1cnJlbnRseS4KLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmVuZHNXaXRoKCJ3ZWJt
IikpCisgICAgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAogICAgIC8vIFlvdVR1YmUgVFYgcHJvdmlkZXMgZW1wdHkgdHlwZXMgZm9y
IHNvbWUgdmlkZW9zIGFuZCB3ZSB3YW50IHRvIGJlIHNlbGVjdGVkIGFzIGJlc3QgbWVkaWEgZW5n
aW5lIGZvciB0aGVtLgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKSB7CisgICAg
aWYgKGNvbnRhaW5lclR5cGUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlc3VsdCA9IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAg
ICAvLyBTcGVjIHNheXMgd2Ugc2hvdWxkIG5vdCByZXR1cm4gInByb2JhYmx5IiBpZiB0aGUgY29k
ZWNzIHN0cmluZyBpcyBlbXB0eS4KLSAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBh
cmFtZXRlcnMudHlwZSkpIHsKLSAgICAgICAgaWYgKHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHko
KSkKKyAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKSB7Cisg
ICAgICAgIFN0cmluZyBjb2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRU
eXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7CisgICAgICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBzdXBwb3J0c0NvZGVjcyhwYXJhbWV0ZXJzLmNv
ZGVjcykgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBw
b3J0ZWQ7CisgICAgICAgICAgICByZXN1bHQgPSBzdXBwb3J0c0NvZGVjcyhjb2RlY3MpID8gTWVk
aWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogICAg
IH0KIAogICAgIHJldHVybiBleHRlbmRlZFN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCByZXN1bHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IGMzNTc0NDM2MjU2YmI1YjFmZWM3
YWMxMmM1YmQwYjZjODMwY2U0NWQuLjYwYmZjMDViYjFiYzc2NGQzOTg0ZDNkNWRiMDE2NGJhMGQz
MTk3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTEzMTcsMTIgKzEzMTcs
MTMgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW4KIAogICAgIC8vIER1ZSB0byA8cmRhcjovL3By
b2JsZW0vMTA3NzcwNTk+LCBhdm9pZCBjYWxsaW5nIHRoZSBtaW1lIHR5cGVzIGNhY2hlIGZ1bmN0
aW9ucyBpZiBhdAogICAgIC8vIGFsbCBwb3NzaWJsZToKLSAgICBpZiAoc2hvdWxkUmVqZWN0TUlN
RVR5cGUocGFyYW1ldGVycy50eXBlKSkKKyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0
ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOworICAgIGlmIChzaG91bGRSZWplY3RNSU1FVHlwZShj
b250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRl
ZDsKIAogICAgIC8vIFdlIGNoZWNrIHRoZSAibW9kZXJuIiB0eXBlIGNhY2hlIGZpcnN0LCBhcyBp
dCBkb2Vzbid0IHJlcXVpcmUgUVRLaXRTZXJ2ZXIgdG8gc3RhcnQuCi0gICAgaWYgKG1pbWVNb2Rl
cm5UeXBlc0NhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSB8fCBtaW1lQ29tbW9uVHlw
ZXNDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCi0gICAgICAgIHJldHVybiBwYXJh
bWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBN
ZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKG1pbWVNb2Rlcm5UeXBlc0NhY2hlKCku
Y29udGFpbnMoY29udGFpbmVyVHlwZSkgfHwgbWltZUNvbW1vblR5cGVzQ2FjaGUoKS5jb250YWlu
cyhjb250YWluZXJUeXBlKSkKKyAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMudHlwZS5jb2RlY3Mo
KS5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6
SXNTdXBwb3J0ZWQ7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcAppbmRl
eCBlZDMyZDE5Zjc0MTQxN2Q1OTZhOTYyOGJjYzU3MmM0ZmI1Y2Y4OGEwLi41NWJjMmNkZjcxODg1
ZWNlMGRmZGQyNTU1OWRjNzgxZjhkM2RkMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcApAQCAtMTU3LDEwICsxNTcsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUMKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNO
dWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKKyAgICBpZiAocGFyYW1ldGVycy50
eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRl
ZDsKIAotICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkK
KyAgICBpZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZS5jb250YWlu
ZXJUeXBlKCkpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwogCiAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKaW5kZXggNGU0MGM4ZTczZGQ5ODc5MzRiNzQ5ZWFi
YjE0YWYxNTczZDBlZmQ4NC4uOGEyNTNiMTk5OWE4ZDk2MTcwMDRhYWYxM2I1OGQ5MzZhMjgxMDQw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAKQEAgLTY4
LDEzICs2OCwxNSBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbgogICAgIGlmICghcGFyYW1ldGVy
cy5pc01lZGlhU291cmNlKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9y
dGVkOwogCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkgfHwgIW1pbWVUeXBlQ2Fj
aGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGF1dG8gY29udGFpbmVyVHlwZSA9
IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKGNvbnRhaW5lclR5cGUu
aXNFbXB0eSgpIHx8ICFtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkpCiAg
ICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAocGFy
YW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVycy50
eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmIChj
b2RlY3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9y
dGVkOwogCi0gICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNzID09ICJtb2NrIiA/IE1lZGlhUGxh
eWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKKyAgICByZXR1
cm4gY29kZWNzID09ICJtb2NrIiA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZDsKIH0KIAogTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6Ok1v
Y2tNZWRpYVBsYXllck1lZGlhU291cmNlKE1lZGlhUGxheWVyKiBwbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcAppbmRleCA3ZWI0MTIxZjVlZmNjMTUzYmU3YTNmM2Q3
MWEyYWRiZmU5MmEyNzQyLi41NjkxYzAxOGZiMWQzY2EwNDMzMTQzMDAyYTE5YzIzODUzNGU3Y2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTYyLDggKzYyLDcg
QEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6
YWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnQKIHsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsK
LSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBlKCk7Ci0gICAgcGFyYW1ldGVy
cy5jb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJjb2RlY3MiKSk7
CisgICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGU7CiAgICAgaWYgKE1vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5ZXI6
OklzTm90U3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312133</attachid>
            <date>2017-06-06 16:02:43 -0700</date>
            <delta_ts>2017-06-07 11:27:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173038-20170606160242.patch</filename>
            <type>text/plain</type>
            <size>37347</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEyYmZiYmM2NjA5ZDUxZDFiNDM1MTgx
ODdkZmZiNDNlZDE0NDI4ZDcuLjNkNTAzZTg3NjA4ZTIzZmIyMDk4NDA5MjQ1MjFhYzk5YThlYmUx
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDYgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIgdGhhbiBzZXBhcmF0ZSB0
eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyaXZlIGJ5IGZpeDogYWRkIGEgdmVyc2lvbiBvZiBzcGxpdCB0aGF0IHRh
a2VzIGEgVUNoYXIgYW5kIHJldHVybnMgYSBWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0KToKKwogMjAx
Ny0wNi0wNSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxv
dyBjbGllbnRzIHRvIHNwZWNpZnkgYSBsaXN0IG9mIGNvZGVjcyB3aGljaCBzaG91bGQgcmVxdWly
ZSBoYXJkd2FyZSBkZWNvZGUgc3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYmVmYWNjZmExNDAyYWRl
NjczYTRlM2UzMTVlNGQwN2E0OTkyN2MxLi43MzM5YjBmMjFjYjZjNTBjYjgwMjE4MGRmOTJmYjI0
MTJmYjJjNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjYgQEAKIDIwMTctMDYtMDYgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIg
dGhhbiBzZXBhcmF0ZSB0eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JB
dWRpb1ZpZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToK
KyAgICAgICAgKiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2Fu
UGxheVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4
dFNvdXJjZUNoaWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6Y29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzaW1wbGlm
eVdoaXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5cGU6OmNvZGVjcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6cHJvZmlsZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFR5cGU6OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
bnRUeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6YmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29kZWNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6Y29udGVudFR5cGVDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlT
eXN0ZW1BbmRNaW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBv
cnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVk
aWFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3Vy
Y2U6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OmFkZFNvdXJjZUJ1ZmZlcik6CisKKzIwMTctMDYtMDYgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgRXhlbXB0IGV4Y2x1c2l2ZWx5IHdhbGwt
cG93ZXJlZCBkZXZpY2VzIGZyb20gaGFyZHdhcmUgY29kZWMgcmVxdWlyZW1lbnQKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzAwOQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCBkYWQwNzJjNzY5NTE2MDliNjkxNWVjY2MwYmEwNzg2NzRlZWQw
YzljLi5hYjIxY2MyMjU0MGQxNWUxNjQxYzEwNTIzNjNhYmVkYzQxMzE3N2NjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTM2OSw3ICszNjksMTIgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKICAgICB9Ci0KKyAgICBWZWN0b3I8
U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBhcmF0b3IpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0
b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIFZlY3RvcjxTdHJpbmc+IHNw
bGl0KGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yKSBjb25zdAogICAgIHsKICAgICAgICAgVmVjdG9y
PFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE0uY3BwCmluZGV4IDc1ODhiMDYyODVlMWQyOTRjZmQ3ZjAxYTU3NDgyODg1Y2M1MjI1NTYu
LmM1Y2U3Y2NhOTIwMTFmN2M1OWIxZDAyNTFhYTJjY2ZiNWIwOTFlNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKQEAgLTQ4OCw4ICs0ODgsNyBA
QCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxNZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENE
TTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aQogICAgICAgICAvLyAgICAgICBjb21iaW5hdGlvbiBv
ZiBjb250YWluZXIsIG1lZGlhIHR5cGVzLCByb2J1c3RuZXNzIGFuZCBsb2NhbCBhY2N1bXVsYXRl
ZCBjb25maWd1cmF0aW9uIGluIGNvbWJpbmF0aW9uCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVz
dHJpY3Rpb25zOgogICAgICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLm1pbWVUeXBlKCk7Ci0g
ICAgICAgIHBhcmFtZXRlcnMuY29kZWNzID0gY29kZWNzOworICAgICAgICBwYXJhbWV0ZXJzLnR5
cGUgPSBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMsIG51bGxwdHIpKSB7CiAgICAgICAgICAgICAvLyBUcnkgd2l0aCBNZWRpYSBT
b3VyY2U6CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApp
bmRleCA2YWM4ZDAyOGM2MzllMzJkNTJkZDBkYTdjZDZhNjIyNzg2M2YzMDJkLi5jNzZiYzVhYzAz
ZjMzZjIyNzFmY2YxOTkyMzNhMzU1NzU5ZjExZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcApAQCAtODQ0LDggKzg0NCw3IEBA
IGJvb2wgTWVkaWFTb3VyY2U6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIHR5cGUpCiAg
ICAgLy8gNS4gSWYgdGhlIE1lZGlhU291cmNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpZmll
ZCBjb21iaW5hdGlvbiBvZiBtZWRpYSB0eXBlLCBtZWRpYSBzdWJ0eXBlLCBhbmQgY29kZWNzIHRo
ZW4gcmV0dXJuIGZhbHNlLgogICAgIC8vIDYuIFJldHVybiB0cnVlLgogICAgIE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250
ZW50VHlwZS50eXBlKCk7Ci0gICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb2RlY3M7CisgICAgcGFy
YW1ldGVycy50eXBlID0gY29udGVudFR5cGU7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ID0gdHJ1ZTsKICAgICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycywgMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NmZhMWNjYjE0NDZiYmRmOTc2ODQzZTliMGU1
MzNiMGZiNjZkNzUuLjg0YWM1NzRmNTEyYmFkN2YxZTA4NTIxNmY3MTI5Yjg0ZmNhZGEzZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIFJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0
IFN0cmluZyYgdHlwZSwgRnJhbWUqIGZyYW1lCiAgICAgLy8gS2V5IHN5c3RlbSBpcyBub3QgYXBw
bGljYWJsZSBoZXJlLgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IGNs
aWVudChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygp
LCB1cmwuaG9zdCgpKTsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7Ci0gICAgcGFyYW1ldGVycy50eXBlID0gdHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBD
b250ZW50VHlwZSh0eXBlKTsKICAgICBwYXJhbWV0ZXJzLnVybCA9IHVybDsKICAgICBpZiAoTWVk
aWFQbGF5ZXI6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCAmY2xpZW50KSkKICAgICAgICAgcmV0
dXJuIE1lZGlhRG9jdW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGNjYjBiOTQ4MGJiYTUyY2I0NmNiNWYwODhkODY0
MzZkNDgxYTY2YjcuLjJhNzg0NmM1YjA0YTA2MjA1MTgyNTQyMjFlNTAxMTZjOTg5M2Y3MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEzNCw4ICsxMTM0
LDcgQEAgU3RyaW5nIEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpIGNvbnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKG1pbWVUeXBlKTsKLSAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2Uo
KTsKLSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxp
dGVyYWwoImNvZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAg
ICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnQgPSBNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKHBhcmFtZXRlcnMsIHRoaXMpOwogICAgIFN0cmluZyBjYW5QbGF5OwogCkBAIC00MzEw
LDkgKzQzMDksNyBAQCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxk
KENvbnRlbnRUeXBlKiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICAgICAgICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLSAn
dHlwZScgaXMgJyVzJyIsIHRoaXMsIHR5cGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAg
ICAgICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAg
ICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKHR5cGUpOwotICAgICAgICAgICAgcGFyYW1ldGVy
cy50eXBlID0gY29udGVudFR5cGUudHlwZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJ
SUxpdGVyYWwoImNvZGVjcyIpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRl
bnRUeXBlKHR5cGUpOwogICAgICAgICAgICAgcGFyYW1ldGVycy51cmwgPSBtZWRpYVVSTDsKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQogICAgICAgICAgICAgcGFyYW1ldGVycy5pc01lZGlhU291
cmNlID0gbWVkaWFVUkwucHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKaW5kZXggODhhNzE0YjVmMzkyY2UxOTc5
ZWRiZWY0NGUyNTljZGJhMjJjMWZiOS4uYTZmZjdlNjBkY2VhNzAzYmE4ODdjNDM1YzBkNTJlYTBm
OGUyNDM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUu
aCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNSw2ICszNiwxOCBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSkKIHsKIH0KIAorY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29k
ZWNzUGFyYW1ldGVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2Rl
Y3MgeyBBU0NJSUxpdGVyYWwoImNvZGVjcyIpIH07CisgICAgcmV0dXJuIGNvZGVjczsKK30KKwor
Y29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6cHJvZmlsZXNQYXJhbWV0ZXIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHByb2ZpbGVzIHsgQVNDSUlMaXRlcmFsKCJwcm9m
aWxlcyIpIH07CisgICAgcmV0dXJuIHByb2ZpbGVzOworfQorCiBTdHJpbmcgQ29udGVudFR5cGU6
OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiB7CiAgICAgU3Ry
aW5nIHBhcmFtZXRlclZhbHVlOwpAQCAtNjQsNyArNzcsNyBAQCBTdHJpbmcgQ29udGVudFR5cGU6
OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiAgICAgcmV0dXJu
IHBhcmFtZXRlclZhbHVlOwogfQogCi1TdHJpbmcgQ29udGVudFR5cGU6OnR5cGUoKSBjb25zdAor
U3RyaW5nIENvbnRlbnRUeXBlOjpjb250YWluZXJUeXBlKCkgY29uc3QKIHsKICAgICBTdHJpbmcg
c3RyaXBwZWRUeXBlID0gbV90eXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogCkBAIC03NiwxOSArODks
MTkgQEAgU3RyaW5nIENvbnRlbnRUeXBlOjp0eXBlKCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBw
ZWRUeXBlOwogfQogCi1WZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QK
K3N0YXRpYyBTdHJpbmcgc2ltcGxpZnlXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQog
ewotICAgIFN0cmluZyBjb2RlY3NQYXJhbWV0ZXIgPSBwYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJj
b2RlY3MiKSk7Ci0KLSAgICBpZiAoY29kZWNzUGFyYW1ldGVyLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgcmV0dXJuIHN0cmluZy5zaW1wbGlmeVdoaXRl
U3BhY2UoKTsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+IGNvZGVjczsKLSAgICBjb2RlY3NQYXJh
bWV0ZXIuc3BsaXQoJywnLCBjb2RlY3MpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29k
ZWNzLnNpemUoKTsgKytpKQotICAgICAgICBjb2RlY3NbaV0gPSBjb2RlY3NbaV0uc2ltcGxpZnlX
aGl0ZVNwYWNlKCk7CitWZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcGFyYW1ldGVyKGNvZGVjc1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1h
cChzaW1wbGlmeVdoaXRlc3BhY2UpOworfQogCi0gICAgcmV0dXJuIGNvZGVjczsKK1ZlY3RvcjxT
dHJpbmc+IENvbnRlbnRUeXBlOjpwcm9maWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmFt
ZXRlcihwcm9maWxlc1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1hcChzaW1wbGlmeVdoaXRlc3Bh
Y2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29u
dGVudFR5cGUuaAppbmRleCBmMzFhYzUwYTA4NzUzY2U3YTgwMWQ4NzVmYjNiMjExOGNkZGQxYzQ1
Li4wNmI2NzlkZDViZmU1YTk4ZGZmYTY1ZjE3ZDRjYTNjOGQ3NDIxYjBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0NvbnRlbnRUeXBlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ29udGVu
dFR5cGVfaAogI2RlZmluZSBDb250ZW50VHlwZV9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNyw5ICszOCwxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAorICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOworICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIHByb2ZpbGVzUGFyYW1ldGVyKCk7CisKICAgICBTdHJpbmcgcGFyYW1ldGVyKGNvbnN0
IFN0cmluZyYgcGFyYW1ldGVyTmFtZSkgY29uc3Q7Ci0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsK
KyAgICBTdHJpbmcgY29udGFpbmVyVHlwZSgpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNv
ZGVjcygpIGNvbnN0OworICAgIFZlY3RvcjxTdHJpbmc+IHByb2ZpbGVzKCkgY29uc3Q7CiAgICAg
Y29uc3QgU3RyaW5nJiByYXcoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUuaXNFbXB0eSgpOyB9CiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4
IGRhMDliYmFmYTk5MmNmM2M1OWM2YWRiYzFkOWRhZjkxZTZiOWVmZmMuLmViOWQxODk0YTE5NmMx
YTMwMTJmZDk2YjRmZjI5OGQ1MzY4YWI0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTI4OCwxMiArMjg4LDYgQEAgc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwog
fQogCi1zdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb2RlY3MoKQotewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygiY29kZWNzIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGNvZGVjczsKLX0KLQog
c3RhdGljIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9y
dFBhcmFtZXRlcnMoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gbnVsbHB0cikKIHsKICAgICBp
ZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU291cmNl
ICYmICFwYXJhbWV0ZXJzLmlzTWVkaWFTdHJlYW0pCkBAIC0zMDIsOCArMjk2LDggQEAgc3RhdGlj
IGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFt
ZXRlcnMoY29uc3QgTWVkaWEKICAgICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gSW4gdGhlIGFi
c2VuY2Ugb2YgYSBzcGVjaWZpY2F0aW9uIHRvIHRoZSBjb250cmFyeSwgdGhlIE1JTUUgdHlwZSAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgogICAgIC8vIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRl
cnMsIGUuZy4gImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9dGhlb3JhIiwgaXMgYSB0
eXBlIHRoYXQgdGhlIHVzZXIgYWdlbnQga25vd3MgCiAgICAgLy8gaXQgY2Fubm90IHJlbmRlci4K
LSAgICBpZiAocGFyYW1ldGVycy50eXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkgewot
ICAgICAgICBpZiAoIXBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBpZiAocGFyYW1l
dGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsK
KyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zODEsOCArMzc1LDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICAvLyBQcm90ZWN0IGFnYWluc3QgTWVkaWFQbGF5ZXIgYmVp
bmcgZGVzdHJveWVkIGR1cmluZyBhIE1lZGlhUGxheWVyQ2xpZW50IGNhbGxiYWNrLgogICAgIFJl
ZjxNZWRpYVBsYXllcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBtX2NvbnRlbnRNSU1F
VHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAg
IG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoY29kZWNzKCkpOwor
ICAgIG1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsKICAgICBtX3VybCA9IHVybDsKICAgICBt
X2tleVN5c3RlbSA9IGtleVN5c3RlbS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIG1f
Y29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CkBAIC0zOTUs
OSArMzg4LDEwIEBAIGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAjZW5kaWYKIAogICAgIC8vIElm
IHRoZSBNSU1FIHR5cGUgaXMgbWlzc2luZyBvciBpcyBub3QgbWVhbmluZ2Z1bCwgdHJ5IHRvIGZp
Z3VyZSBpdCBvdXQgZnJvbSB0aGUgVVJMLgotICAgIGlmIChtX2NvbnRlbnRNSU1FVHlwZS5pc0Vt
cHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpIHx8
IG1fY29udGVudE1JTUVUeXBlID09IHRleHRQbGFpbigpKSB7CisgICAgQXRvbWljU3RyaW5nIGNv
bnRhaW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29u
dGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0
U3RyZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAo
bV91cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0g
bWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAgICAgICAgICBtX2NvbnRl
bnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9
IHVybC5sYXN0UGF0aENvbXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQ
YXRoQ29tcG9uZW50LnJldmVyc2VGaW5kKCcuJyk7CkBAIC00MDUsNyArMzk5LDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBjb25zdCBTdHIKICAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFz
dFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKHBvcyArIDEpOwogICAgICAgICAgICAgICAgIFN0cmlu
ZyBtZWRpYVR5cGUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5z
aW9uKGV4dGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0gbWVkaWFUeXBlOwor
ICAgICAgICAgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWVkaWFUeXBl
KTsKICAgICAgICAgICAgICAgICAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21F
eHRlbnNpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQy
Myw4ICs0MTcsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIE1lZGlhU291cgogICAgIEFTU0VSVChtZWRpYVNv
dXJjZSk7CiAKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Ci0gICAgbV9jb250ZW50
TUlNRVR5cGUgPSBjb250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsK
LSAgICBtX2NvbnRlbnRUeXBlQ29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKGNvZGVjcygp
KTsKKyAgICBtX2NvbnRlbnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgbV91cmwgPSB1cmw7CiAg
ICAgbV9rZXlTeXN0ZW0gPSBlbXB0eVN0cmluZygpOwogICAgIG1fY29udGVudE1JTUVUeXBlV2Fz
SW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CkBAIC00NDAsNyArNDMzLDcgQEAgYm9vbCBN
ZWRpYVBsYXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogCiAgICAg
bV9tZWRpYVN0cmVhbSA9ICZtZWRpYVN0cmVhbTsKICAgICBtX2tleVN5c3RlbSA9IGVtcHR5U3Ry
aW5nKCk7Ci0gICAgbV9jb250ZW50TUlNRVR5cGUgPSBlbXB0eVN0cmluZygpOworICAgIG1fY29u
dGVudFR5cGUgPSB7IH07CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRl
bnNpb24gPSBmYWxzZTsKICAgICBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSgwKTsKICAgICByZXR1
cm4gbV9jdXJyZW50TWVkaWFFbmdpbmU7CkBAIC00NTAsOCArNDQzLDcgQEAgYm9vbCBNZWRpYVBs
YXllcjo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogY29uc3QgTWVkaWFQ
bGF5ZXJGYWN0b3J5KiBNZWRpYVBsYXllcjo6bmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRp
YVBsYXllckZhY3RvcnkqIGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1fY29udGVudE1J
TUVUeXBlOwotICAgIHBhcmFtZXRlcnMuY29kZWNzID0gbV9jb250ZW50VHlwZUNvZGVjczsKKyAg
ICBwYXJhbWV0ZXJzLnR5cGUgPSBtX2NvbnRlbnRUeXBlOwogICAgIHBhcmFtZXRlcnMudXJsID0g
bV91cmw7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFT
b3VyY2UgPSAhIW1fbWVkaWFTb3VyY2U7CkBAIC00ODIsMTYgKzQ3NCwxNiBAQCB2b2lkIE1lZGlh
UGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rvcnkq
IGN1cnJlbnQpCiAKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IG51bGxw
dHI7CiAKLSAgICBpZiAoIW1fY29udGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBNRURJQVNUUkVB
TSB8fCBNRURJQVNPVVJDRSkKKyAgICBpZiAoIW1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IE1F
RElBU1RSRUFNIHx8IE1FRElBU09VUkNFKQogICAgICAgICBlbmdpbmUgPSBuZXh0QmVzdE1lZGlh
RW5naW5lKGN1cnJlbnQpOwogCiAgICAgLy8gSWYgbm8gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBv
ciB0aGUgdHlwZSB3YXMgaW5mZXJyZWQgZnJvbSB0aGUgZmlsZSBleHRlbnNpb24sIGp1c3QgdXNl
IHRoZSBuZXh0IGVuZ2luZS4KLSAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50TUlNRVR5cGUu
aXNFbXB0eSgpIHx8IG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKSkK
KyAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50
TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24pKQogICAgICAgICBlbmdpbmUgPSBuZXh0
TWVkaWFFbmdpbmUoY3VycmVudCk7CiAKICAgICAvLyBEb24ndCBkZWxldGUgYW5kIHJlY3JlYXRl
IHRoZSBwbGF5ZXIgdW5sZXNzIGl0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgZW5naW5lLgogICAg
IGlmICghZW5naW5lKSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyOjpsb2FkV2l0
aE5leHRNZWRpYUVuZ2luZSAtIG5vIG1lZGlhIGVuZ2luZSBmb3VuZCBmb3IgdHlwZSBcIiVzXCIi
LCBtX2NvbnRlbnRNSU1FVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lIC0gbm8gbWVkaWEgZW5naW5lIGZv
dW5kIGZvciB0eXBlIFwiJXNcIiIsIG1fY29udGVudFR5cGUucmF3KCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIG1fY3VycmVudE1lZGlhRW5naW5lID0gZW5naW5lOwogICAgICAgICBtX3ByaXZh
dGUgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVkaWFFbmdpbmUgIT0gZW5n
aW5lKSB7CkBAIC04NzksNyArODcxLDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRp
YVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKIHsKICAg
ICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBlKHR5cGUpIG1ldGhvZCBt
dXN0IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0eXBlIHRoYXQgdGhlIAog
ICAgIC8vIHVzZXIgYWdlbnQga25vd3MgaXQgY2Fubm90IHJlbmRlciBvciBpcyB0aGUgdHlwZSAi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBw
bGljYXRpb25PY3RldFN0cmVhbSgpKQorICAgIEF0b21pY1N0cmluZyBjb250YWluZXJUeXBlID0g
cGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29udGFpbmVyVHlwZSA9
PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpCiAgICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRl
ZDsKIAogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5n
aW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC04OTYsNyArODg5LDcgQEAg
TWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0
IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+bWVkaWFQ
bGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkpIHsKICAgICAgICAgU3RyaW5nIGhvc3QgPSBj
bGllbnQtPm1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCk7CiAgICAgICAgIGlmICgoaG9zdC5lbmRz
V2l0aCgiLnlvdXR1YmUuY29tIiwgZmFsc2UpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGhvc3QsICJ5b3V0dWJlLmNvbSIpKQotICAgICAgICAgICAgJiYgKHBhcmFtZXRlcnMudHlw
ZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IHBhcmFtZXRlcnMudHlwZS5zdGFy
dHNXaXRoKCJ2aWRlby94LWZsdiIsIGZhbHNlKSkpCisgICAgICAgICAgICAmJiAoY29udGFpbmVy
VHlwZS5zdGFydHNXaXRoKCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IGNvbnRhaW5lclR5cGUuc3Rh
cnRzV2l0aCgidmlkZW8veC1mbHYiLCBmYWxzZSkpKQogICAgICAgICAgICAgcmV0dXJuIElzTm90
U3VwcG9ydGVkOwogICAgIH0KICNlbHNlCkBAIC0xMTMwLDcgKzExMjMsNyBAQCB2b2lkIE1lZGlh
UGxheWVyOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKICAgICAvLyBsZXQgdGhlIG5leHQgZW5naW5l
IHRyeS4KICAgICBpZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBGb3JtYXRFcnJvciAm
JiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGll
bnQoKS5tZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFs
bGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0
eSgpIHx8IG5leHRCZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKSkgeworICAg
ICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50
VHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2lu
ZSkpKSB7CiAgICAgICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCAyMWFmNGZmYjYzOTU3YjEzMjEzNGQyZGY3Y2Ey
ZmRjNTdkNTExMzAwLi5kNjQxYTc4NWFiMDE2MzJhM2I4Yjc2YjE5OTQzNmRjOTA2NDYwYTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAg
LTExMCw4ICsxMTAsNyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAK
ICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzKCkgeyB9CiAKLSAgICBTdHJpbmcgdHlw
ZTsKLSAgICBTdHJpbmcgY29kZWNzOworICAgIENvbnRlbnRUeXBlIHR5cGU7CiAgICAgVVJMIHVy
bDsKICAgICBib29sIGlzTWVkaWFTb3VyY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNNZWRpYVN0
cmVhbSB7IGZhbHNlIH07CkBAIC01ODYsOCArNTg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2hvdWxkRGlzYWJsZVNsZWVwKGJvb2wpOwogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNsZWVwKCkg
Y29uc3Q7CiAKLSAgICBjb25zdCBTdHJpbmcmIGNvbnRlbnRNSU1FVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudE1JTUVUeXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZUNv
ZGVjcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFR5cGVDb2RlY3M7IH0KKyAgICBTdHJpbmcg
Y29udGVudE1JTUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZS5jb250YWluZXJU
eXBlKCk7IH0KKyAgICBTdHJpbmcgY29udGVudFR5cGVDb2RlY3MoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRUeXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOyB9
CiAgICAgYm9vbCBjb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbjsgfQog
CiAgICAgY29uc3QgVmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJp
bmdIYXJkd2FyZVN1cHBvcnQoKSBjb25zdDsKQEAgLTYwNCw4ICs2MDMsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0
ZTsKICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIG1fY3VycmVudE1lZGlhRW5naW5lOwog
ICAgIFVSTCBtX3VybDsKLSAgICBTdHJpbmcgbV9jb250ZW50TUlNRVR5cGU7Ci0gICAgU3RyaW5n
IG1fY29udGVudFR5cGVDb2RlY3M7CisgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAg
ICBTdHJpbmcgbV9rZXlTeXN0ZW07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBt
X3ByZWxvYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCmluZGV4IGZkMTY4Nzg4OTExZWNhZWFmMmRiYjgwM2ZmMDM4OTI5ODdhODM3YjMu
LjBkNzMzZTQwNTkzYjNmMDEzMTlhMjY0ODY0ZWVkMGJiOWY0NDMzMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC04Miw3ICs4
Miw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0
ZW1BbmRNaW1lVHlwZShjb25zdCBTdHJpbmcmIGtlCiAKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1
ZTsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBtaW1lVHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBDb250ZW50VHlwZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5
ZXI6OklzTm90U3VwcG9ydGVkOwogfQpAQCAtOTUsNyArOTUsNyBAQCBib29sIENETVByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIAogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1p
bWVUeXBlOworICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsKIAog
ICAgIHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbkNGLmNwcAppbmRleCA4YTBhZDUwNWVkMDE4NDFlYmExMzMzMDcyNzVhMWE2YWIzMzc4ODlk
Li5iNGZhZDA3OTFhMDBhZGIyYzUzZGY1NzcyYjUwM2ZmOWJmMzFkMzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAKQEAgLTkxMiwyMyArOTEyLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uQ0Y6OmdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhCiAKIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6
OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkK
KyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgp
OworICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCiAgICAgICAg
IHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAoIXN0YXRpY01J
TUVUeXBlTGlzdCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgJiYgIWF2Zk1JTUVUeXBlcygp
LmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgaWYgKCFzdGF0aWNNSU1FVHlwZUxpc3Qo
KS5jb250YWlucyhjb250YWluZXJUeXBlKSAmJiAhYXZmTUlNRVR5cGVzKCkuY29udGFpbnMoY29u
dGFpbmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7
CiAKKyAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5
cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKICNpZiBIQVZFKEFWQ0ZVUkxfUExBWUFCTEVfTUlNRVRZ
UEUpCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNv
dXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50
bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0gICAgaWYgKHBhcmFt
ZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgIFN0cmluZyB0eXBl
U3RyaW5nID0gcGFyYW1ldGVycy50eXBlICsgIjsgY29kZWNzPVwiIiArIHBhcmFtZXRlcnMuY29k
ZWNzICsgIlwiIjsKKyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGNvbnRhaW5lclR5cGUgKyAiOyBj
b2RlY3M9XCIiICsgY29kZWNzICsgIlwiIjsKICAgICByZXR1cm4gQVZDRlVSTEFzc2V0SXNQbGF5
YWJsZUV4dGVuZGVkTUlNRVR5cGUodHlwZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSA/
IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsK
ICNlbHNlCi0gICAgaWYgKGF2Zk1JTUVUeXBlcygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkp
Ci0gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXll
cjo6TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKGF2
Zk1JTUVUeXBlcygpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gY29k
ZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVy
OjpJc1N1cHBvcnRlZDsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5MjNmZGI5NDE1Y2IzODhiOTVj
OTAxOWI5NWQxNWFjNjQyNjg1NjMwLi44Y2IyOTk2MmI0YWZmZDQ3MWIxMjE2ZTE0MWM4NDhkNzll
ZDY2ZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTk0NSw5ICs5NDUsOSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktl
eTpBVlVSTEFzc2V0UmVxdWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5XTsKICNlbmRpZgogCi0gICAg
YXV0byYgdHlwZSA9IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsKKyAgICBhdXRvIHR5cGUg
PSBwbGF5ZXIoKS0+Y29udGVudE1JTUVUeXBlKCk7CiAgICAgaWYgKEFWVVJMQXNzZXRPdXRPZkJh
bmRNSU1FVHlwZUtleSAmJiAhdHlwZS5pc0VtcHR5KCkgJiYgIXBsYXllcigpLT5jb250ZW50TUlN
RVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24oKSkgewotICAgICAgICBhdXRvJiBjb2RlY3Mg
PSBwbGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKKyAgICAgICAgYXV0byBjb2RlY3MgPSBw
bGF5ZXIoKS0+Y29udGVudFR5cGVDb2RlY3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3MuaXNFbXB0
eSgpKSB7CiAgICAgICAgICAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKil0eXBlLCAoTlNT
dHJpbmcgKiljb2RlY3NdOwogICAgICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OnR5cGVTdHJp
bmcgZm9yS2V5OkFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleV07CkBAIC0xNzE1LDE4ICsx
NzE1LDIwIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgaWYgKHBhcmFtZXRlcnMuaXNN
ZWRpYVN0cmVhbSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsK
ICNlbmRpZgotICAgIGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkK
KworICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBl
KCk7CisgICAgaWYgKGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShjb250YWluZXJUeXBlKSkKICAgICAg
ICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIGlmICghc3RhdGlj
TUlNRVR5cGVMaXN0KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSAmJiAhQVZGb3VuZGF0aW9u
TUlNRVR5cGVDYWNoZTo6c2luZ2xldG9uKCkudHlwZXMoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5
cGUpKQorICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlw
ZSkgJiYgIUFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnR5cGVzKCkuY29u
dGFpbnMoY29udGFpbmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RT
dXBwb3J0ZWQ7CiAKICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMg
YXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBj
b25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBp
ZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUu
Y29kZWNzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3Vw
cG9ydGVkOwogCi0gICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBl
LCAoTlNTdHJpbmcgKilwYXJhbWV0ZXJzLmNvZGVjc107CisgICAgTlNTdHJpbmcgKnR5cGVTdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5T
U3RyaW5nICopY29udGFpbmVyVHlwZSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLnBhcmFt
ZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpXTsKICAgICByZXR1cm4gW0FWVVJM
QXNzZXQgaXNQbGF5YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5tbQppbmRleCA0MzE1MjQzOTdkN2VkYjA2NWY3ZjA0N2M4MjFiNmY2
NDQ4MmNmZWVlLi5kMGZjNDg2ZDliZGM0ZjRmMTIxNjlmYTY2OTVmYzE2OTQ3NTU5NmNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC0yMTksMTQgKzIxOSwxNSBAQCBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3Vw
cG9ydHNUeXBlKGNvbgogCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50
b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4g
YmUgY29uZmlkZW50bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0g
ICAgaWYgKHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBhdXRvIGNvZGVjcyA9IHBh
cmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsK
KyAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpN
YXlCZVN1cHBvcnRlZDsKIAotICAgIE5TU3RyaW5nICpvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJz
LmNvZGVjczsKKyAgICBOU1N0cmluZyAqb3V0cHV0Q29kZWNzID0gY29kZWNzOwogICAgIGlmIChb
Z2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKQog
ICAgICAgICBvdXRwdXRDb2RlY3MgPSBbZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRw
dXRNSU1FQ29kZWNQYXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2Rl
Y3NdOwogCi0gICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLCAo
TlNTdHJpbmcgKilvdXRwdXRDb2RlY3NdOworICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAq
KXBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCksIChOU1N0cmluZyAqKW91dHB1dENvZGVj
c107CiAgICAgcmV0dXJuIFtnZXRBVlVSTEFzc2V0Q2xhc3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRN
SU1FVHlwZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxh
eWVyOjpNYXlCZVN1cHBvcnRlZDs7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDViMjA5YmYzNjMxNDQzYzY0MGY5
MTk2NzdlYWVmNGU5YmU3YTViYjIuLjM4MGY4MWNkZWY0ODNjNmEyMmM0NTE3MGJlNDQyNjY1ZDdm
YjgwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5tbQpAQCAtNjYsOCArNjYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0
YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwog
ewogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRl
bnRUeXBlLnR5cGUoKTsKLSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFt
ZXRlcihBU0NJSUxpdGVyYWwoImNvZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250
ZW50VHlwZTsKICAgICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpz
dXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKQog
ICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDliMTc2MjA0NTg3YWVlMGMwNGY0ZDE2NGQ4
ZDg1MDRkOGFmMzIzYjEuLjM1OGQwOGY4OGY3Y2I0MWU0NjM4MGI2OGFiMDk1OTNjMzJmNTYzOGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0xOTAyLDEyICsxOTAyLDEyIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgaWYgKHBh
cmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlm
IChwYXJhbWV0ZXJzLnR5cGUuaXNOdWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkK
KyAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKIAogICAgIC8vIHNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlm
IHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5Ci0gICAgaWYgKG1pbWVUeXBlU2V0KCkuY29udGFp
bnMocGFyYW1ldGVycy50eXBlKSkKLSAgICAgICAgcmVzdWx0ID0gcGFyYW1ldGVycy5jb2RlY3Mu
aXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkOworICAgIGlmIChtaW1lVHlwZVNldCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlw
ZS5jb250YWluZXJUeXBlKCkpKQorICAgICAgICByZXN1bHQgPSBwYXJhbWV0ZXJzLnR5cGUuY29k
ZWNzKCkuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5
ZXI6OklzU3VwcG9ydGVkOwogCiAgICAgcmV0dXJuIGV4dGVuZGVkU3VwcG9ydHNUeXBlKHBhcmFt
ZXRlcnMsIHJlc3VsdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggZGNmMGZlZjgwMGJmMGIwMmJjNDc4ODIx
OGQ1M2IzY2Y3MGExYTI5Yi4uNDAyZTM3ZTJiZmE0Yjk4NzNjYWFmOWI0NzRiMWVmYmI3M2YzOTdh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmNwcApAQCAtODU4LDIyICs4NTgsMjQgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShjb25zdCBN
ZWQKICAgICBpZiAoIXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKIAorICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWlu
ZXJUeXBlKCk7CiAgICAgLy8gRGlzYWJsZSBWUFgvT3B1cyBvbiBNU0UgZm9yIG5vdywgbXA0L2F2
YzEgc2VlbXMgd2F5IG1vcmUgcmVsaWFibGUgY3VycmVudGx5LgotICAgIGlmIChwYXJhbWV0ZXJz
LnR5cGUuZW5kc1dpdGgoIndlYm0iKSkKKyAgICBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgi
d2VibSIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gWW91VHViZSBUViBwcm92
aWRlcyBlbXB0eSB0eXBlcyBmb3Igc29tZSB2aWRlb3MgYW5kIHdlIHdhbnQgdG8gYmUgc2VsZWN0
ZWQgYXMgYmVzdCBtZWRpYSBlbmdpbmUgZm9yIHRoZW0uCi0gICAgaWYgKHBhcmFtZXRlcnMudHlw
ZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgcmVzdWx0ID0gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAogICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAi
cHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgotICAgIGlmIChtaW1lVHlw
ZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkgewotICAgICAgICBpZiAocGFyYW1l
dGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMo
Y29udGFpbmVyVHlwZSkpIHsKKyAgICAgICAgU3RyaW5nIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlw
ZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICAgICAgaWYg
KGNvZGVjcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBNZWRpYVBsYXllcjo6TWF5
QmVTdXBwb3J0ZWQ7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHN1cHBvcnRz
Q29kZWNzKHBhcmFtZXRlcnMuY29kZWNzKSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IHN1cHBvcnRz
Q29kZWNzKGNvZGVjcykgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6
SXNOb3RTdXBwb3J0ZWQ7CiAgICAgfQogCiAgICAgcmV0dXJuIGV4dGVuZGVkU3VwcG9ydHNUeXBl
KHBhcmFtZXRlcnMsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXgg
YzM1NzQ0MzYyNTZiYjViMWZlYzdhYzEyYzViZDBiNmM4MzBjZTQ1ZC4uNjBiZmMwNWJiMWJjNzY0
ZDM5ODRkM2Q1ZGIwMTY0YmEwZDMxOTdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQpAQCAtMTMxNywxMiArMTMxNywxMyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbgogCiAgICAg
Ly8gRHVlIHRvIDxyZGFyOi8vcHJvYmxlbS8xMDc3NzA1OT4sIGF2b2lkIGNhbGxpbmcgdGhlIG1p
bWUgdHlwZXMgY2FjaGUgZnVuY3Rpb25zIGlmIGF0CiAgICAgLy8gYWxsIHBvc3NpYmxlOgotICAg
IGlmIChzaG91bGRSZWplY3RNSU1FVHlwZShwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGF1dG8gY29u
dGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKHNo
b3VsZFJlamVjdE1JTUVUeXBlKGNvbnRhaW5lclR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCiAgICAgLy8gV2UgY2hlY2sgdGhlICJtb2Rlcm4iIHR5
cGUgY2FjaGUgZmlyc3QsIGFzIGl0IGRvZXNuJ3QgcmVxdWlyZSBRVEtpdFNlcnZlciB0byBzdGFy
dC4KLSAgICBpZiAobWltZU1vZGVyblR5cGVzQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5
cGUpIHx8IG1pbWVDb21tb25UeXBlc0NhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkK
LSAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVy
OjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAobWlt
ZU1vZGVyblR5cGVzQ2FjaGUoKS5jb250YWlucyhjb250YWluZXJUeXBlKSB8fCBtaW1lQ29tbW9u
VHlwZXNDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gcGFy
YW1ldGVycy50eXBlLmNvZGVjcygpLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBv
cnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRp
YUZvdW5kYXRpb24uY3BwCmluZGV4IGVkMzJkMTlmNzQxNDE3ZDU5NmE5NjI4YmNjNTcyYzRmYjVj
Zjg4YTAuLjU1YmMyY2RmNzE4ODVlY2UwZGZkZDI1NTU5ZGM3ODFmOGQzZGQwNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC0xNTcsMTAg
KzE1NywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Z2V0U3Vw
cG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQwogCiBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKGNv
bnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYg
KHBhcmFtZXRlcnMudHlwZS5pc051bGwoKSB8fCBwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQor
ICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCi0gICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250YWlu
cyhwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFy
YW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXll
cjo6SXNTdXBwb3J0ZWQ7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA0ZTQw
YzhlNzNkZDk4NzkzNGI3NDllYWJiMTRhZjE1NzNkMGVmZDg0Li44YTI1M2IxOTk5YThkOTYxNzAw
NGFhZjEzYjU4ZDkzNmEyODEwNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlLmNwcApAQCAtNjgsMTMgKzY4LDE1IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5
cGUgTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVu
CiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1w
dHkoKSB8fCAhbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAg
YXV0byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAg
ICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkgfHwgIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlu
cyhjb250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBv
cnRlZDsKIAotICAgIGlmIChwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkpCisgICAgYXV0byBj
b2RlY3MgPSBwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJh
bWV0ZXIoKSk7CisgICAgaWYgKGNvZGVjcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiAKLSAgICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3Mg
PT0gIm1vY2siID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJl
U3VwcG9ydGVkOworICAgIHJldHVybiBjb2RlY3MgPT0gIm1vY2siID8gTWVkaWFQbGF5ZXI6Oklz
U3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogfQogCiBNb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVkaWFQbGF5ZXIq
IHBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCmluZGV4IDdlYjQx
MjFmNWVmY2MxNTNiZTdhM2YzZDcxYTJhZGJmZTkyYTI3NDIuLjU2OTFjMDE4ZmIxZDNjYTA0MzMx
NDMwMDJhMTljMjM4NTM0ZTdjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmNwcApAQCAtNjIsOCArNjIsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udAogewogICAgIE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlz
TWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5
cGUoKTsKLSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJ
SUxpdGVyYWwoImNvZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsK
ICAgICBpZiAoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0
ZXJzKSA9PSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBOb3RT
dXBwb3J0ZWQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312204</attachid>
            <date>2017-06-07 11:27:55 -0700</date>
            <delta_ts>2017-06-07 14:36:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173038-20170607112754.patch</filename>
            <type>text/plain</type>
            <size>38817</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwNWEyMmIxMDQ2YjY1Y2E0NWYxZTQw
MzkzZWQ0NGY3OWE2MTgzMzUuLjU4ZTFmYTIyMmUyZjc5OGI0MWJkZTAxYjA4ZGRjMjhmOThhZTg0
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDYgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIgdGhhbiBzZXBhcmF0ZSB0
eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIERyaXZlIGJ5IGZpeDogYWRkIGEgdmVyc2lvbiBvZiBzcGxpdCB0aGF0IHRh
a2VzIGEgVUNoYXIgYW5kIHJldHVybnMgYSBWZWN0b3I8U3RyaW5nPi4KKworICAgICAgICAqIHd0
Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnNwbGl0KToKKwogMjAx
Ny0wNi0wNyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dDcnlwdF0gUlNBLVBTUyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWJhYTY1ZmFiZWY4ZDI3M2Ex
Y2RkNjViNWFiNzNhZGY1Nzg3MmUxMS4uNzQyMWEyNjUzZWI3MGMyMmNiMzVmNmMyZjgwZDY0Njhj
NTdiZTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA2LTA2ICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yaW5nOiBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzIHNob3VsZCB0YWtlIGEgQ29udGVudFR5cGUgcmF0aGVyIHRo
YW4gc2VwYXJhdGUgdHlwZSAmIGNvZGVjcyBzdHJpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMwMzgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0aWVzRm9yQXVk
aW9WaWRlb1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKToKKyAgICAgICAg
KiBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NSW1wbGVt
ZW50YXRpb246OmNyZWF0ZURvY3VtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNo
aWxkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRlbnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
VHlwZTo6Y29udGFpbmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpzaW1wbGlmeVdoaXRlc3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5cGU6OmNvZGVjcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50VHlwZTo6cHJvZmlsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFR5cGU6OnR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6YmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6Om5leHRCZXN0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om5ldHdvcmtT
dGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29kZWNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OmNvbnRlbnRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllcjo6Y29udGVudFR5cGVDb2RlY3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRN
aW1lVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
OjpzdXBwb3J0c01JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzVHlwZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2
YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM6OmFkZFNvdXJjZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNF
OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpzdXBwb3J0c1R5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBv
cnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFT
b3VyY2VQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZh
dGU6OmFkZFNvdXJjZUJ1ZmZlcik6CisKIDIwMTctMDYtMDcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW4tdXA6IFJlbmRlckVsZW1lbnQuaCBpbmNsdWRl
cyBoZWFkZXJzIGl0IGRvZXNuJ3QgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBkYWQw
NzJjNzY5NTE2MDliNjkxNWVjY2MwYmEwNzg2NzRlZWQwYzljLi5hYjIxY2MyMjU0MGQxNWUxNjQx
YzEwNTIzNjNhYmVkYzQxMzE3N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTM2OSw3
ICszNjksMTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgc3BsaXQoc2VwYXJhdG9yLCBmYWxz
ZSwgcmVzdWx0KTsKICAgICB9Ci0KKyAgICBWZWN0b3I8U3RyaW5nPiBzcGxpdChVQ2hhciBzZXBh
cmF0b3IpIGNvbnN0CisgICAgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAg
ICAgIHNwbGl0KHNlcGFyYXRvciwgZmFsc2UsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQogICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KGNvbnN0IFN0cmluZyYgc2VwYXJh
dG9yKSBjb25zdAogICAgIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwCmluZGV4IDc1ODhiMDYy
ODVlMWQyOTRjZmQ3ZjAxYTU3NDgyODg1Y2M1MjI1NTYuLmM1Y2U3Y2NhOTIwMTFmN2M1OWIxZDAy
NTFhYTJjY2ZiNWIwOTFlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL0NETS5jcHAKQEAgLTQ4OCw4ICs0ODgsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxN
ZWRpYUtleVN5c3RlbU1lZGlhQ2FwYWJpbGl0eT4+IENETTo6Z2V0U3VwcG9ydGVkQ2FwYWJpbGl0
aQogICAgICAgICAvLyAgICAgICBjb21iaW5hdGlvbiBvZiBjb250YWluZXIsIG1lZGlhIHR5cGVz
LCByb2J1c3RuZXNzIGFuZCBsb2NhbCBhY2N1bXVsYXRlZCBjb25maWd1cmF0aW9uIGluIGNvbWJp
bmF0aW9uCiAgICAgICAgIC8vICAgICAgIHdpdGggcmVzdHJpY3Rpb25zOgogICAgICAgICBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgICAgIHBhcmFtZXRlcnMu
dHlwZSA9IGNvbnRlbnRUeXBlLm1pbWVUeXBlKCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29kZWNz
ID0gY29kZWNzOworICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAgICAg
ICAgaWYgKCFNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMsIG51bGxwdHIpKSB7
CiAgICAgICAgICAgICAvLyBUcnkgd2l0aCBNZWRpYSBTb3VyY2U6CiAgICAgICAgICAgICBwYXJh
bWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA2YWM4ZDAyOGM2MzllMzJkNTJk
ZDBkYTdjZDZhNjIyNzg2M2YzMDJkLi5iZDg4M2QyMjQzM2EyMThkMWExMGQyM2Y4ZDk4ZjkyZmI0
YzVmNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIEV4Y2VwdGlvbk9yPFNvdXJjZUJ1ZmZl
ciY+IE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlKQogICAg
IC8vIGNvbHVtbiBvZiB0aGUgYnl0ZSBzdHJlYW0gZm9ybWF0IHJlZ2lzdHJ5IFtNU0UtUkVHSVNU
UlldIGVudHJ5IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHR5cGUuCiAgICAgLy8gTk9URTogSW4g
dGhlIGN1cnJlbnQgYnl0ZSBzdHJlYW0gZm9ybWF0IHJlZ2lzdHJ5IDxodHRwOi8vd3d3LnczLm9y
Zy8yMDEzLzEyL2J5dGUtc3RyZWFtLWZvcm1hdC1yZWdpc3RyeS8+CiAgICAgLy8gb25seSB0aGUg
Ik1QRUcgQXVkaW8gQnl0ZSBTdHJlYW0gRm9ybWF0IiBoYXMgdGhlICJHZW5lcmF0ZSBUaW1lc3Rh
bXBzIEZsYWciIHZhbHVlIHNldC4KLSAgICBib29sIHNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9
IGNvbnRlbnRUeXBlLnR5cGUoKSA9PSAiYXVkaW8vYWFjIiB8fCBjb250ZW50VHlwZS50eXBlKCkg
PT0gImF1ZGlvL21wZWciOworICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gY29u
dGVudFR5cGUuY29udGFpbmVyVHlwZSgpID09ICJhdWRpby9hYWMiIHx8IGNvbnRlbnRUeXBlLmNv
bnRhaW5lclR5cGUoKSA9PSAiYXVkaW8vbXBlZyI7CiAgICAgYnVmZmVyLT5zZXRTaG91bGRHZW5l
cmF0ZVRpbWVzdGFtcHMoc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKTsKIAogICAgIC8vIDcuIElm
IHRoZSBnZW5lcmF0ZSB0aW1lc3RhbXBzIGZsYWcgZXF1YWxzIHRydWU6CkBAIC04MzYsNyArODM2
LDcgQEAgYm9vbCBNZWRpYVNvdXJjZTo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICBTdHJpbmcgY29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKCJjb2RlY3MiKTsK
IAogICAgIC8vIDIuIElmIHR5cGUgZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIE1JTUUgdHlwZSBz
dHJpbmcsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIGlmIChjb250ZW50VHlwZS50eXBlKCkuaXNF
bXB0eSgpKQorICAgIGlmIChjb250ZW50VHlwZS5jb250YWluZXJUeXBlKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyAzLiBJZiB0eXBlIGNvbnRhaW5zIGEgbWVk
aWEgdHlwZSBvciBtZWRpYSBzdWJ0eXBlIHRoYXQgdGhlIE1lZGlhU291cmNlIGRvZXMgbm90IHN1
cHBvcnQsIHRoZW4gcmV0dXJuIGZhbHNlLgpAQCAtODQ0LDggKzg0NCw3IEBAIGJvb2wgTWVkaWFT
b3VyY2U6OmlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgLy8gNS4gSWYg
dGhlIE1lZGlhU291cmNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNwZWNpZmllZCBjb21iaW5hdGlv
biBvZiBtZWRpYSB0eXBlLCBtZWRpYSBzdWJ0eXBlLCBhbmQgY29kZWNzIHRoZW4gcmV0dXJuIGZh
bHNlLgogICAgIC8vIDYuIFJldHVybiB0cnVlLgogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFt
ZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZS50eXBl
KCk7Ci0gICAgcGFyYW1ldGVycy5jb2RlY3MgPSBjb2RlY3M7CisgICAgcGFyYW1ldGVycy50eXBl
ID0gY29udGVudFR5cGU7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKICAg
ICBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRlZCA9IE1lZGlhUGxheWVyOjpzdXBw
b3J0c1R5cGUocGFyYW1ldGVycywgMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCmluZGV4IDU4NmZhMWNjYjE0NDZiYmRmOTc2ODQzZTliMGU1MzNiMGZiNjZkNzUu
Ljg0YWM1NzRmNTEyYmFkN2YxZTA4NTIxNmY3MTI5Yjg0ZmNhZGEzZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIFJlZjxEb2N1
bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3VtZW50KGNvbnN0IFN0cmluZyYgdHlw
ZSwgRnJhbWUqIGZyYW1lCiAgICAgLy8gS2V5IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBoZXJl
LgogICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IGNsaWVudChmcmFtZSAm
JiBmcmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpLCB1cmwuaG9zdCgp
KTsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFy
YW1ldGVycy50eXBlID0gdHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlwZSh0
eXBlKTsKICAgICBwYXJhbWV0ZXJzLnVybCA9IHVybDsKICAgICBpZiAoTWVkaWFQbGF5ZXI6OnN1
cHBvcnRzVHlwZShwYXJhbWV0ZXJzLCAmY2xpZW50KSkKICAgICAgICAgcmV0dXJuIE1lZGlhRG9j
dW1lbnQ6OmNyZWF0ZShmcmFtZSwgdXJsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IGYwZGI0YTMxMDg4OTIwMjQwYjJhMzYwYjk4YWVhZjdlYjIyN2IwYTQu
LmE2ODJkYzdiNDRkZjRhZDdkNWMzYzFiNmIyMmIwMTUxYTU3ZWJiZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTEwOCw4ICsxMTA4LDcgQEAgU3RyaW5n
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIGNv
bnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAg
IENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKG1pbWVUeXBlKTsKLSAgICBwYXJhbWV0ZXJzLnR5cGUg
PSBjb250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBwYXJh
bWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxpdGVyYWwoImNvZGVj
cyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAgICBNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIHN1cHBvcnQgPSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKHBhcmFt
ZXRlcnMsIHRoaXMpOwogICAgIFN0cmluZyBjYW5QbGF5OwogCkBAIC00MjgxLDkgKzQyODAsNyBA
QCBVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBl
KiBjb250ZW50VHlwZSwgU3RyaW5nKiBrZQogICAgICAgICAgICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCglcCkgLSAndHlwZScgaXMgJyVz
JyIsIHRoaXMsIHR5cGUudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgICAgIENvbnRlbnRU
eXBlIGNvbnRlbnRUeXBlKHR5cGUpOwotICAgICAgICAgICAgcGFyYW1ldGVycy50eXBlID0gY29u
dGVudFR5cGUudHlwZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBw
YXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxpdGVyYWwoImNv
ZGVjcyIpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKHR5cGUp
OwogICAgICAgICAgICAgcGFyYW1ldGVycy51cmwgPSBtZWRpYVVSTDsKICNpZiBFTkFCTEUoTUVE
SUFfU09VUkNFKQogICAgICAgICAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gbWVkaWFV
UkwucHJvdG9jb2xJcyhtZWRpYVNvdXJjZUJsb2JQcm90b2NvbCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Db250ZW50VHlwZS5jcHAKaW5kZXggODhhNzE0YjVmMzkyY2UxOTc5ZWRiZWY0NGUyNTlj
ZGJhMjJjMWZiOS4uYTZmZjdlNjBkY2VhNzAzYmE4ODdjNDM1YzBkNTJlYTBmOGUyNDM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2
ICszNiwxOCBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIHsKIH0KIAorY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVy
KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2RlY3MgeyBBU0NJSUxp
dGVyYWwoImNvZGVjcyIpIH07CisgICAgcmV0dXJuIGNvZGVjczsKK30KKworY29uc3QgU3RyaW5n
JiBDb250ZW50VHlwZTo6cHJvZmlsZXNQYXJhbWV0ZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTdHJpbmc+IHByb2ZpbGVzIHsgQVNDSUlMaXRlcmFsKCJwcm9maWxlcyIpIH07Cisg
ICAgcmV0dXJuIHByb2ZpbGVzOworfQorCiBTdHJpbmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihj
b25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHBhcmFtZXRl
clZhbHVlOwpAQCAtNjQsNyArNzcsNyBAQCBTdHJpbmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihj
b25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNvbnN0CiAgICAgcmV0dXJuIHBhcmFtZXRlclZh
bHVlOwogfQogCi1TdHJpbmcgQ29udGVudFR5cGU6OnR5cGUoKSBjb25zdAorU3RyaW5nIENvbnRl
bnRUeXBlOjpjb250YWluZXJUeXBlKCkgY29uc3QKIHsKICAgICBTdHJpbmcgc3RyaXBwZWRUeXBl
ID0gbV90eXBlLnN0cmlwV2hpdGVTcGFjZSgpOwogCkBAIC03NiwxOSArODksMTkgQEAgU3RyaW5n
IENvbnRlbnRUeXBlOjp0eXBlKCkgY29uc3QKICAgICByZXR1cm4gc3RyaXBwZWRUeXBlOwogfQog
Ci1WZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QKK3N0YXRpYyBTdHJp
bmcgc2ltcGxpZnlXaGl0ZXNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIFN0cmlu
ZyBjb2RlY3NQYXJhbWV0ZXIgPSBwYXJhbWV0ZXIoQVNDSUlMaXRlcmFsKCJjb2RlY3MiKSk7Ci0K
LSAgICBpZiAoY29kZWNzUGFyYW1ldGVyLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFZlY3Rv
cjxTdHJpbmc+KCk7CisgICAgcmV0dXJuIHN0cmluZy5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKK30K
IAotICAgIFZlY3RvcjxTdHJpbmc+IGNvZGVjczsKLSAgICBjb2RlY3NQYXJhbWV0ZXIuc3BsaXQo
JywnLCBjb2RlY3MpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZWNzLnNpemUoKTsg
KytpKQotICAgICAgICBjb2RlY3NbaV0gPSBjb2RlY3NbaV0uc2ltcGxpZnlXaGl0ZVNwYWNlKCk7
CitWZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gcGFyYW1ldGVyKGNvZGVjc1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1hcChzaW1wbGlmeVdo
aXRlc3BhY2UpOworfQogCi0gICAgcmV0dXJuIGNvZGVjczsKK1ZlY3RvcjxTdHJpbmc+IENvbnRl
bnRUeXBlOjpwcm9maWxlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmFtZXRlcihwcm9maWxl
c1BhcmFtZXRlcigpKS5zcGxpdCgnLCcpLm1hcChzaW1wbGlmeVdoaXRlc3BhY2UpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Db250ZW50VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaApp
bmRleCBmMzFhYzUwYTA4NzUzY2U3YTgwMWQ4NzVmYjNiMjExOGNkZGQxYzQ1Li4wNmI2NzlkZDVi
ZmU1YTk4ZGZmYTY1ZjE3ZDRjYTNjOGQ3NDIxYjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nv
bnRlbnRUeXBlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgQ29udGVudFR5cGVfaAogI2Rl
ZmluZSBDb250ZW50VHlwZV9oCiAKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw5ICsz
OCwxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKTsKICAgICBDb250ZW50VHlwZSgpID0gZGVmYXVsdDsKIAorICAgIHN0YXRpYyBjb25zdCBT
dHJpbmcmIGNvZGVjc1BhcmFtZXRlcigpOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIHByb2Zp
bGVzUGFyYW1ldGVyKCk7CisKICAgICBTdHJpbmcgcGFyYW1ldGVyKGNvbnN0IFN0cmluZyYgcGFy
YW1ldGVyTmFtZSkgY29uc3Q7Ci0gICAgU3RyaW5nIHR5cGUoKSBjb25zdDsKKyAgICBTdHJpbmcg
Y29udGFpbmVyVHlwZSgpIGNvbnN0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNvZGVjcygpIGNvbnN0
OworICAgIFZlY3RvcjxTdHJpbmc+IHByb2ZpbGVzKCkgY29uc3Q7CiAgICAgY29uc3QgU3RyaW5n
JiByYXcoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUuaXNFbXB0eSgpOyB9CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IGRhMDliYmFmYTk5
MmNmM2M1OWM2YWRiYzFkOWRhZjkxZTZiOWVmZmMuLmViOWQxODk0YTE5NmMxYTMwMTJmZDk2YjRm
ZjI5OGQ1MzY4YWI0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5jcHAKQEAgLTI4OCwxMiArMjg4LDYgQEAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGV4dFBsYWluKCkKICAgICByZXR1cm4gdGV4dFBsYWluOwogfQogCi1zdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBjb2RlY3MoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBBdG9taWNTdHJpbmc+IGNvZGVjcygiY29kZWNzIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIGNvZGVjczsKLX0KLQogc3RhdGljIGNvbnN0
IE1lZGlhUGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgTWVk
aWFQbGF5ZXJGYWN0b3J5KiBjdXJyZW50ID0gbnVsbHB0cikKIHsKICAgICBpZiAocGFyYW1ldGVy
cy50eXBlLmlzRW1wdHkoKSAmJiAhcGFyYW1ldGVycy5pc01lZGlhU291cmNlICYmICFwYXJhbWV0
ZXJzLmlzTWVkaWFTdHJlYW0pCkBAIC0zMDIsOCArMjk2LDggQEAgc3RhdGljIGNvbnN0IE1lZGlh
UGxheWVyRmFjdG9yeSogYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9ydFBhcmFtZXRlcnMoY29uc3Qg
TWVkaWEKICAgICAvLyA0LjguMTAuMyBNSU1FIHR5cGVzIC0gSW4gdGhlIGFic2VuY2Ugb2YgYSBz
cGVjaWZpY2F0aW9uIHRvIHRoZSBjb250cmFyeSwgdGhlIE1JTUUgdHlwZSAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIgogICAgIC8vIHdoZW4gdXNlZCB3aXRoIHBhcmFtZXRlcnMsIGUuZy4gImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbTtjb2RlY3M9dGhlb3JhIiwgaXMgYSB0eXBlIHRoYXQgdGhl
IHVzZXIgYWdlbnQga25vd3MgCiAgICAgLy8gaXQgY2Fubm90IHJlbmRlci4KLSAgICBpZiAocGFy
YW1ldGVycy50eXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkgewotICAgICAgICBpZiAo
IXBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBpZiAocGFyYW1ldGVycy50eXBlLmNv
bnRhaW5lclR5cGUoKSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpIHsKKyAgICAgICAgaWYg
KCFwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCkBAIC0zODEsOCArMzc1LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6
bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHIKICAgICAvLyBQcm90ZWN0IGFnYWluc3QgTWVkaWFQbGF5ZXIgYmVpbmcgZGVzdHJveWVk
IGR1cmluZyBhIE1lZGlhUGxheWVyQ2xpZW50IGNhbGxiYWNrLgogICAgIFJlZjxNZWRpYVBsYXll
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKLSAgICBtX2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRl
bnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIG1fY29udGVudFR5
cGVDb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoY29kZWNzKCkpOworICAgIG1fY29udGVu
dFR5cGUgPSBjb250ZW50VHlwZTsKICAgICBtX3VybCA9IHVybDsKICAgICBtX2tleVN5c3RlbSA9
IGtleVN5c3RlbS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogICAgIG1fY29udGVudE1JTUVU
eXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uID0gZmFsc2U7CkBAIC0zOTUsOSArMzg4LDEwIEBA
IGJvb2wgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgY29uc3QgU3RyCiAjZW5kaWYKIAogICAgIC8vIElmIHRoZSBNSU1FIHR5
cGUgaXMgbWlzc2luZyBvciBpcyBub3QgbWVhbmluZ2Z1bCwgdHJ5IHRvIGZpZ3VyZSBpdCBvdXQg
ZnJvbSB0aGUgVVJMLgotICAgIGlmIChtX2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbV9j
b250ZW50TUlNRVR5cGUgPT0gYXBwbGljYXRpb25PY3RldFN0cmVhbSgpIHx8IG1fY29udGVudE1J
TUVUeXBlID09IHRleHRQbGFpbigpKSB7CisgICAgQXRvbWljU3RyaW5nIGNvbnRhaW5lclR5cGUg
PSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29udGFpbmVyVHlwZS5p
c0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwg
Y29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91cmwucHJvdG9j
b2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0gbWltZVR5cGVGcm9t
RGF0YVVSTChtX3VybC5zdHJpbmcoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29u
dGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIFN0cmluZyBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0
aENvbXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50
LnJldmVyc2VGaW5kKCcuJyk7CkBAIC00MDUsNyArMzk5LDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6
bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHIKICAgICAgICAgICAgICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gbGFzdFBhdGhDb21wb25l
bnQuc3Vic3RyaW5nKHBvcyArIDEpOwogICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYVR5cGUg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGV4dGVuc2lv
bik7CiAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1fY29udGVudE1JTUVUeXBlID0gbWVkaWFUeXBlOworICAgICAgICAgICAg
ICAgICAgICBtX2NvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWVkaWFUeXBlKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24gPSB0
cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQyMyw4ICs0MTcsNyBA
QCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlw
ZSYgY29udGVudFR5cGUsIE1lZGlhU291cgogICAgIEFTU0VSVChtZWRpYVNvdXJjZSk7CiAKICAg
ICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7Ci0gICAgbV9jb250ZW50TUlNRVR5cGUgPSBj
b250ZW50VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBtX2NvbnRl
bnRUeXBlQ29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKGNvZGVjcygpKTsKKyAgICBtX2Nv
bnRlbnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV9rZXlTeXN0
ZW0gPSBlbXB0eVN0cmluZygpOwogICAgIG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9t
RXh0ZW5zaW9uID0gZmFsc2U7CkBAIC00NDAsNyArNDMzLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6
bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogCiAgICAgbV9tZWRpYVN0cmVh
bSA9ICZtZWRpYVN0cmVhbTsKICAgICBtX2tleVN5c3RlbSA9IGVtcHR5U3RyaW5nKCk7Ci0gICAg
bV9jb250ZW50TUlNRVR5cGUgPSBlbXB0eVN0cmluZygpOworICAgIG1fY29udGVudFR5cGUgPSB7
IH07CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24gPSBmYWxz
ZTsKICAgICBsb2FkV2l0aE5leHRNZWRpYUVuZ2luZSgwKTsKICAgICByZXR1cm4gbV9jdXJyZW50
TWVkaWFFbmdpbmU7CkBAIC00NTAsOCArNDQzLDcgQEAgYm9vbCBNZWRpYVBsYXllcjo6bG9hZChN
ZWRpYVN0cmVhbVByaXZhdGUmIG1lZGlhU3RyZWFtKQogY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBNZWRpYVBsYXllcjo6bmV4dEJlc3RNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3Rv
cnkqIGN1cnJlbnQpIGNvbnN0CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1fY29udGVudE1JTUVUeXBlOwotICAg
IHBhcmFtZXRlcnMuY29kZWNzID0gbV9jb250ZW50VHlwZUNvZGVjczsKKyAgICBwYXJhbWV0ZXJz
LnR5cGUgPSBtX2NvbnRlbnRUeXBlOwogICAgIHBhcmFtZXRlcnMudXJsID0gbV91cmw7CiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSAhIW1f
bWVkaWFTb3VyY2U7CkBAIC00ODIsMTYgKzQ3NCwxNiBAQCB2b2lkIE1lZGlhUGxheWVyOjpsb2Fk
V2l0aE5leHRNZWRpYUVuZ2luZShjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1cnJlbnQpCiAK
ICAgICBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGVuZ2luZSA9IG51bGxwdHI7CiAKLSAgICBp
ZiAoIW1fY29udGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBNRURJQVNUUkVBTSB8fCBNRURJQVNP
VVJDRSkKKyAgICBpZiAoIW1fY29udGVudFR5cGUuaXNFbXB0eSgpIHx8IE1FRElBU1RSRUFNIHx8
IE1FRElBU09VUkNFKQogICAgICAgICBlbmdpbmUgPSBuZXh0QmVzdE1lZGlhRW5naW5lKGN1cnJl
bnQpOwogCiAgICAgLy8gSWYgbm8gTUlNRSB0eXBlIGlzIHNwZWNpZmllZCBvciB0aGUgdHlwZSB3
YXMgaW5mZXJyZWQgZnJvbSB0aGUgZmlsZSBleHRlbnNpb24sIGp1c3QgdXNlIHRoZSBuZXh0IGVu
Z2luZS4KLSAgICBpZiAoIWVuZ2luZSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgpIHx8
IG1fY29udGVudE1JTUVUeXBlV2FzSW5mZXJyZWRGcm9tRXh0ZW5zaW9uKSkKKyAgICBpZiAoIWVu
Z2luZSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGVXYXNJ
bmZlcnJlZEZyb21FeHRlbnNpb24pKQogICAgICAgICBlbmdpbmUgPSBuZXh0TWVkaWFFbmdpbmUo
Y3VycmVudCk7CiAKICAgICAvLyBEb24ndCBkZWxldGUgYW5kIHJlY3JlYXRlIHRoZSBwbGF5ZXIg
dW5sZXNzIGl0IGNvbWVzIGZyb20gYSBkaWZmZXJlbnQgZW5naW5lLgogICAgIGlmICghZW5naW5l
KSB7Ci0gICAgICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyOjpsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZSAtIG5vIG1lZGlhIGVuZ2luZSBmb3VuZCBmb3IgdHlwZSBcIiVzXCIiLCBtX2NvbnRlbnRN
SU1FVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXI6
OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lIC0gbm8gbWVkaWEgZW5naW5lIGZvdW5kIGZvciB0eXBl
IFwiJXNcIiIsIG1fY29udGVudFR5cGUucmF3KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIG1f
Y3VycmVudE1lZGlhRW5naW5lID0gZW5naW5lOwogICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRy
OwogICAgIH0gZWxzZSBpZiAobV9jdXJyZW50TWVkaWFFbmdpbmUgIT0gZW5naW5lKSB7CkBAIC04
NzksNyArODcxLDggQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3Vw
cG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmEKIHsKICAgICAvLyA0LjguMTAu
MyBNSU1FIHR5cGVzIC0gVGhlIGNhblBsYXlUeXBlKHR5cGUpIG1ldGhvZCBtdXN0IHJldHVybiB0
aGUgZW1wdHkgc3RyaW5nIGlmIHR5cGUgaXMgYSB0eXBlIHRoYXQgdGhlIAogICAgIC8vIHVzZXIg
YWdlbnQga25vd3MgaXQgY2Fubm90IHJlbmRlciBvciBpcyB0aGUgdHlwZSAiYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtIgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBwbGljYXRpb25PY3Rl
dFN0cmVhbSgpKQorICAgIEF0b21pY1N0cmluZyBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50
eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlv
bk9jdGV0U3RyZWFtKCkpCiAgICAgICAgIHJldHVybiBJc05vdFN1cHBvcnRlZDsKIAogICAgIGNv
bnN0IE1lZGlhUGxheWVyRmFjdG9yeSogZW5naW5lID0gYmVzdE1lZGlhRW5naW5lRm9yU3VwcG9y
dFBhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC04OTYsNyArODg5LDcgQEAgTWVkaWFQbGF5ZXI6
OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllcjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmEKICAgICBpZiAoY2xpZW50ICYmIGNsaWVudC0+bWVkaWFQbGF5ZXJOZWVkc1Np
dGVTcGVjaWZpY0hhY2tzKCkpIHsKICAgICAgICAgU3RyaW5nIGhvc3QgPSBjbGllbnQtPm1lZGlh
UGxheWVyRG9jdW1lbnRIb3N0KCk7CiAgICAgICAgIGlmICgoaG9zdC5lbmRzV2l0aCgiLnlvdXR1
YmUuY29tIiwgZmFsc2UpIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ5
b3V0dWJlLmNvbSIpKQotICAgICAgICAgICAgJiYgKHBhcmFtZXRlcnMudHlwZS5zdGFydHNXaXRo
KCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IHBhcmFtZXRlcnMudHlwZS5zdGFydHNXaXRoKCJ2aWRl
by94LWZsdiIsIGZhbHNlKSkpCisgICAgICAgICAgICAmJiAoY29udGFpbmVyVHlwZS5zdGFydHNX
aXRoKCJ2aWRlby93ZWJtIiwgZmFsc2UpIHx8IGNvbnRhaW5lclR5cGUuc3RhcnRzV2l0aCgidmlk
ZW8veC1mbHYiLCBmYWxzZSkpKQogICAgICAgICAgICAgcmV0dXJuIElzTm90U3VwcG9ydGVkOwog
ICAgIH0KICNlbHNlCkBAIC0xMTMwLDcgKzExMjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyOjpuZXR3
b3JrU3RhdGVDaGFuZ2VkKCkKICAgICAvLyBsZXQgdGhlIG5leHQgZW5naW5lIHRyeS4KICAgICBp
ZiAobV9wcml2YXRlLT5uZXR3b3JrU3RhdGUoKSA+PSBGb3JtYXRFcnJvciAmJiBtX3ByaXZhdGUt
PnJlYWR5U3RhdGUoKSA8IEhhdmVNZXRhZGF0YSkgewogICAgICAgICBjbGllbnQoKS5tZWRpYVBs
YXllckVuZ2luZUZhaWxlZFRvTG9hZCgpOwotICAgICAgICBpZiAoaW5zdGFsbGVkTWVkaWFFbmdp
bmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50TUlNRVR5cGUuaXNFbXB0eSgpIHx8IG5leHRC
ZXN0TWVkaWFFbmdpbmUobV9jdXJyZW50TWVkaWFFbmdpbmUpKSkgeworICAgICAgICBpZiAoaW5z
dGFsbGVkTWVkaWFFbmdpbmVzKCkuc2l6ZSgpID4gMSAmJiAobV9jb250ZW50VHlwZS5pc0VtcHR5
KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSkpKSB7CiAgICAg
ICAgICAgICBtX3JlbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXIuaAppbmRleCAyMWFmNGZmYjYzOTU3YjEzMjEzNGQyZGY3Y2EyZmRjNTdkNTExMzAw
Li5kNjQxYTc4NWFiMDE2MzJhM2I4Yjc2YjE5OTQzNmRjOTA2NDYwYTllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTExMCw4ICsxMTAs
NyBAQCBzdHJ1Y3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyB7CiAKICAgICBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzKCkgeyB9CiAKLSAgICBTdHJpbmcgdHlwZTsKLSAgICBTdHJp
bmcgY29kZWNzOworICAgIENvbnRlbnRUeXBlIHR5cGU7CiAgICAgVVJMIHVybDsKICAgICBib29s
IGlzTWVkaWFTb3VyY2UgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNNZWRpYVN0cmVhbSB7IGZhbHNl
IH07CkBAIC01ODYsOCArNTg1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxkRGlzYWJs
ZVNsZWVwKGJvb2wpOwogICAgIGJvb2wgc2hvdWxkRGlzYWJsZVNsZWVwKCkgY29uc3Q7CiAKLSAg
ICBjb25zdCBTdHJpbmcmIGNvbnRlbnRNSU1FVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dE1JTUVUeXBlOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZUNvZGVjcygpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFR5cGVDb2RlY3M7IH0KKyAgICBTdHJpbmcgY29udGVudE1JTUVU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50VHlwZS5jb250YWluZXJUeXBlKCk7IH0KKyAg
ICBTdHJpbmcgY29udGVudFR5cGVDb2RlY3MoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRUeXBl
LnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOyB9CiAgICAgYm9vbCBj
b250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBt
X2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbjsgfQogCiAgICAgY29uc3Qg
VmVjdG9yPENvbnRlbnRUeXBlPiYgbWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdIYXJkd2FyZVN1
cHBvcnQoKSBjb25zdDsKQEAgLTYwNCw4ICs2MDMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0ZTsKICAgICBjb25z
dCBNZWRpYVBsYXllckZhY3RvcnkqIG1fY3VycmVudE1lZGlhRW5naW5lOwogICAgIFVSTCBtX3Vy
bDsKLSAgICBTdHJpbmcgbV9jb250ZW50TUlNRVR5cGU7Ci0gICAgU3RyaW5nIG1fY29udGVudFR5
cGVDb2RlY3M7CisgICAgQ29udGVudFR5cGUgbV9jb250ZW50VHlwZTsKICAgICBTdHJpbmcgbV9r
ZXlTeXN0ZW07CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgUHJlbG9hZCBtX3ByZWxvYWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmlu
ZGV4IGZkMTY4Nzg4OTExZWNhZWFmMmRiYjgwM2ZmMDM4OTI5ODdhODM3YjMuLjBkNzMzZTQwNTkz
YjNmMDEzMTlhMjY0ODY0ZWVkMGJiOWY0NDMzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9DRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wg
Q0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNLZXlTeXN0ZW1BbmRNaW1lVHlw
ZShjb25zdCBTdHJpbmcmIGtlCiAKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBh
cmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5pc01lZGlhU291cmNlID0gdHJ1ZTsKLSAgICBwYXJh
bWV0ZXJzLnR5cGUgPSBtaW1lVHlwZTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBDb250ZW50VHlw
ZShtaW1lVHlwZSk7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgIT0gTWVkaWFQbGF5ZXI6OklzTm90U3Vw
cG9ydGVkOwogfQpAQCAtOTUsNyArOTUsNyBAQCBib29sIENETVByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OnN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIAogICAgIE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlz
TWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1pbWVUeXBlOworICAg
IHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsKIAogICAgIHJldHVybiBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0
ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApp
bmRleCA4YTBhZDUwNWVkMDE4NDFlYmExMzMzMDcyNzVhMWE2YWIzMzc4ODlkLi5iNGZhZDA3OTFh
MDBhZGIyYzUzZGY1NzcyYjUwM2ZmOWJmMzFkMzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKQEAgLTkx
MiwyMyArOTEyLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6Omdl
dFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhCiAKIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0Y6OnN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAg
IGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkKKyAgICBhdXRvIGNv
bnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpOworICAgIGlmIChp
c1Vuc3VwcG9ydGVkTUlNRVR5cGUoY29udGFpbmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAoIXN0YXRpY01JTUVUeXBlTGlzdCgp
LmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgJiYgIWF2Zk1JTUVUeXBlcygpLmNvbnRhaW5zKHBh
cmFtZXRlcnMudHlwZSkpCisgICAgaWYgKCFzdGF0aWNNSU1FVHlwZUxpc3QoKS5jb250YWlucyhj
b250YWluZXJUeXBlKSAmJiAhYXZmTUlNRVR5cGVzKCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkp
CiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKKyAgICBhdXRv
IGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1Bh
cmFtZXRlcigpKTsKICNpZiBIQVZFKEFWQ0ZVUkxfUExBWUFCTEVfTUlNRVRZUEUpCiAgICAgLy8g
VGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHJl
dHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50bHkgZXN0YWJsaXNo
ZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0gICAgaWYgKHBhcmFtZXRlcnMuY29kZWNz
LmlzRW1wdHkoKSkKKyAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIAotICAgIFN0cmluZyB0eXBlU3RyaW5nID0gcGFy
YW1ldGVycy50eXBlICsgIjsgY29kZWNzPVwiIiArIHBhcmFtZXRlcnMuY29kZWNzICsgIlwiIjsK
KyAgICBTdHJpbmcgdHlwZVN0cmluZyA9IGNvbnRhaW5lclR5cGUgKyAiOyBjb2RlY3M9XCIiICsg
Y29kZWNzICsgIlwiIjsKICAgICByZXR1cm4gQVZDRlVSTEFzc2V0SXNQbGF5YWJsZUV4dGVuZGVk
TUlNRVR5cGUodHlwZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKSA/IE1lZGlhUGxheWVy
OjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKICNlbHNlCi0gICAg
aWYgKGF2Zk1JTUVUeXBlcygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCi0gICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVTdXBw
b3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKGF2Zk1JTUVUeXBlcygp
LmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gY29kZWNzLmlzRW1wdHko
KSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRl
ZDsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCA5MjNmZGI5NDE1Y2IzODhiOTVjOTAxOWI5NWQxNWFj
NjQyNjg1NjMwLi44Y2IyOTk2MmI0YWZmZDQ3MWIxMjE2ZTE0MWM4NDhkNzllZDY2ZGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTk0NSw5ICs5NDUsOSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmwpCiAgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDpAWUVTIGZvcktleTpBVlVSTEFzc2V0
UmVxdWlyZXNDdXN0b21VUkxMb2FkaW5nS2V5XTsKICNlbmRpZgogCi0gICAgYXV0byYgdHlwZSA9
IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsKKyAgICBhdXRvIHR5cGUgPSBwbGF5ZXIoKS0+
Y29udGVudE1JTUVUeXBlKCk7CiAgICAgaWYgKEFWVVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtl
eSAmJiAhdHlwZS5pc0VtcHR5KCkgJiYgIXBsYXllcigpLT5jb250ZW50TUlNRVR5cGVXYXNJbmZl
cnJlZEZyb21FeHRlbnNpb24oKSkgewotICAgICAgICBhdXRvJiBjb2RlY3MgPSBwbGF5ZXIoKS0+
Y29udGVudFR5cGVDb2RlY3MoKTsKKyAgICAgICAgYXV0byBjb2RlY3MgPSBwbGF5ZXIoKS0+Y29u
dGVudFR5cGVDb2RlY3MoKTsKICAgICAgICAgaWYgKCFjb2RlY3MuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKil0eXBlLCAoTlNTdHJpbmcgKiljb2Rl
Y3NdOwogICAgICAgICAgICAgW29wdGlvbnMgc2V0T2JqZWN0OnR5cGVTdHJpbmcgZm9yS2V5OkFW
VVJMQXNzZXRPdXRPZkJhbmRNSU1FVHlwZUtleV07CkBAIC0xNzE1LDE4ICsxNzE1LDIwIEBAIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6c3VwcG9ydHNUeXBlKGNvbnN0CiAgICAgaWYgKHBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkK
ICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKICNlbmRpZgotICAg
IGlmIChpc1Vuc3VwcG9ydGVkTUlNRVR5cGUocGFyYW1ldGVycy50eXBlKSkKKworICAgIGF1dG8g
Y29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYg
KGlzVW5zdXBwb3J0ZWRNSU1FVHlwZShjb250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0
KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSAmJiAhQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNo
ZTo6c2luZ2xldG9uKCkudHlwZXMoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGlm
ICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMoY29udGFpbmVyVHlwZSkgJiYgIUFWRm91
bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigpLnR5cGVzKCkuY29udGFpbnMoY29udGFp
bmVyVHlwZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAK
ICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFn
ZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBl
c3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVy
cy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogCi0g
ICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVA
OyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLCAoTlNTdHJpbmcg
KilwYXJhbWV0ZXJzLmNvZGVjc107CisgICAgTlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBjb2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopY29u
dGFpbmVyVHlwZSwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLnBhcmFtZXRlcihDb250ZW50
VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpXTsKICAgICByZXR1cm4gW0FWVVJMQXNzZXQgaXNQbGF5
YWJsZUV4dGVuZGVkTUlNRVR5cGU6dHlwZVN0cmluZ10gPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0
ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQy5tbQppbmRleCA0MzE1MjQzOTdkN2VkYjA2NWY3ZjA0N2M4MjFiNmY2NDQ4MmNmZWVlLi5l
Y2QyYTE1ZmMxMzA4YTlhNGNmOTc5OGZhZGQzZDg4NzYzZmI1ODQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tCkBAIC0yMTQsMTkgKzIxNCwyMCBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNU
eXBlIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKGNv
bgogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCiAK
LSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSB8fCAhQVZGb3VuZGF0aW9uTUlNRVR5
cGVDYWNoZTo6c2luZ2xldG9uKCkudHlwZXMoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQor
ICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpIHx8ICFBVkZvdW5kYXRpb25NSU1FVHlw
ZUNhY2hlOjpzaW5nbGV0b24oKS50eXBlcygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZS5jb250
YWluZXJUeXBlKCkpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVk
OwogCiAgICAgLy8gVGhlIHNwZWMgc2F5czoKICAgICAvLyAiSW1wbGVtZW50b3JzIGFyZSBlbmNv
dXJhZ2VkIHRvIHJldHVybiAibWF5YmUiIHVubGVzcyB0aGUgdHlwZSBjYW4gYmUgY29uZmlkZW50
bHkgZXN0YWJsaXNoZWQgYXMgYmVpbmcgc3VwcG9ydGVkIG9yIG5vdC4iCi0gICAgaWYgKHBhcmFt
ZXRlcnMuY29kZWNzLmlzRW1wdHkoKSkKKyAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlw
ZS5wYXJhbWV0ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoY29k
ZWNzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRl
ZDsKIAotICAgIE5TU3RyaW5nICpvdXRwdXRDb2RlY3MgPSBwYXJhbWV0ZXJzLmNvZGVjczsKKyAg
ICBOU1N0cmluZyAqb3V0cHV0Q29kZWNzID0gY29kZWNzOwogICAgIGlmIChbZ2V0QVZTdHJlYW1E
YXRhUGFyc2VyQ2xhc3MoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG91dHB1dE1JTUVD
b2RlY1BhcmFtZXRlckZvcklucHV0TUlNRUNvZGVjUGFyYW1ldGVyOildKQogICAgICAgICBvdXRw
dXRDb2RlY3MgPSBbZ2V0QVZTdHJlYW1EYXRhUGFyc2VyQ2xhc3MoKSBvdXRwdXRNSU1FQ29kZWNQ
YXJhbWV0ZXJGb3JJbnB1dE1JTUVDb2RlY1BhcmFtZXRlcjpvdXRwdXRDb2RlY3NdOwogCi0gICAg
TlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBj
b2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLCAoTlNTdHJpbmcgKilv
dXRwdXRDb2RlY3NdOworICAgIE5TU3RyaW5nICp0eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBcIiIsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMu
dHlwZS5jb250YWluZXJUeXBlKCksIChOU1N0cmluZyAqKW91dHB1dENvZGVjc107CiAgICAgcmV0
dXJuIFtnZXRBVlVSTEFzc2V0Q2xhc3MoKSBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZTp0eXBl
U3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpNYXlCZVN1
cHBvcnRlZDs7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDViMjA5YmYzNjMxNDQzYzY0MGY5MTk2NzdlYWVmNGU5
YmU3YTViYjIuLjM4MGY4MWNkZWY0ODNjNmEyMmM0NTE3MGJlNDQyNjY1ZDdmYjgwNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5t
bQpAQCAtNjYsOCArNjYsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQwogewogICAgIE1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlzTWVk
aWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUo
KTsKLSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxp
dGVyYWwoImNvZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAg
ICBpZiAoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUo
cGFyYW1ldGVycykgPT0gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKQogICAgICAgICByZXR1
cm4gTm90U3VwcG9ydGVkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCmluZGV4IDliMTc2MjA0NTg3YWVlMGMwNGY0ZDE2NGQ4ZDg1MDRkOGFmMzIz
YjEuLjM1OGQwOGY4OGY3Y2I0MWU0NjM4MGI2OGFiMDk1OTNjMzJmNTYzOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xOTAyLDEyICsx
OTAyLDEyIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFCiAgICAgaWYgKHBhcmFtZXRlcnMuaXNN
ZWRpYVN0cmVhbSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChwYXJhbWV0ZXJz
LnR5cGUuaXNOdWxsKCkgfHwgcGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkKKyAgICBpZiAocGFy
YW1ldGVycy50eXBlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAogICAgIC8v
IHNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlmIHRoZSBjb2RlY3Mg
c3RyaW5nIGlzIGVtcHR5Ci0gICAgaWYgKG1pbWVUeXBlU2V0KCkuY29udGFpbnMocGFyYW1ldGVy
cy50eXBlKSkKLSAgICAgICAgcmVzdWx0ID0gcGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpID8g
TWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwor
ICAgIGlmIChtaW1lVHlwZVNldCgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJU
eXBlKCkpKQorICAgICAgICByZXN1bHQgPSBwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0
eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9y
dGVkOwogCiAgICAgcmV0dXJuIGV4dGVuZGVkU3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMsIHJlc3Vs
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggZGNmMGZlZjgwMGJmMGIwMmJjNDc4ODIxOGQ1M2IzY2Y3MGEx
YTI5Yi4uNDAyZTM3ZTJiZmE0Yjk4NzNjYWFmOWI0NzRiMWVmYmI3M2YzOTdhNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNw
cApAQCAtODU4LDIyICs4NTgsMjQgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWQKICAgICBpZiAo
IXBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAorICAg
IGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CiAg
ICAgLy8gRGlzYWJsZSBWUFgvT3B1cyBvbiBNU0UgZm9yIG5vdywgbXA0L2F2YzEgc2VlbXMgd2F5
IG1vcmUgcmVsaWFibGUgY3VycmVudGx5LgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuZW5kc1dp
dGgoIndlYm0iKSkKKyAgICBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gWW91VHViZSBUViBwcm92aWRlcyBlbXB0eSB0
eXBlcyBmb3Igc29tZSB2aWRlb3MgYW5kIHdlIHdhbnQgdG8gYmUgc2VsZWN0ZWQgYXMgYmVzdCBt
ZWRpYSBlbmdpbmUgZm9yIHRoZW0uCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5KCkp
IHsKKyAgICBpZiAoY29udGFpbmVyVHlwZS5pc0VtcHR5KCkpIHsKICAgICAgICAgcmVzdWx0ID0g
TWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAogICAgIC8vIFNwZWMgc2F5cyB3ZSBzaG91bGQgbm90IHJldHVybiAicHJvYmFibHkiIGlm
IHRoZSBjb2RlY3Mgc3RyaW5nIGlzIGVtcHR5LgotICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29u
dGFpbnMocGFyYW1ldGVycy50eXBlKSkgewotICAgICAgICBpZiAocGFyYW1ldGVycy5jb2RlY3Mu
aXNFbXB0eSgpKQorICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMoY29udGFpbmVyVHlw
ZSkpIHsKKyAgICAgICAgU3RyaW5nIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0ZXIo
Q29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICAgICAgaWYgKGNvZGVjcy5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXN1bHQgPSBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IHN1cHBvcnRzQ29kZWNzKHBhcmFt
ZXRlcnMuY29kZWNzKSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJ
c05vdFN1cHBvcnRlZDsKKyAgICAgICAgICAgIHJlc3VsdCA9IHN1cHBvcnRzQ29kZWNzKGNvZGVj
cykgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0
ZWQ7CiAgICAgfQogCiAgICAgcmV0dXJuIGV4dGVuZGVkU3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMs
IHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggZGVmMTIxMjY1ZGI2
OTQxMzUzMzhhM2MzNmEwMGFkN2M5N2JmNjgxYS4uYzk1NDEzZmMzNTAyYzg4M2YxYzMwNWVhNzAx
MzMzNWI1ZDgyOWYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTMxNywx
MiArMTMxNywxMyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbgogCiAgICAgLy8gRHVlIHRvIDxy
ZGFyOi8vcHJvYmxlbS8xMDc3NzA1OT4sIGF2b2lkIGNhbGxpbmcgdGhlIG1pbWUgdHlwZXMgY2Fj
aGUgZnVuY3Rpb25zIGlmIGF0CiAgICAgLy8gYWxsIHBvc3NpYmxlOgotICAgIGlmIChzaG91bGRS
ZWplY3RNSU1FVHlwZShwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGF1dG8gY29udGFpbmVyVHlwZSA9
IHBhcmFtZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKHNob3VsZFJlamVjdE1J
TUVUeXBlKGNvbnRhaW5lclR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOwogCiAgICAgLy8gV2UgY2hlY2sgdGhlICJtb2Rlcm4iIHR5cGUgY2FjaGUgZmly
c3QsIGFzIGl0IGRvZXNuJ3QgcmVxdWlyZSBRVEtpdFNlcnZlciB0byBzdGFydC4KLSAgICBpZiAo
bWltZU1vZGVyblR5cGVzQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpIHx8IG1pbWVD
b21tb25UeXBlc0NhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKLSAgICAgICAgcmV0
dXJuIHBhcmFtZXRlcnMuY29kZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBv
cnRlZCA6IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKKyAgICBpZiAobWltZU1vZGVyblR5cGVz
Q2FjaGUoKS5jb250YWlucyhjb250YWluZXJUeXBlKSB8fCBtaW1lQ29tbW9uVHlwZXNDYWNoZSgp
LmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQorICAgICAgICByZXR1cm4gcGFyYW1ldGVycy50eXBl
LmNvZGVjcygpLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlh
UGxheWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBw
b3J0ZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24u
Y3BwCmluZGV4IGQ0ZDY0ZGJkOWMyYjIyYWMxMjA2MzA2ZWJjN2QzY2EyNmZjOTM0OGMuLmQ5OTY1
MDVkNjNjYzc1ODVhNGJkY2I3OWFlYzM1OTcwMTdlYTQ4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5k
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6Z2V0U3VwcG9ydGVkVHlwZXMo
SGFzaFNldDxTdHJpbmcsIEFTQ0lJQwogCiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc051bGwoKSB8fCBwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQorICAgIGlmIChwYXJh
bWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90
U3VwcG9ydGVkOwogCi0gICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJz
LnR5cGUpKQorICAgIGlmIChtaW1lVHlwZUNhY2hlKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBl
LmNvbnRhaW5lclR5cGUoKSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0
ZWQ7CiAKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAppbmRleCA0ZTQwYzhlNzNkZDk4Nzkz
NGI3NDllYWJiMTRhZjE1NzNkMGVmZDg0Li44YTI1M2IxOTk5YThkOTYxNzAwNGFhZjEzYjU4ZDkz
NmEyODEwNDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNw
cApAQCAtNjgsMTMgKzY4LDE1IEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTW9ja01lZGlh
UGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuCiAgICAgaWYgKCFw
YXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNO
b3RTdXBwb3J0ZWQ7CiAKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSB8fCAhbWlt
ZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgYXV0byBjb250YWlu
ZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgfHwgIW1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhjb250YWluZXJU
eXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAg
IGlmIChwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkpCisgICAgYXV0byBjb2RlY3MgPSBwYXJh
bWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7Cisg
ICAgaWYgKGNvZGVjcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6TWF5
QmVTdXBwb3J0ZWQ7CiAKLSAgICByZXR1cm4gcGFyYW1ldGVycy5jb2RlY3MgPT0gIm1vY2siID8g
TWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwor
ICAgIHJldHVybiBjb2RlY3MgPT0gIm1vY2siID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDog
TWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogfQogCiBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6TW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UoTWVkaWFQbGF5ZXIqIHBsYXllcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCmluZGV4IDdlYjQxMjFmNWVmY2MxNTNi
ZTdhM2YzZDcxYTJhZGJmZTkyYTI3NDIuLjU2OTFjMDE4ZmIxZDNjYTA0MzMxNDMwMDJhMTljMjM4
NTM0ZTdjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcApAQCAtNjIs
OCArNjIsNyBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udAogewogICAgIE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2Ug
PSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKTsKLSAgICBw
YXJhbWV0ZXJzLmNvZGVjcyA9IGNvbnRlbnRUeXBlLnBhcmFtZXRlcihBU0NJSUxpdGVyYWwoImNv
ZGVjcyIpKTsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50VHlwZTsKICAgICBpZiAoTW9j
a01lZGlhUGxheWVyTWVkaWFTb3VyY2U6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312231</attachid>
            <date>2017-06-07 14:36:56 -0700</date>
            <delta_ts>2017-06-07 15:15:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-173038-20170607143654.patch</filename>
            <type>text/plain</type>
            <size>38855</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3ODkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDIwNWEyMmIxMDQ2YjY1Y2E0NWYxZTQw
MzkzZWQ0NGY3OWE2MTgzMzUuLmQ0OTg2OGRmMmYxYjE5MjNhYWEwYWY3YThiN2Y0MzhiODZjZmUy
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTctMDYtMDYgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jpbmc6IE1lZGlhRW5naW5lU3VwcG9ydFBh
cmFtZXRlcnMgc2hvdWxkIHRha2UgYSBDb250ZW50VHlwZSByYXRoZXIgdGhhbiBzZXBhcmF0ZSB0
eXBlICYgY29kZWNzIHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4K
KworICAgICAgICBEcml2ZSBieSBmaXg6IGFkZCBhIHZlcnNpb24gb2Ygc3BsaXQgdGhhdCB0YWtl
cyBhIFVDaGFyIGFuZCByZXR1cm5zIGEgVmVjdG9yPFN0cmluZz4uCisKKyAgICAgICAgKiB3dGYv
dGV4dC9XVEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpzcGxpdCk6CisKIDIwMTct
MDYtMDcgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtH
Q3J5cHRdIFJTQS1QU1Mgc3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDliYWE2NWZhYmVmOGQyNzNhMWNk
ZDY1YjVhYjczYWRmNTc4NzJlMTEuLmEzYzQ5NjA3MzI1ODdmZmY2ZmRhY2VmNDRhZmY3OTk1NmZj
NTVmODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NSBAQAorMjAxNy0wNi0wNiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvcmluZzogTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyBzaG91bGQgdGFrZSBhIENvbnRlbnRUeXBlIHJhdGhlciB0aGFu
IHNlcGFyYXRlIHR5cGUgJiBjb2RlY3Mgc3RyaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBDYXJsc29uLgorCisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpZXNGb3JBdWRpb1Zp
ZGVvVHlwZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjppc1R5cGVTdXBwb3J0ZWQpOgorICAgICAgICAqIGRv
bS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlRG9jdW1lbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQp
OgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFR5cGU6OnByb2ZpbGVzUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRUeXBl
Ojpjb250YWluZXJUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnNpbXBsaWZ5V2hpdGVzcGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6Y29kZWNzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRUeXBlOjpwcm9maWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlw
ZTo6dHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vQ29udGVudFR5cGUuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
bmV4dEJlc3RNZWRpYUVuZ2luZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZFdpdGhOZXh0TWVkaWFFbmdpbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bmV0d29ya1N0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpjb2RlY3MpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllcjo6Y29udGVudE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
Ojpjb250ZW50VHlwZUNvZGVjcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3Jl
OjpDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1
cHBvcnRzTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6
YWRkU291cmNlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OnN1
cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb246OnN1cHBvcnRzVHlwZSk6CisgICAgICAgICog
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6c3VwcG9ydHNU
eXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja01lZGlhU291cmNlUHJpdmF0ZTo6
YWRkU291cmNlQnVmZmVyKToKKwogMjAxNy0wNi0wNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBDbGVhbi11cDogUmVuZGVyRWxlbWVudC5oIGluY2x1ZGVzIGhl
YWRlcnMgaXQgZG9lc24ndCB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGRhZDA3MmM3
Njk1MTYwOWI2OTE1ZWNjYzBiYTA3ODY3NGVlZDBjOWMuLmFiMjFjYzIyNTQwZDE1ZTE2NDFjMTA1
MjM2M2FiZWRjNDEzMTc3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzY5LDcgKzM2
OSwxMiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzcGxpdChzZXBhcmF0b3IsIGZhbHNlLCBy
ZXN1bHQpOwogICAgIH0KLQorICAgIFZlY3RvcjxTdHJpbmc+IHNwbGl0KFVDaGFyIHNlcGFyYXRv
cikgY29uc3QKKyAgICB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAgICAg
c3BsaXQoc2VwYXJhdG9yLCBmYWxzZSwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CiAgICAgVmVjdG9yPFN0cmluZz4gc3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3Ip
IGNvbnN0CiAgICAgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETS5jcHAKaW5kZXggNzU4OGIwNjI4NWUx
ZDI5NGNmZDdmMDFhNTc0ODI4ODVjYzUyMjU1Ni4uYzVjZTdjY2E5MjAxMWY3YzU5YjFkMDI1MWFh
MmNjZmI1YjA5MWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvQ0RNLmNwcApAQCAtNDg4LDggKzQ4OCw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPE1lZGlh
S2V5U3lzdGVtTWVkaWFDYXBhYmlsaXR5Pj4gQ0RNOjpnZXRTdXBwb3J0ZWRDYXBhYmlsaXRpCiAg
ICAgICAgIC8vICAgICAgIGNvbWJpbmF0aW9uIG9mIGNvbnRhaW5lciwgbWVkaWEgdHlwZXMsIHJv
YnVzdG5lc3MgYW5kIGxvY2FsIGFjY3VtdWxhdGVkIGNvbmZpZ3VyYXRpb24gaW4gY29tYmluYXRp
b24KICAgICAgICAgLy8gICAgICAgd2l0aCByZXN0cmljdGlvbnM6CiAgICAgICAgIE1lZGlhRW5n
aW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICAgICAgcGFyYW1ldGVycy50eXBl
ID0gY29udGVudFR5cGUubWltZVR5cGUoKTsKLSAgICAgICAgcGFyYW1ldGVycy5jb2RlY3MgPSBj
b2RlY3M7CisgICAgICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwogICAgICAgICBp
ZiAoIU1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycywgbnVsbHB0cikpIHsKICAg
ICAgICAgICAgIC8vIFRyeSB3aXRoIE1lZGlhIFNvdXJjZToKICAgICAgICAgICAgIHBhcmFtZXRl
cnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDZhYzhkMDI4YzYzOWUzMmQ1MmRkMGRh
N2NkNmE2MjI3ODYzZjMwMmQuLmJkODgzZDIyNDMzYTIxOGQxYTEwZDIzZjhkOThmOTJmYjRjNWY0
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCkBAIC02NTYsNyArNjU2LDcgQEAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyJj4g
TWVkaWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgLy8g
Y29sdW1uIG9mIHRoZSBieXRlIHN0cmVhbSBmb3JtYXQgcmVnaXN0cnkgW01TRS1SRUdJU1RSWV0g
ZW50cnkgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggdHlwZS4KICAgICAvLyBOT1RFOiBJbiB0aGUg
Y3VycmVudCBieXRlIHN0cmVhbSBmb3JtYXQgcmVnaXN0cnkgPGh0dHA6Ly93d3cudzMub3JnLzIw
MTMvMTIvYnl0ZS1zdHJlYW0tZm9ybWF0LXJlZ2lzdHJ5Lz4KICAgICAvLyBvbmx5IHRoZSAiTVBF
RyBBdWRpbyBCeXRlIFN0cmVhbSBGb3JtYXQiIGhhcyB0aGUgIkdlbmVyYXRlIFRpbWVzdGFtcHMg
RmxhZyIgdmFsdWUgc2V0LgotICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gY29u
dGVudFR5cGUudHlwZSgpID09ICJhdWRpby9hYWMiIHx8IGNvbnRlbnRUeXBlLnR5cGUoKSA9PSAi
YXVkaW8vbXBlZyI7CisgICAgYm9vbCBzaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMgPSBjb250ZW50
VHlwZS5jb250YWluZXJUeXBlKCkgPT0gImF1ZGlvL2FhYyIgfHwgY29udGVudFR5cGUuY29udGFp
bmVyVHlwZSgpID09ICJhdWRpby9tcGVnIjsKICAgICBidWZmZXItPnNldFNob3VsZEdlbmVyYXRl
VGltZXN0YW1wcyhzaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMpOwogCiAgICAgLy8gNy4gSWYgdGhl
IGdlbmVyYXRlIHRpbWVzdGFtcHMgZmxhZyBlcXVhbHMgdHJ1ZToKQEAgLTgzNiw3ICs4MzYsNyBA
QCBib29sIE1lZGlhU291cmNlOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB0eXBlKQog
ICAgIFN0cmluZyBjb2RlY3MgPSBjb250ZW50VHlwZS5wYXJhbWV0ZXIoImNvZGVjcyIpOwogCiAg
ICAgLy8gMi4gSWYgdHlwZSBkb2VzIG5vdCBjb250YWluIGEgdmFsaWQgTUlNRSB0eXBlIHN0cmlu
ZywgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgaWYgKGNvbnRlbnRUeXBlLnR5cGUoKS5pc0VtcHR5
KCkpCisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIDMuIElmIHR5cGUgY29udGFpbnMgYSBtZWRpYSB0
eXBlIG9yIG1lZGlhIHN1YnR5cGUgdGhhdCB0aGUgTWVkaWFTb3VyY2UgZG9lcyBub3Qgc3VwcG9y
dCwgdGhlbiByZXR1cm4gZmFsc2UuCkBAIC04NDQsOCArODQ0LDcgQEAgYm9vbCBNZWRpYVNvdXJj
ZTo6aXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAvLyA1LiBJZiB0aGUg
TWVkaWFTb3VyY2UgZG9lcyBub3Qgc3VwcG9ydCB0aGUgc3BlY2lmaWVkIGNvbWJpbmF0aW9uIG9m
IG1lZGlhIHR5cGUsIG1lZGlhIHN1YnR5cGUsIGFuZCBjb2RlY3MgdGhlbiByZXR1cm4gZmFsc2Uu
CiAgICAgLy8gNi4gUmV0dXJuIHRydWUuCiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyBwYXJhbWV0ZXJzOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKTsK
LSAgICBwYXJhbWV0ZXJzLmNvZGVjcyA9IGNvZGVjczsKKyAgICBwYXJhbWV0ZXJzLnR5cGUgPSBj
b250ZW50VHlwZTsKICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwogICAgIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydGVkID0gTWVkaWFQbGF5ZXI6OnN1cHBvcnRz
VHlwZShwYXJhbWV0ZXJzLCAwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TUltcGxlbWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAKaW5kZXggNTg2ZmExY2NiMTQ0NmJiZGY5NzY4NDNlOWIwZTUzM2IwZmI2NmQ3NS4uODRh
YzU3NGY1MTJiYWQ3ZjFlMDg1MjE2ZjcxMjliODRmY2FkYTNkZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NSW1wbGVtZW50YXRpb24uY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgUmVmPERvY3VtZW50
PiBET01JbXBsZW1lbnRhdGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0eXBlLCBG
cmFtZSogZnJhbWUKICAgICAvLyBLZXkgc3lzdGVtIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuCiAg
ICAgRE9NSW1wbGVtZW50YXRpb25TdXBwb3J0c1R5cGVDbGllbnQgY2xpZW50KGZyYW1lICYmIGZy
YW1lLT5zZXR0aW5ncygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCksIHVybC5ob3N0KCkpOwog
ICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0
ZXJzLnR5cGUgPSB0eXBlOworICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKHR5cGUp
OwogICAgIHBhcmFtZXRlcnMudXJsID0gdXJsOwogICAgIGlmIChNZWRpYVBsYXllcjo6c3VwcG9y
dHNUeXBlKHBhcmFtZXRlcnMsICZjbGllbnQpKQogICAgICAgICByZXR1cm4gTWVkaWFEb2N1bWVu
dDo6Y3JlYXRlKGZyYW1lLCB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggZjBkYjRhMzEwODg5MjAyNDBiMmEzNjBiOThhZWFmN2ViMjI3YjBhNC4uYTY4
MmRjN2I0NGRmNGFkN2Q1YzNjMWI2YjIyYjAxNTFhNTdlYmJmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xMTA4LDggKzExMDgsNyBAQCBTdHJpbmcgSFRN
TE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QK
IHsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgQ29u
dGVudFR5cGUgY29udGVudFR5cGUobWltZVR5cGUpOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IGNv
bnRlbnRUeXBlLnR5cGUoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIHBhcmFtZXRl
cnMuY29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikp
OworICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwogICAgIE1lZGlhUGxheWVyOjpT
dXBwb3J0c1R5cGUgc3VwcG9ydCA9IE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVy
cywgdGhpcyk7CiAgICAgU3RyaW5nIGNhblBsYXk7CiAKQEAgLTQyODEsOSArNDI4MCw3IEBAIFVS
TCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqIGNv
bnRlbnRUeXBlLCBTdHJpbmcqIGtlCiAgICAgICAgICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1l
ZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKCVwKSAtICd0eXBlJyBpcyAnJXMnIiwg
dGhpcywgdHlwZS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogICAgICAgICAgICAgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwotICAgICAgICAgICAgQ29udGVudFR5cGUg
Y29udGVudFR5cGUodHlwZSk7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJzLnR5cGUgPSBjb250ZW50
VHlwZS50eXBlKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgICAgIHBhcmFt
ZXRlcnMuY29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNz
IikpOworICAgICAgICAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUodHlwZSk7CiAg
ICAgICAgICAgICBwYXJhbWV0ZXJzLnVybCA9IG1lZGlhVVJMOwogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSBtZWRpYVVSTC5w
cm90b2NvbElzKG1lZGlhU291cmNlQmxvYlByb3RvY29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0NvbnRlbnRUeXBlLmNwcAppbmRleCA4OGE3MTRiNWYzOTJjZTE5NzllZGJlZjQ0ZTI1OWNkYmEy
MmMxZmI5Li5kOGQ0NWRlZmMzNTA2OGI5MjVhNTVlNTcxYTdhODNiY2Q1ZmY1ZDE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb250ZW50VHlwZS5oIgorI2luY2x1ZGUgIkhU
TUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2ICszNywxOCBAQCBDb250ZW50VHlwZTo6Q29udGVu
dFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKIH0KIAorY29uc3QgU3RyaW5nJiBD
b250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U3RyaW5nPiBjb2RlY3MgeyBBU0NJSUxpdGVyYWwoImNvZGVjcyIpIH07CisgICAgcmV0dXJu
IGNvZGVjczsKK30KKworY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6cHJvZmlsZXNQYXJhbWV0
ZXIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHByb2ZpbGVzIHsgQVND
SUlMaXRlcmFsKCJwcm9maWxlcyIpIH07CisgICAgcmV0dXJuIHByb2ZpbGVzOworfQorCiBTdHJp
bmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNv
bnN0CiB7CiAgICAgU3RyaW5nIHBhcmFtZXRlclZhbHVlOwpAQCAtNjQsNyArNzgsNyBAQCBTdHJp
bmcgQ29udGVudFR5cGU6OnBhcmFtZXRlcihjb25zdCBTdHJpbmcmIHBhcmFtZXRlck5hbWUpIGNv
bnN0CiAgICAgcmV0dXJuIHBhcmFtZXRlclZhbHVlOwogfQogCi1TdHJpbmcgQ29udGVudFR5cGU6
OnR5cGUoKSBjb25zdAorU3RyaW5nIENvbnRlbnRUeXBlOjpjb250YWluZXJUeXBlKCkgY29uc3QK
IHsKICAgICBTdHJpbmcgc3RyaXBwZWRUeXBlID0gbV90eXBlLnN0cmlwV2hpdGVTcGFjZSgpOwog
CkBAIC03NiwxOSArOTAsMTkgQEAgU3RyaW5nIENvbnRlbnRUeXBlOjp0eXBlKCkgY29uc3QKICAg
ICByZXR1cm4gc3RyaXBwZWRUeXBlOwogfQogCi1WZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6
Y29kZWNzKCkgY29uc3QKK3N0YXRpYyBTdHJpbmcgc3RyaXBIVE1MV2hpdGVTcGFjZShjb25zdCBT
dHJpbmcmIHN0cmluZykKIHsKLSAgICBTdHJpbmcgY29kZWNzUGFyYW1ldGVyID0gcGFyYW1ldGVy
KEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOwotCi0gICAgaWYgKGNvZGVjc1BhcmFtZXRlci5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgIHJldHVybiBzdHJp
bmcuc3RyaXBXaGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKK30KIAotICAgIFZlY3RvcjxTdHJpbmc+
IGNvZGVjczsKLSAgICBjb2RlY3NQYXJhbWV0ZXIuc3BsaXQoJywnLCBjb2RlY3MpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZWNzLnNpemUoKTsgKytpKQotICAgICAgICBjb2RlY3Nb
aV0gPSBjb2RlY3NbaV0uc2ltcGxpZnlXaGl0ZVNwYWNlKCk7CitWZWN0b3I8U3RyaW5nPiBDb250
ZW50VHlwZTo6Y29kZWNzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyYW1ldGVyKGNvZGVjc1Bh
cmFtZXRlcigpKS5zcGxpdCgnLCcpLm1hcChzdHJpcEhUTUxXaGl0ZVNwYWNlKTsKK30KIAotICAg
IHJldHVybiBjb2RlY3M7CitWZWN0b3I8U3RyaW5nPiBDb250ZW50VHlwZTo6cHJvZmlsZXMoKSBj
b25zdAoreworICAgIHJldHVybiBwYXJhbWV0ZXIocHJvZmlsZXNQYXJhbWV0ZXIoKSkuc3BsaXQo
JywnKS5tYXAoc3RyaXBIVE1MV2hpdGVTcGFjZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5oCmluZGV4IGYzMWFjNTBhMDg3NTNj
ZTdhODAxZDg3NWZiM2IyMTE4Y2RkZDFjNDUuLjA2YjY3OWRkNWJmZTVhOThkZmZhNjVmMTdkNGNh
M2M4ZDc0MjFiMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuaApAQCAtMjcs
NiArMjcsNyBAQAogI2lmbmRlZiBDb250ZW50VHlwZV9oCiAjZGVmaW5lIENvbnRlbnRUeXBlX2gK
IAorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM3LDkgKzM4LDEzIEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBDb250ZW50VHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIENvbnRlbnRU
eXBlKCkgPSBkZWZhdWx0OwogCisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgY29kZWNzUGFyYW1l
dGVyKCk7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgcHJvZmlsZXNQYXJhbWV0ZXIoKTsKKwog
ICAgIFN0cmluZyBwYXJhbWV0ZXIoY29uc3QgU3RyaW5nJiBwYXJhbWV0ZXJOYW1lKSBjb25zdDsK
LSAgICBTdHJpbmcgdHlwZSgpIGNvbnN0OworICAgIFN0cmluZyBjb250YWluZXJUeXBlKCkgY29u
c3Q7CiAgICAgVmVjdG9yPFN0cmluZz4gY29kZWNzKCkgY29uc3Q7CisgICAgVmVjdG9yPFN0cmlu
Zz4gcHJvZmlsZXMoKSBjb25zdDsKICAgICBjb25zdCBTdHJpbmcmIHJhdygpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZS5p
c0VtcHR5KCk7IH0KIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKaW5kZXggZGEwOWJiYWZhOTkyY2YzYzU5YzZhZGJjMWQ5ZGFm
OTFlNmI5ZWZmYy4uZWI5ZDE4OTRhMTk2YzFhMzAxMmZkOTZiNGZmMjk4ZDUzNjhhYjQzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApA
QCAtMjg4LDEyICsyODgsNiBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0ZXh0UGxhaW4o
KQogICAgIHJldHVybiB0ZXh0UGxhaW47CiB9CiAKLXN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcm
IGNvZGVjcygpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IEF0b21pY1N0cmlu
Zz4gY29kZWNzKCJjb2RlY3MiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gY29kZWNzOwotfQotCiBzdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5
KiBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIGN1
cnJlbnQgPSBudWxscHRyKQogewogICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpICYm
ICFwYXJhbWV0ZXJzLmlzTWVkaWFTb3VyY2UgJiYgIXBhcmFtZXRlcnMuaXNNZWRpYVN0cmVhbSkK
QEAgLTMwMiw4ICsyOTYsOCBAQCBzdGF0aWMgY29uc3QgTWVkaWFQbGF5ZXJGYWN0b3J5KiBiZXN0
TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhjb25zdCBNZWRpYQogICAgIC8vIDQuOC4x
MC4zIE1JTUUgdHlwZXMgLSBJbiB0aGUgYWJzZW5jZSBvZiBhIHNwZWNpZmljYXRpb24gdG8gdGhl
IGNvbnRyYXJ5LCB0aGUgTUlNRSB0eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCiAgICAg
Ly8gd2hlbiB1c2VkIHdpdGggcGFyYW1ldGVycywgZS5nLiAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtO2NvZGVjcz10aGVvcmEiLCBpcyBhIHR5cGUgdGhhdCB0aGUgdXNlciBhZ2VudCBrbm93cyAK
ICAgICAvLyBpdCBjYW5ub3QgcmVuZGVyLgotICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUgPT0gYXBw
bGljYXRpb25PY3RldFN0cmVhbSgpKSB7Ci0gICAgICAgIGlmICghcGFyYW1ldGVycy5jb2RlY3Mu
aXNFbXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpID09IGFw
cGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkgeworICAgICAgICBpZiAoIXBhcmFtZXRlcnMudHlwZS5j
b2RlY3MoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
QEAgLTM4MSw4ICszNzUsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cgogICAgIC8vIFByb3Rl
Y3QgYWdhaW5zdCBNZWRpYVBsYXllciBiZWluZyBkZXN0cm95ZWQgZHVyaW5nIGEgTWVkaWFQbGF5
ZXJDbGllbnQgY2FsbGJhY2suCiAgICAgUmVmPE1lZGlhUGxheWVyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAotICAgIG1fY29udGVudE1JTUVUeXBlID0gY29udGVudFR5cGUudHlwZSgpLmNvbnZl
cnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgbV9jb250ZW50VHlwZUNvZGVjcyA9IGNvbnRlbnRU
eXBlLnBhcmFtZXRlcihjb2RlY3MoKSk7CisgICAgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBl
OwogICAgIG1fdXJsID0gdXJsOwogICAgIG1fa2V5U3lzdGVtID0ga2V5U3lzdGVtLmNvbnZlcnRU
b0FTQ0lJTG93ZXJjYXNlKCk7CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21F
eHRlbnNpb24gPSBmYWxzZTsKQEAgLTM5NSw5ICszODgsMTAgQEAgYm9vbCBNZWRpYVBsYXllcjo6
bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHIKICNlbmRpZgogCiAgICAgLy8gSWYgdGhlIE1JTUUgdHlwZSBpcyBtaXNzaW5nIG9yIGlz
IG5vdCBtZWFuaW5nZnVsLCB0cnkgdG8gZmlndXJlIGl0IG91dCBmcm9tIHRoZSBVUkwuCi0gICAg
aWYgKG1fY29udGVudE1JTUVUeXBlLmlzRW1wdHkoKSB8fCBtX2NvbnRlbnRNSU1FVHlwZSA9PSBh
cHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkgfHwgbV9jb250ZW50TUlNRVR5cGUgPT0gdGV4dFBsYWlu
KCkpIHsKKyAgICBBdG9taWNTdHJpbmcgY29udGFpbmVyVHlwZSA9IG1fY29udGVudFR5cGUuY29u
dGFpbmVyVHlwZSgpOworICAgIGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8fCBjb250YWlu
ZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBjb250YWluZXJUeXBlID09IHRl
eHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2NvbElzRGF0YSgpKQotICAgICAg
ICAgICAgbV9jb250ZW50TUlNRVR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmlu
ZygpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZUZy
b21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
U3RyaW5nIGxhc3RQYXRoQ29tcG9uZW50ID0gdXJsLmxhc3RQYXRoQ29tcG9uZW50KCk7CiAgICAg
ICAgICAgICBzaXplX3QgcG9zID0gbGFzdFBhdGhDb21wb25lbnQucmV2ZXJzZUZpbmQoJy4nKTsK
QEAgLTQwNSw3ICszOTksNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5cGUsIGNvbnN0IFN0cgogICAgICAgICAgICAg
ICAgIFN0cmluZyBleHRlbnNpb24gPSBsYXN0UGF0aENvbXBvbmVudC5zdWJzdHJpbmcocG9zICsg
MSk7CiAgICAgICAgICAgICAgICAgU3RyaW5nIG1lZGlhVHlwZSA9IE1JTUVUeXBlUmVnaXN0cnk6
OmdldE1lZGlhTUlNRVR5cGVGb3JFeHRlbnNpb24oZXh0ZW5zaW9uKTsKICAgICAgICAgICAgICAg
ICBpZiAoIW1lZGlhVHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9jb250
ZW50TUlNRVR5cGUgPSBtZWRpYVR5cGU7CisgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFR5
cGUgPSBDb250ZW50VHlwZShtZWRpYVR5cGUpOwogICAgICAgICAgICAgICAgICAgICBtX2NvbnRl
bnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtNDIzLDggKzQxNyw3IEBAIGJvb2wgTWVkaWFQbGF5ZXI6
OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwgTWVk
aWFTb3VyCiAgICAgQVNTRVJUKG1lZGlhU291cmNlKTsKIAogICAgIG1fbWVkaWFTb3VyY2UgPSBt
ZWRpYVNvdXJjZTsKLSAgICBtX2NvbnRlbnRNSU1FVHlwZSA9IGNvbnRlbnRUeXBlLnR5cGUoKS5j
b252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgIG1fY29udGVudFR5cGVDb2RlY3MgPSBjb250
ZW50VHlwZS5wYXJhbWV0ZXIoY29kZWNzKCkpOworICAgIG1fY29udGVudFR5cGUgPSBjb250ZW50
VHlwZTsKICAgICBtX3VybCA9IHVybDsKICAgICBtX2tleVN5c3RlbSA9IGVtcHR5U3RyaW5nKCk7
CiAgICAgbV9jb250ZW50TUlNRVR5cGVXYXNJbmZlcnJlZEZyb21FeHRlbnNpb24gPSBmYWxzZTsK
QEAgLTQ0MCw3ICs0MzMsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKE1lZGlhU3RyZWFtUHJp
dmF0ZSYgbWVkaWFTdHJlYW0pCiAKICAgICBtX21lZGlhU3RyZWFtID0gJm1lZGlhU3RyZWFtOwog
ICAgIG1fa2V5U3lzdGVtID0gZW1wdHlTdHJpbmcoKTsKLSAgICBtX2NvbnRlbnRNSU1FVHlwZSA9
IGVtcHR5U3RyaW5nKCk7CisgICAgbV9jb250ZW50VHlwZSA9IHsgfTsKICAgICBtX2NvbnRlbnRN
SU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbiA9IGZhbHNlOwogICAgIGxvYWRXaXRoTmV4
dE1lZGlhRW5naW5lKDApOwogICAgIHJldHVybiBtX2N1cnJlbnRNZWRpYUVuZ2luZTsKQEAgLTQ1
MCw4ICs0NDMsNyBAQCBib29sIE1lZGlhUGxheWVyOjpsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYg
bWVkaWFTdHJlYW0pCiBjb25zdCBNZWRpYVBsYXllckZhY3RvcnkqIE1lZGlhUGxheWVyOjpuZXh0
QmVzdE1lZGlhRW5naW5lKGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkgY29uc3QK
IHsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7Ci0gICAgcGFy
YW1ldGVycy50eXBlID0gbV9jb250ZW50TUlNRVR5cGU7Ci0gICAgcGFyYW1ldGVycy5jb2RlY3Mg
PSBtX2NvbnRlbnRUeXBlQ29kZWNzOworICAgIHBhcmFtZXRlcnMudHlwZSA9IG1fY29udGVudFR5
cGU7CiAgICAgcGFyYW1ldGVycy51cmwgPSBtX3VybDsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9ICEhbV9tZWRpYVNvdXJjZTsKQEAgLTQ4
MiwxNiArNDc0LDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5l
KGNvbnN0IE1lZGlhUGxheWVyRmFjdG9yeSogY3VycmVudCkKIAogICAgIGNvbnN0IE1lZGlhUGxh
eWVyRmFjdG9yeSogZW5naW5lID0gbnVsbHB0cjsKIAotICAgIGlmICghbV9jb250ZW50TUlNRVR5
cGUuaXNFbXB0eSgpIHx8IE1FRElBU1RSRUFNIHx8IE1FRElBU09VUkNFKQorICAgIGlmICghbV9j
b250ZW50VHlwZS5pc0VtcHR5KCkgfHwgTUVESUFTVFJFQU0gfHwgTUVESUFTT1VSQ0UpCiAgICAg
ICAgIGVuZ2luZSA9IG5leHRCZXN0TWVkaWFFbmdpbmUoY3VycmVudCk7CiAKICAgICAvLyBJZiBu
byBNSU1FIHR5cGUgaXMgc3BlY2lmaWVkIG9yIHRoZSB0eXBlIHdhcyBpbmZlcnJlZCBmcm9tIHRo
ZSBmaWxlIGV4dGVuc2lvbiwganVzdCB1c2UgdGhlIG5leHQgZW5naW5lLgotICAgIGlmICghZW5n
aW5lICYmIChtX2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbV9jb250ZW50TUlNRVR5cGVX
YXNJbmZlcnJlZEZyb21FeHRlbnNpb24pKQorICAgIGlmICghZW5naW5lICYmIChtX2NvbnRlbnRU
eXBlLmlzRW1wdHkoKSB8fCBtX2NvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lv
bikpCiAgICAgICAgIGVuZ2luZSA9IG5leHRNZWRpYUVuZ2luZShjdXJyZW50KTsKIAogICAgIC8v
IERvbid0IGRlbGV0ZSBhbmQgcmVjcmVhdGUgdGhlIHBsYXllciB1bmxlc3MgaXQgY29tZXMgZnJv
bSBhIGRpZmZlcmVudCBlbmdpbmUuCiAgICAgaWYgKCFlbmdpbmUpIHsKLSAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXI6OmxvYWRXaXRoTmV4dE1lZGlhRW5naW5lIC0gbm8gbWVkaWEgZW5n
aW5lIGZvdW5kIGZvciB0eXBlIFwiJXNcIiIsIG1fY29udGVudE1JTUVUeXBlLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllcjo6bG9hZFdpdGhOZXh0TWVkaWFF
bmdpbmUgLSBubyBtZWRpYSBlbmdpbmUgZm91bmQgZm9yIHR5cGUgXCIlc1wiIiwgbV9jb250ZW50
VHlwZS5yYXcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgbV9jdXJyZW50TWVkaWFFbmdpbmUg
PSBlbmdpbmU7CiAgICAgICAgIG1fcHJpdmF0ZSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIGlmICht
X2N1cnJlbnRNZWRpYUVuZ2luZSAhPSBlbmdpbmUpIHsKQEAgLTg3OSw3ICs4NzEsOCBAQCBNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYQogewogICAgIC8vIDQuOC4xMC4zIE1JTUUgdHlwZXMgLSBUaGUg
Y2FuUGxheVR5cGUodHlwZSkgbWV0aG9kIG11c3QgcmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgaWYg
dHlwZSBpcyBhIHR5cGUgdGhhdCB0aGUgCiAgICAgLy8gdXNlciBhZ2VudCBrbm93cyBpdCBjYW5u
b3QgcmVuZGVyIG9yIGlzIHRoZSB0eXBlICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCi0gICAg
aWYgKHBhcmFtZXRlcnMudHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkpCisgICAgQXRv
bWljU3RyaW5nIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgp
OworICAgIGlmIChjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSkKICAg
ICAgICAgcmV0dXJuIElzTm90U3VwcG9ydGVkOwogCiAgICAgY29uc3QgTWVkaWFQbGF5ZXJGYWN0
b3J5KiBlbmdpbmUgPSBiZXN0TWVkaWFFbmdpbmVGb3JTdXBwb3J0UGFyYW1ldGVycyhwYXJhbWV0
ZXJzKTsKQEAgLTg5Niw3ICs4ODksNyBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlh
UGxheWVyOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYQogICAgIGlm
IChjbGllbnQgJiYgY2xpZW50LT5tZWRpYVBsYXllck5lZWRzU2l0ZVNwZWNpZmljSGFja3MoKSkg
ewogICAgICAgICBTdHJpbmcgaG9zdCA9IGNsaWVudC0+bWVkaWFQbGF5ZXJEb2N1bWVudEhvc3Qo
KTsKICAgICAgICAgaWYgKChob3N0LmVuZHNXaXRoKCIueW91dHViZS5jb20iLCBmYWxzZSkgfHwg
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgInlvdXR1YmUuY29tIikpCi0gICAg
ICAgICAgICAmJiAocGFyYW1ldGVycy50eXBlLnN0YXJ0c1dpdGgoInZpZGVvL3dlYm0iLCBmYWxz
ZSkgfHwgcGFyYW1ldGVycy50eXBlLnN0YXJ0c1dpdGgoInZpZGVvL3gtZmx2IiwgZmFsc2UpKSkK
KyAgICAgICAgICAgICYmIChjb250YWluZXJUeXBlLnN0YXJ0c1dpdGgoInZpZGVvL3dlYm0iLCBm
YWxzZSkgfHwgY29udGFpbmVyVHlwZS5zdGFydHNXaXRoKCJ2aWRlby94LWZsdiIsIGZhbHNlKSkp
CiAgICAgICAgICAgICByZXR1cm4gSXNOb3RTdXBwb3J0ZWQ7CiAgICAgfQogI2Vsc2UKQEAgLTEx
MzAsNyArMTEyMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQog
ICAgIC8vIGxldCB0aGUgbmV4dCBlbmdpbmUgdHJ5LgogICAgIGlmIChtX3ByaXZhdGUtPm5ldHdv
cmtTdGF0ZSgpID49IEZvcm1hdEVycm9yICYmIG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDwgSGF2
ZU1ldGFkYXRhKSB7CiAgICAgICAgIGNsaWVudCgpLm1lZGlhUGxheWVyRW5naW5lRmFpbGVkVG9M
b2FkKCk7Ci0gICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKS5zaXplKCkgPiAxICYm
IChtX2NvbnRlbnRNSU1FVHlwZS5pc0VtcHR5KCkgfHwgbmV4dEJlc3RNZWRpYUVuZ2luZShtX2N1
cnJlbnRNZWRpYUVuZ2luZSkpKSB7CisgICAgICAgIGlmIChpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KS5zaXplKCkgPiAxICYmIChtX2NvbnRlbnRUeXBlLmlzRW1wdHkoKSB8fCBuZXh0QmVzdE1lZGlh
RW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKSkpIHsKICAgICAgICAgICAgIG1fcmVsb2FkVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IDIx
YWY0ZmZiNjM5NTdiMTMyMTM0ZDJkZjdjYTJmZGM1N2Q1MTEzMDAuLmQ2NDFhNzg1YWIwMTYzMmEz
YjhiNzZiMTk5NDM2ZGM5MDY0NjBhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtMTEwLDggKzExMCw3IEBAIHN0cnVjdCBNZWRpYUVu
Z2luZVN1cHBvcnRQYXJhbWV0ZXJzIHsKIAogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMoKSB7IH0KIAotICAgIFN0cmluZyB0eXBlOwotICAgIFN0cmluZyBjb2RlY3M7CisgICAgQ29u
dGVudFR5cGUgdHlwZTsKICAgICBVUkwgdXJsOwogICAgIGJvb2wgaXNNZWRpYVNvdXJjZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBpc01lZGlhU3RyZWFtIHsgZmFsc2UgfTsKQEAgLTU4Niw4ICs1ODUs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGREaXNhYmxlU2xlZXAoYm9vbCk7CiAgICAg
Ym9vbCBzaG91bGREaXNhYmxlU2xlZXAoKSBjb25zdDsKIAotICAgIGNvbnN0IFN0cmluZyYgY29u
dGVudE1JTUVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TUlNRVR5cGU7IH0KLSAgICBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlQ29kZWNzKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50
VHlwZUNvZGVjczsgfQorICAgIFN0cmluZyBjb250ZW50TUlNRVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsgfQorICAgIFN0cmluZyBjb250ZW50VHlw
ZUNvZGVjcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFR5cGUucGFyYW1ldGVyKENvbnRlbnRU
eXBlOjpjb2RlY3NQYXJhbWV0ZXIoKSk7IH0KICAgICBib29sIGNvbnRlbnRNSU1FVHlwZVdhc0lu
ZmVycmVkRnJvbUV4dGVuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudE1JTUVUeXBlV2Fz
SW5mZXJyZWRGcm9tRXh0ZW5zaW9uOyB9CiAKICAgICBjb25zdCBWZWN0b3I8Q29udGVudFR5cGU+
JiBtZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpIGNvbnN0OwpAQCAt
NjA0LDggKzYwMyw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVy
UHJpdmF0ZUludGVyZmFjZT4gbV9wcml2YXRlOwogICAgIGNvbnN0IE1lZGlhUGxheWVyRmFjdG9y
eSogbV9jdXJyZW50TWVkaWFFbmdpbmU7CiAgICAgVVJMIG1fdXJsOwotICAgIFN0cmluZyBtX2Nv
bnRlbnRNSU1FVHlwZTsKLSAgICBTdHJpbmcgbV9jb250ZW50VHlwZUNvZGVjczsKKyAgICBDb250
ZW50VHlwZSBtX2NvbnRlbnRUeXBlOwogICAgIFN0cmluZyBtX2tleVN5c3RlbTsKICAgICBJbnRT
aXplIG1fc2l6ZTsKICAgICBQcmVsb2FkIG1fcHJlbG9hZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZmQxNjg3ODg5MTFlY2Fl
YWYyZGJiODAzZmYwMzg5Mjk4N2E4MzdiMy4uMGQ3MzNlNDA1OTNiM2YwMTMxOWEyNjQ4NjRlZWQw
YmI5ZjQ0MzMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMubW0KQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBDRE1Qcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjpzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2UK
IAogICAgIE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLmlzTWVkaWFTb3VyY2UgPSB0cnVlOwotICAgIHBhcmFtZXRlcnMudHlwZSA9IG1pbWVU
eXBlOworICAgIHBhcmFtZXRlcnMudHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsKIAogICAg
IHJldHVybiBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlw
ZShwYXJhbWV0ZXJzKSAhPSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiB9CkBAIC05NSw3
ICs5NSw3IEBAIGJvb2wgQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogCiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7
Ci0gICAgcGFyYW1ldGVycy50eXBlID0gbWltZVR5cGU7CisgICAgcGFyYW1ldGVycy50eXBlID0g
Q29udGVudFR5cGUobWltZVR5cGUpOwogCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQzo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpICE9IE1lZGlhUGxheWVy
OjpJc05vdFN1cHBvcnRlZDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25D
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuY3BwCmluZGV4IDhhMGFkNTA1ZWQwMTg0
MWViYTEzMzMwNzI3NWExYTZhYjMzNzg4OWQuLmI0ZmFkMDc5MWEwMGFkYjJjNTNkZjU3NzJiNTAz
ZmY5YmYzMWQzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9jZi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcApAQCAtOTEyLDIzICs5MTIsMjUgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6Z2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2EKIAogTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25DRjo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgaWYgKGlzVW5zdXBwb3J0ZWRN
SU1FVHlwZShwYXJhbWV0ZXJzLnR5cGUpKQorICAgIGF1dG8gY29udGFpbmVyVHlwZSA9IHBhcmFt
ZXRlcnMudHlwZS5jb250YWluZXJUeXBlKCk7CisgICAgaWYgKGlzVW5zdXBwb3J0ZWRNSU1FVHlw
ZShjb250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBv
cnRlZDsKIAotICAgIGlmICghc3RhdGljTUlNRVR5cGVMaXN0KCkuY29udGFpbnMocGFyYW1ldGVy
cy50eXBlKSAmJiAhYXZmTUlNRVR5cGVzKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKKyAg
ICBpZiAoIXN0YXRpY01JTUVUeXBlTGlzdCgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpICYmICFh
dmZNSU1FVHlwZXMoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkKICAgICAgICAgcmV0dXJuIE1l
ZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAorICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVy
cy50eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOwogI2lmIEhB
VkUoQVZDRlVSTF9QTEFZQUJMRV9NSU1FVFlQRSkKICAgICAvLyBUaGUgc3BlYyBzYXlzOgogICAg
IC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJtYXliZSIgdW5sZXNz
IHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBiZWluZyBzdXBwb3J0
ZWQgb3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0eSgpKQorICAgIGlm
IChjb2RlY3MuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3Vw
cG9ydGVkOwogCi0gICAgU3RyaW5nIHR5cGVTdHJpbmcgPSBwYXJhbWV0ZXJzLnR5cGUgKyAiOyBj
b2RlY3M9XCIiICsgcGFyYW1ldGVycy5jb2RlY3MgKyAiXCIiOworICAgIFN0cmluZyB0eXBlU3Ry
aW5nID0gY29udGFpbmVyVHlwZSArICI7IGNvZGVjcz1cIiIgKyBjb2RlY3MgKyAiXCIiOwogICAg
IHJldHVybiBBVkNGVVJMQXNzZXRJc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlwZSh0eXBlU3RyaW5n
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpID8gTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVk
aWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogI2Vsc2UKLSAgICBpZiAoYXZmTUlNRVR5cGVzKCku
Y29udGFpbnMocGFyYW1ldGVycy50eXBlKSkKLSAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuY29k
ZWNzLmlzRW1wdHkoKSA/IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZCA6IE1lZGlhUGxheWVy
OjpJc1N1cHBvcnRlZDsKKyAgICBpZiAoYXZmTUlNRVR5cGVzKCkuY29udGFpbnMoY29udGFpbmVy
VHlwZSkpCisgICAgICAgIHJldHVybiBjb2RlY3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1h
eUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVkOwogICAgIHJldHVybiBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
CmluZGV4IDkyM2ZkYjk0MTVjYjM4OGI5NWM5MDE5Yjk1ZDE1YWM2NDI2ODU2MzAuLjhjYjI5OTYy
YjRhZmZkNDcxYjEyMTZlMTQxYzg0OGQ3OWVkNjZkZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQpAQCAtOTQ1LDkgKzk0NSw5IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKICAgICAgICAgW29w
dGlvbnMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OkFWVVJMQXNzZXRSZXF1aXJlc0N1c3RvbVVSTExv
YWRpbmdLZXldOwogI2VuZGlmCiAKLSAgICBhdXRvJiB0eXBlID0gcGxheWVyKCktPmNvbnRlbnRN
SU1FVHlwZSgpOworICAgIGF1dG8gdHlwZSA9IHBsYXllcigpLT5jb250ZW50TUlNRVR5cGUoKTsK
ICAgICBpZiAoQVZVUkxBc3NldE91dE9mQmFuZE1JTUVUeXBlS2V5ICYmICF0eXBlLmlzRW1wdHko
KSAmJiAhcGxheWVyKCktPmNvbnRlbnRNSU1FVHlwZVdhc0luZmVycmVkRnJvbUV4dGVuc2lvbigp
KSB7Ci0gICAgICAgIGF1dG8mIGNvZGVjcyA9IHBsYXllcigpLT5jb250ZW50VHlwZUNvZGVjcygp
OworICAgICAgICBhdXRvIGNvZGVjcyA9IHBsYXllcigpLT5jb250ZW50VHlwZUNvZGVjcygpOwog
ICAgICAgICBpZiAoIWNvZGVjcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIE5TU3RyaW5nICp0
eXBlU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQDsgY29kZWNzPVwiJUBc
IiIsIChOU1N0cmluZyAqKXR5cGUsIChOU1N0cmluZyAqKWNvZGVjc107CiAgICAgICAgICAgICBb
b3B0aW9ucyBzZXRPYmplY3Q6dHlwZVN0cmluZyBmb3JLZXk6QVZVUkxBc3NldE91dE9mQmFuZE1J
TUVUeXBlS2V5XTsKQEAgLTE3MTUsMTggKzE3MTUsMjAgQEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzdXBwb3J0c1R5cGUoY29u
c3QKICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU3RyZWFtKQogICAgICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogI2VuZGlmCi0gICAgaWYgKGlzVW5zdXBwb3J0ZWRN
SU1FVHlwZShwYXJhbWV0ZXJzLnR5cGUpKQorCisgICAgYXV0byBjb250YWluZXJUeXBlID0gcGFy
YW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKKyAgICBpZiAoaXNVbnN1cHBvcnRlZE1JTUVU
eXBlKGNvbnRhaW5lclR5cGUpKQogICAgICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OklzTm90U3Vw
cG9ydGVkOwogCi0gICAgaWYgKCFzdGF0aWNNSU1FVHlwZUxpc3QoKS5jb250YWlucyhwYXJhbWV0
ZXJzLnR5cGUpICYmICFBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24oKS50eXBl
cygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgaWYgKCFzdGF0aWNNSU1FVHlwZUxp
c3QoKS5jb250YWlucyhjb250YWluZXJUeXBlKSAmJiAhQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNo
ZTo6c2luZ2xldG9uKCkudHlwZXMoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkKICAgICAgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAogICAgIC8vIFRoZSBzcGVjIHNh
eXM6CiAgICAgLy8gIkltcGxlbWVudG9ycyBhcmUgZW5jb3VyYWdlZCB0byByZXR1cm4gIm1heWJl
IiB1bmxlc3MgdGhlIHR5cGUgY2FuIGJlIGNvbmZpZGVudGx5IGVzdGFibGlzaGVkIGFzIGJlaW5n
IHN1cHBvcnRlZCBvciBub3QuIgotICAgIGlmIChwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkp
CisgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5jb2RlY3MoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CiAKLSAgICBOU1N0cmluZyAqdHlwZVN0
cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAo
TlNTdHJpbmcgKilwYXJhbWV0ZXJzLnR5cGUsIChOU1N0cmluZyAqKXBhcmFtZXRlcnMuY29kZWNz
XTsKKyAgICBOU1N0cmluZyAqdHlwZVN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNTdHJpbmcgKiljb250YWluZXJUeXBlLCAoTlNTdHJp
bmcgKilwYXJhbWV0ZXJzLnR5cGUucGFyYW1ldGVyKENvbnRlbnRUeXBlOjpjb2RlY3NQYXJhbWV0
ZXIoKSldOwogICAgIHJldHVybiBbQVZVUkxBc3NldCBpc1BsYXlhYmxlRXh0ZW5kZWRNSU1FVHlw
ZTp0eXBlU3RyaW5nXSA/IE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpN
YXlCZVN1cHBvcnRlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1tCmluZGV4IDQzMTUy
NDM5N2Q3ZWRiMDY1ZjdmMDQ3YzgyMWI2ZjY0NDgyY2ZlZWUuLmVjZDJhMTVmYzEzMDhhOWE0Y2Y5
Nzk4ZmFkZDNkODg3NjNmYjU4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTIx
NCwxOSArMjE0LDIwIEBAIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUoY29uCiAgICAgICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAjZW5kaWYKIAotICAgIGlmIChwYXJhbWV0ZXJz
LnR5cGUuaXNFbXB0eSgpIHx8ICFBVkZvdW5kYXRpb25NSU1FVHlwZUNhY2hlOjpzaW5nbGV0b24o
KS50eXBlcygpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgaWYgKHBhcmFtZXRlcnMu
dHlwZS5pc0VtcHR5KCkgfHwgIUFWRm91bmRhdGlvbk1JTUVUeXBlQ2FjaGU6OnNpbmdsZXRvbigp
LnR5cGVzKCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSkpCiAgICAg
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAvLyBUaGUgc3Bl
YyBzYXlzOgogICAgIC8vICJJbXBsZW1lbnRvcnMgYXJlIGVuY291cmFnZWQgdG8gcmV0dXJuICJt
YXliZSIgdW5sZXNzIHRoZSB0eXBlIGNhbiBiZSBjb25maWRlbnRseSBlc3RhYmxpc2hlZCBhcyBi
ZWluZyBzdXBwb3J0ZWQgb3Igbm90LiIKLSAgICBpZiAocGFyYW1ldGVycy5jb2RlY3MuaXNFbXB0
eSgpKQorICAgIGF1dG8gY29kZWNzID0gcGFyYW1ldGVycy50eXBlLnBhcmFtZXRlcihDb250ZW50
VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkpOworICAgIGlmIChjb2RlY3MuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOwogCi0gICAgTlNTdHJpbmcg
Km91dHB1dENvZGVjcyA9IHBhcmFtZXRlcnMuY29kZWNzOworICAgIE5TU3RyaW5nICpvdXRwdXRD
b2RlY3MgPSBjb2RlY3M7CiAgICAgaWYgKFtnZXRBVlN0cmVhbURhdGFQYXJzZXJDbGFzcygpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iob3V0cHV0TUlNRUNvZGVjUGFyYW1ldGVyRm9ySW5w
dXRNSU1FQ29kZWNQYXJhbWV0ZXI6KV0pCiAgICAgICAgIG91dHB1dENvZGVjcyA9IFtnZXRBVlN0
cmVhbURhdGFQYXJzZXJDbGFzcygpIG91dHB1dE1JTUVDb2RlY1BhcmFtZXRlckZvcklucHV0TUlN
RUNvZGVjUGFyYW1ldGVyOm91dHB1dENvZGVjc107CiAKLSAgICBOU1N0cmluZyAqdHlwZVN0cmlu
ZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA7IGNvZGVjcz1cIiVAXCIiLCAoTlNT
dHJpbmcgKilwYXJhbWV0ZXJzLnR5cGUsIChOU1N0cmluZyAqKW91dHB1dENvZGVjc107CisgICAg
TlNTdHJpbmcgKnR5cGVTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAOyBj
b2RlY3M9XCIlQFwiIiwgKE5TU3RyaW5nICopcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUo
KSwgKE5TU3RyaW5nICopb3V0cHV0Q29kZWNzXTsKICAgICByZXR1cm4gW2dldEFWVVJMQXNzZXRD
bGFzcygpIGlzUGxheWFibGVFeHRlbmRlZE1JTUVUeXBlOnR5cGVTdHJpbmddID8gTWVkaWFQbGF5
ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkOzsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
aW5kZXggNWIyMDliZjM2MzE0NDNjNjQwZjkxOTY3N2VhZWY0ZTliZTdhNWJiMi4uMzgwZjgxY2Rl
ZjQ4M2M2YTIyYzQ1MTcwYmU0NDI2NjVkN2ZiODA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC02Niw4ICs2Niw3IEBA
IE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDCiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0g
ICAgcGFyYW1ldGVycy50eXBlID0gY29udGVudFR5cGUudHlwZSgpOwotICAgIHBhcmFtZXRlcnMu
Y29kZWNzID0gY29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOwor
ICAgIHBhcmFtZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwogICAgIGlmIChNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRp
YVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
OWIxNzYyMDQ1ODdhZWUwYzA0ZjRkMTY0ZDhkODUwNGQ4YWYzMjNiMS4uMzU4ZDA4Zjg4ZjdjYjQx
ZTQ2MzgwYjY4YWIwOTU5M2MzMmY1NjM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE5MDIsMTIgKzE5MDIsMTIgQEAgTWVkaWFQbGF5
ZXI6OlN1cHBvcnRzVHlwZSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUUKICAgICBpZiAocGFyYW1ldGVycy5pc01lZGlhU3RyZWFtKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc051bGwoKSB8fCBw
YXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpKQorICAgIGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCiAgICAgLy8gc3BlYyBzYXlzIHdlIHNob3Vs
ZCBub3QgcmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcgaXMgZW1wdHkKLSAg
ICBpZiAobWltZVR5cGVTZXQoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICBy
ZXN1bHQgPSBwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6TWF5QmVT
dXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CisgICAgaWYgKG1pbWVUeXBlU2V0
KCkuY29udGFpbnMocGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKSkpCisgICAgICAgIHJl
c3VsdCA9IHBhcmFtZXRlcnMudHlwZS5jb2RlY3MoKS5pc0VtcHR5KCkgPyBNZWRpYVBsYXllcjo6
TWF5QmVTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQ7CiAKICAgICByZXR1cm4g
ZXh0ZW5kZWRTdXBwb3J0c1R5cGUocGFyYW1ldGVycywgcmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRl
eCBkY2YwZmVmODAwYmYwYjAyYmM0Nzg4MjE4ZDUzYjNjZjcwYTFhMjliLi40MDJlMzdlMmJmYTRi
OTg3M2NhYWY5YjQ3NGIxZWZiYjczZjM5N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC04NTgsMjIgKzg1OCwy
NCBAQCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRTo6c3VwcG9ydHNUeXBlKGNvbnN0IE1lZAogICAgIGlmICghcGFyYW1ldGVycy5pc01lZGlh
U291cmNlKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCisgICAgYXV0byBjb250YWluZXJUeXBl
ID0gcGFyYW1ldGVycy50eXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICAvLyBEaXNhYmxlIFZQWC9P
cHVzIG9uIE1TRSBmb3Igbm93LCBtcDQvYXZjMSBzZWVtcyB3YXkgbW9yZSByZWxpYWJsZSBjdXJy
ZW50bHkuCi0gICAgaWYgKHBhcmFtZXRlcnMudHlwZS5lbmRzV2l0aCgid2VibSIpKQorICAgIGlm
IChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAKICAgICAvLyBZb3VUdWJlIFRWIHByb3ZpZGVzIGVtcHR5IHR5cGVzIGZvciBzb21lIHZpZGVv
cyBhbmQgd2Ugd2FudCB0byBiZSBzZWxlY3RlZCBhcyBiZXN0IG1lZGlhIGVuZ2luZSBmb3IgdGhl
bS4KLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzRW1wdHkoKSkgeworICAgIGlmIChjb250YWlu
ZXJUeXBlLmlzRW1wdHkoKSkgewogICAgICAgICByZXN1bHQgPSBNZWRpYVBsYXllcjo6TWF5QmVT
dXBwb3J0ZWQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgLy8gU3BlYyBz
YXlzIHdlIHNob3VsZCBub3QgcmV0dXJuICJwcm9iYWJseSIgaWYgdGhlIGNvZGVjcyBzdHJpbmcg
aXMgZW1wdHkuCi0gICAgaWYgKG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5
cGUpKSB7Ci0gICAgICAgIGlmIChwYXJhbWV0ZXJzLmNvZGVjcy5pc0VtcHR5KCkpCisgICAgaWYg
KG1pbWVUeXBlQ2FjaGUoKS5jb250YWlucyhjb250YWluZXJUeXBlKSkgeworICAgICAgICBTdHJp
bmcgY29kZWNzID0gcGFyYW1ldGVycy50eXBlLnBhcmFtZXRlcihDb250ZW50VHlwZTo6Y29kZWNz
UGFyYW1ldGVyKCkpOworICAgICAgICBpZiAoY29kZWNzLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHJlc3VsdCA9IE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcmVzdWx0ID0gc3VwcG9ydHNDb2RlY3MocGFyYW1ldGVycy5jb2RlY3MpID8gTWVk
aWFQbGF5ZXI6OklzU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOworICAg
ICAgICAgICAgcmVzdWx0ID0gc3VwcG9ydHNDb2RlY3MoY29kZWNzKSA/IE1lZGlhUGxheWVyOjpJ
c1N1cHBvcnRlZCA6IE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKICAgICB9CiAKICAgICBy
ZXR1cm4gZXh0ZW5kZWRTdXBwb3J0c1R5cGUocGFyYW1ldGVycywgcmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZh
dGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQppbmRleCBkZWYxMjEyNjVkYjY5NDEzNTMzOGEzYzM2YTAwYWQ3
Yzk3YmY2ODFhLi5jOTU0MTNmYzM1MDJjODgzZjFjMzA1ZWE3MDEzMzM1YjVkODI5ZjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xMzE3LDEyICsxMzE3LDEzIEBAIE1lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUVuZ2luCiAKICAgICAvLyBEdWUgdG8gPHJkYXI6Ly9wcm9ibGVtLzEwNzc3
MDU5PiwgYXZvaWQgY2FsbGluZyB0aGUgbWltZSB0eXBlcyBjYWNoZSBmdW5jdGlvbnMgaWYgYXQK
ICAgICAvLyBhbGwgcG9zc2libGU6Ci0gICAgaWYgKHNob3VsZFJlamVjdE1JTUVUeXBlKHBhcmFt
ZXRlcnMudHlwZSkpCisgICAgYXV0byBjb250YWluZXJUeXBlID0gcGFyYW1ldGVycy50eXBlLmNv
bnRhaW5lclR5cGUoKTsKKyAgICBpZiAoc2hvdWxkUmVqZWN0TUlNRVR5cGUoY29udGFpbmVyVHlw
ZSkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKICAgICAv
LyBXZSBjaGVjayB0aGUgIm1vZGVybiIgdHlwZSBjYWNoZSBmaXJzdCwgYXMgaXQgZG9lc24ndCBy
ZXF1aXJlIFFUS2l0U2VydmVyIHRvIHN0YXJ0LgotICAgIGlmIChtaW1lTW9kZXJuVHlwZXNDYWNo
ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkgfHwgbWltZUNvbW1vblR5cGVzQ2FjaGUoKS5j
b250YWlucyhwYXJhbWV0ZXJzLnR5cGUpKQotICAgICAgICByZXR1cm4gcGFyYW1ldGVycy5jb2Rl
Y3MuaXNFbXB0eSgpID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6
OklzU3VwcG9ydGVkOworICAgIGlmIChtaW1lTW9kZXJuVHlwZXNDYWNoZSgpLmNvbnRhaW5zKGNv
bnRhaW5lclR5cGUpIHx8IG1pbWVDb21tb25UeXBlc0NhY2hlKCkuY29udGFpbnMoY29udGFpbmVy
VHlwZSkpCisgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLnR5cGUuY29kZWNzKCkuaXNFbXB0eSgp
ID8gTWVkaWFQbGF5ZXI6Ok1heUJlU3VwcG9ydGVkIDogTWVkaWFQbGF5ZXI6OklzU3VwcG9ydGVk
OwogCiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZh
dGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKaW5kZXggZDRkNjRkYmQ5
YzJiMjJhYzEyMDYzMDZlYmM3ZDNjYTI2ZmM5MzQ4Yy4uZDk5NjUwNWQ2M2NjNzU4NWE0YmRjYjc5
YWVjMzU5NzAxN2VhNDhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbi5jcHAKQEAgLTE1OCwxMCArMTU4LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFGb3VuZGF0aW9uOjpnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVND
SUlDCiAKIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uOjpzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKLSAgICBpZiAocGFyYW1ldGVycy50eXBlLmlzTnVsbCgpIHx8IHBh
cmFtZXRlcnMudHlwZS5pc0VtcHR5KCkpCisgICAgaWYgKHBhcmFtZXRlcnMudHlwZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CiAKLSAgICBp
ZiAobWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMudHlwZSkpCisgICAgaWYgKG1p
bWVUeXBlQ2FjaGUoKS5jb250YWlucyhwYXJhbWV0ZXJzLnR5cGUuY29udGFpbmVyVHlwZSgpKSkK
ICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc1N1cHBvcnRlZDsKIAogICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxheWVy
TWVkaWFTb3VyY2UuY3BwCmluZGV4IDRlNDBjOGU3M2RkOTg3OTM0Yjc0OWVhYmIxNGFmMTU3M2Qw
ZWZkODQuLjhhMjUzYjE5OTlhOGQ5NjE3MDA0YWFmMTNiNThkOTM2YTI4MTA0MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhUGxh
eWVyTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuY3BwCkBAIC02OCwxMyArNjgsMTUg
QEAgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBNb2NrTWVkaWFQbGF5ZXJNZWRpYVNvdXJjZTo6
c3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW4KICAgICBpZiAoIXBhcmFtZXRlcnMuaXNNZWRpYVNv
dXJjZSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpJc05vdFN1cHBvcnRlZDsKIAotICAg
IGlmIChwYXJhbWV0ZXJzLnR5cGUuaXNFbXB0eSgpIHx8ICFtaW1lVHlwZUNhY2hlKCkuY29udGFp
bnMocGFyYW1ldGVycy50eXBlKSkKKyAgICBhdXRvIGNvbnRhaW5lclR5cGUgPSBwYXJhbWV0ZXJz
LnR5cGUuY29udGFpbmVyVHlwZSgpOworICAgIGlmIChjb250YWluZXJUeXBlLmlzRW1wdHkoKSB8
fCAhbWltZVR5cGVDYWNoZSgpLmNvbnRhaW5zKGNvbnRhaW5lclR5cGUpKQogICAgICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkOwogCi0gICAgaWYgKHBhcmFtZXRlcnMuY29k
ZWNzLmlzRW1wdHkoKSkKKyAgICBhdXRvIGNvZGVjcyA9IHBhcmFtZXRlcnMudHlwZS5wYXJhbWV0
ZXIoQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpKTsKKyAgICBpZiAoY29kZWNzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpNYXlCZVN1cHBvcnRlZDsKIAotICAg
IHJldHVybiBwYXJhbWV0ZXJzLmNvZGVjcyA9PSAibW9jayIgPyBNZWRpYVBsYXllcjo6SXNTdXBw
b3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVTdXBwb3J0ZWQ7CisgICAgcmV0dXJuIGNvZGVjcyA9
PSAibW9jayIgPyBNZWRpYVBsYXllcjo6SXNTdXBwb3J0ZWQgOiBNZWRpYVBsYXllcjo6TWF5QmVT
dXBwb3J0ZWQ7CiB9CiAKIE1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlOjpNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZShNZWRpYVBsYXllciogcGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291
cmNlUHJpdmF0ZS5jcHAKaW5kZXggN2ViNDEyMWY1ZWZjYzE1M2JlN2EzZjNkNzFhMmFkYmZlOTJh
Mjc0Mi4uNTY5MWMwMThmYjFkM2NhMDQzMzE0MzAwMmExOWMyMzg1MzRlN2NjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCkBAIC02Miw4ICs2Miw3IEBAIE1lZGlhU291
cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmFkZFNvdXJjZUJ1
ZmZlcihjb25zdCBDb250CiB7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyBwYXJh
bWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuaXNNZWRpYVNvdXJjZSA9IHRydWU7Ci0gICAgcGFyYW1l
dGVycy50eXBlID0gY29udGVudFR5cGUudHlwZSgpOwotICAgIHBhcmFtZXRlcnMuY29kZWNzID0g
Y29udGVudFR5cGUucGFyYW1ldGVyKEFTQ0lJTGl0ZXJhbCgiY29kZWNzIikpOworICAgIHBhcmFt
ZXRlcnMudHlwZSA9IGNvbnRlbnRUeXBlOwogICAgIGlmIChNb2NrTWVkaWFQbGF5ZXJNZWRpYVNv
dXJjZTo6c3VwcG9ydHNUeXBlKHBhcmFtZXRlcnMpID09IE1lZGlhUGxheWVyOjpJc05vdFN1cHBv
cnRlZCkKICAgICAgICAgcmV0dXJuIE5vdFN1cHBvcnRlZDsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>