<?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>195392</bug_id>
          
          <creation_ts>2019-03-06 17:59:08 -0800</creation_ts>
          <short_desc>Exception is a JSCell, not a JSObject.</short_desc>
          <delta_ts>2019-03-07 02:18:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1513328</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-06 17:59:08 -0800</bug_when>
    <thetext>Hence, it should not insert from JSDestructibleObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513332</commentid>
    <comment_count>1</comment_count>
      <attachid>363828</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-06 18:04:25 -0800</bug_when>
    <thetext>Created attachment 363828
work in progress for EWS testing only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513333</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-06 18:05:23 -0800</bug_when>
    <thetext>(In reply to Mark Lam from comment #0)
&gt; Hence, it should not insert from JSDestructibleObject.

That should have said:
Hence, it should not inherit from JSDestructibleObject.

Thank you auto-correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513408</commentid>
    <comment_count>3</comment_count>
      <attachid>363847</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-06 22:52:11 -0800</bug_when>
    <thetext>Created attachment 363847
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513409</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-06 22:54:55 -0800</bug_when>
    <thetext>Attachment 363847 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513410</commentid>
    <comment_count>5</comment_count>
      <attachid>363848</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-06 22:56:54 -0800</bug_when>
    <thetext>Created attachment 363848
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513425</commentid>
    <comment_count>6</comment_count>
      <attachid>363848</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-06 23:32:19 -0800</bug_when>
    <thetext>Comment on attachment 363848
proposed patch.

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

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +           We&apos;ll leave these as is for now.  To facilitate the conversion from Exception*

I don’t understand why you need anything special here. We already define JSValue(JSCell*)

&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:189
&gt; +inline JSValue::JSValue(Exception* exception)

This isn’t needed

&gt; Source/JavaScriptCore/runtime/JSCast.h:36
&gt; +    if (!(!from || from-&gt;JSCell::inherits(*from-&gt;JSCell::vm(), std::remove_pointer&lt;To&gt;::type::info()))) {

OOPS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513462</commentid>
    <comment_count>7</comment_count>
      <attachid>363848</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-07 02:11:36 -0800</bug_when>
    <thetext>Comment on attachment 363848
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/ChangeLog:31
&gt;&gt; +           We&apos;ll leave these as is for now.  To facilitate the conversion from Exception*
&gt; 
&gt; I don’t understand why you need anything special here. We already define JSValue(JSCell*)

You are right.  We don&apos;t need this.  All we need is to #include &quot;Exception.h&quot; in &quot;Error.h&quot; and &quot;ExceptionHelper.h&quot;.  Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValueInlines.h:189
&gt;&gt; +inline JSValue::JSValue(Exception* exception)
&gt; 
&gt; This isn’t needed

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/JSCast.h:36
&gt;&gt; +    if (!(!from || from-&gt;JSCell::inherits(*from-&gt;JSCell::vm(), std::remove_pointer&lt;To&gt;::type::info()))) {
&gt; 
&gt; OOPS

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513466</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-07 02:17:53 -0800</bug_when>
    <thetext>Landed in r242596: &lt;http://trac.webkit.org/r242596&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513467</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-07 02:18:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/48669863&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363828</attachid>
            <date>2019-03-06 18:04:25 -0800</date>
            <delta_ts>2019-03-06 22:52:11 -0800</delta_ts>
            <desc>work in progress for EWS testing only.</desc>
            <filename>bug-195392.patch</filename>
            <type>text/plain</type>
            <size>52392</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgaW5saW5lIFJlZ2lzdGVyJiBF
eGVjU3RhdGU6OnVuY2hlY2tlZFIoVgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhlY3V0YWJs
ZVR5cGU+Ci1KU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbihW
TSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2spCitFeGNlcHRpb24q
IFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0mIHZtLCBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwg
Q29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQogewogICAgIGlmIChoYXNKSVRDb2RlRm9yKGtp
bmQpKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8RXhlY3V0YWJsZVR5cGUsIEV2YWxFeGVj
dXRhYmxlPjo6dmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENhbWVyb24gWndh
cmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTgwOCw4
ICs4MDgsOCBAQCBmYWlsZWRKU09OUDoKICAgICBQcm9ncmFtQ29kZUJsb2NrKiBjb2RlQmxvY2s7
CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7Ci0gICAgICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248UHJvZ3JhbUV4ZWN1dGFi
bGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwotICAg
ICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnBy
ZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBFeGNlcHRpb24qIGVycm9yID0g
cHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0YWJsZT4odm0sIG51bGxw
dHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElP
Tl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvcik7CiAgICAgICAgIGlmIChV
TkxJS0VMWShlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihlcnJvcik7
CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJsb2NrKj4odGVtcENvZGVC
bG9jayk7CkBAIC04NjYsOCArODY2LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNh
bGwoQ2FsbEZyYQogCiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAgIC8vIENvbXBpbGUgdGhl
IGNhbGxlZToKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGNhbGxEYXRhLmpzLmZ1
bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+
KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2NvcGUsIENvZGVGb3JDYWxsLCBu
ZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0
aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAg
ICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1
dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0
PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2Nr
KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNv
bXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogCkBAIC05MDksOCAr
OTA5LDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNvbnN0cnVjdCgKICAgICBB
U1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKICAgICAvLyBXZSB0
aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVybiBzb21ldGhpbmcgInZh
bGlkIiBidXQgd2UncmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFsaWQgc3RhdGUuCi0gICAg
aWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQotICAgICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2Nv
cGUpKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uaXNDb2xsZWN0b3JCdXN5T25DdXJyZW50VGhyZWFk
KCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSwgdGhyb3dT
Y29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogICAgIGJvb2wgaXNKU0Nv
bnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6OkpTKTsKICAgICBKU1Nj
b3BlKiBzY29wZSA9IG51bGxwdHI7CkBAIC05MjgsMTUgKzkzMCwxNyBAQCBKU09iamVjdCogSW50
ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfQogCiAgICAgVk1FbnRyeVNjb3BlIGVu
dHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVU
b1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKKyAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKKyAgICAgICAgdGhyb3dTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAgLy8gQ29tcGlsZSB0aGUg
Y2FsbGVlOgotICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0gY29uc3RydWN0RGF0YS5q
cy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciksIHNjb3BlLCBDb2RlRm9y
Q29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93
U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxl
RXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBjb25zdHJ1Y3REYXRh
LmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKSwgc2NvcGUsIENvZGVG
b3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhy
b3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IpOwogICAgICAgICBpZiAoVU5MSUtF
TFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oY29t
cGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIEFTU0VS
VCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+bV9zaG91bGRBbHdheXNC
ZUlubGluZWQgPSBmYWxzZTsKQEAgLTk0Niw3ICs5NTAsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0
ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgVk1UcmFwczo6TWFzayBtYXNrKFZNVHJhcHM6Ok5l
ZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVlZFdhdGNoZG9nQ2hlY2spOwogICAgIGlmIChVTkxJ
S0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1hc2spKSkgewogICAgICAgICB2bS5oYW5kbGVUcmFw
cyhjYWxsRnJhbWUsIG1hc2spOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIH0KIAogICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOwpAQCAtOTgxLDggKzk4NSw4IEBAIENhbGxGcmFtZUNsb3N1cmUgSW50ZXJwcmV0
ZXI6OnByZXBhcmVGb3IKIAogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxlZToKICAgICBDb2RlQmxv
Y2sqIG5ld0NvZGVCbG9jazsKLSAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24s
IHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICBFWENFUFRJT05fQVNTRVJU
KHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihl
cnJvcikpOworICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBh
cmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVuY3Rpb24sIHNjb3BlLCBD
b2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2Nv
cGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOwogICAgIGlmIChVTkxJS0VMWShlcnJvcikpCiAgICAg
ICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAgICAgbmV3Q29kZUJsb2NrLT5tX3Nob3Vs
ZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTAzOSw4ICsxMDQzLDggQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIEV2YWxDb2RlQmxvY2sqIGNvZGVC
bG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAg
SlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JFeGVjdXRpb248RXZhbEV4
ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2sp
OwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVp
bnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0
aW9uKiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEV2YWxFeGVjdXRh
YmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAg
ICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVF
cnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAgICAgICAg
ICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sg
PSBqc0Nhc3Q8RXZhbENvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpAQCAtMTE2Myw4ICsxMTY3
LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVByb2dyYQogICAgIE1vZHVs
ZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayog
dGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxs
cHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3Ig
PSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVByb2dyYW1FeGVjdXRhYmxl
Pih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29kZUJsb2NrKTsKKyAgICAg
ICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGNvbXBpbGVFcnJv
cik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikpCiAgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAgICBjb2RlQmxvY2sgPSBq
c0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyNDI1
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQyLDkgKzEwNDIsOSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpCiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxv
Y2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3Qp
OwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVp
bnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOwotICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JF
eGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsICpj
b2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpID09IGVycm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAgICBjb2RlQmxvY2sgPSAq
Y29kZUJsb2NrU2xvdDsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7CkBAIC0xMDk4LDkg
KzEwOTgsOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0RpcmVjdENhCiAKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdCk7
CiAgICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2Nv
cGUsIGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRo
cm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihlcnJvcikpOwotICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgIEV4Y2VwdGlvbiog
ZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25F
eGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7CisgICAgICAg
IEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9u
KCkgPT0gZXJyb3IpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3IpKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xvdHMgPSBjYWxsTGlua0lu
Zm8tPm1heE51bUFyZ3VtZW50cygpOwogICAgICAgICBpZiAoYXJndW1lbnRTdGFja1Nsb3RzIDwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCkBAIC0xMTQ3
LDkgKzExNDcsOSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZpcnR1YWxGb3JXaXRoCiAg
ICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxl
ZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2
bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7Ci0gICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWludGVycHJldF9jYXN0PEV4
Y2VwdGlvbio+KGVycm9yKSk7Ci0gICAgICAgIGlmIChlcnJvcikgeworICAgICAgICBFeGNlcHRp
b24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0
aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90
KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVy
cm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewogICAgICAgICAgICAgcmV0dXJu
IGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJU3R1Yih0aHJvd0V4Y2Vw
dGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29kZTxKU0VudHJ5UHRyVGFn
PigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1MjcsNyArMTUyNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4
ZWMKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAKICAgICAgICAgQ29kZUJsb2NrKiogY29kZUJsb2Nr
U2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwotICAgICAgICBKU09iamVj
dCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rp
b25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNvZGVCbG9ja1Nsb3QpOwor
ICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsICpj
b2RlQmxvY2tTbG90KTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2Vw
dGlvbigpID09IGVycm9yKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkKICAgICAgICAg
ICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgZXJyb3IpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJldmlzaW9uIDI0MjU2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVjdERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgt
MjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQxLDggKzQxLDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0
YXRlKiBleGVjLCBKU1YKIAogICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKICAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCBjb25zdHJ1
Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNj
b3BlLCBlcnJvck1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShjb25zdHJ1Y3RUeXBlID09IENv
bnN0cnVjdFR5cGU6Ok5vbmUpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3Bl
LCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdChleGVjLCBjb25zdHJ1Y3Rvck9iamVj
dCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29uc3RydWN0b3JPYmplY3Qp
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAJKHJldmlz
aW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5
LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAz
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0yNjAs
MzIgKzI2MCwzMiBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxGcmFtZSogY2FsbEZyCiAg
ICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogdGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJl
Q2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNj
b3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitFeGNlcHRpb24qIHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBU
aHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKQogewogICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmluZygiY2FsbGluZyAiLCBj
b25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0b3Igd2l0aG91dCBuZXcgaXMgaW52YWxpZCIpKTsK
IH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29w
ZSYgc2NvcGUpCitFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKIHsKICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZyhlcnJvck1lc3NhZ2UpKTsKIH0KIAotSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewog
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIG1lc3NhZ2UpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIlN5bnRheCBlcnJv
ciJfcykpOwogfQogCi1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCitFeGNlcHRpb24qIHRo
cm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTc2LDEzICs3NiwxMyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKEV4ZWNTdGF0ZSosIEpT
T2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29udmVuaWVuY2Ugd3JhcHBl
cnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRlZmF1bHQgbWVzc2FnZS4K
LUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxs
ZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBjaGFy
KiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93VHlw
ZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFs
IGVycm9yTWVzc2FnZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dUeXBlRXJy
b3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
LUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSos
IFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVy
cm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
Ci1pbmxpbmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3RhdGUqIHN0YXRlLCBUaHJv
d1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93
RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihzdGF0ZSwgZXJyb3JNZXNz
YWdlKSk7IH0KK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dDb25zdHJ1Y3RvckNh
bm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwg
Y29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlv
biogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BS
SVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwg
QVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93U3ludGF4RXJy
b3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9u
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CitpbmxpbmUgRXhjZXB0aW9uKiB0aHJvd1JhbmdlRXJyb3IoRXhlY1N0
YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
c3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93
RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25z
dCBDbGFzc0luZm8qLCBQcm9wZXJ0eU5hbWUpOwogCiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywg
d3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gRXhj
ZXB0aW9uOjpzX2luZm8gPSB7ICJFeGNlcHRpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV4Y2VwdGlvbikgfTsKK2NvbnN0IENsYXNzSW5m
byBFeGNlcHRpb246OnNfaW5mbyA9IHsgIkV4Y2VwdGlvbiIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhjZXB0aW9uKSB9OwogCiBFeGNlcHRpb24qIEV4
Y2VwdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB0aHJvd25WYWx1ZSwgU3RhY2tDYXB0dXJl
QWN0aW9uIGFjdGlvbikKIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBFeGNlcHRpb246OmRlc3Ry
b3koSlNDZWxsKiBjZWxsKQogCiBTdHJ1Y3R1cmUqIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
CiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKIHZvaWQgRXhj
ZXB0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uaAkocmV2aXNp
b24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMSwxMCArMzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAg
ICAgCi1jbGFzcyBFeGNlcHRpb24gZmluYWwgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3Qg
eworY2xhc3MgRXhjZXB0aW9uIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHVzaW5nIEJhc2UgPSBKU0Nl
bGw7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgZW51bSBTdGFja0NhcHR1cmVBY3Rpb24g
ewogICAgICAgICBDYXB0dXJlU3RhY2ssCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gMjQyNTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMjQsMTkgKzMyNCwxOSBAQCBKU09iamVjdCogY3JlYXRlVERaRXJyb3Io
RXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJD
YW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9CiAKLUpTT2JqZWN0KiB0
aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkK
K0V4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dT
Y29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3RhY2tP
dmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCitFeGNlcHRp
b24qIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBFcnJvckhhbmRsaW5nU2Nv
cGUgZXJyb3JTY29wZSh2bSk7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3Bl
LCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCi1KU09iamVjdCogdGhyb3dU
ZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCitFeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4ZWN1dGlvbkV4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkocmV2aXNp
b24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDkgQEAgSlNPYmplY3QqIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBKU1N0cmluZyogZXJyb3JE
ZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwogCi1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0YWNrT3ZlcmZsb3dFcnJv
cihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJik7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUm
KTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4
ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24oRXhl
Y1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJv
ciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjksOCArNjksMTAgQEAgSlNPYmplY3QqIGNvbnN0
cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgaWYgKCFnbG9iYWxP
YmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVj
LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVjdC0+ZXZhbERpc2FibGVk
RXJyb3JNZXNzYWdlKCkpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbE9iamVjdC0+ZXZhbEVu
YWJsZWQoKSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZUV2
YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9yTWVzc2FnZSgpKSk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKGV4ZWMsIGds
b2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VPcmlnaW4sIHNvdXJjZVVSTCwg
cG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5ld1RhcmdldCkpOwogfQog
CkBAIC0xNDUsOSArMTQ3LDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5n
RXZhbEUKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNl
T3JpZ2luLCBVUkwoeyB9LCBzb3VyY2VVUkwpLCBwb3NpdGlvbik7CiAgICAgSlNPYmplY3QqIGV4
Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IEZ1
bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCAqZXhlYywgc291
cmNlLCBleGNlcHRpb24sIG92ZXJyaWRlTGluZU51bWJlciwgZnVuY3Rpb25Db25zdHJ1Y3RvclBh
cmFtZXRlcnNFbmRQb3NpdGlvbik7Ci0gICAgaWYgKCFmdW5jdGlvbikgeworICAgIGlmIChVTkxJ
S0VMWSghZnVuY3Rpb24pKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlvbik7CisgICAgICAgIHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5j
cHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2YW53YWdvbmVyLmZhbWls
eSkKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCw4ICsyMDEsMTAgQEAgSlNP
YmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogCiAgICAgLy8gMTMuNC40IElu
dGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAoKQogICAgIC8vIGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFscnVsZXMucHJvdG90eXBl
LnJlc29sdmVkb3B0aW9ucwotICAgIGlmICghbV9pbml0aWFsaXplZFBsdXJhbFJ1bGVzKQotICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxl
cy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFu
IG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICBpZiAoVU5MSUtF
TFkoIW1faW5pdGlhbGl6ZWRQbHVyYWxSdWxlcykpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JmV4ZWMsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25z
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBs
dXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgSlNP
YmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmZXhlYyk7CiAgICAgb3B0aW9u
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0
cmluZygmZXhlYywgbV9sb2NhbGUpKTsKQEAgLTIxNyw4ICsyMjAsMTAgQEAgSlNPYmplY3QqIElu
dGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogI2lmIEhBVkUoSUNVX1BMVVJBTFJVTEVTX0tF
WVdPUkRTKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLmpzQ2FsbGVl
KCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogY2F0ZWdvcmllcyA9IEpTQXJyYXk6
OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwotICAgIGlmICghY2F0
ZWdvcmllcykKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcigmZXhlYywgc2Nv
cGUpOworICAgIGlmIChVTkxJS0VMWSghY2F0ZWdvcmllcykpIHsKKyAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8ga2V5
d29yZHMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBVRW51bWVyYXRpb25EZWxldGVy
Pih1cGxydWxlc19nZXRLZXl3b3JkcyhtX3BsdXJhbFJ1bGVzLmdldCgpLCAmc3RhdHVzKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCShyZXZpc2lv
biAyNDI1NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEFzc2VtYmx5SGVscGVyczsKIGNsYXNzIEpTQmlnSW50OworY2xhc3MgRXhjZXB0aW9uOwogY2xh
c3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNWYWx1ZVNvdXJjZTsKQEAgLTE4
Myw2ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNlVGFnKTsKICAgICBKU1Zh
bHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2VsbCogcHRyKTsKKyAgICBK
U1ZhbHVlKEV4Y2VwdGlvbiogcHRyKTsKIAogICAgIC8vIE51bWJlcnMKICAgICBKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlVGFnLCBkb3VibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyNDI1NjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCkBAIC0xODUsNiArMTg2LDExIEBAIGlubGluZSBKU1ZhbHVlIEpTVmFsdWU6
OmRlY29kZShFbmNvZGVkSlMKICAgICByZXR1cm4gdjsKIH0KIAoraW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoRXhjZXB0aW9uKiBleGNlcHRpb24pCisgICAgOiBKU1ZhbHVlKHN0YXRpY19jYXN0PEpT
Q2VsbCo+KGV4Y2VwdGlvbikpCit7Cit9CisKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUoKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDYXN0LmgJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywxMiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KIGlubGluZSBUbyBqc0Nhc3QoRnJvbSogZnJvbSkK
IHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0NlbGwsIHR5cGVuYW1lIHN0
ZDo6cmVtb3ZlX3BvaW50ZXI8VG8+Ojp0eXBlPjo6dmFsdWUgJiYgc3RkOjppc19iYXNlX29mPEpT
Q2VsbCwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGcm9tPjo6dHlwZT46OnZhbHVlLCAi
SlMgY2FzdGluZyBleHBlY3RzIHRoYXQgdGhlIHR5cGVzIHlvdSBhcmUgY2FzdGluZyB0by9mcm9t
IGFyZSBzdWJjbGFzc2VzIG9mIEpTQ2VsbCIpOworICAgIGlmICghKCFmcm9tIHx8IGZyb20tPkpT
Q2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6dm0oKSwgc3RkOjpyZW1vdmVfcG9pbnRlcjxU
bz46OnR5cGU6OmluZm8oKSkpKSB7CisgICAgICAgIGRhdGFMb2dMbigiICAgZnJvbSAiLCBSYXdQ
b2ludGVyKGZyb20pKTsKKyAgICAgICAgaWYgKGZyb20pCisgICAgICAgICAgICBkYXRhTG9nTG4o
IiAgIGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6dm0oKSwgc3RkOjpyZW1v
dmVfcG9pbnRlcjxUbz46OnR5cGU6OmluZm8oKSkgIiwgZnJvbS0+SlNDZWxsOjppbmhlcml0cygq
ZnJvbS0+SlNDZWxsOjp2bSgpLCBzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlwZTo6aW5mbygp
KSk7CisKKyAgICB9CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWZyb20g
fHwgZnJvbS0+SlNDZWxsOjppbmhlcml0cygqZnJvbS0+SlNDZWxsOjp2bSgpLCBzdGQ6OnJlbW92
ZV9wb2ludGVyPFRvPjo6dHlwZTo6aW5mbygpKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRv
Pihmcm9tKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rv
cklubGluZXMuaAkocmV2aXNpb24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEyOCw4ICsxMjgsMTAgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcgogICAgICAgICBpZiAobGVuZ3RoT3B0KQogICAgICAgICAgICAgbGVuZ3Ro
ID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKChi
dWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgJSBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhlYywgc2NvcGUsICJBcnJh
eUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2Yg
dGhlIGVsZW1lbnQgc2l6ZSJfcyk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoKGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxlbWVudFNpemUpKSB7CisgICAg
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVu
Z3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50
IHNpemUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAv
IFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAgICAgICAgIH0KIApAQCAtMTM3LDggKzEzOSwxMCBA
QCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFyCiAgICAgfQogICAgIEFT
U0VSVCghb2Zmc2V0ICYmICFsZW5ndGhPcHQpOwogICAgIAotICAgIGlmIChWaWV3Q2xhc3M6OlR5
cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUgZmly
c3QgYXJndW1lbnQuIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoVmlld0NsYXNzOjpUeXBlZEFycmF5
U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQu
Il9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIAogICAgIC8vIEZvciBl
dmVyeXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0aW9uIHdpdGggYW55IG9m
OgogICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEgY29weSBvZiB0aGUgb2Yg
dGhhdCBhcnJheS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkocmV2aXNpb24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBDb3B5cmln
aHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU4LDcgQEAgaW5saW5lIEpTQ2VsbCogZ2V0SlNGdW5jdGlv
bihKU1ZhbHVlIHZhbAogICAgIHJldHVybiAwOwogfQogCitjbGFzcyBFeGNlcHRpb247CiBjbGFz
cyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwogY2xhc3MgSlNGdW5jdGlv
bjsKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgVGhyb3dTY29wZTsKIHN0cnVjdCBIYXNoVGFibGU7
CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0
aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29uc3QgU3RyaW5nJik7CitK
U19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRo
cm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKIGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25z
dCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5RGVmaW5lRXJyb3I7CiBl
eHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFsIFJlYWRvbmx5UHJvcGVy
dHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyNDI1
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc3OCw4ICs3NzgsMTAgQEAgSlNPYmplY3QqIG9iamVjdENv
bnN0cnVjdG9yU2VhbChFeGVjU3RhdAogCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW50ZWdyaXR5
TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZXhlYywgdm0sIG9iamVjdCk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYgKFVOTElLRUxZKCFzdWNj
ZXNzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5hYmxl
IHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zKTsKKyAgICBpZiAoVU5MSUtF
TFkoIXN1Y2Nlc3MpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCAiVW5h
YmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KQEAgLTgwOSw4ICs4
MTEsMTAgQEAgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdAogCiAgICAg
Ym9vbCBzdWNjZXNzID0gc2V0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4o
ZXhlYywgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhl
Yywgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LmZyZWV6ZSJf
cyk7CisgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBzY29wZSwgIlVuYWJsZSB0byBwcmV2ZW50IGV4dGVuc2lvbiBpbiBPYmplY3QuZnJl
ZXplIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIHJldHVybiBvYmpl
Y3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVj
dXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9ncmFtRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTEyMSw3ICsxMjEsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVH
CiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7CiAgICAg
ICAgICAgICAvLyBUaGUgRVM2IHNwZWMgc2F5cyB0aGF0IFJlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0
eSBjYW4ndCBiZSBzaGFkb3dlZC4KICAgICAgICAgICAgIEdsb2JhbFByb3BlcnR5TG9va1VwU3Rh
dHVzIHN0YXR1cyA9IGhhc1Jlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0eShleGVjLCBnbG9iYWxPYmpl
Y3QsIGVudHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAgICAgIHN3aXRjaCAoc3Rh
dHVzKSB7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9va1VwU3RhdHVzOjpOb25D
b25maWd1cmFibGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFyaWFibGUgdGhhdCBzaGFk
b3dzIGEgZ2xvYmFsIHByb3BlcnR5OiAnIiwgU3RyaW5nKGVudHJ5LmtleS5nZXQoKSksICInIikp
OwpAQCAtMTM4LDcgKzEzOCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlh
bGl6ZUcKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGds
b2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZXhlYywgZW50cnkua2V5LmdldCgp
KTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdGhyb3dTY29w
ZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAmJiAhdm0uZ2xvYmFsQ29u
c3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RNb2RlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgImNvbnN0IiBkdXBsaWNhdGUgZGVjbGFy
YXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KQEAgLTE1NSw3ICsxNTUsNyBAQCBKU09iamVjdCog
UHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIGlmICghZ2xvYmFsTGV4aWNh
bEVudmlyb25tZW50LT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiB2YXJpYWJsZURlY2xhcmF0aW9ucykgewogICAgICAgICAgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5KGV4ZWMsIGVudHJ5Lmtl
eS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIGlmIChoYXNQcm9w
ZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
IG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFyaWFibGU6ICciLCBTdHJpbmco
ZW50cnkua2V5LmdldCgpKSwgIiciKSk7CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25z
dHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKQEAgLTIxMCw4ICsyMTAsMTAgQEAgc3RhdGljIEpTT2JqZWN0KiByZWdFeHBD
cmVhdGUoRXhlY1N0YXRlKgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZ0V4cCog
cmVnRXhwID0gUmVnRXhwOjpjcmVhdGUodm0sIHBhdHRlcm4sIGZsYWdzKTsKLSAgICBpZiAoIXJl
Z0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIHJlZ0V4cC0+ZXJyb3JUb1Rocm93KGV4ZWMpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXJlZ0V4
cC0+aXNWYWxpZCgpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgcmVn
RXhwLT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0cnVjdHVyZShleGVjLCBn
bG9iYWxPYmplY3QsIG5ld1RhcmdldCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CkBAIC0yNTAsOCArMjUyLDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RSZWdFeHAo
RXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
ICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCByZWdFeHAtPnBhdHRlcm4oKSwgZmxhZ3Mp
OwogCi0gICAgICAgICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3co
ZXhlYykpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZWdFeHAtPmlzVmFsaWQoKSkpIHsK
KyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgcmVnRXhwLT5lcnJv
clRvVGhyb3coZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlZ0V4cE9iamVjdDo6Y3JlYXRl
KHZtLCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMjQyNTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBTY3JpcHRFeGVjdXRhYmxlOjpoYXND
bGVhcmFibGVDb2RlKAogfQogCiBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVC
bG9ja0ZvcigKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTRnVuY3Rpb24qIGZ1
bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRpb24pCisgICAgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2Nv
cGUsIEV4Y2VwdGlvbiomIGV4Y2VwdGlvbikKIHsKICAgICBWTSogdm0gPSBzY29wZS0+dm0oKTsK
ICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKCp2bSk7CkBAIC00MDIs
MTggKzQwMiwxOCBAQCBzdGF0aWMgdm9pZCBzZXR1cEpJVChWTSYgdm0sIENvZGVCbG9jayogCiAj
ZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRp
b25JbXBsKAorRXhjZXB0aW9uKiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVwYXJlRm9yRXhlY3V0aW9u
SW1wbCgKICAgICBWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxvY2sp
CiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
RGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAgaWYgKHZtLmdldEFuZENs
ZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgeworICAgIGlmIChVTkxJS0VMWSh2bS5nZXRBbmRD
bGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkpKSB7CiAgICAgICAgIGF1dG8mIHN0YXRlID0gKnNj
b3BlLT5nbG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7CiAgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVycm9yKCZzdGF0ZSwgIkZvcmNl
ZCBGYWlsdXJlIl9zKSk7CiAgICAgfQogCi0gICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gbmV3Q29kZUJsb2NrRm9yKGtpbmQsIGZ1bmN0aW9uLCBzY29wZSwgZXhjZXB0
aW9uKTsKICAgICByZXN1bHRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAgICAgRVhDRVBUSU9OX0FT
U0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gIWNvZGVCbG9jayk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVj
dXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgaW5zdGFsbENvZGUoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBpbnN0YWxsQ29kZShWTSYs
IENvZGVCbG9jayosIENvZGVUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICBDb2Rl
QmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1bmN0aW9u
KiwgSlNTY29wZSosIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKKyAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSos
IEV4Y2VwdGlvbiomKTsKICAgICBDb2RlQmxvY2sqIG5ld1JlcGxhY2VtZW50Q29kZUJsb2NrRm9y
KENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgdm9pZCBjbGVhckNvZGUoSXNvQ2VsbFNl
dCYpOwpAQCAtMTIwLDExICsxMjAsMTEgQEAgcHVibGljOgogICAgIC8vIHRvIHBvaW50IHRvIGl0
LiBUaGlzIGZvcmNlcyBjYWxsZXJzIHRvIGhhdmUgYSBDb2RlQmxvY2sqIGluIGEgcmVnaXN0ZXIg
b3Igb24gdGhlIHN0YWNrIHRoYXQgd2lsbCBiZSBtYXJrZWQKICAgICAvLyBieSBjb25zZXJ2YXRp
dmUgR0MgaWYgYSBHQyBoYXBwZW5zIGFmdGVyIHdlIGNyZWF0ZSB0aGUgQ29kZUJsb2NrLgogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBFeGVjdXRhYmxlVHlwZT4KLSAgICBKU09iamVjdCogcHJlcGFy
ZUZvckV4ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsKKyAgICBFeGNlcHRpb24qIHBy
ZXBhcmVGb3JFeGVjdXRpb24oVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jayk7CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIEpTT2JqZWN0KiBwcmVwYXJlRm9y
RXhlY3V0aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCwgQ29kZUJsb2NrKiYpOworICAgIEV4Y2VwdGlvbiogcHJlcGFyZUZvckV4ZWN1dGlv
bkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IENvZGVCbG9jayomKTsKIAogICAgIGJvb2wgaGFzQ2xlYXJhYmxlQ29kZShWTSYpIGNvbnN0Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmNwcAko
cmV2aXNpb24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dT
Y29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCwxNSArNzAsMTUgQEAgVGhyb3dTY29wZTo6
flRocm93U2NvcGUoKQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9CiAKLXZvaWQgVGhyb3dT
Y29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlv
bikKK0V4Y2VwdGlvbiogVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
LCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsKICAgICBpZiAobV92bS5leGNlcHRpb24oKSAmJiBt
X3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlvbikKICAgICAgICAgbV92bS52ZXJpZnlFeGNlcHRp
b25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBtX2xvY2F0aW9uKTsKICAg
ICAKLSAgICBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJu
IG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0KIAotSlNWYWx1ZSBUaHJv
d1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCitF
eGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBlcnJvcikKIHsKICAgICBpZiAoIWVycm9yLmlzQ2VsbCgpIHx8ICFqc0R5bmFtaWNDYXN0
PEV4Y2VwdGlvbio+KG1fdm0sIGVycm9yLmFzQ2VsbCgpKSkKICAgICAgICAgbV92bS52ZXJpZnlF
eGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBtX2xvY2F0aW9u
KTsKQEAgLTg2LDExICs4Niw5IEBAIEpTVmFsdWUgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24o
RXhlY1MKICAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CiB9CiAK
LUpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmopCitFeGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikKIHsKLSAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8RXhj
ZXB0aW9uKj4obV92bSwgb2JqKSkKLSAgICAgICAgbV92bS52ZXJpZnlFeGNlcHRpb25DaGVja05l
ZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBtX2xvY2F0aW9uKTsKLSAgICAKKyAgICBt
X3ZtLnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKG1fcmVjdXJzaW9uRGVwdGgs
IG1fbG9jYXRpb24pOwogICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIG9iaik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Njb3BlLmgJ
KHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rocm93
U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6CiAgICAgVGhy
b3dTY29wZShjb25zdCBUaHJvd1Njb3BlJikgPSBkZWxldGU7CiAgICAgVGhyb3dTY29wZShUaHJv
d1Njb3BlJiYpID0gZGVmYXVsdDsKIAotICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgdGhyb3dF
eGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhy
b3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
RXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOwogCiAgICAg
dm9pZCByZWxlYXNlKCkgeyBtX2lzUmVsZWFzZWQgPSB0cnVlOyB9CiAKQEAgLTc3LDkgKzc3LDkg
QEAgcHVibGljOgogICAgIFRocm93U2NvcGUoY29uc3QgVGhyb3dTY29wZSYpID0gZGVsZXRlOwog
ICAgIFRocm93U2NvcGUoVGhyb3dTY29wZSYmKSA9IGRlZmF1bHQ7CiAKLSAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2Vw
dGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7IH0KLSAgICBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIHZhbHVlKTsgfQotICAg
IEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOyB9
CisgICAgQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsgfQorICAgIEFMV0FZU19JTkxJTkUgRXhjZXB0aW9uKiB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIHsgcmV0dXJuIG1fdm0udGhy
b3dFeGNlcHRpb24oZXhlYywgdmFsdWUpOyB9CisgICAgQUxXQVlTX0lOTElORSBFeGNlcHRpb24q
IHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikgeyByZXR1cm4g
bV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmVsZWFzZSgpIHsgfQogfTsKQEAgLTg5LDE3ICs4OSwxNyBAQCBwdWJsaWM6CiAKICNlbmRp
ZiAvLyBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikKIAotQUxXQVlTX0lOTElO
RSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKQorQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIHRocm93RXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhj
ZXB0aW9uKQogewotICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Cisg
ICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKLUFM
V0FZU19JTkxJTkUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93
U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUsIEpTVmFsdWUg
dmFsdWUpCiB7CiAgICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIHZhbHVlKTsK
IH0KIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBl
eGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNPYmplY3QqIG9iaikKK0FMV0FZU19JTkxJTkUgRXhj
ZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3Bl
LCBKU09iamVjdCogb2JqKQogewogICAgIHJldHVybiBzY29wZS50aHJvd0V4Y2VwdGlvbihleGVj
LCBvYmopOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNp
b24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODExLDcgKzgxMSw3IEBAIHZvaWQgVk06OmNsZWFyU291cmNlUHJvdmlk
ZXJDYWNoZXMoKQogICAgIHNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAuY2xlYXIoKTsKIH0KIAotdm9p
ZCBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlv
bikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0
aW9uKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGV4ZWMgPT0gdG9wQ2FsbEZyYW1lIHx8IGV4
ZWMtPmlzR2xvYmFsRXhlYygpIHx8IGV4ZWMgPT0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5jYWxsRnJhbWVBdERlYnVnZ2VyRW50cnkoKSk7CiAgICAgQ2FsbEZyYW1lKiB0aHJvd09yaWdp
bkZyYW1lID0gZXhlYy0+aXNHbG9iYWxFeGVjKCkgPyBleGVjIDogdG9wSlNDYWxsRnJhbWUoKTsK
QEAgLTgzMCwyMiArODMwLDIyIEBAIHZvaWQgVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywKICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdyA9IFN0YWNrVHJhY2U6OmNh
cHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRpb25TdGFja1RyYWNlTGlt
aXQoKSk7CiAgICAgbV90aHJvd2luZ1RocmVhZCA9ICZUaHJlYWQ6OmN1cnJlbnQoKTsKICNlbmRp
ZgorICAgIHJldHVybiBleGNlcHRpb247CiB9CiAKLUpTVmFsdWUgVk06OnRocm93RXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJvd25WYWx1ZSkKK0V4Y2VwdGlvbiogVk06OnRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJvd25WYWx1ZSkKIHsKICAg
ICBWTSYgdm0gPSAqdGhpczsKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8RXhjZXB0aW9uKj4odm0sIHRocm93blZhbHVlKTsKICAgICBpZiAoIWV4Y2VwdGlvbikKICAg
ICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uOjpjcmVhdGUoKnRoaXMsIHRocm93blZhbHVlKTsK
IAotICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIEpTVmFs
dWUoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9u
KTsKIH0KIAotSlNPYmplY3QqIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBlcnJvcikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIGVycm9yKQogewotICAgIHJldHVybiBhc09iamVjdCh0aHJvd0V4Y2Vw
dGlvbihleGVjLCBKU1ZhbHVlKGVycm9yKSkpOworICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBKU1ZhbHVlKGVycm9yKSk7CiB9CiAKIHZvaWQgVk06OnNldFN0YWNrUG9pbnRlckF0Vk1F
bnRyeSh2b2lkKiBzcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNp
b24gMjQyNTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQ2LDkgKzk0Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NhZmVUb1Jl
Y3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUoQ19MT09QKQogCi0gICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBFeGNlcHRp
b24qKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSosIEpTVmFsdWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0V4
Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1Zh
bHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICNpZiBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklG
SUNBVElPTikKICAgICB2b2lkIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKHVu
c2lnbmVkIGRlcHRoLCBFeGNlcHRpb25FdmVudExvY2F0aW9uJik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
Miw3ICsyOTIsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAg
ICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKK0V4
Y2VwdGlvbiogUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
ZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNz
IG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAKICAgICBJbnN0YW5jZSogZ2V0SW50ZXJuYWxJbnN0YW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBKU09iamVjdCogdGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworICAgIHN0YXRp
YyBFeGNlcHRpb24qIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDI0MjU2NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNyArNzQsNyBA
QCBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4ZWNTdGF0CiBKU1ZhbHVlIGNvbnZl
cnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQqIGJ1ZmZlciwgT2JqY1ZhbHVlVHlw
ZSwgUm9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9yVHlwZShjb25z
dCBjaGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dT
Y29wZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKK0V4Y2VwdGlvbiAqdGhyb3dFcnJvcihFeGVjU3Rh
dGUqLCBUaHJvd1Njb3BlJiwgTlNTdHJpbmcgKm1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBC
aW5kaW5ncwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAyNDI1NjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMywx
MSArMzEzLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAg
ICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0
YXRlICpleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgTlNTdHJpbmcgKm1lc3NhZ2UpCitFeGNlcHRp
b24gKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgTlNTdHJp
bmcgKm1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0ICplcnJv
ciA9IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMsIFN0
cmluZyhtZXNzYWdlKSkpOwotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2Up
KSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL0pTTlBPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuY3BwCShyZXZpc2lvbiAyNDI1NjQpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTUyMyw3ICs1MjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU05QT2Jq
ZWN0OjptZXRob2RHZXR0ZXIoCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU05QTWV0aG9k
OjpjcmVhdGUoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHByb3BlcnR5TmFtZS5wdWJs
aWNOYW1lKCksIG5wSWRlbnRpZmllcikpOwogfQogCi1KU09iamVjdCogSlNOUE9iamVjdDo6dGhy
b3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkK
K0pTQzo6RXhjZXB0aW9uKiBKU05QT2JqZWN0Ojp0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihFeGVj
U3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIlRyeWluZyB0byBh
Y2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uIikpOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaAkocmV2aXNpb24gMjQyNTY0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTA0LDcgKzEwNCw3
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBwcm9wZXJ0eUdl
dHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlO
YW1lKTsKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBtZXRob2RHZXR0ZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpUaHJvd1Njb3BlJik7CisgICAgc3RhdGljIEpTQzo6RXhjZXB0aW9uKiB0aHJv
d0ludmFsaWRBY2Nlc3NFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6VGhyb3dTY29wZSYpOwog
CiAgICAgTlBSdW50aW1lT2JqZWN0TWFwKiBtX29iamVjdE1hcDsKICAgICBOUE9iamVjdCogbV9u
cE9iamVjdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363847</attachid>
            <date>2019-03-06 22:52:11 -0800</date>
            <delta_ts>2019-03-06 22:56:54 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195392.patch</filename>
            <type>text/plain</type>
            <size>58282</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBA
CisyMDE5LTAzLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
eGNlcHRpb24gaXMgYSBKU0NlbGwsIG5vdCBhIEpTT2JqZWN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjZXB0aW9uIGlzIGEgVk0gaW1wbGVtZW50
YXRpb24gY29uc3RydWN0IHRvIGNhcnJ5IGEgc3RhY2sgdHJhY2UgZm9yIHRoZSBwb2ludAorICAg
ICAgICB3aGVyZSBpdCBpcyB0aHJvd24gZnJvbS4gIEFzIGEgcmVtaW5kZXIsIGFuIEV4Y2VwdGlv
biBpcyBuZWVkZWQgYmVjYXVzZToKKyAgICAgICAgMS4gSlMgY29kZSBjYW4gdGhyb3cgcHJpbWl0
aXZlcyBhcyB3ZWxsIHRoYXQgYXJlIG5vbi1jZWxscy4KKyAgICAgICAgMi4gRXJyb3Igb2JqZWN0
cyBjYXB0dXJlIHRoZSBzdGFjayB0cmFjZSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhleSBhcmUgY29u
c3RydWN0ZWQsCisgICAgICAgICAgIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgdGhl
IHBvaW50IHdoZXJlIHRoZXkgYXJlIHRocm93biAoaWYgdGhleSBhcmUKKyAgICAgICAgICAgdGhy
b3duKS4KKworICAgICAgICBIZW5jZSwgRXhjZXB0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZSB0
byBKUyBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3QgYmUgYQorICAgICAgICBKU09iamVj
dC4gIEhlbmNlLCBpdCBzaG91bGQgbm90IGluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVj
dC4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGZvbGxvd2luZzoKKworICAgICAg
ICAxLiBFeGNlcHRpb24gbm93IGluaGVyaXRzIGRpcmVjdGx5IGZyb20gSlNDZWxsIGluc3RlYWQu
CisKKyAgICAgICAgMi4gUGxhY2VzIHdoZXJlIHdlIHJldHVybiBhbiBFeGNlcHRpb24gbWFzcXVl
cmFkaW5nIGFzIGEgSlNPYmplY3QqIGFyZSBub3cKKyAgICAgICAgICAgdXBkYXRlZCB0byByZXR1
cm4gYSBudWxscHRyIHdoZW4gd2UgZW5jb3VudGVyIGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAz
LiBXZSBzdGlsbCByZXR1cm4gRXhjZXB0aW9uKiBhcyBKU1ZhbHVlIG9yIEVuY29kZWRKU1ZhbHVl
IHdoZW4gd2UgZW5jb3VudGVyIGFuCisgICAgICAgICAgIGV4Y2VwdGlvbiBpbiBmdW5jdGlvbnMg
dGhhdCByZXR1cm4gSlNWYWx1ZSBvciBFbmNvZGVkSlNWYWx1ZS4gIFRoaXMgaXMgYmVjYXVzZQor
ICAgICAgICAgICB0aGUgbnVtYmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIHBhdHRl
cm4gaXMgdG9vIG51bWVyb3VzOgorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93PFNvbWUg
RXJyb3I+KC4uLikKKworICAgICAgICAgICBXZSdsbCBsZWF2ZSB0aGVzZSBhcyBpcyBmb3Igbm93
LiAgVG8gZmFjaWxpdGF0ZSB0aGUgY29udmVyc2lvbiBmcm9tIEV4Y2VwdGlvbioKKyAgICAgICAg
ICAgdG8gSlNWYWx1ZSwgd2UndmUgYWRkZWQgYSBKU1ZhbHVlKEV4Y2VwdGlvbiopIGNvbnN0cnVj
dG9yLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQ
cm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxl
UHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6
CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6dGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcik6CisgICAgICAg
IChKU0M6OnRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6
CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlNDOjp0aHJvd1JhbmdlRXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6RXhj
ZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
dGhyb3dPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dTdGFja092ZXJmbG93
RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU0Nh
c3QuaDoKKyAgICAgICAgKEpTQzo6anNDYXN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JGcmVlemUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2Jh
bFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdF
eHApOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICog
cnVudGltZS9UaHJvd1Njb3BlLmg6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OnRocm93RXhj
ZXB0aW9uKToKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAxOS0wMy0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiB0cnktZmluYWxseSBjb21w
bGV0aW9uIHZhbHVlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgaW5s
aW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnVuY2hlY2tlZFIoVgogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRXhlY3V0YWJsZVR5cGU+Ci1KU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFy
ZUZvckV4ZWN1dGlvbihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29w
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxv
Y2spCitFeGNlcHRpb24qIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0m
IHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQogewogICAgIGlmICho
YXNKSVRDb2RlRm9yKGtpbmQpKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8RXhlY3V0YWJs
ZVR5cGUsIEV2YWxFeGVjdXRhYmxlPjo6dmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI0MjU5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTgwOCw4ICs4MDgsOCBAQCBmYWlsZWRKU09OUDoKICAgICBQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7
Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248
UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBD
b2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBFeGNl
cHRpb24qIGVycm9yID0gcHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0
YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Cisg
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvcik7
CiAgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybihlcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJs
b2NrKj4odGVtcENvZGVCbG9jayk7CkBAIC04NjYsOCArODY2LDggQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogCiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAg
IC8vIENvbXBpbGUgdGhlIGNhbGxlZToKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9
IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2NvcGUs
IENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21w
aWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5q
cy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2Fs
bCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBp
bGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3Ip
OwogCkBAIC05MDksOCArOTA5LDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNv
bnN0cnVjdCgKICAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKICAgICAvLyBXZSB0aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVy
biBzb21ldGhpbmcgInZhbGlkIiBidXQgd2UncmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFs
aWQgc3RhdGUuCi0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQot
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUsIHRocm93U2NvcGUpKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAog
ICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6
OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CkBAIC05MjgsMTUgKzkzMCwxNyBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfQogCiAgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElL
RUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgotICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0g
Y29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248
RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rvciks
IHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3Ig
PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9y
KSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTk0Niw3ICs5NTAsNyBAQCBKU09i
amVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgVk1UcmFwczo6TWFzayBt
YXNrKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVlZFdhdGNoZG9nQ2hlY2sp
OwogICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1hc2spKSkgewogICAgICAg
ICB2bS5oYW5kbGVUcmFwcyhjYWxsRnJhbWUsIG1hc2spOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIH0KIAogICAgIFByb3Rv
Q2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwpAQCAtOTgxLDggKzk4NSw4IEBAIENhbGxGcmFtZUNs
b3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxl
ZToKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jazsKLSAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxl
Pih2bSwgZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2Fz
dDxFeGNlcHRpb24qPihlcnJvcikpOworICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVu
Y3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICBFWENFUFRJT05f
QVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOwogICAgIGlmIChVTkxJS0VM
WShlcnJvcikpCiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAgICAgbmV3Q29k
ZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTAzOSw4ICsxMDQz
LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIEV2YWxD
b2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVC
bG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JF
eGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGws
IHRlbXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsK
KyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJv
cikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAg
ICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpA
QCAtMTE2Myw4ICsxMTY3LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVBy
b2dyYQogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwot
ICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9u
KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29k
ZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
ID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAg
ICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxv
Y2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQyLDkgKzEwNDIsOSBAQCBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIH0KIAogICAgICAgICBDb2Rl
QmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7
Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwg
KmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOwotICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVy
cm9yKSkKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAg
ICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJp
dHk7CkBAIC0xMDk4LDkgKzEwOTgsOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlu
a0RpcmVjdENhCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigq
dm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9B
U1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOwotICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVC
bG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93
U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3Ip
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xv
dHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwogICAgICAgICBpZiAoYXJndW1l
bnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkpCkBAIC0xMTQ3LDkgKzExNDcsOSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tT
bG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWlu
dGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7Ci0gICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQs
ICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewogICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJ
U3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI0MjU5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MjcsNyArMTUyNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAKICAgICAgICAgQ29kZUJs
b2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwot
ICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JF
eGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOworICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGNhbGxlZSwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGVy
cm9yKSkKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgZXJyb3IpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJl
dmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVj
dERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDggKzQxLDEwIEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1YKIAogICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3RE
YXRhKHZtLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdChleGVjLCBj
b25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29u
c3RydWN0b3JPYmplY3QpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
IENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0yNjAsMzIgKzI2MCwzMiBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxG
cmFtZSogY2FsbEZyCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogdGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitFeGNlcHRp
b24qIHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogY29uc3RydWN0b3JO
YW1lKQogewogICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmlu
ZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0b3Igd2l0aG91dCBuZXcg
aXMgaW52YWxpZCIpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCitFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOwogfQogCi1KU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlM
aXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKIHsK
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZyhlcnJvck1lc3Nh
Z2UpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgIlN5bnRheCBlcnJvciJfcykpOwogfQogCi1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CitFeGNlcHRpb24qIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3Bl
JiBzY29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiAyNDI1OTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxs
eSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTc2LDEzICs3NiwxMyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRl
ZmF1bHQgbWVzc2FnZS4KLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3Bl
JiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVy
cm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7Ci1pbmxpbmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3Rh
dGUqIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
IHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihz
dGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYp
OworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJ
VkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BS
SVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUm
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitpbmxpbmUgRXhjZXB0aW9uKiB0aHJvd1Jh
bmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRo
cm93U2NvcGUmLCBjb25zdCBDbGFzc0luZm8qLCBQcm9wZXJ0eU5hbWUpOwogCiAvLyBDb252ZW5p
ZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI0
MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25z
dCBDbGFzc0luZm8gRXhjZXB0aW9uOjpzX2luZm8gPSB7ICJFeGNlcHRpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV4Y2VwdGlvbikgfTsK
K2NvbnN0IENsYXNzSW5mbyBFeGNlcHRpb246OnNfaW5mbyA9IHsgIkV4Y2VwdGlvbiIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhjZXB0aW9uKSB9Owog
CiBFeGNlcHRpb24qIEV4Y2VwdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB0aHJvd25WYWx1
ZSwgU3RhY2tDYXB0dXJlQWN0aW9uIGFjdGlvbikKIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBF
eGNlcHRpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiBTdHJ1Y3R1cmUqIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKIHZvaWQgRXhjZXB0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb24uaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxMCArMzEsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCi1jbGFzcyBFeGNlcHRpb24gZmluYWwgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgeworY2xhc3MgRXhjZXB0aW9uIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHVz
aW5nIEJhc2UgPSBKU0NlbGw7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgZW51bSBTdGFj
a0NhcHR1cmVBY3Rpb24gewogICAgICAgICBDYXB0dXJlU3RhY2ssCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNp
b24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMjQsMTkgKzMyNCwxOSBAQCBKU09iamVjdCog
Y3JlYXRlVERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9
CiAKLUpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJv
d1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKIH0KIAotSlNPYmpl
Y3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCitFeGNlcHRpb24qIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCi1K
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCitFeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDkgQEAgSlNPYmpl
Y3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9y
Rm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBK
U1N0cmluZyogZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwog
Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNT
dGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJik7Ci1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0
ZSosIFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29w
ZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjksOCArNjksMTAgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVj
dC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWdsb2Jh
bE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVy
cm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VPcmln
aW4sIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5l
d1RhcmdldCkpOwogfQogCkBAIC0xNDUsOSArMTQ3LDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEUKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
cHJvZ3JhbSwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBzb3VyY2VVUkwpLCBwb3NpdGlvbik7CiAg
ICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25O
YW1lLCAqZXhlYywgc291cmNlLCBleGNlcHRpb24sIG92ZXJyaWRlTGluZU51bWJlciwgZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7Ci0gICAgaWYgKCFmdW5jdGlvbikg
eworICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb24pKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRp
b24pOwotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2
YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCw4
ICsyMDEsMTAgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogCiAg
ICAgLy8gMTMuNC40IEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAo
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFs
cnVsZXMucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwotICAgIGlmICghbV9pbml0aWFsaXplZFBs
dXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAi
SW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoIW1faW5pdGlhbGl6ZWRQbHVyYWxSdWxlcykpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmZXhl
Yyk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUs
IGpzTm9udHJpdmlhbFN0cmluZygmZXhlYywgbV9sb2NhbGUpKTsKQEAgLTIxNyw4ICsyMjAsMTAg
QEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogI2lmIEhBVkUoSUNV
X1BMVVJBTFJVTEVTX0tFWVdPUkRTKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogY2F0ZWdv
cmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDAp
OwotICAgIGlmICghY2F0ZWdvcmllcykKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmZXhlYywgc2NvcGUpOworICAgIGlmIChVTkxJS0VMWSghY2F0ZWdvcmllcykpIHsKKyAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8ga2V5d29yZHMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBVRW51
bWVyYXRpb25EZWxldGVyPih1cGxydWxlc19nZXRLZXl3b3JkcyhtX3BsdXJhbFJ1bGVzLmdldCgp
LCAmc3RhdHVzKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKIGNsYXNzIEpTQmlnSW50OworY2xhc3Mg
RXhjZXB0aW9uOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNWYWx1
ZVNvdXJjZTsKQEAgLTE4Myw2ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNl
VGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2Vs
bCogcHRyKTsKKyAgICBKU1ZhbHVlKEV4Y2VwdGlvbiogcHRyKTsKIAogICAgIC8vIE51bWJlcnMK
ICAgICBKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lv
biAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2F0
Y2hTY29wZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCkBAIC0xODUsNiArMTg2LDExIEBAIGlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmRlY29kZShFbmNvZGVkSlMKICAgICByZXR1cm4gdjsKIH0KIAoraW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoRXhjZXB0aW9uKiBleGNlcHRpb24pCisgICAgOiBKU1ZhbHVl
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGV4Y2VwdGlvbikpCit7Cit9CisKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KIGlubGluZSBUbyBqc0Nh
c3QoRnJvbSogZnJvbSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0Nl
bGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VG8+Ojp0eXBlPjo6dmFsdWUgJiYgc3Rk
Ojppc19iYXNlX29mPEpTQ2VsbCwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGcm9tPjo6
dHlwZT46OnZhbHVlLCAiSlMgY2FzdGluZyBleHBlY3RzIHRoYXQgdGhlIHR5cGVzIHlvdSBhcmUg
Y2FzdGluZyB0by9mcm9tIGFyZSBzdWJjbGFzc2VzIG9mIEpTQ2VsbCIpOworICAgIGlmICghKCFm
cm9tIHx8IGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6dm0oKSwgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUbz46OnR5cGU6OmluZm8oKSkpKSB7CisgICAgICAgIGRhdGFMb2dMbigi
ICAgZnJvbSAiLCBSYXdQb2ludGVyKGZyb20pKTsKKyAgICAgICAgaWYgKGZyb20pCisgICAgICAg
ICAgICBkYXRhTG9nTG4oIiAgIGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6
dm0oKSwgc3RkOjpyZW1vdmVfcG9pbnRlcjxUbz46OnR5cGU6OmluZm8oKSkgIiwgZnJvbS0+SlND
ZWxsOjppbmhlcml0cygqZnJvbS0+SlNDZWxsOjp2bSgpLCBzdGQ6OnJlbW92ZV9wb2ludGVyPFRv
Pjo6dHlwZTo6aW5mbygpKSk7CisKKyAgICB9CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIWZyb20gfHwgZnJvbS0+SlNDZWxsOjppbmhlcml0cygqZnJvbS0+SlNDZWxsOjp2
bSgpLCBzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlwZTo6aW5mbygpKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRvPihmcm9tKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOCw4ICsxMjgsMTAgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBpZiAobGVuZ3RoT3B0KQogICAg
ICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgaWYgKChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgJSBWaWV3Q2xhc3M6
OmVsZW1lbnRTaXplKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhl
Yywgc2NvcGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90
IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSJfcyk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxlbWVu
dFNpemUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpIC0gb2Zmc2V0KSAvIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAgICAgICAgIH0KIApAQCAt
MTM3LDggKzEzOSwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
CiAgICAgfQogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFsZW5ndGhPcHQpOwogICAgIAotICAgIGlm
IChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVm
ZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoVmlld0Ns
YXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUg
Zmlyc3QgYXJndW1lbnQuIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IAogICAgIC8vIEZvciBldmVyeXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0
aW9uIHdpdGggYW55IG9mOgogICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEg
Y29weSBvZiB0aGUgb2YgdGhhdCBhcnJheS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU4LDcgQEAgaW5saW5lIEpTQ2Vs
bCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbAogICAgIHJldHVybiAwOwogfQogCitjbGFzcyBF
eGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwog
Y2xhc3MgSlNGdW5jdGlvbjsKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgVGhyb3dTY29wZTsKIHN0
cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKIGV4dGVybiBKU19FWFBP
UlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5
RGVmaW5lRXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3OCw4ICs3NzgsMTAgQEAgSlNP
YmplY3QqIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdAogCiAgICAgYm9vbCBzdWNjZXNz
ID0gc2V0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZXhlYywgdm0sIG9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYg
KFVOTElLRUxZKCFzdWNjZXNzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9z
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KQEAgLTgwOSw4ICs4MTEsMTAgQEAgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXpl
KEV4ZWNTdAogCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5
TGV2ZWw6OkZyb3plbj4oZXhlYywgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4g
T2JqZWN0LmZyZWV6ZSJfcyk7CisgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlVuYWJsZSB0byBwcmV2ZW50IGV4dGVuc2lv
biBpbiBPYmplY3QuZnJlZXplIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQog
ICAgIHJldHVybiBvYmplY3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEyMSw3ICsxMjEsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluaXRpYWxpemVHCiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFy
YXRpb25zKSB7CiAgICAgICAgICAgICAvLyBUaGUgRVM2IHNwZWMgc2F5cyB0aGF0IFJlc3RyaWN0
ZWRHbG9iYWxQcm9wZXJ0eSBjYW4ndCBiZSBzaGFkb3dlZC4KICAgICAgICAgICAgIEdsb2JhbFBy
b3BlcnR5TG9va1VwU3RhdHVzIHN0YXR1cyA9IGhhc1Jlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0eShl
eGVjLCBnbG9iYWxPYmplY3QsIGVudHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAg
ICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9v
a1VwU3RhdHVzOjpOb25Db25maWd1cmFibGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFy
aWFibGUgdGhhdCBzaGFkb3dzIGEgZ2xvYmFsIHByb3BlcnR5OiAnIiwgU3RyaW5nKGVudHJ5Lmtl
eS5nZXQoKSksICInIikpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6aW5pdGlhbGl6ZUcKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZXhlYywg
ZW50cnkua2V5LmdldCgpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAm
JiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RN
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgImNvbnN0IiBk
dXBsaWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KQEAgLTE1NSw3ICsxNTUs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIGlm
ICghZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiB2YXJpYWJsZURlY2xhcmF0aW9ucykgewogICAgICAgICAgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5
KGV4ZWMsIGVudHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgIGlmIChoYXNQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFyaWFi
bGU6ICciLCBTdHJpbmcoZW50cnkua2V5LmdldCgpKSwgIiciKSk7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlLCBJbmMuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIxMCw4ICsyMTAsMTAgQEAgc3RhdGljIEpT
T2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZ0V4cCogcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUodm0sIHBhdHRlcm4sIGZsYWdz
KTsKLSAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIHJlZ0V4cC0+ZXJyb3JUb1Rocm93KGV4ZWMpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXJlZ0V4cC0+aXNWYWxpZCgpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0
cnVjdHVyZShleGVjLCBnbG9iYWxPYmplY3QsIG5ld1RhcmdldCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC0yNTAsOCArMjUyLDEwIEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCByZWdFeHAtPnBh
dHRlcm4oKSwgZmxhZ3MpOwogCi0gICAgICAgICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgcmVnRXhw
LT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZWdFeHAt
PmlzVmFsaWQoKSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlZ0V4
cE9iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBTY3JpcHRF
eGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlKAogfQogCiBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1
dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQs
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRp
b24pCisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgSlNTY29wZSogc2NvcGUsIEV4Y2VwdGlvbiomIGV4Y2VwdGlvbikKIHsKICAgICBWTSogdm0g
PSBzY29wZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CkBAIC00MDIsMTggKzQwMiwxOCBAQCBzdGF0aWMgdm9pZCBzZXR1cEpJVChWTSYgdm0s
IENvZGVCbG9jayogCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnBy
ZXBhcmVGb3JFeGVjdXRpb25JbXBsKAorRXhjZXB0aW9uKiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVw
YXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICBWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBK
U1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiBy
ZXN1bHRDb2RlQmxvY2spCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAg
aWYgKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgeworICAgIGlmIChVTkxJ
S0VMWSh2bS5nZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkpKSB7CiAgICAgICAgIGF1
dG8mIHN0YXRlID0gKnNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7CiAgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVycm9y
KCZzdGF0ZSwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7CiAgICAgfQogCi0gICAgSlNPYmplY3QqIGV4
Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbmV3Q29kZUJsb2NrRm9yKGtpbmQsIGZ1bmN0aW9u
LCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICByZXN1bHRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gIWNvZGVCbG9j
ayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgaW5zdGFsbENvZGUoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBp
bnN0YWxsQ29kZShWTSYsIENvZGVCbG9jayosIENvZGVUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKKyAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1bmN0
aW9uKiwgSlNTY29wZSosIEV4Y2VwdGlvbiomKTsKICAgICBDb2RlQmxvY2sqIG5ld1JlcGxhY2Vt
ZW50Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgdm9pZCBjbGVh
ckNvZGUoSXNvQ2VsbFNldCYpOwpAQCAtMTIwLDExICsxMjAsMTEgQEAgcHVibGljOgogICAgIC8v
IHRvIHBvaW50IHRvIGl0LiBUaGlzIGZvcmNlcyBjYWxsZXJzIHRvIGhhdmUgYSBDb2RlQmxvY2sq
IGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHRoYXQgd2lsbCBiZSBtYXJrZWQKICAgICAv
LyBieSBjb25zZXJ2YXRpdmUgR0MgaWYgYSBHQyBoYXBwZW5zIGFmdGVyIHdlIGNyZWF0ZSB0aGUg
Q29kZUJsb2NrLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFeGVjdXRhYmxlVHlwZT4KLSAgICBK
U09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsKKyAg
ICBFeGNlcHRpb24qIHByZXBhcmVGb3JFeGVjdXRpb24oVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29w
ZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jayk7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIEpTT2Jq
ZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYpOworICAgIEV4Y2VwdGlvbiogcHJl
cGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomKTsKIAogICAgIGJvb2wgaGFzQ2xlYXJhYmxlQ29k
ZShWTSYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJv
d1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
aHJvd1Njb3BlLmNwcAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCwxNSArNzAsMTUg
QEAgVGhyb3dTY29wZTo6flRocm93U2NvcGUoKQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9
CiAKLXZvaWQgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb24qIGV4Y2VwdGlvbikKK0V4Y2VwdGlvbiogVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsKICAgICBpZiAobV92bS5l
eGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlvbikKICAgICAgICAgbV92
bS52ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBt
X2xvY2F0aW9uKTsKICAgICAKLSAgICBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0K
IAotSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpCitFeGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKICAgICBpZiAoIWVycm9yLmlzQ2VsbCgpIHx8
ICFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG1fdm0sIGVycm9yLmFzQ2VsbCgpKSkKICAgICAg
ICAgbV92bS52ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRl
cHRoLCBtX2xvY2F0aW9uKTsKQEAgLTg2LDExICs4Niw5IEBAIEpTVmFsdWUgVGhyb3dTY29wZTo6
dGhyb3dFeGNlcHRpb24oRXhlY1MKICAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBlcnJvcik7CiB9CiAKLUpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCitFeGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikKIHsKLSAgICBpZiAoIWpz
RHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4obV92bSwgb2JqKSkKLSAgICAgICAgbV92bS52ZXJpZnlF
eGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBtX2xvY2F0aW9u
KTsKLSAgICAKKyAgICBtX3ZtLnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKG1f
cmVjdXJzaW9uRGVwdGgsIG1fbG9jYXRpb24pOwogICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0
aW9uKGV4ZWMsIG9iaik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UaHJvd1Njb3BlLmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Rocm93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQCBw
dWJsaWM6CiAgICAgVGhyb3dTY29wZShjb25zdCBUaHJvd1Njb3BlJikgPSBkZWxldGU7CiAgICAg
VGhyb3dTY29wZShUaHJvd1Njb3BlJiYpID0gZGVmYXVsdDsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVl
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0
YXRlKiwgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09i
amVjdCopOwogCiAgICAgdm9pZCByZWxlYXNlKCkgeyBtX2lzUmVsZWFzZWQgPSB0cnVlOyB9CiAK
QEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIFRocm93U2NvcGUoY29uc3QgVGhyb3dTY29w
ZSYpID0gZGVsZXRlOwogICAgIFRocm93U2NvcGUoVGhyb3dTY29wZSYmKSA9IGRlZmF1bHQ7CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7IH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IHZhbHVlKTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlv
bihleGVjLCBvYmopOyB9CisgICAgQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIHRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgcmV0dXJuIG1fdm0u
dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsgfQorICAgIEFMV0FZU19JTkxJTkUgRXhj
ZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgdmFsdWUpOyB9CisgICAgQUxXQVlTX0lO
TElORSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcmVsZWFzZSgpIHsgfQogfTsKQEAgLTg5LDE3ICs4OSwxNyBAQCBw
dWJsaWM6CiAKICNlbmRpZiAvLyBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikK
IAotQUxXQVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQorQUxXQVlTX0lOTElORSBFeGNl
cHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewotICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElO
RSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogdGhyb3dFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNPYmplY3QqIG9iaikKK0FM
V0FZU19JTkxJTkUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBKU09iamVjdCogb2JqKQogewogICAgIHJldHVybiBzY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBvYmopOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODExLDcgKzgxMSw3IEBAIHZvaWQgVk06OmNs
ZWFyU291cmNlUHJvdmlkZXJDYWNoZXMoKQogICAgIHNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAuY2xl
YXIoKTsKIH0KIAotdm9pZCBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb24qIGV4Y2VwdGlvbikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGV4ZWMgPT0gdG9w
Q2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpIHx8IGV4ZWMgPT0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jYWxsRnJhbWVBdERlYnVnZ2VyRW50cnkoKSk7CiAgICAgQ2FsbEZy
YW1lKiB0aHJvd09yaWdpbkZyYW1lID0gZXhlYy0+aXNHbG9iYWxFeGVjKCkgPyBleGVjIDogdG9w
SlNDYWxsRnJhbWUoKTsKQEAgLTgzMCwyMiArODMwLDIyIEBAIHZvaWQgVk06OnRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywKICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdyA9
IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRp
b25TdGFja1RyYWNlTGltaXQoKSk7CiAgICAgbV90aHJvd2luZ1RocmVhZCA9ICZUaHJlYWQ6OmN1
cnJlbnQoKTsKICNlbmRpZgorICAgIHJldHVybiBleGNlcHRpb247CiB9CiAKLUpTVmFsdWUgVk06
OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJvd25WYWx1ZSkKK0V4
Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJv
d25WYWx1ZSkKIHsKICAgICBWTSYgdm0gPSAqdGhpczsKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlv
biA9IGpzRHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4odm0sIHRocm93blZhbHVlKTsKICAgICBpZiAo
IWV4Y2VwdGlvbikKICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uOjpjcmVhdGUoKnRoaXMs
IHRocm93blZhbHVlKTsKIAotICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIEpTVmFsdWUoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsKIH0KIAotSlNPYmplY3QqIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yKQogewotICAgIHJldHVybiBhc09i
amVjdCh0aHJvd0V4Y2VwdGlvbihleGVjLCBKU1ZhbHVlKGVycm9yKSkpOworICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBKU1ZhbHVlKGVycm9yKSk7CiB9CiAKIHZvaWQgVk06OnNldFN0
YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtOTQ2LDkgKzk0Niw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1NhZmVUb1JlY3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUo
Q19MT09QKQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqLCBFeGNlcHRpb24qKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0
aW9uKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICNpZiBFTkFCTEUoRVhDRVBU
SU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICB2b2lkIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVl
ZElzU2F0aXNmaWVkKHVuc2lnbmVkIGRlcHRoLCBFeGNlcHRpb25FdmVudExvY2F0aW9uJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wMy0wNiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhjZXB0aW9uIGlzIGEgSlNDZWxsLCBu
b3QgYSBKU09iamVjdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y191dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nczo6dGhyb3dFcnJvcik6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnRo
cm93SW52YWxpZEFjY2Vzc0Vycm9yKToKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3Qu
aDoKKwogMjAxOS0wMy0wNiAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogRE9NIERlYnVnZ2VyOiBldmVudCBicmVha3BvaW50cyBzdGls
bCBmaXJlIHdoZW4gYnJlYWtwb2ludHMgYXJlIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Miw3
ICsyOTIsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoCiAgICAg
aW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCogUnVudGltZU9iamVjdDo6dGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKK0V4Y2Vw
dGlvbiogUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBl
eGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhl
Yywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9i
amVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICBJbnN0YW5jZSogZ2V0SW50ZXJuYWxJbnN0YW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KIAotICAgIHN0YXRpYyBKU09iamVjdCogdGhyb3dJ
bnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworICAgIHN0YXRpYyBF
eGNlcHRpb24qIHRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUm
KTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzQsNyArNzQsNyBAQCBK
U1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4ZWNTdGF0CiBKU1ZhbHVlIGNvbnZlcnRP
YmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQqIGJ1ZmZlciwgT2JqY1ZhbHVlVHlwZSwg
Um9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlRm9yVHlwZShjb25zdCBj
aGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29w
ZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKK0V4Y2VwdGlvbiAqdGhyb3dFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgTlNTdHJpbmcgKm1lc3NhZ2UpOwogCiB9IC8vIG5hbWVzcGFjZSBCaW5k
aW5ncwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMywxMSAr
MzEzLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVlVHlwZUZvclR5cGUoY29uc3QKICAgICBy
ZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmplY3QgKnRocm93RXJyb3IoRXhlY1N0YXRl
ICpleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgTlNTdHJpbmcgKm1lc3NhZ2UpCitFeGNlcHRpb24g
KnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgTlNTdHJpbmcg
Km1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwotICAgIEpTT2JqZWN0ICplcnJvciA9
IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBKU0M6OmNyZWF0ZUVycm9yKGV4ZWMsIFN0cmlu
ZyhtZXNzYWdlKSkpOwotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3IoZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTA2ICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFeGNlcHRpb24gaXMgYSBK
U0NlbGwsIG5vdCBhIEpTT2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1MzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oOgor
CiAyMDE5LTAzLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoIHdoZW4gYXR0ZW1wdGluZyB0byBjaGFuZ2UgaW5wdXQgdHlwZSB3aGlsZSBk
aXNtaXNzaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcAkocmV2
aXNpb24gMjQyNTkxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MjMsNyArNTIzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0dGVyKAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgp
LCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElkZW50aWZpZXIpKTsKIH0KIAotSlNPYmpl
Y3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywg
VGhyb3dTY29wZSYgc2NvcGUpCitKU0M6OkV4Y2VwdGlvbiogSlNOUE9iamVjdDo6dGhyb3dJbnZh
bGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAg
ICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9y
KGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIp
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUg
bWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nl
c3NFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6VGhyb3dTY29wZSYpOworICAgIHN0YXRpYyBK
U0M6OkV4Y2VwdGlvbiogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGltZU9iamVjdE1hcCogbV9vYmplY3RNYXA7
CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363848</attachid>
            <date>2019-03-06 22:56:54 -0800</date>
            <delta_ts>2019-03-06 23:32:19 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-195392.patch</filename>
            <type>text/plain</type>
            <size>58249</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk4IEBA
CisyMDE5LTAzLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBF
eGNlcHRpb24gaXMgYSBKU0NlbGwsIG5vdCBhIEpTT2JqZWN0LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhjZXB0aW9uIGlzIGEgVk0gaW1wbGVtZW50
YXRpb24gY29uc3RydWN0IHRvIGNhcnJ5IGEgc3RhY2sgdHJhY2UgZm9yIHRoZSBwb2ludAorICAg
ICAgICB3aGVyZSBpdCBpcyB0aHJvd24gZnJvbS4gIEFzIGEgcmVtaW5kZXIsIGFuIEV4Y2VwdGlv
biBpcyBuZWVkZWQgYmVjYXVzZToKKyAgICAgICAgMS4gSlMgY29kZSBjYW4gdGhyb3cgcHJpbWl0
aXZlcyBhcyB3ZWxsIHRoYXQgYXJlIG5vbi1jZWxscy4KKyAgICAgICAgMi4gRXJyb3Igb2JqZWN0
cyBjYXB0dXJlIHRoZSBzdGFjayB0cmFjZSBhdCB0aGUgcG9pbnQgd2hlcmUgdGhleSBhcmUgY29u
c3RydWN0ZWQsCisgICAgICAgICAgIHdoaWNoIGlzIG5vdCBhbHdheXMgdGhlIHNhbWUgYXMgdGhl
IHBvaW50IHdoZXJlIHRoZXkgYXJlIHRocm93biAoaWYgdGhleSBhcmUKKyAgICAgICAgICAgdGhy
b3duKS4KKworICAgICAgICBIZW5jZSwgRXhjZXB0aW9uIHNob3VsZCBub3QgYmUgdmlzaWJsZSB0
byBKUyBjb2RlLCBhbmQgdGhlcmVmb3JlIHNob3VsZCBub3QgYmUgYQorICAgICAgICBKU09iamVj
dC4gIEhlbmNlLCBpdCBzaG91bGQgbm90IGluaGVyaXQgZnJvbSBKU0Rlc3RydWN0aWJsZU9iamVj
dC4KKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGZvbGxvd2luZzoKKworICAgICAg
ICAxLiBFeGNlcHRpb24gbm93IGluaGVyaXRzIGRpcmVjdGx5IGZyb20gSlNDZWxsIGluc3RlYWQu
CisKKyAgICAgICAgMi4gUGxhY2VzIHdoZXJlIHdlIHJldHVybiBhbiBFeGNlcHRpb24gbWFzcXVl
cmFkaW5nIGFzIGEgSlNPYmplY3QqIGFyZSBub3cKKyAgICAgICAgICAgdXBkYXRlZCB0byByZXR1
cm4gYSBudWxscHRyIHdoZW4gd2UgZW5jb3VudGVyIGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAz
LiBXZSBzdGlsbCByZXR1cm4gRXhjZXB0aW9uKiBhcyBKU1ZhbHVlIG9yIEVuY29kZWRKU1ZhbHVl
IHdoZW4gd2UgZW5jb3VudGVyIGFuCisgICAgICAgICAgIGV4Y2VwdGlvbiBpbiBmdW5jdGlvbnMg
dGhhdCByZXR1cm4gSlNWYWx1ZSBvciBFbmNvZGVkSlNWYWx1ZS4gIFRoaXMgaXMgYmVjYXVzZQor
ICAgICAgICAgICB0aGUgbnVtYmVyIHRoYXQgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIHBhdHRl
cm4gaXMgdG9vIG51bWVyb3VzOgorCisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93PFNvbWUg
RXJyb3I+KC4uLikKKworICAgICAgICAgICBXZSdsbCBsZWF2ZSB0aGVzZSBhcyBpcyBmb3Igbm93
LiAgVG8gZmFjaWxpdGF0ZSB0aGUgY29udmVyc2lvbiBmcm9tIEV4Y2VwdGlvbioKKyAgICAgICAg
ICAgdG8gSlNWYWx1ZSwgd2UndmUgYWRkZWQgYSBKU1ZhbHVlKEV4Y2VwdGlvbiopIGNvbnN0cnVj
dG9yLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVQ
cm9ncmFtKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDYWxsKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRlTW9kdWxl
UHJvZ3JhbSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGxs
aW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6
CisgICAgICAgICogcnVudGltZS9Db25zdHJ1Y3REYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6dGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcik6CisgICAgICAg
IChKU0M6OnRocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dTeW50YXhFcnJvcik6
CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlNDOjp0aHJvd1JhbmdlRXJy
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6RXhj
ZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6
dGhyb3dPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKEpTQzo6dGhyb3dTdGFja092ZXJmbG93
RXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oOgorICAgICAgICAqIHJ1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxFbmFibGVk
Q2hlY2spOgorICAgICAgICAqIHJ1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU0Nh
c3QuaDoKKyAgICAgICAgKEpTQzo6anNDYXN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2Jq
ZWN0Q29uc3RydWN0b3JGcmVlemUpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFi
bGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2Jh
bFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpyZWdFeHBDcmVhdGUpOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RSZWdF
eHApOgorICAgICAgICAqIHJ1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChK
U0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ld0NvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb25JbXBsKToKKyAgICAgICAgKiBydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Rocm93U2NvcGUuY3Bw
OgorICAgICAgICAoSlNDOjpUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgICog
cnVudGltZS9UaHJvd1Njb3BlLmg6CisgICAgICAgIChKU0M6OlRocm93U2NvcGU6OnRocm93RXhj
ZXB0aW9uKToKKyAgICAgICAgKEpTQzo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6dGhyb3dFeGNlcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAxOS0wMy0wNiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiB0cnktZmluYWxseSBjb21w
bGV0aW9uIHZhbHVlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgaW5s
aW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnVuY2hlY2tlZFIoVgogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgRXhlY3V0YWJsZVR5cGU+Ci1KU09iamVjdCogU2NyaXB0RXhlY3V0YWJsZTo6cHJlcGFy
ZUZvckV4ZWN1dGlvbihWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29w
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiByZXN1bHRDb2RlQmxv
Y2spCitFeGNlcHRpb24qIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JFeGVjdXRpb24oVk0m
IHZtLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgSlNTY29wZSogc2NvcGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKQogewogICAgIGlmICho
YXNKSVRDb2RlRm9yKGtpbmQpKSB7CiAgICAgICAgIGlmIChzdGQ6OmlzX3NhbWU8RXhlY3V0YWJs
ZVR5cGUsIEV2YWxFeGVjdXRhYmxlPjo6dmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDI0MjU5MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IENhbWVyb24gWndhcmljaCA8Y3d6d2FyaWNoQHV3YXRlcmxvby5jYT4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTgwOCw4ICs4MDgsOCBAQCBmYWlsZWRKU09OUDoKICAgICBQcm9ncmFtQ29kZUJs
b2NrKiBjb2RlQmxvY2s7CiAgICAgewogICAgICAgICBDb2RlQmxvY2sqIHRlbXBDb2RlQmxvY2s7
Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IHByb2dyYW0tPnByZXBhcmVGb3JFeGVjdXRpb248
UHJvZ3JhbUV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBD
b2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9u
KCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOworICAgICAgICBFeGNl
cHRpb24qIGVycm9yID0gcHJvZ3JhbS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxQcm9ncmFtRXhlY3V0
YWJsZT4odm0sIG51bGxwdHIsIHNjb3BlLCBDb2RlRm9yQ2FsbCwgdGVtcENvZGVCbG9jayk7Cisg
ICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBlcnJvcik7
CiAgICAgICAgIGlmIChVTkxJS0VMWShlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tl
ZFJldHVybihlcnJvcik7CiAgICAgICAgIGNvZGVCbG9jayA9IGpzQ2FzdDxQcm9ncmFtQ29kZUJs
b2NrKj4odGVtcENvZGVCbG9jayk7CkBAIC04NjYsOCArODY2LDggQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZUNhbGwoQ2FsbEZyYQogCiAgICAgaWYgKGlzSlNDYWxsKSB7CiAgICAgICAg
IC8vIENvbXBpbGUgdGhlIGNhbGxlZToKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9
IGNhbGxEYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5j
dGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uKSwgc2NvcGUs
IENvZGVGb3JDYWxsLCBuZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRo
cm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21w
aWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBjYWxsRGF0YS5q
cy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRh
YmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2Fs
bCwgbmV3Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBp
bGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3Ip
OwogCkBAIC05MDksOCArOTA5LDEwIEBAIEpTT2JqZWN0KiBJbnRlcnByZXRlcjo6ZXhlY3V0ZUNv
bnN0cnVjdCgKICAgICBBU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgp
KTsKICAgICAvLyBXZSB0aHJvdyBpbiB0aGlzIGNhc2UgYmVjYXVzZSB3ZSBoYXZlIHRvIHJldHVy
biBzb21ldGhpbmcgInZhbGlkIiBidXQgd2UncmUKICAgICAvLyBhbHJlYWR5IGluIGFuIGludmFs
aWQgc3RhdGUuCi0gICAgaWYgKHZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKQot
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxs
RnJhbWUsIHRocm93U2NvcGUpKTsKKyAgICBpZiAoVU5MSUtFTFkodm0uaXNDb2xsZWN0b3JCdXN5
T25DdXJyZW50VGhyZWFkKCkpKSB7CisgICAgICAgIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKGNh
bGxGcmFtZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAog
ICAgIGJvb2wgaXNKU0NvbnN0cnVjdCA9IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6
OkpTKTsKICAgICBKU1Njb3BlKiBzY29wZSA9IG51bGxwdHI7CkBAIC05MjgsMTUgKzkzMCwxNyBA
QCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgfQogCiAgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElL
RUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKQotICAgICAgICByZXR1cm4gY2hlY2tlZFJl
dHVybih0aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUsIHRocm93U2NvcGUpKTsKKyAg
ICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKKyAgICAgICAgdGhy
b3dTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgaWYgKGlzSlNDb25zdHJ1Y3QpIHsKICAgICAgICAg
Ly8gQ29tcGlsZSB0aGUgY2FsbGVlOgotICAgICAgICBKU09iamVjdCogY29tcGlsZUVycm9yID0g
Y29uc3RydWN0RGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248
RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3Rvciks
IHNjb3BlLCBDb2RlRm9yQ29uc3RydWN0LCBuZXdDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJ
T05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNl
cHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3Ig
PSBjb25zdHJ1Y3REYXRhLmpzLmZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlv
bjxGdW5jdGlvbkV4ZWN1dGFibGU+KHZtLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9y
KSwgc2NvcGUsIENvZGVGb3JDb25zdHJ1Y3QsIG5ld0NvZGVCbG9jayk7CisgICAgICAgIEVYQ0VQ
VElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSBjb21waWxlRXJyb3IpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoISFjb21waWxlRXJyb3IpKQotICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrZWRSZXR1cm4oY29tcGlsZUVycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgICAgIEFTU0VSVCghIW5ld0NvZGVCbG9jayk7CiAgICAgICAgIG5ld0NvZGVCbG9jay0+
bV9zaG91bGRBbHdheXNCZUlubGluZWQgPSBmYWxzZTsKQEAgLTk0Niw3ICs5NTAsNyBAQCBKU09i
amVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25zdHJ1Y3QoCiAgICAgVk1UcmFwczo6TWFzayBt
YXNrKFZNVHJhcHM6Ok5lZWRUZXJtaW5hdGlvbiwgVk1UcmFwczo6TmVlZFdhdGNoZG9nQ2hlY2sp
OwogICAgIGlmIChVTkxJS0VMWSh2bS5uZWVkVHJhcEhhbmRsaW5nKG1hc2spKSkgewogICAgICAg
ICB2bS5oYW5kbGVUcmFwcyhjYWxsRnJhbWUsIG1hc2spOwotICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIH0KIAogICAgIFByb3Rv
Q2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwpAQCAtOTgxLDggKzk4NSw4IEBAIENhbGxGcmFtZUNs
b3N1cmUgSW50ZXJwcmV0ZXI6OnByZXBhcmVGb3IKIAogICAgIC8vIENvbXBpbGUgdGhlIGNhbGxl
ZToKICAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jazsKLSAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxl
Pih2bSwgZnVuY3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKLSAgICBF
WENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2Fz
dDxFeGNlcHRpb24qPihlcnJvcikpOworICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgZnVu
Y3Rpb24sIHNjb3BlLCBDb2RlRm9yQ2FsbCwgbmV3Q29kZUJsb2NrKTsKKyAgICBFWENFUFRJT05f
QVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOwogICAgIGlmIChVTkxJS0VM
WShlcnJvcikpCiAgICAgICAgIHJldHVybiBDYWxsRnJhbWVDbG9zdXJlKCk7CiAgICAgbmV3Q29k
ZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCA9IGZhbHNlOwpAQCAtMTAzOSw4ICsxMDQz
LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YQogICAgIEV2YWxD
b2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAgICAgIENvZGVCbG9jayogdGVtcENvZGVC
bG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVFcnJvciA9IGV2YWwtPnByZXBhcmVGb3JF
eGVjdXRpb248RXZhbEV4ZWN1dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGws
IHRlbXBDb2RlQmxvY2spOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsK
KyAgICAgICAgRXhjZXB0aW9uKiBjb21waWxlRXJyb3IgPSBldmFsLT5wcmVwYXJlRm9yRXhlY3V0
aW9uPEV2YWxFeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1w
Q29kZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlv
bigpID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJv
cikpCiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAg
ICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8RXZhbENvZGVCbG9jayo+KHRlbXBDb2RlQmxvY2spOwpA
QCAtMTE2Myw4ICsxMTY3LDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZU1vZHVsZVBy
b2dyYQogICAgIE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIGNvZGVCbG9jazsKICAgICB7CiAgICAg
ICAgIENvZGVCbG9jayogdGVtcENvZGVCbG9jazsKLSAgICAgICAgSlNPYmplY3QqIGNvbXBpbGVF
cnJvciA9IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248TW9kdWxlUHJvZ3JhbUV4ZWN1
dGFibGU+KHZtLCBudWxscHRyLCBzY29wZSwgQ29kZUZvckNhbGwsIHRlbXBDb2RlQmxvY2spOwot
ICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihjb21waWxlRXJyb3IpKTsKKyAgICAgICAgRXhjZXB0aW9u
KiBjb21waWxlRXJyb3IgPSBleGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPE1vZHVsZVBy
b2dyYW1FeGVjdXRhYmxlPih2bSwgbnVsbHB0ciwgc2NvcGUsIENvZGVGb3JDYWxsLCB0ZW1wQ29k
ZUJsb2NrKTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4Y2VwdGlvbigp
ID09IGNvbXBpbGVFcnJvcik7CiAgICAgICAgIGlmIChVTkxJS0VMWSghIWNvbXBpbGVFcnJvcikp
CiAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybihjb21waWxlRXJyb3IpOwogICAgICAg
ICBjb2RlQmxvY2sgPSBqc0Nhc3Q8TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayo+KHRlbXBDb2RlQmxv
Y2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQyLDkgKzEwNDIsOSBAQCBTbG93UGF0aFJl
dHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIH0KIAogICAgICAgICBDb2Rl
QmxvY2sqKiBjb2RlQmxvY2tTbG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7
Ci0gICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZv
ckV4ZWN1dGlvbjxGdW5jdGlvbkV4ZWN1dGFibGU+KCp2bSwgY2FsbGVlLCBzY29wZSwga2luZCwg
KmNvZGVCbG9ja1Nsb3QpOwotICAgICAgICBFWENFUFRJT05fQVNTRVJUKHRocm93U2NvcGUuZXhj
ZXB0aW9uKCkgPT0gcmVpbnRlcnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOwotICAgICAg
ICBpZiAoZXJyb3IpCisgICAgICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVy
cm9yKSkKICAgICAgICAgICAgIHJldHVybiBoYW5kbGVUaHJvd0V4Y2VwdGlvbigpOwogICAgICAg
ICBjb2RlQmxvY2sgPSAqY29kZUJsb2NrU2xvdDsKICAgICAgICAgQXJpdHlDaGVja01vZGUgYXJp
dHk7CkBAIC0xMDk4LDkgKzEwOTgsOSBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlu
a0RpcmVjdENhCiAKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNDYWxsKGtpbmQpIHx8IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpICE9IENvbnN0cnVjdEFiaWxpdHk6OkNh
bm5vdENvbnN0cnVjdCk7CiAgICAgICAgIAotICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigq
dm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVCbG9jayk7Ci0gICAgICAgIEVYQ0VQVElPTl9B
U1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gcmVpbnRl
cnByZXRfY2FzdDxFeGNlcHRpb24qPihlcnJvcikpOwotICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgIEV4Y2VwdGlvbiogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVj
dXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPigqdm0sIGNhbGxlZSwgc2NvcGUsIGtpbmQsIGNvZGVC
bG9jayk7CisgICAgICAgIEVYQ0VQVElPTl9BU1NFUlRfVU5VU0VEKHRocm93U2NvcGUsIHRocm93
U2NvcGUuZXhjZXB0aW9uKCkgPT0gZXJyb3IpOworICAgICAgICBpZiAoVU5MSUtFTFkoZXJyb3Ip
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudFN0YWNrU2xv
dHMgPSBjYWxsTGlua0luZm8tPm1heE51bUFyZ3VtZW50cygpOwogICAgICAgICBpZiAoYXJndW1l
bnRTdGFja1Nsb3RzIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkpCkBAIC0xMTQ3LDkgKzExNDcsOSBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHZp
cnR1YWxGb3JXaXRoCiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2sqKiBjb2RlQmxvY2tT
bG90ID0gZXhlY0NhbGxlZS0+YWRkcmVzc09mQ29kZUJsb2NrKCk7Ci0gICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+cHJlcGFyZUZvckV4ZWN1dGlvbjxGdW5jdGlv
bkV4ZWN1dGFibGU+KCp2bSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kLCAqY29kZUJsb2NrU2xvdCk7
Ci0gICAgICAgIEVYQ0VQVElPTl9BU1NFUlQodGhyb3dTY29wZS5leGNlcHRpb24oKSA9PSByZWlu
dGVycHJldF9jYXN0PEV4Y2VwdGlvbio+KGVycm9yKSk7Ci0gICAgICAgIGlmIChlcnJvcikgewor
ICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9y
RXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKnZtLCBmdW5jdGlvbiwgc2NvcGUsIGtpbmQs
ICpjb2RlQmxvY2tTbG90KTsKKyAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0aHJvd1Njb3BlLmV4
Y2VwdGlvbigpID09IGVycm9yKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yKSkgewogICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgKICAgICAgICAgICAgICAgICB2bS0+Z2V0Q1RJ
U3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLnJldGFnZ2VkQ29k
ZTxKU0VudHJ5UHRyVGFnPigpLmV4ZWN1dGFibGVBZGRyZXNzKCksCiAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oS2VlcFRoZUZyYW1lKSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDI0MjU5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MjcsNyArMTUyNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWMKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7CiAKICAgICAgICAgQ29kZUJs
b2NrKiogY29kZUJsb2NrU2xvdCA9IGV4ZWNDYWxsZWUtPmFkZHJlc3NPZkNvZGVCbG9jaygpOwot
ICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JF
eGVjdXRpb248RnVuY3Rpb25FeGVjdXRhYmxlPih2bSwgY2FsbGVlLCBzY29wZSwga2luZCwgKmNv
ZGVCbG9ja1Nsb3QpOworICAgICAgICBFeGNlcHRpb24qIGVycm9yID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uPEZ1bmN0aW9uRXhlY3V0YWJsZT4odm0sIGNhbGxlZSwg
c2NvcGUsIGtpbmQsICpjb2RlQmxvY2tTbG90KTsKICAgICAgICAgRVhDRVBUSU9OX0FTU0VSVCh0
aHJvd1Njb3BlLmV4Y2VwdGlvbigpID09IGVycm9yKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGVy
cm9yKSkKICAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgZXJyb3IpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc3RydWN0RGF0YS5jcHAJKHJl
dmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnN0cnVj
dERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDggKzQxLDEwIEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU1YKIAogICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKICAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3RE
YXRhKHZtLCBjb25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0RGF0YSk7Ci0gICAgaWYgKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgIGlmIChVTkxJS0VMWShjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGU6Ok5vbmUpKSB7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIHNjb3BlLCBlcnJvck1lc3NhZ2UpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdChleGVjLCBj
b25zdHJ1Y3Rvck9iamVjdCwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwgYXJncywgY29u
c3RydWN0b3JPYmplY3QpKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAqICBD
b3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
IENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCkBAIC0yNjAsMzIgKzI2MCwzMiBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZvKENhbGxG
cmFtZSogY2FsbEZyCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1KU09iamVjdCogdGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMs
IFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpCitFeGNlcHRp
b24qIHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhl
Y1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogY29uc3RydWN0b3JO
YW1lKQogewogICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgbWFrZVN0cmlu
ZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0b3Igd2l0aG91dCBuZXcg
aXMgaW52YWxpZCIpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSog
ZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCitFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNT
dGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOwogfQogCi1KU09iamVjdCog
dGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlM
aXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRl
KiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKIHsK
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsIFN0cmluZyhlcnJvck1lc3Nh
Z2UpKTsKIH0KIAotSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KIAotSlNPYmplY3QqIHRocm93U3ludGF4
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogdGhy
b3dTeW50YXhFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAg
IHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhl
YywgIlN5bnRheCBlcnJvciJfcykpOwogfQogCi1KU09iamVjdCogdGhyb3dTeW50YXhFcnJvcihF
eGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CitFeGNlcHRpb24qIHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3Bl
JiBzY29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbihleGVjLCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgbWVzc2FnZSkpOwogfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCShyZXZpc2lvbiAyNDI1OTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDcgKzEsNyBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxs
eSAocG1rQHBvc3QuY29tKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTc2LDEzICs3NiwxMyBAQCBKU09iamVjdCogYWRkRXJyb3JJbmZv
KEV4ZWNTdGF0ZSosIEpTT2JqCiAvLyBNZXRob2RzIHRvIHRocm93IEVycm9ycy4KIAogLy8gQ29u
dmVuaWVuY2Ugd3JhcHBlcnMsIGNyZWF0ZSBhbiB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBhIGRl
ZmF1bHQgbWVzc2FnZS4KLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2Nv
cGUmLCBjb25zdCBjaGFyKiBjb25zdHJ1Y3Rvck5hbWUpOwotSlNfRVhQT1JUX1BSSVZBVEUgSlNP
YmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9S
VF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3Bl
JiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVj
dCogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N5bnRheEVy
cm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7Ci1pbmxpbmUgSlNPYmplY3QqIHRocm93UmFuZ2VFcnJvcihFeGVjU3Rh
dGUqIHN0YXRlLCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
IHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKHN0YXRlLCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihz
dGF0ZSwgZXJyb3JNZXNzYWdlKSk7IH0KK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhy
b3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgY29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKTsKK0pTX0VYUE9SVF9Q
UklWQVRFIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYp
OworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUq
LCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJ
VkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93U3ludGF4RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOworSlNfRVhQT1JUX1BS
SVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUm
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitpbmxpbmUgRXhjZXB0aW9uKiB0aHJvd1Jh
bmdlRXJyb3IoRXhlY1N0YXRlKiBzdGF0ZSwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJvd0V4Y2VwdGlvbihzdGF0ZSwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3Ioc3RhdGUsIGVycm9yTWVzc2FnZSkpOyB9CiBKU19FWFBPUlRfUFJJVkFU
RSBKU1ZhbHVlIHRocm93RE9NQXR0cmlidXRlR2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSosIFRo
cm93U2NvcGUmLCBjb25zdCBDbGFzc0luZm8qLCBQcm9wZXJ0eU5hbWUpOwogCiAvLyBDb252ZW5p
ZW5jZSB3cmFwcGVycywgd3JhcCByZXN1bHQgYXMgYW4gRW5jb2RlZEpTVmFsdWUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDI0
MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25z
dCBDbGFzc0luZm8gRXhjZXB0aW9uOjpzX2luZm8gPSB7ICJFeGNlcHRpb24iLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEV4Y2VwdGlvbikgfTsK
K2NvbnN0IENsYXNzSW5mbyBFeGNlcHRpb246OnNfaW5mbyA9IHsgIkV4Y2VwdGlvbiIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoRXhjZXB0aW9uKSB9Owog
CiBFeGNlcHRpb24qIEV4Y2VwdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNWYWx1ZSB0aHJvd25WYWx1
ZSwgU3RhY2tDYXB0dXJlQWN0aW9uIGFjdGlvbikKIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBF
eGNlcHRpb246OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQogCiBTdHJ1Y3R1cmUqIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKIHZvaWQgRXhjZXB0aW9uOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNl
cHRpb24uaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSwxMCArMzEsMTEgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCi1jbGFzcyBFeGNlcHRpb24gZmluYWwgOiBwdWJsaWMgSlNEZXN0
cnVjdGlibGVPYmplY3QgeworY2xhc3MgRXhjZXB0aW9uIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Rlc3RydWN0aWJsZU9iamVjdCBCYXNlOworICAgIHVz
aW5nIEJhc2UgPSBKU0NlbGw7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOworICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgZW51bSBTdGFj
a0NhcHR1cmVBY3Rpb24gewogICAgICAgICBDYXB0dXJlU3RhY2ssCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNp
b24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMjQsMTkgKzMyNCwxOSBAQCBKU09iamVjdCog
Y3JlYXRlVERaRXJyb3IoRXhlY1N0YXRlKiBleGVjCiAgICAgcmV0dXJuIGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuIik7CiB9
CiAKLUpTT2JqZWN0KiB0aHJvd091dE9mTWVtb3J5RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJv
d1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KGV4ZWMsIHNjb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKTsKIH0KIAotSlNPYmpl
Y3QqIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUpCitFeGNlcHRpb24qIHRocm93U3RhY2tPdmVyZmxvd0Vycm9yKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBF
cnJvckhhbmRsaW5nU2NvcGUgZXJyb3JTY29wZSh2bSk7CiAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uKGV4ZWMsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYykpOwogfQogCi1K
U09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgVGhyb3dTY29wZSYgc2NvcGUpCitFeGNlcHRpb24qIHRocm93VGVybWluYXRlZEV4ZWN1dGlv
bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlKQogewogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgRXJyb3JIYW5kbGluZ1Njb3BlIGVycm9yU2NvcGUodm0p
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhjZXB0aW9uSGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU1LDkgKzU1LDkgQEAgSlNPYmpl
Y3QqIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKEV4ZWNTdAogSlNPYmplY3QqIGNyZWF0ZUVycm9y
Rm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoRXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJik7CiBK
U1N0cmluZyogZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwog
Ci1KU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dPdXRPZk1lbW9yeUVycm9yKEV4ZWNT
dGF0ZSosIFRocm93U2NvcGUmKTsKLUpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1N0
YWNrT3ZlcmZsb3dFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJik7Ci1KU19FWFBPUlRfUFJJ
VkFURSBKU09iamVjdCogdGhyb3dUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKEV4ZWNTdGF0
ZSosIFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKK0pTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dTdGFja092ZXJmbG93RXJyb3IoRXhlY1N0YXRlKiwgVGhyb3dTY29w
ZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1Rlcm1pbmF0ZWRFeGVjdXRp
b25FeGNlcHRpb24oRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYpOwogCiAKIGNsYXNzIFRlcm1pbmF0
ZWRFeGVjdXRpb25FcnJvciBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNjksOCArNjksMTAgQEAg
SlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZQogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihleGVjLCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGV4ZWMsIGdsb2JhbE9iamVj
dC0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWdsb2Jh
bE9iamVjdC0+ZXZhbEVuYWJsZWQoKSkpIHsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZXhlYywg
c2NvcGUsIGNyZWF0ZUV2YWxFcnJvcihleGVjLCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVy
cm9yTWVzc2FnZSgpKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxl
ZENoZWNrKGV4ZWMsIGdsb2JhbE9iamVjdCwgYXJncywgZnVuY3Rpb25OYW1lLCBzb3VyY2VPcmln
aW4sIHNvdXJjZVVSTCwgcG9zaXRpb24sIC0xLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUsIG5l
d1RhcmdldCkpOwogfQogCkBAIC0xNDUsOSArMTQ3LDEwIEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RG
dW5jdGlvblNraXBwaW5nRXZhbEUKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2Uo
cHJvZ3JhbSwgc291cmNlT3JpZ2luLCBVUkwoeyB9LCBzb3VyY2VVUkwpLCBwb3NpdGlvbik7CiAg
ICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25O
YW1lLCAqZXhlYywgc291cmNlLCBleGNlcHRpb24sIG92ZXJyaWRlTGluZU51bWJlciwgZnVuY3Rp
b25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7Ci0gICAgaWYgKCFmdW5jdGlvbikg
eworICAgIGlmIChVTkxJS0VMWSghZnVuY3Rpb24pKSB7CiAgICAgICAgIEFTU0VSVChleGNlcHRp
b24pOwotICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGV4Y2VwdGlv
bik7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBleGNlcHRpb24pOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFs
UnVsZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IEFuZHkgVmFuV2Fnb25lciAoYW5keUB2
YW53YWdvbmVyLmZhbWlseSkKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCw4
ICsyMDEsMTAgQEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogCiAg
ICAgLy8gMTMuNC40IEludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyAo
KQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTQwMi8jc2VjLWludGwucGx1cmFs
cnVsZXMucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwotICAgIGlmICghbV9pbml0aWFsaXplZFBs
dXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAi
SW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoIW1faW5pdGlhbGl6ZWRQbHVyYWxSdWxlcykpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoJmV4ZWMsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0
aWFsaXplZCBhcyBhIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQogCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmZXhl
Yyk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUs
IGpzTm9udHJpdmlhbFN0cmluZygmZXhlYywgbV9sb2NhbGUpKTsKQEAgLTIxNyw4ICsyMjAsMTAg
QEAgSlNPYmplY3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpbwogI2lmIEhBVkUoSUNV
X1BMVVJBTFJVTEVTX0tFWVdPUkRTKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLmpzQ2FsbGVlKCktPmdsb2JhbE9iamVjdCh2bSk7CiAgICAgSlNBcnJheSogY2F0ZWdv
cmllcyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDAp
OwotICAgIGlmICghY2F0ZWdvcmllcykKLSAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1vcnlF
cnJvcigmZXhlYywgc2NvcGUpOworICAgIGlmIChVTkxJS0VMWSghY2F0ZWdvcmllcykpIHsKKyAg
ICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKCZleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8ga2V5d29yZHMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBVRW51
bWVyYXRpb25EZWxldGVyPih1cGxydWxlc19nZXRLZXl3b3JkcyhtX3BsdXJhbFJ1bGVzLmdldCgp
LCAmc3RhdHVzKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEFzc2VtYmx5SGVscGVyczsKIGNsYXNzIEpTQmlnSW50OworY2xhc3Mg
RXhjZXB0aW9uOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgSlNWYWx1
ZVNvdXJjZTsKQEAgLTE4Myw2ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgSlNWYWx1ZShKU0ZhbHNl
VGFnKTsKICAgICBKU1ZhbHVlKEpTQ2VsbCogcHRyKTsKICAgICBKU1ZhbHVlKGNvbnN0IEpTQ2Vs
bCogcHRyKTsKKyAgICBKU1ZhbHVlKEV4Y2VwdGlvbiogcHRyKTsKIAogICAgIC8vIE51bWJlcnMK
ICAgICBKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBkb3VibGUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCShyZXZpc2lv
biAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ2F0
Y2hTY29wZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCkBAIC0xODUsNiArMTg2LDExIEBAIGlubGluZSBK
U1ZhbHVlIEpTVmFsdWU6OmRlY29kZShFbmNvZGVkSlMKICAgICByZXR1cm4gdjsKIH0KIAoraW5s
aW5lIEpTVmFsdWU6OkpTVmFsdWUoRXhjZXB0aW9uKiBleGNlcHRpb24pCisgICAgOiBKU1ZhbHVl
KHN0YXRpY19jYXN0PEpTQ2VsbCo+KGV4Y2VwdGlvbikpCit7Cit9CisKICNpZiBVU0UoSlNWQUxV
RTMyXzY0KQogaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoKQogewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDYXN0LmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMywx
MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUbywgdHlwZW5hbWUgRnJvbT4KIGlubGluZSBUbyBqc0Nh
c3QoRnJvbSogZnJvbSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYmFzZV9vZjxKU0Nl
bGwsIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VG8+Ojp0eXBlPjo6dmFsdWUgJiYgc3Rk
Ojppc19iYXNlX29mPEpTQ2VsbCwgdHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxGcm9tPjo6
dHlwZT46OnZhbHVlLCAiSlMgY2FzdGluZyBleHBlY3RzIHRoYXQgdGhlIHR5cGVzIHlvdSBhcmUg
Y2FzdGluZyB0by9mcm9tIGFyZSBzdWJjbGFzc2VzIG9mIEpTQ2VsbCIpOworICAgIGlmICghKCFm
cm9tIHx8IGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6dm0oKSwgc3RkOjpy
ZW1vdmVfcG9pbnRlcjxUbz46OnR5cGU6OmluZm8oKSkpKSB7CisgICAgICAgIGRhdGFMb2dMbigi
ICAgZnJvbSAiLCBSYXdQb2ludGVyKGZyb20pKTsKKyAgICAgICAgaWYgKGZyb20pCisgICAgICAg
ICAgICBkYXRhTG9nTG4oIiAgIGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoKmZyb20tPkpTQ2VsbDo6
dm0oKSwgc3RkOjpyZW1vdmVfcG9pbnRlcjxUbz46OnR5cGU6OmluZm8oKSkgIiwgZnJvbS0+SlND
ZWxsOjppbmhlcml0cygqZnJvbS0+SlNDZWxsOjp2bSgpLCBzdGQ6OnJlbW92ZV9wb2ludGVyPFRv
Pjo6dHlwZTo6aW5mbygpKSk7CisKKyAgICB9CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oIWZyb20gfHwgZnJvbS0+SlNDZWxsOjppbmhlcml0cygqZnJvbS0+SlNDZWxsOjp2
bSgpLCBzdGQ6OnJlbW92ZV9wb2ludGVyPFRvPjo6dHlwZTo6aW5mbygpKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFRvPihmcm9tKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOCw4ICsxMjgsMTAgQEAgaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcgogICAgICAgICBpZiAobGVuZ3RoT3B0KQogICAg
ICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgaWYgKChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgJSBWaWV3Q2xhc3M6
OmVsZW1lbnRTaXplKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZXhl
Yywgc2NvcGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90
IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSJfcyk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoKGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxlbWVu
dFNpemUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgbGVuZ3RoID0gKGJ1ZmZlci0+Ynl0ZUxlbmd0
aCgpIC0gb2Zmc2V0KSAvIFZpZXdDbGFzczo6ZWxlbWVudFNpemU7CiAgICAgICAgIH0KIApAQCAt
MTM3LDggKzEzOSwxMCBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
CiAgICAgfQogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFsZW5ndGhPcHQpOwogICAgIAotICAgIGlm
IChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVm
ZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoVmlld0Ns
YXNzOjpUeXBlZEFycmF5U3RvcmFnZVR5cGUgPT0gVHlwZURhdGFWaWV3KSkgeworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUg
Zmlyc3QgYXJndW1lbnQuIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IAogICAgIC8vIEZvciBldmVyeXRoaW5nIGJ1dCBEYXRhVmlldywgd2UgYWxsb3cgY29uc3RydWN0
aW9uIHdpdGggYW55IG9mOgogICAgIC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEg
Y29weSBvZiB0aGUgb2YgdGhhdCBhcnJheS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU4LDYgKzU4LDcgQEAgaW5saW5lIEpTQ2Vs
bCogZ2V0SlNGdW5jdGlvbihKU1ZhbHVlIHZhbAogICAgIHJldHVybiAwOwogfQogCitjbGFzcyBF
eGNlcHRpb247CiBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOwog
Y2xhc3MgSlNGdW5jdGlvbjsKQEAgLTcwLDcgKzcxLDcgQEAgY2xhc3MgVGhyb3dTY29wZTsKIHN0
cnVjdCBIYXNoVGFibGU7CiBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWU7CiAKLUpTX0VYUE9SVF9QUklW
QVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9y
KEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKIGV4dGVybiBKU19FWFBP
UlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3BlcnR5
RGVmaW5lRXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRFIGNv
bnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3OCw4ICs3NzgsMTAgQEAgSlNP
YmplY3QqIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdAogCiAgICAgYm9vbCBzdWNjZXNz
ID0gc2V0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZXhlYywgdm0sIG9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYg
KFVOTElLRUxZKCFzdWNjZXNzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9z
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCiAgICAgcmV0dXJuIG9iamVjdDsK
IH0KQEAgLTgwOSw4ICs4MTEsMTAgQEAgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXpl
KEV4ZWNTdAogCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5
TGV2ZWw6OkZyb3plbj4oZXhlYywgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7Ci0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZXhlYywgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4g
T2JqZWN0LmZyZWV6ZSJfcyk7CisgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgeworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgIlVuYWJsZSB0byBwcmV2ZW50IGV4dGVuc2lv
biBpbiBPYmplY3QuZnJlZXplIl9zKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQog
ICAgIHJldHVybiBvYmplY3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDI0MjU5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTEyMSw3ICsxMjEsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmluaXRpYWxpemVHCiAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBsZXhpY2FsRGVjbGFy
YXRpb25zKSB7CiAgICAgICAgICAgICAvLyBUaGUgRVM2IHNwZWMgc2F5cyB0aGF0IFJlc3RyaWN0
ZWRHbG9iYWxQcm9wZXJ0eSBjYW4ndCBiZSBzaGFkb3dlZC4KICAgICAgICAgICAgIEdsb2JhbFBy
b3BlcnR5TG9va1VwU3RhdHVzIHN0YXR1cyA9IGhhc1Jlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0eShl
eGVjLCBnbG9iYWxPYmplY3QsIGVudHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBudWxscHRyKTsKICAgICAgICAg
ICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgICAgICAgICBjYXNlIEdsb2JhbFByb3BlcnR5TG9v
a1VwU3RhdHVzOjpOb25Db25maWd1cmFibGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFy
aWFibGUgdGhhdCBzaGFkb3dzIGEgZ2xvYmFsIHByb3BlcnR5OiAnIiwgU3RyaW5nKGVudHJ5Lmtl
eS5nZXQoKSksICInIikpOwpAQCAtMTM4LDcgKzEzOCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6aW5pdGlhbGl6ZUcKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYm9vbCBo
YXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVydHkoZXhlYywg
ZW50cnkua2V5LmdldCgpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgdGhyb3dTY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5
KSB7CiAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKGVudHJ5LnZhbHVlLmlzQ29uc3QoKSAm
JiAhdm0uZ2xvYmFsQ29uc3RSZWRlY2xhcmF0aW9uU2hvdWxkVGhyb3coKSAmJiAhaXNTdHJpY3RN
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgYWxsb3cgImNvbnN0IiBk
dXBsaWNhdGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoaXMgc2V0dGluZy4KQEAgLTE1NSw3ICsxNTUs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVHCiAgICAgICAgIGlm
ICghZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiB2YXJpYWJsZURlY2xhcmF0aW9ucykgewogICAgICAgICAgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkgPSBnbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQtPmhhc1Byb3BlcnR5
KGV4ZWMsIGVudHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgIGlmIChoYXNQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFyaWFi
bGU6ICciLCBTdHJpbmcoZW50cnkua2V5LmdldCgpKSwgIiciKSk7CiAgICAgICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LTIwMDgsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlLCBJbmMuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIxMCw4ICsyMTAsMTAgQEAgc3RhdGljIEpT
T2JqZWN0KiByZWdFeHBDcmVhdGUoRXhlY1N0YXRlKgogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlZ0V4cCogcmVnRXhwID0gUmVnRXhwOjpjcmVhdGUodm0sIHBhdHRlcm4sIGZsYWdz
KTsKLSAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb24oZXhlYywgc2NvcGUsIHJlZ0V4cC0+ZXJyb3JUb1Rocm93KGV4ZWMpKTsKKyAgICBpZiAo
VU5MSUtFTFkoIXJlZ0V4cC0+aXNWYWxpZCgpKSkgeworICAgICAgICB0aHJvd0V4Y2VwdGlvbihl
eGVjLCBzY29wZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldFJlZ0V4cFN0
cnVjdHVyZShleGVjLCBnbG9iYWxPYmplY3QsIG5ld1RhcmdldCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CkBAIC0yNTAsOCArMjUyLDEwIEBAIEpTT2JqZWN0KiBj
b25zdHJ1Y3RSZWdFeHAoRXhlY1N0YXRlKiBleGUKICAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCByZWdFeHAtPnBh
dHRlcm4oKSwgZmxhZ3MpOwogCi0gICAgICAgICAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgcmVnRXhw
LT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFyZWdFeHAt
PmlzVmFsaWQoKSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29w
ZSwgcmVnRXhwLT5lcnJvclRvVGhyb3coZXhlYykpOworICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIFJlZ0V4
cE9iamVjdDo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNTIsNyArMjUyLDcgQEAgYm9vbCBTY3JpcHRF
eGVjdXRhYmxlOjpoYXNDbGVhcmFibGVDb2RlKAogfQogCiBDb2RlQmxvY2sqIFNjcmlwdEV4ZWN1
dGFibGU6Om5ld0NvZGVCbG9ja0ZvcigKLSAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQs
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBKU1Njb3BlKiBzY29wZSwgSlNPYmplY3QqJiBleGNlcHRp
b24pCisgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU0Z1bmN0aW9uKiBmdW5jdGlv
biwgSlNTY29wZSogc2NvcGUsIEV4Y2VwdGlvbiomIGV4Y2VwdGlvbikKIHsKICAgICBWTSogdm0g
PSBzY29wZS0+dm0oKTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KCp2bSk7CkBAIC00MDIsMTggKzQwMiwxOCBAQCBzdGF0aWMgdm9pZCBzZXR1cEpJVChWTSYgdm0s
IENvZGVCbG9jayogCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIFNjcmlwdEV4ZWN1dGFibGU6OnBy
ZXBhcmVGb3JFeGVjdXRpb25JbXBsKAorRXhjZXB0aW9uKiBTY3JpcHRFeGVjdXRhYmxlOjpwcmVw
YXJlRm9yRXhlY3V0aW9uSW1wbCgKICAgICBWTSYgdm0sIEpTRnVuY3Rpb24qIGZ1bmN0aW9uLCBK
U1Njb3BlKiBzY29wZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBDb2RlQmxvY2sqJiBy
ZXN1bHRDb2RlQmxvY2spCiB7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgRGVmZXJHQ0ZvckFXaGlsZSBkZWZlckdDKHZtLmhlYXApOwogCi0gICAg
aWYgKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkgeworICAgIGlmIChVTkxJ
S0VMWSh2bS5nZXRBbmRDbGVhckZhaWxOZXh0TmV3Q29kZUJsb2NrKCkpKSB7CiAgICAgICAgIGF1
dG8mIHN0YXRlID0gKnNjb3BlLT5nbG9iYWxPYmplY3Qodm0pLT5nbG9iYWxFeGVjKCk7CiAgICAg
ICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZUVycm9y
KCZzdGF0ZSwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7CiAgICAgfQogCi0gICAgSlNPYmplY3QqIGV4
Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBudWxscHRyOwog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbmV3Q29kZUJsb2NrRm9yKGtpbmQsIGZ1bmN0aW9u
LCBzY29wZSwgZXhjZXB0aW9uKTsKICAgICByZXN1bHRDb2RlQmxvY2sgPSBjb2RlQmxvY2s7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghIXRocm93U2NvcGUuZXhjZXB0aW9uKCkgPT0gIWNvZGVCbG9j
ayk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhl
Y3V0YWJsZS5oCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY3JpcHRFeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Miw3ICs5Miw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgaW5zdGFsbENvZGUoQ29kZUJsb2NrKik7CiAgICAgdm9pZCBp
bnN0YWxsQ29kZShWTSYsIENvZGVCbG9jayosIENvZGVUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIEpTT2JqZWN0KiYgZXhjZXB0aW9uKTsKKyAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKU0Z1bmN0
aW9uKiwgSlNTY29wZSosIEV4Y2VwdGlvbiomKTsKICAgICBDb2RlQmxvY2sqIG5ld1JlcGxhY2Vt
ZW50Q29kZUJsb2NrRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogCiAgICAgdm9pZCBjbGVh
ckNvZGUoSXNvQ2VsbFNldCYpOwpAQCAtMTIwLDExICsxMjAsMTEgQEAgcHVibGljOgogICAgIC8v
IHRvIHBvaW50IHRvIGl0LiBUaGlzIGZvcmNlcyBjYWxsZXJzIHRvIGhhdmUgYSBDb2RlQmxvY2sq
IGluIGEgcmVnaXN0ZXIgb3Igb24gdGhlIHN0YWNrIHRoYXQgd2lsbCBiZSBtYXJrZWQKICAgICAv
LyBieSBjb25zZXJ2YXRpdmUgR0MgaWYgYSBHQyBoYXBwZW5zIGFmdGVyIHdlIGNyZWF0ZSB0aGUg
Q29kZUJsb2NrLgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBFeGVjdXRhYmxlVHlwZT4KLSAgICBK
U09iamVjdCogcHJlcGFyZUZvckV4ZWN1dGlvbihWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYgcmVzdWx0Q29kZUJsb2NrKTsKKyAg
ICBFeGNlcHRpb24qIHByZXBhcmVGb3JFeGVjdXRpb24oVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29w
ZSosIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomIHJlc3VsdENvZGVCbG9jayk7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwotICAgIEpTT2Jq
ZWN0KiBwcmVwYXJlRm9yRXhlY3V0aW9uSW1wbChWTSYsIEpTRnVuY3Rpb24qLCBKU1Njb3BlKiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgQ29kZUJsb2NrKiYpOworICAgIEV4Y2VwdGlvbiogcHJl
cGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mLCBKU0Z1bmN0aW9uKiwgSlNTY29wZSosIENvZGVTcGVj
aWFsaXphdGlvbktpbmQsIENvZGVCbG9jayomKTsKIAogICAgIGJvb2wgaGFzQ2xlYXJhYmxlQ29k
ZShWTSYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJv
d1Njb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
aHJvd1Njb3BlLmNwcAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGhyb3dTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MCwxNSArNzAsMTUg
QEAgVGhyb3dTY29wZTo6flRocm93U2NvcGUoKQogICAgICAgICBzaW11bGF0ZVRocm93KCk7CiB9
CiAKLXZvaWQgVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb24qIGV4Y2VwdGlvbikKK0V4Y2VwdGlvbiogVGhyb3dTY29wZTo6dGhyb3dFeGNlcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb24qIGV4Y2VwdGlvbikKIHsKICAgICBpZiAobV92bS5l
eGNlcHRpb24oKSAmJiBtX3ZtLmV4Y2VwdGlvbigpICE9IGV4Y2VwdGlvbikKICAgICAgICAgbV92
bS52ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBt
X2xvY2F0aW9uKTsKICAgICAKLSAgICBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7CisgICAgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0K
IAotSlNWYWx1ZSBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgZXJyb3IpCitFeGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93RXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKIHsKICAgICBpZiAoIWVycm9yLmlzQ2VsbCgpIHx8
ICFqc0R5bmFtaWNDYXN0PEV4Y2VwdGlvbio+KG1fdm0sIGVycm9yLmFzQ2VsbCgpKSkKICAgICAg
ICAgbV92bS52ZXJpZnlFeGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRl
cHRoLCBtX2xvY2F0aW9uKTsKQEAgLTg2LDExICs4Niw5IEBAIEpTVmFsdWUgVGhyb3dTY29wZTo6
dGhyb3dFeGNlcHRpb24oRXhlY1MKICAgICByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVj
LCBlcnJvcik7CiB9CiAKLUpTT2JqZWN0KiBUaHJvd1Njb3BlOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCitFeGNlcHRpb24qIFRocm93U2NvcGU6OnRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikKIHsKLSAgICBpZiAoIWpz
RHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4obV92bSwgb2JqKSkKLSAgICAgICAgbV92bS52ZXJpZnlF
eGNlcHRpb25DaGVja05lZWRJc1NhdGlzZmllZChtX3JlY3Vyc2lvbkRlcHRoLCBtX2xvY2F0aW9u
KTsKLSAgICAKKyAgICBtX3ZtLnZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVlZElzU2F0aXNmaWVkKG1f
cmVjdXJzaW9uRGVwdGgsIG1fbG9jYXRpb24pOwogICAgIHJldHVybiBtX3ZtLnRocm93RXhjZXB0
aW9uKGV4ZWMsIG9iaik7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rocm93U2NvcGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UaHJvd1Njb3BlLmgJKHJldmlzaW9uIDI0MjU5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Rocm93U2NvcGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQCBw
dWJsaWM6CiAgICAgVGhyb3dTY29wZShjb25zdCBUaHJvd1Njb3BlJikgPSBkZWxldGU7CiAgICAg
VGhyb3dTY29wZShUaHJvd1Njb3BlJiYpID0gZGVmYXVsdDsKIAotICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0aW9uKik7Ci0gICAgSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU1ZhbHVl
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogdGhyb3dFeGNlcHRpb24oRXhlY1N0
YXRlKiwgSlNPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEV4Y2VwdGlvbiopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09i
amVjdCopOwogCiAgICAgdm9pZCByZWxlYXNlKCkgeyBtX2lzUmVsZWFzZWQgPSB0cnVlOyB9CiAK
QEAgLTc3LDkgKzc3LDkgQEAgcHVibGljOgogICAgIFRocm93U2NvcGUoY29uc3QgVGhyb3dTY29w
ZSYpID0gZGVsZXRlOwogICAgIFRocm93U2NvcGUoVGhyb3dTY29wZSYmKSA9IGRlZmF1bHQ7CiAK
LSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBF
eGNlcHRpb24qIGV4Y2VwdGlvbikgeyBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlv
bik7IH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlKSB7IHJldHVybiBtX3ZtLnRocm93RXhjZXB0aW9uKGV4ZWMs
IHZhbHVlKTsgfQotICAgIEFMV0FZU19JTkxJTkUgSlNPYmplY3QqIHRocm93RXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlv
bihleGVjLCBvYmopOyB9CisgICAgQUxXQVlTX0lOTElORSBFeGNlcHRpb24qIHRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgcmV0dXJuIG1fdm0u
dGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsgfQorICAgIEFMV0FZU19JTkxJTkUgRXhj
ZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZXhlYywgdmFsdWUpOyB9CisgICAgQUxXQVlTX0lO
TElORSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iaikgeyByZXR1cm4gbV92bS50aHJvd0V4Y2VwdGlvbihleGVjLCBvYmopOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcmVsZWFzZSgpIHsgfQogfTsKQEAgLTg5LDE3ICs4OSwxNyBAQCBw
dWJsaWM6CiAKICNlbmRpZiAvLyBFTkFCTEUoRVhDRVBUSU9OX1NDT1BFX1ZFUklGSUNBVElPTikK
IAotQUxXQVlTX0lOTElORSB2b2lkIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhy
b3dTY29wZSYgc2NvcGUsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKQorQUxXQVlTX0lOTElORSBFeGNl
cHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUs
IEV4Y2VwdGlvbiogZXhjZXB0aW9uKQogewotICAgIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSlNWYWx1ZSB0aHJvd0V4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIHZhbHVlKQorQUxXQVlTX0lOTElO
RSBFeGNlcHRpb24qIHRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYg
c2NvcGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgcmV0dXJuIHNjb3BlLnRocm93RXhjZXB0aW9u
KGV4ZWMsIHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElORSBKU09iamVjdCogdGhyb3dFeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgSlNPYmplY3QqIG9iaikKK0FM
V0FZU19JTkxJTkUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIFRo
cm93U2NvcGUmIHNjb3BlLCBKU09iamVjdCogb2JqKQogewogICAgIHJldHVybiBzY29wZS50aHJv
d0V4Y2VwdGlvbihleGVjLCBvYmopOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODExLDcgKzgxMSw3IEBAIHZvaWQgVk06OmNs
ZWFyU291cmNlUHJvdmlkZXJDYWNoZXMoKQogICAgIHNvdXJjZVByb3ZpZGVyQ2FjaGVNYXAuY2xl
YXIoKTsKIH0KIAotdm9pZCBWTTo6dGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNl
cHRpb24qIGV4Y2VwdGlvbikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgRXhjZXB0aW9uKiBleGNlcHRpb24pCiB7CiAgICAgQVNTRVJUKGV4ZWMgPT0gdG9w
Q2FsbEZyYW1lIHx8IGV4ZWMtPmlzR2xvYmFsRXhlYygpIHx8IGV4ZWMgPT0gZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5jYWxsRnJhbWVBdERlYnVnZ2VyRW50cnkoKSk7CiAgICAgQ2FsbEZy
YW1lKiB0aHJvd09yaWdpbkZyYW1lID0gZXhlYy0+aXNHbG9iYWxFeGVjKCkgPyBleGVjIDogdG9w
SlNDYWxsRnJhbWUoKTsKQEAgLTgzMCwyMiArODMwLDIyIEBAIHZvaWQgVk06OnRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywKICAgICBtX25hdGl2ZVN0YWNrVHJhY2VPZkxhc3RUaHJvdyA9
IFN0YWNrVHJhY2U6OmNhcHR1cmVTdGFja1RyYWNlKE9wdGlvbnM6OnVuZXhwZWN0ZWRFeGNlcHRp
b25TdGFja1RyYWNlTGltaXQoKSk7CiAgICAgbV90aHJvd2luZ1RocmVhZCA9ICZUaHJlYWQ6OmN1
cnJlbnQoKTsKICNlbmRpZgorICAgIHJldHVybiBleGNlcHRpb247CiB9CiAKLUpTVmFsdWUgVk06
OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJvd25WYWx1ZSkKK0V4
Y2VwdGlvbiogVk06OnRocm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aHJv
d25WYWx1ZSkKIHsKICAgICBWTSYgdm0gPSAqdGhpczsKICAgICBFeGNlcHRpb24qIGV4Y2VwdGlv
biA9IGpzRHluYW1pY0Nhc3Q8RXhjZXB0aW9uKj4odm0sIHRocm93blZhbHVlKTsKICAgICBpZiAo
IWV4Y2VwdGlvbikKICAgICAgICAgZXhjZXB0aW9uID0gRXhjZXB0aW9uOjpjcmVhdGUoKnRoaXMs
IHRocm93blZhbHVlKTsKIAotICAgIHRocm93RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIEpTVmFsdWUoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24o
ZXhlYywgZXhjZXB0aW9uKTsKIH0KIAotSlNPYmplY3QqIFZNOjp0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBlcnJvcikKK0V4Y2VwdGlvbiogVk06OnRocm93RXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGVycm9yKQogewotICAgIHJldHVybiBhc09i
amVjdCh0aHJvd0V4Y2VwdGlvbihleGVjLCBKU1ZhbHVlKGVycm9yKSkpOworICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihleGVjLCBKU1ZhbHVlKGVycm9yKSk7CiB9CiAKIHZvaWQgVk06OnNldFN0
YWNrUG9pbnRlckF0Vk1FbnRyeSh2b2lkKiBzcCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtOTQ2LDkgKzk0Niw5IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1NhZmVUb1JlY3Vyc2VTb2Z0Q0xvb3AoKSBjb25zdDsKICNlbmRpZiAvLyBFTkFCTEUo
Q19MT09QKQogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCB0aHJvd0V4Y2VwdGlvbihFeGVj
U3RhdGUqLCBFeGNlcHRpb24qKTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93
RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwotICAgIEpTX0VYUE9SVF9QUklWQVRFIEpT
T2JqZWN0KiB0aHJvd0V4Y2VwdGlvbihFeGVjU3RhdGUqLCBKU09iamVjdCopOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dFeGNlcHRpb24oRXhlY1N0YXRlKiwgRXhjZXB0
aW9uKik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0V4Y2VwdGlvbihF
eGVjU3RhdGUqLCBKU1ZhbHVlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93RXhjZXB0aW9uKEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kik7CiAKICNpZiBFTkFCTEUoRVhDRVBU
SU9OX1NDT1BFX1ZFUklGSUNBVElPTikKICAgICB2b2lkIHZlcmlmeUV4Y2VwdGlvbkNoZWNrTmVl
ZElzU2F0aXNmaWVkKHVuc2lnbmVkIGRlcHRoLCBFeGNlcHRpb25FdmVudExvY2F0aW9uJik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDI1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0wMy0wNiAgTWFyayBMYW0g
IDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRXhjZXB0aW9uIGlzIGEgSlNDZWxsLCBu
b3QgYSBKU09iamVjdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NTM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lmg6CisgICAgICAgICogYnJpZGdlL29i
amMvb2JqY191dGlsaXR5Lm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6dGhyb3dFcnJvcik6
CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Qmlu
ZGluZ3M6OlJ1bnRpbWVPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKToKKyAgICAgICAg
KiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKwogMjAxOS0wMy0wNiAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogRE9NIERlYnVnZ2Vy
OiBldmVudCBicmVha3BvaW50cyBzdGlsbCBmaXJlIHdoZW4gYnJlYWtwb2ludHMgYXJlIGRpc2Fi
bGVkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJKHJldmlz
aW9uIDI0MjU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIFJ1bnRpbWVPYmplY3Q6Omdl
dE93blByb3BlcnR5TmFtZXMoCiAgICAgaW5zdGFuY2UtPmVuZCgpOwogfQogCi1KU09iamVjdCog
UnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBU
aHJvd1Njb3BlJiBzY29wZSkKK0V4Y2VwdGlvbiogUnVudGltZU9iamVjdDo6dGhyb3dJbnZhbGlk
QWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBmcm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVjdC5oCShyZXZpc2lvbiAy
NDI1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAKICAgICBJbnN0YW5jZSogZ2V0SW50
ZXJuYWxJbnN0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2UuZ2V0KCk7IH0KIAotICAg
IHN0YXRpYyBKU09iamVjdCogdGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiwgVGhy
b3dTY29wZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb24qIHRocm93SW52YWxpZEFjY2Vzc0Vycm9y
KEV4ZWNTdGF0ZSosIFRocm93U2NvcGUmKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5LmgJKHJldmlzaW9uIDI0MjU5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzQsNyArNzQsNyBAQCBKU1ZhbHVlIGNvbnZlcnROU1N0cmluZ1RvU3RyaW5nKEV4
ZWNTdGF0CiBKU1ZhbHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVlKEV4ZWNTdGF0ZSosIHZvaWQq
IGJ1ZmZlciwgT2JqY1ZhbHVlVHlwZSwgUm9vdE9iamVjdCopOwogT2JqY1ZhbHVlVHlwZSBvYmpj
VmFsdWVUeXBlRm9yVHlwZShjb25zdCBjaGFyICp0eXBlKTsKIAotSlNPYmplY3QgKnRocm93RXJy
b3IoRXhlY1N0YXRlKiwgVGhyb3dTY29wZSYsIE5TU3RyaW5nICptZXNzYWdlKTsKK0V4Y2VwdGlv
biAqdGhyb3dFcnJvcihFeGVjU3RhdGUqLCBUaHJvd1Njb3BlJiwgTlNTdHJpbmcgKm1lc3NhZ2Up
OwogCiB9IC8vIG5hbWVzcGFjZSBCaW5kaW5ncwogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tCShyZXZpc2lvbiAyNDI1
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3V0aWxpdHkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTgg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0y
MDE5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTMxMywxMSArMzEzLDEwIEBAIE9iamNWYWx1ZVR5cGUgb2JqY1ZhbHVl
VHlwZUZvclR5cGUoY29uc3QKICAgICByZXR1cm4gb2JqY1ZhbHVlVHlwZTsKIH0KIAotSlNPYmpl
Y3QgKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBUaHJvd1Njb3BlJiBzY29wZSwgTlNTdHJp
bmcgKm1lc3NhZ2UpCitFeGNlcHRpb24gKnRocm93RXJyb3IoRXhlY1N0YXRlICpleGVjLCBUaHJv
d1Njb3BlJiBzY29wZSwgTlNTdHJpbmcgKm1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2Up
OwotICAgIEpTT2JqZWN0ICplcnJvciA9IHRocm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBKU0M6
OmNyZWF0ZUVycm9yKGV4ZWMsIFN0cmluZyhtZXNzYWdlKSkpOwotICAgIHJldHVybiBlcnJvcjsK
KyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIEpTQzo6Y3JlYXRlRXJyb3Io
ZXhlYywgU3RyaW5nKG1lc3NhZ2UpKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NDI1OTEpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE5LTAzLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFeGNlcHRpb24gaXMgYSBKU0NlbGwsIG5vdCBhIEpTT2JqZWN0LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MzkyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6
OnRocm93SW52YWxpZEFjY2Vzc0Vycm9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvSlNOUE9iamVjdC5oOgorCiAyMDE5LTAzLTA2ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gYXR0ZW1wdGluZyB0byBj
aGFuZ2UgaW5wdXQgdHlwZSB3aGlsZSBkaXNtaXNzaW5nIGRhdGFsaXN0IHN1Z2dlc3Rpb25zCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9KU05QT2JqZWN0LmNwcAkocmV2aXNpb24gMjQyNTkxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MjMsNyArNTIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNOUE9iamVjdDo6bWV0aG9kR2V0
dGVyKAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNOUE1ldGhvZDo6Y3JlYXRlKGV4ZWMs
IHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpLCBucElk
ZW50aWZpZXIpKTsKIH0KIAotSlNPYmplY3QqIEpTTlBPYmplY3Q6OnRocm93SW52YWxpZEFjY2Vz
c0Vycm9yKEV4ZWNTdGF0ZSogZXhlYywgVGhyb3dTY29wZSYgc2NvcGUpCitKU0M6OkV4Y2VwdGlv
biogSlNOUE9iamVjdDo6dGhyb3dJbnZhbGlkQWNjZXNzRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBU
aHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZXhlYywgc2Nv
cGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJUcnlpbmcgdG8gYWNjZXNzIG9iamVjdCBm
cm9tIGRlc3Ryb3llZCBwbHVnLWluLiIpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHJldmlzaW9u
IDI0MjU5MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pT
TlBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw3ICsxMDQsNyBAQCBwcml2YXRlOgog
CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgcHJvcGVydHlHZXR0ZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAgICAgc3Rh
dGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgbWV0aG9kR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiB0aHJvd0ludmFsaWRBY2Nlc3NFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6VGhy
b3dTY29wZSYpOworICAgIHN0YXRpYyBKU0M6OkV4Y2VwdGlvbiogdGhyb3dJbnZhbGlkQWNjZXNz
RXJyb3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIE5QUnVudGlt
ZU9iamVjdE1hcCogbV9vYmplY3RNYXA7CiAgICAgTlBPYmplY3QqIG1fbnBPYmplY3Q7Cg==
</data>
<flag name="review"
          id="380410"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>