<?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>146313</bug_id>
          
          <creation_ts>2015-06-25 05:30:03 -0700</creation_ts>
          <short_desc>WebRTC: Update the MediaStream API</short_desc>
          <delta_ts>2015-06-29 12:54:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143211</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Bergkvist">adam.bergkvist</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>mdaiter</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104634</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-25 05:30:03 -0700</bug_when>
    <thetext>Update the MediaStream API to match the latest Media Capture and Streams specification [1].

In WebKit, the MediaStream API is mainly implemented by MediaStream and MediaStreamTrack with their corresponding platform representations, and RealtimeMediaSource.

[1] http://w3c.github.io/mediacapture-main/archives/20150523/getusermedia.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105268</commentid>
    <comment_count>1</comment_count>
      <attachid>255723</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-28 07:09:29 -0700</bug_when>
    <thetext>Created attachment 255723
Proposed patch

Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105285</commentid>
    <comment_count>2</comment_count>
      <attachid>255723</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2015-06-28 10:45:58 -0700</bug_when>
    <thetext>Comment on attachment 255723
Proposed patch

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

&gt; Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:90
&gt; +    Vector&lt;RefPtr&lt;MediaStreamTrackPrivate&gt;&gt; tracks;
&gt; +    tracks.reserveCapacity(m_trackSet.size());
&gt;  
&gt; -    unsigned providedTracksSize = audioPrivateTracks.size() + videoPrivateTracks.size();
&gt; -    unsigned tracksSize = m_audioPrivateTracks.size() + m_videoPrivateTracks.size();
&gt; +    for (auto&amp; track : m_trackSet.values())
&gt; +        tracks.append(track);
&gt;  
&gt; -    if (providedTracksSize &gt; 0 &amp;&amp; tracksSize &gt; 0)
&gt; -        m_isActive = true;
&gt; +    return tracks;

Nit: you could use copyValuesToVector here.

&gt; Source/WebCore/platform/mediastream/MediaStreamPrivate.h:65
&gt; +    enum NotifyClientOption { NotifyClient, DontNotifyClient };

This should be &quot;enum class&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105382</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-29 07:25:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 255723 [details]
&gt; Proposed patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255723&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamPrivate.cpp:90
&gt; &gt; +    Vector&lt;RefPtr&lt;MediaStreamTrackPrivate&gt;&gt; tracks;
&gt; &gt; +    tracks.reserveCapacity(m_trackSet.size());
&gt; &gt;  
&gt; &gt; -    unsigned providedTracksSize = audioPrivateTracks.size() + videoPrivateTracks.size();
&gt; &gt; -    unsigned tracksSize = m_audioPrivateTracks.size() + m_videoPrivateTracks.size();
&gt; &gt; +    for (auto&amp; track : m_trackSet.values())
&gt; &gt; +        tracks.append(track);
&gt; &gt;  
&gt; &gt; -    if (providedTracksSize &gt; 0 &amp;&amp; tracksSize &gt; 0)
&gt; &gt; -        m_isActive = true;
&gt; &gt; +    return tracks;
&gt; 
&gt; Nit: you could use copyValuesToVector here.

Fixed.

&gt; &gt; Source/WebCore/platform/mediastream/MediaStreamPrivate.h:65
&gt; &gt; +    enum NotifyClientOption { NotifyClient, DontNotifyClient };
&gt; 
&gt; This should be &quot;enum class&quot;.

Fixed (fixed other enum as well)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105383</commentid>
    <comment_count>4</comment_count>
      <attachid>255747</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-29 07:27:06 -0700</bug_when>
    <thetext>Created attachment 255747
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105384</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-29 07:28:10 -0700</bug_when>
    <thetext>Thanks Eric for reviewing. I&apos;ll let the EWS complete before setting cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105436</commentid>
    <comment_count>6</comment_count>
      <attachid>255764</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2015-06-29 11:39:10 -0700</bug_when>
    <thetext>Created attachment 255764
Patch for landing

With reviewer name added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105466</commentid>
    <comment_count>7</comment_count>
      <attachid>255764</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-29 12:54:46 -0700</bug_when>
    <thetext>Comment on attachment 255764
Patch for landing

Clearing flags on attachment: 255764

Committed r186081: &lt;http://trac.webkit.org/changeset/186081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105467</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-29 12:54:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255723</attachid>
            <date>2015-06-28 07:09:29 -0700</date>
            <delta_ts>2015-06-29 07:27:06 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>update-mediastream-api_0.patch</filename>
            <type>text/plain</type>
            <size>131812</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MTUzZWVmLi5iMDg0MmNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTUtMDYt
MjggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjMxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgc3RhdHVzOiAzIGFkZGVkLCA4IGV4
aXN0aW5nIGVuYWJsZWQgKHNvbWUgdXBkYXRlZCkgYW5kIDEgcmVtb3ZlZC4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS1hZGQtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0
bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtdHJhY2tzLXRv
LWluYWN0aXZlLXN0cmVhbS5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tY2xvbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWNsb25lLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRo
LWVuZGVkLXRyYWNrcy5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tZ2V0VHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLWdldFRyYWNrcy5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1jbG9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LWdldFNvdXJjZXMuaHRtbDogUmVtb3ZlZC4gVGVzdGVkIG1ldGhvZCByZW1vdmVkIGZyb20gc3Bl
Yy4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2sta2luZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay1raW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay1zdG9wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLXN0b3AuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNv
bnN0cnVjdG9yLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9yZXNvdXJjZXMvZ2V0
VXNlck1lZGlhLWhlbHBlci5qczogQWRkZWQuCisgICAgICAgICgucmVqZWN0KToKKyAgICAgICAg
KGdldFVzZXJNZWRpYSk6CisgICAgICAgIChkZWZhdWx0UmVqZWN0T3JDYXRjaCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUtMDYtMjQgIERvdWcgUnVz
c2VsbCAgPGRfcnVzc2VsbEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVnIDE0NjE3NyAtIEFYOiBB
WE9iamVjdENhY2hlIHNob3VsZCB0cnkgdG8gdXNlIGFuIHVuaWdub3JlZCBhY2Nlc3NpYmlsaXR5
T2JqZWN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNzNhYzFmLi5mNzA0NDNiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTQ0LDEwICs0NCw2IEBAIHdlYmtpdC5vcmcvYi83MjY5OCBtZWRpYS9hdWRp
by1nYXJiYWdlLWNvbGxlY3QuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvNTM5OTAgZmFz
dC9mb3Jtcy9zZWFyY2gtZXZlbnQtZGVsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgTm8g
cG9ydCBpbiBXZWJLaXQgYWxyZWFkeSBzdXBwb3J0IGdldE1lZGlhU3RyZWFtLCBzbyB3ZSBhcmUg
c2tpcHBpbmcgdGhvc2UgZm9yIG5vdy4KLWZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29u
c3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0KLWZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tY2xvbmUuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTI2MTQyIGNz
czMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8xMjQ5MzIgbWVkaWEvdmlkZW8tc2l6ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRk
LWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0CmluZGV4IGQ2MjQ3MTAu
LmZmNzZmZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tYWRkLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dApA
QCAtNCw5ICs0LDIwIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBzdHJlYW0x
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtMi5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MQorKioqIGV4dHJhY3QgYXVkaW9UcmFjaworKioqIHN0b3AgYXVkaW9UcmFjawogUEFTUyBhdWRp
b1RyYWNrLnJlYWR5U3RhdGUgaXMgImVuZGVkIgotUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDIKKyoqKiBjb25zdHJ1Y3QgbmV3ICdlbXB0eScgc3RyZWFtMgorUEFTUyBz
dHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZh
bHNlCisqKiogYWRkIGVuZGVkIGF1ZGlvVHJhY2sgdG8gc3RyZWFtMgorKioqIHNjaGVkdWxlIGNv
bnRpbnVhdGlvbiBvZiB0ZXN0CisqKiogZXh0cmFjdCB2aWRlb1RyYWNrIChhbmQgdmVyaWZ5IGxp
dmVuZXNzKQorUEFTUyB2aWRlb1RyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCisqKiogYWRkIGxp
dmUgdmlkZW9UcmFjayB0byBzdHJlYW0yCisqKiogc3RyZWFtMiBpcyBhY3RpdmUgYWdhaW4KK1BB
U1Mgc3RyZWFtMi5hY3RpdmUgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCmluZGV4IDFjZDQ5
ZDYuLjRmOGNiZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCkBAIC0yLDI3ICsyLDEz
IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dD4KIAogICAgICAgICAgICAgdmFyIHN0cmVhbTE7CiAgICAgICAgICAgICB2YXIgc3RyZWFtMjsK
ICAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJv
cigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdl
bmVyYXRpb24gZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFy
eSwgY2FsbGJhY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBj
YWxsYmFjaywgZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlv
biA6JyArIGUpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKIAog
ICAgICAgICAgICAgZnVuY3Rpb24gdHJ5QWRkVHJhY2soc3RyZWFtLCB0cmFjaykKICAgICAgICAg
ICAgIHsKQEAgLTM0LDM1ICsyMCw2MiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkTm90RmlyZUFjdGl2ZSgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic3RyZWFtMiBzaG91bGQgbm90IGJl
Y29tZSBhY3RpdmUgaWYgYW4gZW5kZWQgdHJhY2sgaXMgYWRkZWQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkRmlyZUFjdGl2ZSgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBzdHJlYW0yIGlzIGFjdGl2ZSBhZ2FpbiIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFjdGl2ZScsICd0cnVlJyk7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIioqKiBleHRyYWN0IHZpZGVvVHJhY2sgKGFuZCB2ZXJpZnkgbGl2ZW5lc3MpIik7Cisg
ICAgICAgICAgICAgICAgdmlkZW9UcmFjayA9IHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKVswXTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlT
dGF0ZScsICdsaXZlJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGFkZCBsaXZlIHZp
ZGVvVHJhY2sgdG8gc3RyZWFtMiIpOworICAgICAgICAgICAgICAgIHN0cmVhbTIub25hY3RpdmUg
PSBzaG91bGRGaXJlQWN0aXZlOworICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIs
IHZpZGVvVHJhY2spOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBjcmVh
dGVTdHJlYW1BbmRBZGRUcmFja3MoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiKioqIGV4dHJhY3QgYXVkaW9UcmFjayIpOwogICAgICAgICAgICAgICAg
IGF1ZGlvVHJhY2sgPSBzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgICAgICAgICAg
ICAgZGVidWcoIioqKiBzdG9wIGF1ZGlvVHJhY2siKTsKICAgICAgICAgICAgICAgICBhdWRpb1Ry
YWNrLnN0b3AoKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2F1ZGlv
VHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwotICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNr
KHN0cmVhbTIsIGF1ZGlvVHJhY2spOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0y
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzInKTsKIAotICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogY29u
c3RydWN0IG5ldyAnZW1wdHknIHN0cmVhbTIiKQorICAgICAgICAgICAgICAgIHN0cmVhbTIgPSBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFt
Mi5nZXRUcmFja3MoKS5sZW5ndGgnLCAnMCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdz
dHJlYW0yLmFjdGl2ZScsICdmYWxzZScpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0yKHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RyZWFtMiA9IHM7Ci0gICAg
ICAgICAgICAgICAgY3JlYXRlU3RyZWFtQW5kQWRkVHJhY2tzKCk7CisgICAgICAgICAgICAgICAg
ZGVidWcoIioqKiBhZGQgZW5kZWQgYXVkaW9UcmFjayB0byBzdHJlYW0yIik7CisgICAgICAgICAg
ICAgICAgc3RyZWFtMi5vbmFjdGl2ZSA9IHNob3VsZE5vdEZpcmVBY3RpdmU7CisgICAgICAgICAg
ICAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMiwgYXVkaW9UcmFjayk7CisKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiKioqIHNjaGVkdWxlIGNvbnRpbnVhdGlvbiBvZiB0ZXN0Iik7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChjb250aW51ZVRlc3QpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0ocykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHJlYW0xID0gczsKICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtMik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgICAgIGNyZWF0ZVN0cmVhbUFu
ZEFkZFRyYWNrcygpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFy
dE1lZGlhKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVz
dCBhZGRpbmcgdHJhY2tzIHRvIGluYWN0aXZlIE1lZGlhU3RyZWFtLiIpOwotICAgICAgICAgICAg
ICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTEpOyAK
KyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGIyZTFkMDUuLmU4OGMyZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3Mt
ZXhwZWN0ZWQudHh0CkBAIC00NCwxMyArNDQsMjQgQEAgUEFTUyBzdHJlYW0xLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyAyCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMgogCi0qKiogcmVt
b3ZlIGFsbCB0cmFja3MsIHN0cmVhbS5lbmRlZCBzaG91bGQgcmV0dXJuIHRydWUKKyoqKiByZW1v
dmUgYWxsIHRyYWNrcywgc3RyZWFtIHdpbGwgYmVjb21lIGluYWN0aXZlCiBQQVNTIHN0cmVhbTIu
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMAogUEFTUyBzdHJlYW0yLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIGlzIDAKIAotKioqIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlbW92ZSBh
IHRyYWNrIGFmdGVyIHRoZSBzdHJlYW0gaGFzIGVuZGVkCi1QQVNTIHN0cmVhbTIucmVtb3ZlVHJh
Y2soYXVkaW9UcmFjaykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMS4KKyoqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIHRydWUgKHVu
dGlsIGV2ZW50IGlzIGZpcmVkKQorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyB0cnVlCisKIFN0cmVh
bTIgaXMgaW5hY3RpdmUuCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZhbHNlCisKKyoqKiBhZGQg
bm9uLWVuZGVkIHRyYWNrCitQQVNTIGF1ZGlvVHJhY2sucmVhZHlTdGF0ZSBpcyBub3QgImVuZGVk
IgorCisqKiogYWN0aXZlIGF0dHJpYnV0ZSBpcyBzdGlsbCBmYWxzZSAodW50aWwgZXZlbnQgaXMg
ZmlyZWQpCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZhbHNlCisKK1N0cmVhbTIgaXMgYWN0aXZl
LgorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbAppbmRl
eCBlZGU4ZTlmLi5lYzZjMGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sCkBAIC0y
LDYgKzIsNyBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPC9o
ZWFkPgogICAgIDxib2R5PgogICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KQEAgLTE0
LDIwICsxNSw2IEBACiAgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKICAgICAgICAgICAgIHZh
ciB2aWRlb1RyYWNrOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1
bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgICAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRp
YSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBm
dW5jdGlvbiB0cnlBZGRUcmFjayhzdHJlYW0sIHRyYWNrKSB7CiAgICAgICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmFkZFRyYWNrKHRyYWNrKTsKQEAgLTUxLDEz
ICszOCwyMSBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzaG91bGRG
aXJlQWN0aXZlKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJTdHJlYW0yIGlzIGFjdGl2ZS4i
KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPlN0cmVhbTIgaXMgYWN0aXZlLiIpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFjdGl2ZScsICd0cnVlJyk7CiAgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHNob3VsZEZpcmVJbkFjdGl2ZSgpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiU3Ry
ZWFtMiBpcyBpbmFjdGl2ZS4iKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiPGJyPlN0cmVhbTIgaXMgaW5hY3RpdmUuIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIuYWN0aXZlJywgJ2ZhbHNlJyk7CisKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiPGJyPioqKiBhZGQgbm9uLWVuZGVkIHRyYWNrIik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkTm90QmUoJ2F1ZGlvVHJhY2sucmVhZHlTdGF0ZScsICciZW5kZWQiJyk7Cisg
ICAgICAgICAgICAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMiwgYXVkaW9UcmFjayk7CisKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIGZhbHNl
ICh1bnRpbCBldmVudCBpcyBmaXJlZCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtMi5hY3RpdmUnLCAnZmFsc2UnKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZ290U3RyZWFtMihzKSB7CkBAIC0xMjQsMjIgKzExOSwyMiBAQAogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzInKTsKICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcs
ICcyJyk7CiAKLSAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiByZW1vdmUgYWxsIHRyYWNr
cywgc3RyZWFtLmVuZGVkIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICAgICAgICAgIGRl
YnVnKCI8YnI+KioqIHJlbW92ZSBhbGwgdHJhY2tzLCBzdHJlYW0gd2lsbCBiZWNvbWUgaW5hY3Rp
dmUiKTsKICAgICAgICAgICAgICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0yLCBzdHJlYW0yLmdl
dEF1ZGlvVHJhY2tzKClbMF0pOwogICAgICAgICAgICAgICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVh
bTIsIHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKVswXSk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOwogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKIAot
ICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRv
IHJlbW92ZSBhIHRyYWNrIGFmdGVyIHRoZSBzdHJlYW0gaGFzIGVuZGVkIik7Ci0gICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coJ3N0cmVhbTIucmVtb3ZlVHJhY2soYXVkaW9UcmFjayknLCAnIkVy
cm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSInKTsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiPGJyPioqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIHRydWUgKHVudGls
IGV2ZW50IGlzIGZpcmVkKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFj
dGl2ZScsICd0cnVlJyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbTEocykgewogICAgICAgICAgICAgICAgIHN0cmVhbTEgPSBzOwotICAgICAgICAgICAg
ICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIpOwor
ICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBnZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0xKTsKKyAgICAgICAgICAg
IGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTEpOwogCiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAgICAgICAg
ICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1pbmFjdGl2
ZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
YWRkLXRyYWNrcy10by1pbmFjdGl2ZS1zdHJlYW0uaHRtbAppbmRleCBiZTliYTVlLi42MjBiYjMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFk
ZC10cmFja3MtdG8taW5hY3RpdmUtc3RyZWFtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtdHJhY2tzLXRvLWluYWN0aXZlLXN0cmVhbS5odG1s
CkBAIC0yLDI4ICsyLDEzIEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4K
ICAgICAgICAgPHNjcmlwdD4KIAogCiAgICAgICAgICAgICB2YXIgc3RyZWFtMTsKICAgICAgICAg
ICAgIHZhciBhdWRpb1RyYWNrOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24g
ZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJh
Y2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywg
ZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUp
OwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGZ1bmN0aW9uIHRyeUFkZFRyYWNrKHN0cmVh
bSwgdHJhY2spCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKQEAgLTU1LDcg
KzQwLDcgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0TWVkaWEoKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGFkZGluZyB0cmFja3MgdG8gaW5h
Y3RpdmUgTWVkaWFTdHJlYW0uIik7Ci0gICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMSk7IAorICAgICAgICAgICAgICAgIGdldFVz
ZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTEpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwog
ICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY2xvbmUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZmZlNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACisKK1BBU1MgbWVkaWFTdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBtZWRpYVN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCituZXdNZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtLmNsb25lKCkK
K1BBU1MgbWVkaWFTdHJlYW0uaWQgaXMgbm90IG5ld01lZGlhU3RyZWFtLmlkCitjaGVjayB0cmFj
a3MKK1BBU1MgdHJhY2suaWQgaXMgbm90IG5ld1RyYWNrLmlkCitQQVNTIHRyYWNrLmtpbmQgaXMg
bmV3VHJhY2sua2luZAorUEFTUyB0cmFjay5sYWJlbCBpcyBuZXdUcmFjay5sYWJlbAorUEFTUyB0
cmFjay5yZWFkeVN0YXRlIGlzIG5ld1RyYWNrLnJlYWR5U3RhdGUKK1BBU1MgdHJhY2suZW5hYmxl
ZCBpcyBuZXdUcmFjay5lbmFibGVkCitQQVNTIHRyYWNrLm11dGVkIGlzIG5ld1RyYWNrLm11dGVk
Citkb25lCitjaGVjayB0cmFja3MKK1BBU1MgdHJhY2suaWQgaXMgbm90IG5ld1RyYWNrLmlkCitQ
QVNTIHRyYWNrLmtpbmQgaXMgbmV3VHJhY2sua2luZAorUEFTUyB0cmFjay5sYWJlbCBpcyBuZXdU
cmFjay5sYWJlbAorUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzIG5ld1RyYWNrLnJlYWR5U3RhdGUK
K1BBU1MgdHJhY2suZW5hYmxlZCBpcyBuZXdUcmFjay5lbmFibGVkCitQQVNTIHRyYWNrLm11dGVk
IGlzIG5ld1RyYWNrLm11dGVkCitkb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sCmluZGV4IDVkNjdjOGQuLjI4ZTEzODQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY2xvbmUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLmh0bWwK
QEAgLTIsNTEgKzIsNDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0Pgog
ICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOwogICAgICAgICAg
ICAgdmFyIG5ld01lZGlhU3RyZWFtOwotICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2tzOwotICAg
ICAgICAgICAgdmFyIHZpZGVvVHJhY2tzOwotICAgICAgICAgICAgdmFyIG5ld0F1ZGlvVHJhY2tz
OwotICAgICAgICAgICAgdmFyIG5ld1ZpZGVvVHJhY2tzOwotCi0gICAgICAgICAgICBmdW5jdGlv
biBjaGVja1RyYWNrcyh0cmFja1NldDEsIHRyYWNrU2V0MikgewotICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdHJhY2tTZXQxLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCd0cmFja1NldDFbaV0ucmVhZHlTdGF0ZScsICd0cmFja1NldDJbaV0u
cmVhZHlTdGF0ZScpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2tTZXQxW2ld
LmVuYWJsZWQnLCAndHJhY2tTZXQyW2ldLmVuYWJsZWQnKTsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3RyYWNrU2V0MVtpXS5tdXRlZCcsICd0cmFja1NldDJbaV0ubXV0ZWQnKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdHJhY2s7CisgICAgICAgICAgICB2YXIg
bmV3VHJhY2s7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJhY2tzKHRyYWNrMSwgdHJh
Y2syKSB7CisgICAgICAgICAgICAgICAgdHJhY2sgPSB0cmFjazE7CisgICAgICAgICAgICAgICAg
bmV3VHJhY2sgPSB0cmFjazI7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNrIHRyYWNrcyIp
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd0cmFjay5pZCcsICduZXdUcmFjay5pZCcp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5raW5kJywgJ25ld1RyYWNrLmtpbmQn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2subGFiZWwnLCAnbmV3VHJhY2subGFi
ZWwnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sucmVhZHlTdGF0ZScsICduZXdU
cmFjay5yZWFkeVN0YXRlJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmVuYWJs
ZWQnLCAnbmV3VHJhY2suZW5hYmxlZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFj
ay5tdXRlZCcsICduZXdUcmFjay5tdXRlZCcpOworICAgICAgICAgICAgICAgIGRlYnVnKCJkb25l
Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJl
YW0pIHsKICAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsKICAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CiAKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBoYXZl
IGFueSBndWFyYW50ZWVzIG9uIHRoZSBvcmRlciBmcm9tIGdldEF1ZGlvL1ZpZGVvVHJhY2tzKCks
IHdlCisgICAgICAgICAgICAgICAgLy8gY2FuJ3QgaGF2ZSBhIHN0cmVhbSB3aXRoIG1vcmUgdGhh
biBvbmUgdHJhY2sgb2YgZWFjaCBraW5kLgorICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtZWRp
YVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKwog
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coIm5ld01lZGlhU3RyZWFtID0gbWVkaWFTdHJlYW0u
Y2xvbmUoKSIpOwogCiAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ21lZGlhU3RyZWFtLmlk
JywgJ25ld01lZGlhU3RyZWFtLmlkJyk7CiAKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJh
dWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkiKTsKLSAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJuZXdBdWRpb1RyYWNrcyA9IG5ld01l
ZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJuZXdWaWRlb1RyYWNrcyA9IG5ld01lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKCkiKTsKLQot
ICAgICAgICAgICAgICAgIGNoZWNrVHJhY2tzKGF1ZGlvVHJhY2tzLCBuZXdBdWRpb1RyYWNrcyk7
Ci0gICAgICAgICAgICAgICAgY2hlY2tUcmFja3ModmlkZW9UcmFja3MsIG5ld1ZpZGVvVHJhY2tz
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrcyhtZWRpYVN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdLCBuZXdNZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
KTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrcyhtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdLCBuZXdNZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKIAotICAgICAgICAg
ICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhRXJyb3IoKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgnQ291bGQgbm90IGdldCBNZWRpYVN0cmVhbScpOwogICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgp
IHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtLCBn
ZXRVc2VyTWVkaWFFcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0
aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlv
OnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNr
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1ZWIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJh
Y2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisKK1BBU1MgdHlwZW9mIG1lZGlhU3Ry
ZWFtLmFjdGl2ZSBpcyAnYm9vbGVhbicKK1BBU1MgbWVkaWFTdHJlYW0uYWN0aXZlIGlzIHRydWUK
K3ZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdCithdWRpb1RyYWNr
ID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXQorUEFTUyB2aWRlb1RyYWNrLnJlYWR5
U3RhdGUgaXMgbm90ICJlbmRlZCIKK1BBU1MgYXVkaW9UcmFjay5yZWFkeVN0YXRlIGlzIG5vdCAi
ZW5kZWQiCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBpcyAiZW5kZWQiCitQQVNTIGF1ZGlv
VHJhY2sucmVhZHlTdGF0ZSBpcyAiZW5kZWQiCitQQVNTIHR5cGVvZiBuZXdNZWRpYVN0cmVhbS5h
Y3RpdmUgaXMgJ2Jvb2xlYW4nCitQQVNTIG5ld01lZGlhU3RyZWFtLmFjdGl2ZSBpcyBmYWxzZQor
UEFTUyBtZWRpYVN0cmVhbS5pZCBpcyBub3QgbmV3TWVkaWFTdHJlYW0uaWQKK1BBU1MgdHlwZW9m
IG1lZGlhU3RyZWFtQ29weS5hY3RpdmUgaXMgJ2Jvb2xlYW4nCitQQVNTIG1lZGlhU3RyZWFtQ29w
eS5hY3RpdmUgaXMgZmFsc2UKK1BBU1MgbWVkaWFTdHJlYW1Db3B5LmlkIGlzIG5vdCBuZXdNZWRp
YVN0cmVhbS5pZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy5odG1sCmlu
ZGV4IGQ3NDI0NDUuLjA0ZDhlYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1l
bmRlZC10cmFja3MuaHRtbApAQCAtMiwxNiArMiwxOCBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICB2YXIgbWVkaWFT
dHJlYW07CiAgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKICAgICAgICAgICAgIHZhciBhdWRp
b1RyYWNrOwogICAgICAgICAgICAgdmFyIG5ld01lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFy
IG1lZGlhU3RyZWFtQ29weTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVh
bSkgewogICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOwogICAgICAgICAgICAg
ICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdtZWRpYVN0
cmVhbS5lbmRlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdt
ZWRpYVN0cmVhbS5hY3RpdmUnLCB0cnVlKTsKIAogICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdIik7CiAgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiYXVkaW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKClbMF0iKTsKQEAgLTI5LDI2ICszMSwxOCBAQAogICAgICAgICAgICAgICAgIHRyYWNrc0Fy
cmF5LnB1c2goYXVkaW9UcmFjayk7CiAgICAgICAgICAgICAgICAgbmV3TWVkaWFTdHJlYW0gPSBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0odHJhY2tzQXJyYXkpOwogCi0gICAgICAgICAgICAgICAgc2hv
dWxkRXZhbHVhdGVUbygnbmV3TWVkaWFTdHJlYW0uZW5kZWQnLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBzaG91bGROb3RCZUVxdWFsVG9TdHJpbmcobWVkaWFTdHJlYW0uaWQsIG5ld01lZGlhU3Ry
ZWFtLmlkKTsKKyAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCduZXdNZWRpYVN0cmVh
bS5hY3RpdmUnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ21lZGlhU3Ry
ZWFtLmlkJywgJ25ld01lZGlhU3RyZWFtLmlkJyk7CiAKLSAgICAgICAgICAgICAgICB2YXIgbWVk
aWFTdHJlYW1Db3B5ID0gbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG5ld01lZGlhU3RyZWFtKTsKLSAg
ICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdtZWRpYVN0cmVhbUNvcHkuZW5kZWQnLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbUNvcHkgPSBuZXcgd2Via2l0TWVkaWFT
dHJlYW0obmV3TWVkaWFTdHJlYW0pOworICAgICAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8o
J21lZGlhU3RyZWFtQ29weS5hY3RpdmUnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
Tm90QmUoJ21lZGlhU3RyZWFtQ29weS5pZCcsICduZXdNZWRpYVN0cmVhbS5pZCcpOwotICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWFFcnJvcigpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdDb3VsZCBub3QgZ2V0IE1lZGlhU3RyZWFtJyk7CiAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW0sIGdldFVzZXJNZWRpYUVycm9yKTsKLSAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVz
ZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdldFVzZXJN
ZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tZ2V0VHJh
Y2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tZ2V0VHJhY2tzLWV4cGVjdGVkLnR4dAppbmRleCA1MDk0YjJlLi43NmVhMmE0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWdldFRyYWNrcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS1nZXRUcmFja3MtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDE0IEBACi1UZXN0IGFkZGluZyB0
cmFja3MgdG8gaW5hY3RpdmUgTWVkaWFTdHJlYW0uCitUZXN0IHRoZSBkaWZmZXJlbnQgbWV0aG9k
cyB0byBnZXQgdHJhY2tzIGZyb20gYSBNZWRpYVN0cmVhbS4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKIFBBU1Mgc3RyZWFtMS5nZXRUcmFja3MoKS5sZW5ndGggaXMgMgogUEFTUyBz
dHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCBpcyAyCitnZXRBdWRpb1RyYWNrcygpLCBnZXRWaWRl
b1RyYWNrcygpIGFuZCBnZXRUcmFja3MoKSBtdXN0IHJldHVybiBhIG5ldyBzZXF1ZW5jZSBhdCBl
dmVyeSBpbnZvY2F0aW9uCitQQVNTIHN0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKSAhPSBzdHJlYW0y
LmdldEF1ZGlvVHJhY2tzKCkgaXMgdHJ1ZQorUEFTUyBzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCkg
IT0gc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpIGlzIHRydWUKK1BBU1Mgc3RyZWFtMi5nZXRUcmFj
a3MoKSAhPSBzdHJlYW0yLmdldFRyYWNrcygpIGlzIHRydWUKIFBBU1MgdHJhY2sgYWRkZWQgdG8g
c3RyZWFtLgogUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDIKIFBBU1Mg
c3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCkBAIC0xMiw3ICsxNiwxMiBAQCBQ
QVNTIHN0cmVhbTIuZ2V0VHJhY2tzKCkubGVuZ3RoIGlzIDMKIFBBU1MgdHJhY2sgYWRkZWQgdG8g
c3RyZWFtLgogUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDIKIFBBU1Mg
c3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAyCi1QQVNTIHN0cmVhbTIuZ2V0VHJh
Y2tzKCkubGVuZ3RoIGlzIDQKK1BBU1MgYWxsVHJhY2tzLmxlbmd0aCBpcyA0CitQQVNTIHN0cmVh
bTIuZ2V0VHJhY2tCeUlkKGlkKSBpcyBub24tbnVsbC4KK1BBU1Mgc3RyZWFtMi5nZXRUcmFja0J5
SWQoaWQpIGlzIG5vbi1udWxsLgorUEFTUyBzdHJlYW0yLmdldFRyYWNrQnlJZChpZCkgaXMgbm9u
LW51bGwuCitQQVNTIHN0cmVhbTIuZ2V0VHJhY2tCeUlkKGlkKSBpcyBub24tbnVsbC4KK1BBU1Mg
c3RyZWFtMi5nZXRUcmFja0J5SWQoImZvby1pZCIpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1nZXRUcmFja3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tZ2V0VHJhY2tzLmh0bWwKaW5kZXggODFjYTBj
Ni4uNzliZjA2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS1nZXRUcmFja3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLWdldFRyYWNrcy5odG1sCkBAIC0yLDI4ICsyLDE1IEBACiA8aHRtbD4KICAg
ICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2Vy
TWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIAogICAgICAgICAg
ICAgdmFyIHN0cmVhbTE7CiAgICAgICAgICAgICB2YXIgc3RyZWFtMjsKICAgICAgICAgICAgIHZh
ciBhdWRpb1RyYWNrOwogICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGVycm9yKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdldFVzZXJN
ZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGRpY3Rpb25hcnksIGNhbGxiYWNrLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEg
dGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBh
bGxUcmFja3M7CisgICAgICAgICAgICB2YXIgaWQ7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRy
eUFkZFRyYWNrKHN0cmVhbSwgdHJhY2spCiAgICAgICAgICAgICB7CkBAIC0zOSw2ICsyNiwxMiBA
QAogICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU3RyZWFtQW5kQWRkVHJhY2tzKCkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5nZXRUcmFja3MoKS5s
ZW5ndGgnLCAnMicpOworCisgICAgICAgICAgICAgICAgZGVidWcoJ2dldEF1ZGlvVHJhY2tzKCks
IGdldFZpZGVvVHJhY2tzKCkgYW5kIGdldFRyYWNrcygpIG11c3QgcmV0dXJuIGEgbmV3IHNlcXVl
bmNlIGF0IGV2ZXJ5IGludm9jYXRpb24nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
J3N0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKSAhPSBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCknKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoJ3N0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKSAh
PSBzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCknKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoJ3N0cmVhbTIuZ2V0VHJhY2tzKCkgIT0gc3RyZWFtMi5nZXRUcmFja3MoKScpOworCiAgICAg
ICAgICAgICAgICAgYXVkaW9UcmFjayA9IHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXTsKICAg
ICAgICAgICAgICAgICB0cnlBZGRUcmFjayhzdHJlYW0yLCBhdWRpb1RyYWNrKTsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7
CkBAIC00OCw3ICs0MSwxMyBAQAogICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIs
IHZpZGVvVHJhY2spOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoJywgJzInKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFt
Mi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbTIuZ2V0VHJhY2tzKCkubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgICAgICAgICBh
bGxUcmFja3MgPSBzdHJlYW0yLmdldFRyYWNrcygpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdhbGxUcmFja3MubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgICAgICAgICBhbGxUcmFja3MuZm9y
RWFjaChmdW5jdGlvbiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgaWQgPSB0cmFjay5p
ZDsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdzdHJlYW0yLmdldFRyYWNr
QnlJZChpZCknKTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIHNob3VsZEJl
TnVsbCgnc3RyZWFtMi5nZXRUcmFja0J5SWQoImZvby1pZCIpJyk7CiAKICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIH0KQEAgLTYzLDEzICs2MiwxMyBAQAogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0cmVhbTEgPSBzOwogICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdzdHJlYW0xLmdldFRyYWNrcygpLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAg
ICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMik7
CisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtMik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0TWVkaWEoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGFkZGluZyB0cmFja3MgdG8gaW5hY3RpdmUgTWVkaWFTdHJlYW0uIik7Ci0gICAg
ICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtMSk7IAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoZSBkaWZmZXJlbnQg
bWV0aG9kcyB0byBnZXQgdHJhY2tzIGZyb20gYSBNZWRpYVN0cmVhbS4iKTsKKyAgICAgICAgICAg
ICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW0xKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKICAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RydWN0b3IuaHRtbAppbmRleCA3MWJhODExLi4xNzZlNDA1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbApA
QCAtMiw2ICsyLDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgogICAg
IDwvaGVhZD4KICAgICA8Ym9keT4KICAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBA
IC00MCwyMCArNDEsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdl
dFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlv
bmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBl
eGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBmdW5jdGlvbiBn
b3RTdHJlYW0ocykgewogICAgICAgICAgICAgICAgIGxvY2FsU3RyZWFtID0gczsKICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCdHb3QgbG9jYWwgc3RyZWFtLicpOwpAQCAtMTA0LDcgKzkxLDcg
QEAKICAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoJ2NoZWNrSWRBdHRyaWJ1dGUobmV3U3Ry
ZWFtLmlkKScpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBnZXRVc2VyTWVkaWEoe3Zp
ZGVvOnRydWUsIGF1ZGlvOnRydWV9LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgZ2V0VXNlck1l
ZGlhKCJhbGxvdyIsIHt2aWRlbzp0cnVlLCBhdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKIAogICAg
ICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgd2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWY2OGRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNs
b25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitUZXN0cyBNZWRpYVN0cmVhbVRyYWNr
LmNsb25lKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0VXNlck1l
ZGlhIHN1Y2NlZWRlZC4KKwordmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0KK0luaXRpYWxpemUgZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzIG9uIHZpZGVvVHJhY2sK
KwordmlkZW9UcmFjazIgPSB2aWRlb1RyYWNrLmNsb25lKCkKK1BBU1MgdmlkZW9UcmFjay5pZCBp
cyBub3QgdmlkZW9UcmFjazIuaWQKK1BBU1MgdmlkZW9UcmFjay5raW5kIGlzIHZpZGVvVHJhY2sy
LmtpbmQKK1BBU1MgdmlkZW9UcmFjay5sYWJlbCBpcyB2aWRlb1RyYWNrMi5sYWJlbAorUEFTUyB2
aWRlb1RyYWNrLm11dGVkIGlzIHZpZGVvVHJhY2syLm11dGVkCitQQVNTIHZpZGVvVHJhY2suZW5h
YmxlZCBpcyB2aWRlb1RyYWNrMi5lbmFibGVkCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBp
cyB2aWRlb1RyYWNrMi5yZWFkeVN0YXRlCitQQVNTIHZpZGVvVHJhY2sub25tdXRlIGlzIG5vdCB2
aWRlb1RyYWNrMi5vbm11dGUKK1BBU1MgdmlkZW9UcmFjay5vbnVubXV0ZSBpcyBub3QgdmlkZW9U
cmFjazIub251bm11dGUKK1BBU1MgdmlkZW9UcmFjay5vbmVuZGVkIGlzIG5vdCB2aWRlb1RyYWNr
Mi5vbmVuZGVkCitQQVNTIHZpZGVvVHJhY2sub25vdmVyY29uc3RyYWluZWQgaXMgbm90IHZpZGVv
VHJhY2syLm9ub3ZlcmNvbnN0cmFpbmVkCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBpcyBu
b3QgdmlkZW9UcmFjazIucmVhZHlTdGF0ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTdjNmYxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sCkBAIC0wLDAgKzEsNjAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dl
dFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgdmFyIG1lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CisgICAg
ICAgICAgICB2YXIgdmlkZW9UcmFjazI7CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkgeworICAgICAgICAgICAgICAg
IG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2dldFVz
ZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0iKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCJJbml0aWFsaXplIGV2ZW50
IGhhbmRsZXIgYXR0cmlidXRlcyBvbiB2aWRlb1RyYWNrIik7CisgICAgICAgICAgICAgICAgdmlk
ZW9UcmFjay5vbm11dGUgPSBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgICAgICAgICB2aWRlb1Ry
YWNrLm9udW5tdXRlID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICAgICAgdmlkZW9UcmFj
ay5vbmVuZGVkID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5v
bm92ZXJjb25zdHJhaW5lZCA9IGZ1bmN0aW9uICgpIHt9OworCisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInZpZGVvVHJhY2syID0gdmlkZW9U
cmFjay5jbG9uZSgpIik7CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFj
ay5pZCcsICd2aWRlb1RyYWNrMi5pZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRl
b1RyYWNrLmtpbmQnLCAndmlkZW9UcmFjazIua2luZCcpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCd2aWRlb1RyYWNrLmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxhYmVsJyk7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2subXV0ZWQnLCAndmlkZW9UcmFjazIubXV0ZWQnKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5lbmFibGVkJywgJ3ZpZGVvVHJh
Y2syLmVuYWJsZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5yZWFk
eVN0YXRlJywgJ3ZpZGVvVHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIHNo
b3VsZE5vdEJlKCd2aWRlb1RyYWNrLm9ubXV0ZScsICd2aWRlb1RyYWNrMi5vbm11dGUnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5vbnVubXV0ZScsICd2aWRlb1Ry
YWNrMi5vbnVubXV0ZScpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd2aWRlb1RyYWNr
Lm9uZW5kZWQnLCAndmlkZW9UcmFjazIub25lbmRlZCcpOworICAgICAgICAgICAgICAgIHNob3Vs
ZE5vdEJlKCd2aWRlb1RyYWNrLm9ub3ZlcmNvbnN0cmFpbmVkJywgJ3ZpZGVvVHJhY2syLm9ub3Zl
cmNvbnN0cmFpbmVkJyk7CisKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLnN0b3AoKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVv
VHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjay5jbG9uZSgpIik7Cisg
ICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHt2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stZ2V0U291cmNlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBkMGE0M2IuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLWdldFNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotVGVzdHMgTWVkaWFTdHJlYW1UcmFjazo6Z2V0U291cmNlcy4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLQotKioqIGNhbGxpbmcgTWVkaWFTdHJlYW1UcmFjay5n
ZXRTb3VyY2VzKCkgKioqCi1QQVNTIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3Vy
Y2VzMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBjYWxsYmFjayBjYWxsZWQuCi1z
b3VyY2VzMVswXS5zb3VyY2VJZCA9ICIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlh
NjYiCi1zb3VyY2VzMVswXS5sYWJlbCA9ICJNb2NrIGF1ZGlvIGRldmljZSIKLXNvdXJjZXMxWzBd
LmtpbmQgPSAiYXVkaW8iCi1zb3VyY2VzMVsxXS5zb3VyY2VJZCA9ICIyMzljMjRiMC0yYjE1LTEx
ZTMtODIyNC0wODAwMjAwYzlhNjYiCi1zb3VyY2VzMVsxXS5sYWJlbCA9ICJNb2NrIHZpZGVvIGRl
dmljZSIKLXNvdXJjZXMxWzFdLmtpbmQgPSAidmlkZW8iCi0KLSoqKiBjYWxsaW5nIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoKSAqKioKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KLVBBU1MgY2FsbGJhY2sgY2FsbGVkLgotCi0qKiogY2FsbGluZyBNZWRpYVN0cmVhbVRyYWNr
LmdldFNvdXJjZXMoKSAqKioKLVBBU1MgTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNv
dXJjZXMyKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGNhbGxiYWNrIGNhbGxlZC4K
LVBBU1Mgc291cmNlczIubGVuZ3RoID09IHNvdXJjZXMxLmxlbmd0aCBpcyB0cnVlCi1QQVNTIHNv
dXJjZXMyWzBdLnNvdXJjZUlkID09PSBzb3VyY2VzMVswXS5zb3VyY2VJZCBpcyB0cnVlCi1QQVNT
IHNvdXJjZXMyWzBdLmxhYmVsID09PSBzb3VyY2VzMVswXS5sYWJlbCBpcyB0cnVlCi1QQVNTIHNv
dXJjZXMyWzBdLmtpbmQgPT09IHNvdXJjZXMxWzBdLmtpbmQgaXMgdHJ1ZQotUEFTUyBzb3VyY2Vz
MlsxXS5zb3VyY2VJZCA9PT0gc291cmNlczFbMV0uc291cmNlSWQgaXMgdHJ1ZQotUEFTUyBzb3Vy
Y2VzMlsxXS5sYWJlbCA9PT0gc291cmNlczFbMV0ubGFiZWwgaXMgdHJ1ZQotUEFTUyBzb3VyY2Vz
MlsxXS5raW5kID09PSBzb3VyY2VzMVsxXS5raW5kIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRjZDNjOC4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAg
IDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci0g
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgICAgICA8c2NyaXB0PgotICAgICAg
ICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNvdXJjZXMuIik7
Ci0KLSAgICAgICAgICAgIHZhciBzb3VyY2VzMSA9IG51bGw7Ci0gICAgICAgICAgICB2YXIgc291
cmNlczIgPSBudWxsOwotICAgICAgICAgICAgdmFyIHRpbWVyID0gbnVsbDsKLQotICAgICAgICAg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRpbWVyKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4n
KTsKLSAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShfY29uc3RyYWludHMsIF9jYWxsYmFjaykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBw
cmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGluZyBmb3Igd2Via2l0R2V0VXNlck1lZGlhKCkiKTsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMgPSBfY29uc3RyYWludHM7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrID0gX2NhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygiPGJyPioqKiBjYWxsaW5nIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSAqKioi
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcikiKTsKLSAgICAgICAgICAg
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtp
dEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZnVuY3Rpb24gZ290U291cmNlczIoc291cmNlcykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjYWxsYmFjayBjYWxsZWQuJyk7Ci0gICAgICAgICAg
ICAgICAgc291cmNlczIgPSBzb3VyY2VzOwotICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgn
c291cmNlczIubGVuZ3RoID09IHNvdXJjZXMxLmxlbmd0aCcpOwotICAgICAgICAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBzb3VyY2VzMi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInNvdXJjZXMyWyIgKyBpICsgIl0uc291cmNlSWQgPT09IHNvdXJjZXMx
WyIgKyBpICsgIl0uc291cmNlSWQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJzb3VyY2VzMlsiICsgaSArICJdLmxhYmVsID09PSBzb3VyY2VzMVsiICsgaSArICJdLmxhYmVs
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgic291cmNlczJbIiArIGkgKyAi
XS5raW5kID09PSBzb3VyY2VzMVsiICsgaSArICJdLmtpbmQiKTsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgnY2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAgICAg
IHByaW1lVGltZW91dCgiVGltZW91dCB3YWl0aW5nIGZvciBNZWRpYVN0cmVhbVRyYWNrLmdldFNv
dXJjZXMoKSIpOwotCi0gICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogY2FsbGluZyBNZWRp
YVN0cmVhbVRyYWNrLmdldFNvdXJjZXMoKSAqKioiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygnTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNvdXJjZXMyKTsnKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZ290U291cmNlczEoc291cmNlcykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjYWxsYmFjayBjYWxs
ZWQuJyk7Ci0gICAgICAgICAgICAgICAgc291cmNlczEgPSBzb3VyY2VzOwotICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VzMS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBkZWJ1Zygic291cmNlczFbIiArIGkgKyAiXS5zb3VyY2VJZCA9IFwiIiArIHNvdXJj
ZXMxW2ldLnNvdXJjZUlkICsgIlwiIik7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKCJzb3Vy
Y2VzMVsiICsgaSArICJdLmxhYmVsID0gXCIiICsgc291cmNlczFbaV0ubGFiZWwgKyAiXCIiKTsK
LSAgICAgICAgICAgICAgICAgICAgZGVidWcoInNvdXJjZXMxWyIgKyBpICsgIl0ua2luZCA9IFwi
IiArIHNvdXJjZXMxW2ldLmtpbmQgKyAiXCIiKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBwcmltZVRpbWVvdXQo
bXNnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7
Ci0gICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0RmFp
bGVkKG1zZyk7IGZpbmlzaEpTVGVzdCgpIH0sIDQwMDApOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBwcmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGluZyBmb3IgTWVkaWFTdHJlYW1UcmFj
ay5nZXRTb3VyY2VzKCkiKTsKLSAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIGNhbGxpbmcgTWVk
aWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKCkgKioqIik7Ci0gICAgICAgICAgICBzaG91bGROb3RU
aHJvdygnTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNvdXJjZXMxKTsnKTsKLQotICAg
ICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgICAgICAgICAgd2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzZiNDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2sta2luZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBNZWRpYVN0cmVhbVRyYWNrIGtpbmQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQorUEFTUyBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCBpcyAxCitQQVNTIG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0ua2luZCBpcyAiYXVk
aW8iCitQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0ua2luZCBpcyAidmlkZW8i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtp
bmQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1r
aW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg5NjA2YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay1raW5kLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgbWVkaWFTdHJlYW07CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pIHsKKyAgICAgICAgICAgICAgICBt
ZWRpYVN0cmVhbSA9IHN0cmVhbTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtZWRpYVN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ21lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKworICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbWVkaWFTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXS5raW5kJywgJ2F1ZGlvJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmtpbmQnLCAndmlkZW8n
KTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bigiVGVzdCBNZWRpYVN0cmVhbVRyYWNrIGtpbmQiKTsKKyAgICAgICAgICAgICAgICBnZXRVc2Vy
TWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2YzNmViCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LXN0b3AtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3QgTWVkaWFTdHJlYW1UcmFj
ayBzdG9wKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKyoqKiBleHRyYWN0IHRy
YWNrCitQQVNTIHRyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCisqKiogc3RvcmUgdHJhY2sgYXR0
cmlidXRlcyB0aGF0IHNob3VsZCBiZSBwcmVzZXJ2ZWQKK2tpbmQgPSB0cmFjay5raW5kCitpZCA9
IHRyYWNrLmlkCitsYWJlbCA9IHRyYWNrLmxhYmVsCitlbmFibGVkID0gdHJhY2suZW5hYmxlZAor
cmVhZG9ubHkgPSB0cmFjay5yZWFkb25seQorcmVtb3RlID0gdHJhY2sucmVtb3RlCittdXRlZCA9
IHRyYWNrLm11dGVkCisqKiogc3RvcCB0cmFjaworUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzICJl
bmRlZCIKKyoqKiBjb21wYXJlIGFnYWluc3Qgc3RvcmVkIGF0dHJpYnV0ZSB2YWx1ZXMKK1BBU1Mg
dHJhY2sua2luZCBpcyBraW5kCitQQVNTIHRyYWNrLmlkIGlzIGlkCitQQVNTIHRyYWNrLmxhYmVs
IGlzIGxhYmVsCitQQVNTIHRyYWNrLmVuYWJsZWQgaXMgZW5hYmxlZAorUEFTUyB0cmFjay5yZWFk
b25seSBpcyByZWFkb25seQorUEFTUyB0cmFjay5yZW1vdGUgaXMgcmVtb3RlCitQQVNTIHRyYWNr
Lm11dGVkIGlzIG11dGVkCisqKiogdG9nZ2xlIGVuYWJsZSAoc2hvdWxkIG5vdyB0aHJvdykKK1BB
U1MgdHJhY2suZW5hYmxlZCA9ICF0cmFjay5lbmFibGVkIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyB0cmFjay5lbmFibGVkIGlzIG5vdCBlbmFibGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLXN0b3AuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM3NTBlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWwKQEAgLTAs
MCArMSw2NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICB2YXIgdHJhY2s7CisgICAgICAgICAgICB2YXIga2luZDsKKyAgICAgICAg
ICAgIHZhciBpZDsKKyAgICAgICAgICAgIHZhciBsYWJlbDsKKyAgICAgICAgICAgIHZhciBlbmFi
bGVkOworICAgICAgICAgICAgdmFyIHJlYWRvbmx5OworICAgICAgICAgICAgdmFyIHJlbW90ZTsK
KyAgICAgICAgICAgIHZhciBtdXRlZDsKKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
KHN0cmVhbSkgeworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogZXh0cmFjdCB0cmFjayIpOwor
ICAgICAgICAgICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnImxpdmUiJyk7CisKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiKioqIHN0b3JlIHRyYWNrIGF0dHJpYnV0ZXMgdGhhdCBzaG91
bGQgYmUgcHJlc2VydmVkIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygna2luZCA9IHRy
YWNrLmtpbmQnKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCdpZCA9IHRyYWNrLmlkJyk7
CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygnbGFiZWwgPSB0cmFjay5sYWJlbCcpOworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coJ2VuYWJsZWQgPSB0cmFjay5lbmFibGVkJyk7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygncmVhZG9ubHkgPSB0cmFjay5yZWFkb25seScpOworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coJ3JlbW90ZSA9IHRyYWNrLnJlbW90ZScpOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coJ211dGVkID0gdHJhY2subXV0ZWQnKTsKKworICAgICAgICAg
ICAgICAgIGRlYnVnKCIqKiogc3RvcCB0cmFjayIpOworICAgICAgICAgICAgICAgIHRyYWNrLnN0
b3AoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sucmVhZHlTdGF0ZScsICciZW5k
ZWQiJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGNvbXBhcmUgYWdhaW5zdCBzdG9y
ZWQgYXR0cmlidXRlIHZhbHVlcyIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5r
aW5kJywgJ2tpbmQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2suaWQnLCAnaWQn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2subGFiZWwnLCAnbGFiZWwnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2suZW5hYmxlZCcsICdlbmFibGVkJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWRvbmx5JywgJ3JlYWRvbmx5Jyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlbW90ZScsICdyZW1vdGUnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndHJhY2subXV0ZWQnLCAnbXV0ZWQnKTsKKworICAgICAgICAgICAg
ICAgIGRlYnVnKCIqKiogdG9nZ2xlIGVuYWJsZSAoc2hvdWxkIG5vdyB0aHJvdykiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGROb3RUaHJvdygndHJhY2suZW5hYmxlZCA9ICF0cmFjay5lbmFibGVk
Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3RyYWNrLmVuYWJsZWQnLCAnZW5hYmxl
ZCcpOworCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IE1lZGlhU3RyZWFtVHJhY2sgc3RvcCgpIik7CisgICAgICAgICAgICAgICAgZ2V0
VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAg
ICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggOGE1OTk0YS4uYmJmYjRhNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDYg
QEAgVGhpcyB0ZXN0cyB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQgRE9NIGNsYXNzLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZ2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIAogKioqIGdldFVzZXJNZWRpYSgpIHN1Y2NlZWRlZCwgdGVzdCBzdHJlYW0g
KioqCiBQQVNTIG1lZGlhU3RyZWFtIGlzIG5vbi1udWxsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNv
bnN0cnVjdG9yLmh0bWwKaW5kZXggMDY3Nzk1Yy4uNTYxYzQ2YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC0yLDYgKzIsNyBAQAogPGh0bWw+CiAgICAgPGhlYWQ+
CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgICAgICA8c2NyaXB0PgogCkBAIC0x
OSwyMiArMjAsNiBAQAogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICAg
ICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVu
Y3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwotICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Vi
a2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBObyBpbml0aWFsaXplciBwYXNzZWQg
KioqIik7CkBAIC05Miw3ICs3Nyw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBwcmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGlu
ZyBmb3IgZ2V0VXNlck1lZGlhKCkiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygn
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKScpOworICAg
ICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9yZXNvdXJjZXMvZ2V0VXNlck1l
ZGlhLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcmVzb3VyY2VzL2dl
dFVzZXJNZWRpYS1oZWxwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjIyNWFhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
cmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rp
b24gZ2V0VXNlck1lZGlhKHBlcm1pc3Npb24sIGNvbnN0cmFpbnRzLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbihwZXJtaXNzaW9uID09ICJhbGxvdyIpOwor
ICAgIGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisg
ICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpLnRoZW4o
c3VjY2Vzc0NhbGxiYWNrLCByZWplY3QpLmNhdGNoKGRlZmF1bHRSZWplY3RPckNhdGNoKTsKKwor
ICAgIGZ1bmN0aW9uIHJlamVjdChlKSB7CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAg
ICAgICAgICAgZXJyb3JDYWxsYmFjayhlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVm
YXVsdFJlamVjdE9yQ2F0Y2goZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBkZWZhdWx0UmVqZWN0
T3JDYXRjaChlKSB7CisgICAgdGVzdEZhaWxlZCgnZ2V0VXNlck1lZGlhIGZhaWxlZDonICsgZSk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDBmNGY2ZGEuLmM4MDNhYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTUsMTYgKzMxNSw3IEBAIHdlYmtpdC5vcmcvYi84
NTIxMSBpZXRlc3RjZW50ZXIvY3NzMy9mbGV4Ym94L2ZsZXhib3gtYWxpZ24tc3RyZXRjaC0wMDEu
aHRtIFsgSW1hCiB3ZWJraXQub3JnL2IvODUyMTIgaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9m
bGV4Ym94LWxheW91dC0wMDIuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgTWVkaWFzdHJl
YW0gaW1wbGVtZW50YXRpb24gaXMgbm90IGNvbXBsZXRlIHlldC4KLXdlYmtpdC5vcmcvYi83OTIw
MyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRk
LXJlbW92ZS10cmFja3MuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1pbmFjdGl2ZS1zdHJlYW0uaHRtbCBb
IFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
Y2xvbmUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNzkyMDMg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3Mu
aHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tZ2V0VHJhY2tzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLU1lZGlhRWxlbWVudC1zcmNPYmplY3QuaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2
ZW50LWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stb25lbmRlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJmMTkxNTUu
LmE4ODg4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTkgQEAKKzIwMTUtMDYtMjggIEFkYW0g
QmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAgIFdlYlJU
QzogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjMxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gQVBJIChNZWRpYVN0
cmVhbSwgTWVkaWFTdHJlYW1UcmFjayBhbmQKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSkg
dG8gbWF0Y2ggdGhlIE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbQorICAgICAgICBzcGVjaWZpY2F0
aW9uIFsxXS4gTm90YWJsZSBjaGFuZ2VzOgorCisgICAgICAgIFVwZGF0ZWQgZXZlbnQgaGFuZGxp
bmcgdG8gc3luY2hyb25vdXNseSB1cGRhdGUgY29ycmVzcG9uZGluZworICAgICAgICBzdGF0ZS9h
dHRyaWJ1dGVzIGFzIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZC4KKworICAgICAgICBSZW1vdmVkICdu
ZXcnIHN0YXRlIGZyb20gTWVkaWFTdHJlYW1UcmFjay4gQSB0cmFjayBpcyBlaXRoZXIgJ2xpdmUn
IG9yCisgICAgICAgICdlbmRlZCcuIEFzIGEgY29uc2VxdWVuY2UgJ3N0YXJ0ZWQnIGV2ZW50IGlz
IGFsc28gcmVtb3ZlZC4KKworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrIGFsd2F5cyBoYXMgYSBz
b3VyY2UgKGRpc2Nvbm5lY3RlZCBzb3VyY2UgY29uY2VwdCB3YXMKKyAgICAgICAgcmVtb3ZlZCBm
cm9tIHRoZSBzcGVjKS4gVGhlcmVmb3JlLCBtb3JlIHN0YXRlIGNhbiBiZSBrZXB0IGF0IHRoZSBz
b3VyY2UKKyAgICAgICAgd2l0aG91dCBnb2luZyBhd2F5LgorCisgICAgICAgIENhbGN1bGF0ZSBN
ZWRpYVN0cmVhbS5hY3RpdmUgaW50ZXJuYWxseSwgZnJvbSB0aGUgdHJhY2sgc2V0LCBpbnN0ZWFk
IG9mCisgICAgICAgIHNldHRpbmcgaXQgZXh0ZXJuYWxseS4KKworICAgICAgICBVcGRhdGVkIFJl
YWx0aW1lTWVkaWFTb3VyY2UgT2JzZXJ2ZXIgaW50ZXJmYWNlLgorCisgICAgICAgIFJlcGxhY2Vk
IE1lZGlhU3RyZWFtJ3Mgc2VwYXJhdGUgYXVkaW8gYW5kIHZpZGVvIHRyYWNrIGxpc3RzIHdpdGgg
YQorICAgICAgICBzaW5nbGUgdHJhY2sgc2V0IChtb3JlIGFsaWduZWQgd2l0aCBzcGVjKS4KKwor
ICAgICAgICBVcGRhdGVkIE1lZGlhU3RyZWFtIGNvbnN0cnVjdG9yIHRvIGFkb3B0IGluc3RlYWQg
b2YgY2xvbmUgdHJhY2sKKyAgICAgICAgYXJndW1lbnRzIChvciB0cmFja3MgZnJvbSBNZWRpYVN0
cmVhbSBhcmd1bWVudCkuCisKKyAgICAgICAgUmVtb3ZlZCBNZWRpYVN0cmVhbVRyYWNrLmdldFNv
dXJjZXMoKSBhbmQgY29ycmVzcG9uZGluZyB0ZXN0IChyZW1vdmVkCisgICAgICAgIGZyb20gc3Bl
YykuCisKKyAgICAgICAgVGVzdCBzdGF0dXM6IDMgYWRkZWQsIDggZXhpc3RpbmcgZW5hYmxlZCAo
c29tZSB1cGRhdGVkKSBhbmQgMSByZW1vdmVkLgorCisgICAgICAgIFsxXSBodHRwOi8vdzNjLmdp
dGh1Yi5pby9tZWRpYWNhcHR1cmUtbWFpbi9hcmNoaXZlcy8yMDE1MDUyMy9nZXR1c2VybWVkaWEu
aHRtbAorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2st
Y2xvbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLWtpbmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLXN0b3AuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFk
ZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRBdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6Z2V0VmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06OmdldFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y29udGV4dERl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFjdGl2ZVN0YXR1c0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmRpZEFkZFRyYWNrVG9Qcml2YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpkaWRSZW1vdmVUcmFja0Zyb21Qcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjppbnRlcm5hbEFkZFRyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjppbnRlcm5hbFJlbW92ZVRyYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tWZWN0b3JGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjp+TWVkaWFTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06OnJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjphZGRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6TWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp+TWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpraW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmlkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6
c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjptdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpyZWFkb25seSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjplbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
bG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdGF0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tFbmRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmdldENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFkZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtVHJhY2s6OnJlbW92ZU9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmFjdGl2ZURPTU9iamVjdE5h
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2FuU3Vz
cGVuZEZvclBhZ2VDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkaWRS
ZW1vdmVSZW1vdGVTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6Ok1lZGlh
U3RyZWFtUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFjdGl2
ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6YWRkVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1vdmVUcmFjayk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OmFjdGl2ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1By
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6On5NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OmVuZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6dHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YXBwbHlDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291
cmNlU3RvcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c291cmNlTXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjptdXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVhZG9ubHkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnJlbW90ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y29uc3RyYWludHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2Fw
YWJpbGl0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjplbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNs
aWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpS
ZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BwZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6aWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bXV0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0UmVhZG9ubHkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEZWxl
dGVkLgorCiAyMDE1LTA2LTI0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyIHRvIFdlYktpdC93aW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAKaW5kZXggYWZiNTIzYS4uMDM4YzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC00MSw2OCArNDEsNTkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNy
ZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PigpLCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PigpKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJl
YW1Qcml2YXRlOjpjcmVhdGUoKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtPiBzdHJlYW0pCitSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKICAg
ICBBU1NFUlQoc3RyZWFtKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+PiBhdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPj4gdmlkZW9UcmFja3M7Ci0KLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5t
X2F1ZGlvVHJhY2tzKQotICAgICAgICBhdWRpb1RyYWNrcy5hcHBlbmQoJnRyYWNrLT5wcml2YXRl
VHJhY2soKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW0oY29udGV4dCwg
c3RyZWFtLT5nZXRUcmFja3MoKSkpOworfQogCi0gICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVh
bS0+bV92aWRlb1RyYWNrcykKLSAgICAgICAgdmlkZW9UcmFja3MuYXBwZW5kKCZ0cmFjay0+cHJp
dmF0ZVRyYWNrKCkpOworUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4+JiB0cmFja3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJl
YW0oY29udGV4dCwgdHJhY2tzKSk7Cit9CiAKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0
ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9U
cmFja3MpKTsKK1JlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiYmIHN0cmVh
bVByaXZhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW0oY29udGV4
dCwgV1RGOjptb3ZlKHN0cmVhbVByaXZhdGUpKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbT4gTWVk
aWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYgdHJhY2tzKQorTWVkaWFTdHJlYW06Ok1l
ZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiB0cmFja3MpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKKyAgICAsIG1fYWN0aXZpdHlFdmVudFRpbWVyKCp0aGlzLCAm
TWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBhdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdmlkZW9UcmFja3M7CisgICAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBwcmVzZXJ2ZXMgTWVkaWFTdHJlYW1UcmFjayBpbnN0YW5jZXMgYW5kIG11c3Qg
YmUgdXNlZCBieSBjYWxscyBvcmlnaW5hdGluZworICAgIC8vIGZyb20gdGhlIEphdmFTY3JpcHQg
TWVkaWFTdHJlYW0gY29uc3RydWN0b3IuCisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4+IHRyYWNrUHJpdmF0ZXM7CisgICAgdHJhY2tQcml2YXRlcy5yZXNlcnZlQ2Fw
YWNpdHkodHJhY2tzLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogdHJhY2tzKSB7
Ci0gICAgICAgIGlmICh0cmFjay0+a2luZCgpID09ICJhdWRpbyIpCi0gICAgICAgICAgICBhdWRp
b1RyYWNrcy5hcHBlbmQoJnRyYWNrLT5wcml2YXRlVHJhY2soKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHZpZGVvVHJhY2tzLmFwcGVuZCgmdHJhY2stPnByaXZhdGVUcmFjaygpKTsKKyAg
ICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX3RyYWNrU2V0LmFkZCh0
cmFjay0+aWQoKSwgdHJhY2spOworICAgICAgICB0cmFja1ByaXZhdGVzLmFwcGVuZCgmdHJhY2st
PnByaXZhdGVUcmFjaygpKTsKICAgICB9CiAKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0
ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9U
cmFja3MpKTsKLX0KLQotUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBwcml2YXRlU3RyZWFtKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFt
KGNvbnRleHQsIHByaXZhdGVTdHJlYW0pKTsKKyAgICBtX3ByaXZhdGUgPSBNZWRpYVN0cmVhbVBy
aXZhdGU6OmNyZWF0ZSh0cmFja1ByaXZhdGVzKTsKKyAgICBtX2lzQWN0aXZlID0gbV9wcml2YXRl
LT5hY3RpdmUoKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIH0KIAotTWVkaWFT
dHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRlU3RyZWFtKQorTWVkaWFTdHJlYW06Ok1l
ZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+JiYgc3RyZWFtUHJpdmF0ZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyKCZjb250ZXh0KQotICAgICwgbV9wcml2YXRlKHByaXZhdGVTdHJlYW0pCi0gICAgLCBt
X3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRU
aW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKHN0cmVhbVByaXZhdGUpCisgICAgLCBtX2lzQWN0
aXZlKG1fcHJpdmF0ZS0+YWN0aXZlKCkpCisgICAgLCBtX2FjdGl2aXR5RXZlbnRUaW1lcigqdGhp
cywgJk1lZGlhU3RyZWFtOjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NFUlQo
bV9wcml2YXRlKTsKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIAotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKLSAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNr
cyA9IG1fcHJpdmF0ZS0+bnVtYmVyT2ZBdWRpb1RyYWNrcygpOwotICAgIG1fYXVkaW9UcmFja3Mu
cmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQXVkaW9UcmFja3MpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtYmVyT2ZBdWRpb1RyYWNrczsgaSsrKSB7Ci0gICAgICAgIHRyYWNrID0gTWVk
aWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsICptX3ByaXZhdGUtPmF1ZGlvVHJhY2tzKGkp
KTsKKyAgICBmb3IgKGF1dG8mIHRyYWNrUHJpdmF0ZSA6IG1fcHJpdmF0ZS0+dHJhY2tzKCkpIHsK
KyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gTWVkaWFTdHJlYW1UcmFj
azo6Y3JlYXRlKGNvbnRleHQsICp0cmFja1ByaXZhdGUpOwogICAgICAgICB0cmFjay0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrLnJlbGVhc2Uo
KSk7Ci0gICAgfQotCi0gICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBtX3ByaXZhdGUt
Pm51bWJlck9mVmlkZW9UcmFja3MoKTsKLSAgICBtX3ZpZGVvVHJhY2tzLnJlc2VydmVDYXBhY2l0
eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mVmlkZW9UcmFja3M7IGkrKykgewotICAgICAgICB0cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6
OmNyZWF0ZShjb250ZXh0LCAqbV9wcml2YXRlLT52aWRlb1RyYWNrcyhpKSk7Ci0gICAgICAgIHRy
YWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJh
Y2sucmVsZWFzZSgpKTsKKyAgICAgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCksIFdURjo6
bW92ZSh0cmFjaykpOwogICAgIH0KIH0KIApAQCAtMTExLDI1OCArMTAyLDE0MCBAQCBNZWRpYVN0
cmVhbTo6fk1lZGlhU3RyZWFtKCkKICAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsK
IH0KIAotYm9vbCBNZWRpYVN0cmVhbTo6YWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5hY3RpdmUoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbTo6c2V0QWN0aXZlKGJvb2wg
aXNBY3RpdmUpCitSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiB7Ci0g
ICAgaWYgKGFjdGl2ZSgpID09IGlzQWN0aXZlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9wcml2
YXRlLT5zZXRBY3RpdmUoaXNBY3RpdmUpOwotfQotCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBN
ZWRpYVN0cmVhbTo6Y2xvbmUoKQotewotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+IHRyYWNrU2V0OworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IGNsb25l
ZFRyYWNrczsKKyAgICBjbG9uZWRUcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6
ZSgpKTsKIAotICAgIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcih0cmFja1NldCwgZ2V0QXVk
aW9UcmFja3MoKSk7Ci0gICAgY2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKHRyYWNrU2V0LCBn
ZXRWaWRlb1RyYWNrcygpKTsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFja1NldCk7Ci19CisgICAgZm9yIChhdXRvJiB0cmFjayA6
IG1fdHJhY2tTZXQudmFsdWVzKCkpCisgICAgICAgIGNsb25lZFRyYWNrcy5hcHBlbmQodHJhY2st
PmNsb25lKCkpOwogCi12b2lkIE1lZGlhU3RyZWFtOjpjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IoVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mIGRlc3RpbmF0aW9uLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYgc291cmNlKQotewotICAgIGZvciAoYXV0
byYgdHJhY2sgOiBzb3VyY2UpCi0gICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZCh0cmFjay0+Y2xv
bmUoKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgY2xvbmVkVHJhY2tzKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaykKIHsKLSAgICBpZiAoIXBycFRyYWNrKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgaWYgKCFpbnRlcm5hbEFkZFRyYWNrKFdURjo6bW92ZSh0cmFjayksIFN0cmVh
bU1vZGlmaWVkQnlET01BUEkpKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCi0gICAgaWYgKGFk
ZFRyYWNrKHBycFRyYWNrKSkgewotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOwotICAg
IH0KKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2Vy
dmVyLT5kaWRBZGRPclJlbW92ZVRyYWNrKCk7CiB9CiAKLWJvb2wgTWVkaWFTdHJlYW06OmFkZFRy
YWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCit2b2lkIE1lZGlhU3Ry
ZWFtOjpyZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaykKIHsKLSAgICAvLyBUaGlz
IGlzIGEgY29tbW9uIHBhcnQgdXNlZCBieSBhZGRUcmFjayBjYWxsZWQgYnkgSmF2YVNjcmlwdAot
ICAgIC8vIGFuZCBhZGRSZW1vdGVUcmFjayBhbmQgb25seSBhZGRSZW1vdGVUcmFjayBtdXN0IGZp
cmUgYWRkdHJhY2sgZXZlbnQKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBw
cnBUcmFjazsKLSAgICBpZiAoZ2V0VHJhY2tCeUlkKHRyYWNrLT5pZCgpKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNr
cyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0cmFjay0+c291cmNlKCktPnR5cGUoKSk7CisgICAgaWYg
KCFpbnRlcm5hbFJlbW92ZVRyYWNrKHRyYWNrLCBTdHJlYW1Nb2RpZmllZEJ5RE9NQVBJKSkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgdHJhY2tzLT5hcHBlbmQodHJhY2spOwotICAgIHRyYWNrLT5h
ZGRPYnNlcnZlcih0aGlzKTsKLSAgICBtX3ByaXZhdGUtPmFkZFRyYWNrKCZ0cmFjay0+cHJpdmF0
ZVRyYWNrKCkpOwotICAgIHNldEFjdGl2ZSh0cnVlKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5kaWRB
ZGRPclJlbW92ZVRyYWNrKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQor
TWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZChTdHJpbmcgaWQpCiB7
Ci0gICAgaWYgKCFhY3RpdmUoKSkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFwcnBUcmFjaykgewotICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGF1dG8g
aXQgPSBtX3RyYWNrU2V0LmZpbmQoaWQpOworICAgIGlmIChpdCAhPSBtX3RyYWNrU2V0LmVuZCgp
KQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogCi0gICAgaWYgKHJlbW92ZVRyYWNr
KHBycFRyYWNrKSkgewotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMp
Ci0gICAgICAgICAgICBvYnNlcnZlci0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOwotICAgIH0KKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKK1ZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtOjpnZXRBdWRpb1RyYWNrcygpIGNvbnN0CiB7Ci0gICAg
Ly8gVGhpcyBpcyBhIGNvbW1vbiBwYXJ0IHVzZWQgYnkgcmVtb3ZlVHJhY2sgY2FsbGVkIGJ5IEph
dmFTY3JpcHQKLSAgICAvLyBhbmQgcmVtb3ZlUmVtb3RlVHJhY2sgYW5kIG9ubHkgcmVtb3ZlUmVt
b3RlVHJhY2sgbXVzdCBmaXJlIHJlbW92ZXRyYWNrIGV2ZW50Ci0gICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPj4qIHRyYWNrcyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0cmFjay0+c291cmNlKCktPnR5
cGUoKSk7Ci0KLSAgICBzaXplX3QgcG9zID0gdHJhY2tzLT5maW5kKHRyYWNrKTsKLSAgICBpZiAo
cG9zID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0cmFja3MtPnJl
bW92ZShwb3MpOwotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlVHJhY2soJnRyYWNrLT5wcml2YXRlVHJh
Y2soKSk7Ci0gICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRyYWNrcyB1c2luZyB0aGUgc2FtZSBz
b3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCi0gICAgLy8gbGlrZSB3aGVuIE1lZGlhU3Ry
ZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5zdGFuY2UuCi0gICAgLy8gU3BlYyBz
YXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28gd2UgbXVzdCBhc3N1cmUgdGhhdCB0
aGVyZSBpcyBubwotICAgIC8vIG90aGVyIHRyYWNrIHVzaW5nIGl0LgotICAgIGlmICghaGF2ZVRy
YWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQotICAgICAgICBtX3ByaXZhdGUtPnJlbW92
ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwotCi0gICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRo
aXMpOwotICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYgIW1fdmlkZW9UcmFja3Muc2l6
ZSgpKQotICAgICAgICBzZXRBY3RpdmUoZmFsc2UpOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIHRyYWNrVmVjdG9yRm9yVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7CiB9
CiAKLWJvb2wgTWVkaWFTdHJlYW06OmhhdmVUcmFja1dpdGhTb3VyY2UoUGFzc1JlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPiBzb3VyY2UpCitWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
PiBNZWRpYVN0cmVhbTo6Z2V0VmlkZW9UcmFja3MoKSBjb25zdAogewotICAgIGlmIChzb3VyY2Ut
PnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykgewotICAgICAgICBmb3IgKGF1
dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykgewotICAgICAgICAgICAgaWYgKHRyYWNrLT5zb3Vy
Y2UoKSA9PSBzb3VyY2UuZ2V0KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGZvciAoYXV0byYgdHJh
Y2sgOiBtX3ZpZGVvVHJhY2tzKSB7Ci0gICAgICAgIGlmICh0cmFjay0+c291cmNlKCkgPT0gc291
cmNlLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cmFja1ZlY3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VmlkZW8pOwogfQogCi1NZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tC
eUlkKFN0cmluZyBpZCkKK1ZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3Ry
ZWFtOjpnZXRUcmFja3MoKSBjb25zdAogewotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlv
VHJhY2tzKSB7Ci0gICAgICAgIGlmICh0cmFjay0+aWQoKSA9PSBpZCkKLSAgICAgICAgICAgIHJl
dHVybiB0cmFjay5nZXQoKTsKLSAgICB9Ci0KLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogIG1fdmlk
ZW9UcmFja3MpIHsKLSAgICAgICAgaWYgKHRyYWNrLT5pZCgpID09IGlkKQotICAgICAgICAgICAg
cmV0dXJuIHRyYWNrLmdldCgpOwotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiB0cmFja1ZlY3RvckZvclR5cGUoKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPj4gTWVkaWFTdHJlYW06OmdldFRyYWNrcygpCit2b2lkIE1lZGlhU3RyZWFtOjpjb250
ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiB0
cmFja3M7Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpCi0gICAgICAgIHRy
YWNrcy5hcHBlbmQodHJhY2suZ2V0KCkpOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3ZpZGVv
VHJhY2tzKQotICAgICAgICB0cmFja3MuYXBwZW5kKHRyYWNrLmdldCgpKTsKLQotICAgIHJldHVy
biB0cmFja3M7CisgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQoKQogewotICAgIGZvciAo
YXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKSB7Ci0gICAgICAgIGlmICghdHJhY2stPmVuZGVk
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X3ZpZGVvVHJhY2tzKSB7Ci0gICAgICAgIGlmICghdHJhY2stPmVuZGVkKCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzLnNpemUoKSAmJiAhbV92
aWRlb1RyYWNrcy5zaXplKCkpCi0gICAgICAgIHNldEFjdGl2ZShmYWxzZSk7CisgICAgbV9wcml2
YXRlLT51cGRhdGVBY3RpdmVTdGF0ZShNZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudCk7
CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OnNldFN0cmVhbUlzQWN0aXZlKGJvb2wgc3RyZWFtQWN0
aXZlKQordm9pZCBNZWRpYVN0cmVhbTo6YWN0aXZlU3RhdHVzQ2hhbmdlZCgpCiB7Ci0gICAgaWYg
KHN0cmVhbUFjdGl2ZSkKLSAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLmFjdGl2ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBlbHNlCi0g
ICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5p
bmFjdGl2ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAvLyBTY2hlZHVsZSB0aGUgYWN0aXZl
IHN0YXRlIGNoYW5nZSBhbmQgZXZlbnQgZGlzcGF0Y2ggc2luY2UgdGhpcyBjYWxsYmFjayBtYXkg
YmUgY2FsbGVkCisgICAgLy8gc3luY2hyb25vdXNseSBmcm9tIHRoZSBET00gQVBJIChlLmcuIGFz
IGEgcmVzdWx0IG9mIGFkZFRyYWNrKCkpLgorICAgIHNjaGVkdWxlQWN0aXZlU3RhdGVDaGFuZ2Uo
KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6Y29udGV4dERlc3Ryb3llZCgpCit2b2lkIE1lZGlh
U3RyZWFtOjpkaWRBZGRUcmFja1RvUHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJh
Y2tQcml2YXRlKQogewotICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVz
dHJveWVkKCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGludGVybmFsQWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCpjb250ZXh0LCB0
cmFja1ByaXZhdGUpLCBTdHJlYW1Nb2RpZmllZEJ5UGxhdGZvcm0pOwogfQogCi12b2lkIE1lZGlh
U3RyZWFtOjphZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKQordm9p
ZCBNZWRpYVN0cmVhbTo6ZGlkUmVtb3ZlVHJhY2tGcm9tUHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIEFTU0VSVChzb3VyY2UpOwotICAgIGFkZFJl
bW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoc291cmNlKS5nZXQoKSk7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gZ2V0VHJhY2tCeUlkKHRyYWNr
UHJpdmF0ZS5pZCgpKTsKKyAgICBpbnRlcm5hbFJlbW92ZVRyYWNrKFdURjo6bW92ZSh0cmFjayks
IFN0cmVhbU1vZGlmaWVkQnlQbGF0Zm9ybSk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OnJlbW92
ZVJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKiBzb3VyY2UpCitib29sIE1lZGlhU3Ry
ZWFtOjppbnRlcm5hbEFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBT
dHJlYW1Nb2RpZmllciBzdHJlYW1Nb2RpZmllcikKIHsKLSAgICBBU1NFUlQoc291cmNlKTsKLSAg
ICBpZiAoIWFjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JUeXBlKHNvdXJjZS0+dHlw
ZSgpKTsKKyAgICBpZiAoZ2V0VHJhY2tCeUlkKHRyYWNrLT5pZCgpKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgZm9yIChpbnQgaSA9IHRyYWNrcy0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAt
LWkpIHsKLSAgICAgICAgaWYgKCgqdHJhY2tzKVtpXS0+c291cmNlKCkgIT0gc291cmNlKQotICAg
ICAgICAgICAgY29udGludWU7CisgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCksIHRyYWNr
KTsKKyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CiAKLSAgICAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+IHRyYWNrID0gKCp0cmFja3MpW2ldOwotICAgICAgICB0cmFjay0+cmVtb3Zl
T2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIHRyYWNrcy0+cmVtb3ZlKGkpOwotICAgICAgICBtX3By
aXZhdGUtPnJlbW92ZVRyYWNrKCZ0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOwotICAgICAgICBzY2hl
ZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2sucmVsZWFzZSgpKSk7Ci0g
ICAgfQorICAgIGlmIChzdHJlYW1Nb2RpZmllciA9PSBTdHJlYW1Nb2RpZmllZEJ5RE9NQVBJKQor
ICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrKCZ0cmFjay0+cHJpdmF0ZVRyYWNrKCksIE1lZGlh
U3RyZWFtUHJpdmF0ZTo6RG9udE5vdGlmeUNsaWVudCk7CisgICAgZWxzZQorICAgICAgICBkaXNw
YXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0
cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIFdURjo6bW92ZSh0cmFjaykpKTsKIAotICAgIG1fcHJp
dmF0ZS0+cmVtb3ZlU291cmNlKHNvdXJjZSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQg
TWVkaWFTdHJlYW06OmFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiBwcml2
YXRlVHJhY2spCitib29sIE1lZGlhU3RyZWFtOjppbnRlcm5hbFJlbW92ZVRyYWNrKFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBTdHJlYW1Nb2RpZmllciBzdHJlYW1Nb2RpZmllcikK
IHsKLSAgICBBU1NFUlQocHJpdmF0ZVRyYWNrKTsKLSAgICBpZiAoIWFjdGl2ZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2s7Ci0gICAgc3dp
dGNoIChwcml2YXRlVHJhY2stPnR5cGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW86Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKLSAgICAgICAg
dHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKnByaXZhdGVUcmFjayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLQotICAgIGlmICghdHJhY2spCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAo
IW1fdHJhY2tTZXQucmVtb3ZlKHRyYWNrLT5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKGFkZFRyYWNrKHRyYWNrKSkKLSAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50
KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50
LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7Ci19CisgICAgdHJhY2stPnJlbW92ZU9ic2VydmVyKHRo
aXMpOwogCi12b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSogcHJpdmF0ZVRyYWNrKQotewotICAgIEFTU0VSVChwcml2YXRlVHJhY2spOwot
ICAgIGlmICghYWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RyZWFtTW9kaWZp
ZXIgPT0gU3RyZWFtTW9kaWZpZWRCeURPTUFQSSkKKyAgICAgICAgbV9wcml2YXRlLT5yZW1vdmVU
cmFjayh0cmFjay0+cHJpdmF0ZVRyYWNrKCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6RG9udE5vdGlm
eUNsaWVudCk7CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJh
Y2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFs
c2UsIFdURjo6bW92ZSh0cmFjaykpKTsKIAotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IGdldFRyYWNrQnlJZChwcml2YXRlVHJhY2stPmlkKCkpOwotICAgIGlmIChyZW1vdmVU
cmFjayh0cmFjaykpCi0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRy
YWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZh
bHNlLCB0cmFjay5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRp
YVN0cmVhbTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQor
dm9pZCBNZWRpYVN0cmVhbTo6c2NoZWR1bGVBY3RpdmVTdGF0ZUNoYW5nZSgpCiB7Ci0gICAgbV9z
Y2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50TmFtZSA9IG1faXNBY3RpdmUgPyBldmVudE5hbWVzKCkuaW5hY3RpdmVFdmVudCA6IGV2ZW50
TmFtZXMoKS5hY3RpdmVFdmVudDsKKyAgICBtX3NjaGVkdWxlZEFjdGl2aXR5RXZlbnRzLmFwcGVu
ZChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBpZiAoIW1f
c2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NjaGVkdWxlZEV2ZW50
VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIGlmICghbV9hY3Rpdml0eUV2ZW50VGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgbV9hY3Rpdml0eUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwog
fQogCi12b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKQordm9pZCBN
ZWRpYVN0cmVhbTo6YWN0aXZpdHlFdmVudFRpbWVyRmlyZWQoKQogewogICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+PiBldmVudHM7Ci0gICAgZXZlbnRzLnN3YXAobV9zY2hlZHVsZWRFdmVudHMpOwor
ICAgIGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkQWN0aXZpdHlFdmVudHMpOwogCi0gICAgZm9yIChh
dXRvJiBldmVudCA6IGV2ZW50cykKKyAgICBmb3IgKGF1dG8mIGV2ZW50IDogZXZlbnRzKSB7Cisg
ICAgICAgIG1faXNBY3RpdmUgPSBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5hY3RpdmVF
dmVudDsKICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCkpOworICAgIH0KIAog
ICAgIGV2ZW50cy5jbGVhcigpOwogfQpAQCAtMzcyLDE3ICsyNDUsMTcgQEAgVVJMUmVnaXN0cnkm
IE1lZGlhU3RyZWFtOjpyZWdpc3RyeSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtUmVn
aXN0cnk6OnJlZ2lzdHJ5KCk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+
KiBNZWRpYVN0cmVhbTo6dHJhY2tWZWN0b3JGb3JUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5
cGUgdHlwZSkKK1ZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtOjp0
cmFja1ZlY3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBmaWx0ZXJUeXBlKSBj
b25zdAogewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6QXVkaW86Ci0gICAgICAgIHJldHVybiAmbV9hdWRpb1RyYWNrczsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgotICAgICAgICByZXR1cm4gJm1fdmlkZW9UcmFja3M7Ci0g
ICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiB0cmFja3M7Cisg
ICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKKyAgICAgICAgaWYg
KGZpbHRlclR5cGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSkKKyAgICAgICAgICAgIHRy
YWNrcy5hcHBlbmQodHJhY2spOworICAgICAgICBlbHNlIGlmICh0cmFjay0+c291cmNlKCktPnR5
cGUoKSA9PSBmaWx0ZXJUeXBlKQorICAgICAgICAgICAgdHJhY2tzLmFwcGVuZCh0cmFjayk7CiAg
ICAgfQotICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHRyYWNrczsKIH0KIAogdm9p
ZCBNZWRpYVN0cmVhbTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW06Ok9ic2VydmVyKiBvYnNlcnZl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
aAppbmRleCBiZjYzODg1Li40MWMwMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykuCiAgKgpAQCAtMzgsMTIgKzM4LDEzIEBACiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWVkaWFTdHJl
YW0gZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxSZWdp
c3RyYWJsZSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0
ZUNsaWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0
RGVzdHJ1Y3Rpb25PYnNlcnZlciB7CitjbGFzcyBNZWRpYVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwgcHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50LCBwdWJsaWMgRXZl
bnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
LCBwdWJsaWMgTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIgewogcHVibGljOgogICAgIGNsYXNz
IE9ic2VydmVyIHsKICAgICBwdWJsaWM6CkBAIC01MiwyNSArNTMsMjQgQEAgcHVibGljOgogICAg
IH07CiAKICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpOwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOworICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFTdHJlYW0q
KTsKICAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+Jik7Ci0gICAgc3Rh
dGljIFJlZjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4pOworICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0
ZT4mJik7CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW0oKTsKIAogICAgIFN0cmluZyBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+aWQoKTsgfQogCi0gICAgdm9pZCBhZGRUcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1v
dmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgdm9pZCBhZGRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJik7CisgICAgdm9pZCBy
ZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrKik7CiAgICAgTWVkaWFTdHJlYW1UcmFjayogZ2V0
VHJhY2tCeUlkKFN0cmluZyk7CiAKLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+PiYgZ2V0QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVHJhY2tzOyB9
Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mIGdldFZpZGVvVHJh
Y2tzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1RyYWNrczsgfQotICAgIFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4+IGdldFRyYWNrcygpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4+IGdldEF1ZGlvVHJhY2tzKCkgY29uc3Q7CisgICAgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPj4gZ2V0VmlkZW9UcmFja3MoKSBjb25zdDsKKyAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRUcmFja3MoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW0+IGNsb25lKCk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBjbG9uZSgp
OwogCi0gICAgYm9vbCBhY3RpdmUoKSBjb25zdDsKLSAgICB2b2lkIHNldEFjdGl2ZShib29sKTsK
KyAgICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KIAogICAgIE1l
ZGlhU3RyZWFtUHJpdmF0ZSogcHJpdmF0ZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0
ZS5nZXQoKTsgfQogCkBAIC04OCw0MiArODgsNDIgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
T2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAogcHJvdGVjdGVkOgotICAgIE1lZGlhU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4pOworICAg
IE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+PiYpOworICAgIE1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiYmKTsKIAogICAgIC8vIENvbnRleHRE
ZXN0cnVjdGlvbk9ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBv
dmVycmlkZSBmaW5hbDsKIAogcHJpdmF0ZToKKyAgICBlbnVtIFN0cmVhbU1vZGlmaWVyIHsgU3Ry
ZWFtTW9kaWZpZWRCeURPTUFQSSwgU3RyZWFtTW9kaWZpZWRCeVBsYXRmb3JtIH07CisKICAgICAv
LyBFdmVudFRhcmdldAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IGZpbmFsIHsgcmVmKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92
ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgLy8gTWVkaWFTdHJlYW1Qcml2YXRlQ2xp
ZW50CisgICAgLy8gTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQg
dHJhY2tEaWRFbmQoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RyZWFt
SXNBY3RpdmUoYm9vbCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJlbW90
ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKikgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVRy
YWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikgb3ZlcnJpZGUgZmluYWw7Ci0KLSAgICBib29s
IHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4pOwotICAgIGJvb2wgYWRk
VHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7CiAKLSAgICBib29sIGhhdmVUcmFj
a1dpdGhTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPik7CisgICAgLy8gTWVk
aWFTdHJlYW1Qcml2YXRlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVN0YXR1c0NoYW5n
ZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVHJhY2tUb1ByaXZh
dGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVtb3ZlVHJhY2tGcm9tUHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYp
IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1Jl
ZlB0cjxFdmVudD4pOwotICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKCk7CisgICAg
Ym9vbCBpbnRlcm5hbEFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBTdHJlYW1N
b2RpZmllcik7CisgICAgYm9vbCBpbnRlcm5hbFJlbW92ZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiYmLCBTdHJlYW1Nb2RpZmllcik7CiAKLSAgICB2b2lkIGNsb25lTWVkaWFTdHJlYW1U
cmFja1ZlY3RvcihWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+Jik7CisgICAgdm9pZCBzY2hlZHVsZUFjdGl2ZVN0
YXRlQ2hhbmdlKCk7CisgICAgdm9pZCBhY3Rpdml0eUV2ZW50VGltZXJGaXJlZCgpOwogCi0gICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNrVmVjdG9yRm9yVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+PiB0cmFja1ZlY3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBmaWx0ZXJU
eXBlID0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZSkgY29uc3Q7CiAKICAgICBSZWZQdHI8TWVk
aWFTdHJlYW1Qcml2YXRlPiBtX3ByaXZhdGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPj4gbV9hdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+PiBtX3ZpZGVvVHJhY2tzOwogCi0gICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRpbWVyOwot
ICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEV2ZW50czsKKyAgICBib29sIG1f
aXNBY3RpdmU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4g
bV90cmFja1NldDsKKworICAgIFRpbWVyIG1fYWN0aXZpdHlFdmVudFRpbWVyOworICAgIFZlY3Rv
cjxSZWZQdHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEFjdGl2aXR5RXZlbnRzOwogCiAgICAgVmVjdG9y
PE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCA1NWE5MGU1Li4yMTU1N2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmlkbApAQCAtMzcsMTAgKzM3LDExIEBACiAgICAgc2VxdWVuY2U8TWVkaWFTdHJlYW1UcmFjaz4g
Z2V0QXVkaW9UcmFja3MoKTsKICAgICBzZXF1ZW5jZTxNZWRpYVN0cmVhbVRyYWNrPiBnZXRWaWRl
b1RyYWNrcygpOwogICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldFRyYWNrcygpOwot
Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRy
YWNrKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2sgdHJhY2spOwogICAgIE1lZGlhU3RyZWFtVHJhY2sgZ2V0VHJhY2tCeUlkKERPTVN0cmlu
ZyB0cmFja0lkKTsKKworICAgIHZvaWQgYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0cmFjayk7
CisgICAgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKKwogICAgIE1l
ZGlhU3RyZWFtIGNsb25lKCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBhY3Rp
dmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCA3MWMxZDhhLi4wMDZkNTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC00MCwxMSArNDAsOSBA
QAogI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW0u
aCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1NvdXJj
ZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
LmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNDMgKzUyLDE5IEBAIFJlZjxN
ZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbVRy
YWNrKGNvbnRleHQsIHByaXZhdGVUcmFjaykpOwogfQogCi1SZWY8TWVkaWFTdHJlYW1UcmFjaz4g
TWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQotewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJhY2sodHJhY2spKTsKLX0KLQogTWVk
aWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKQogICAgIDogUmVm
Q291bnRlZCgpCiAgICAgLCBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBtX3ByaXZh
dGVUcmFjayhwcml2YXRlVHJhY2spCi0gICAgLCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQoZmFs
c2UpCi0gICAgLCBtX3N0b3BwaW5nVHJhY2soZmFsc2UpCi17Ci0gICAgc3VzcGVuZElmTmVlZGVk
KCk7Ci0KLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0Q2xpZW50KHRoaXMpOwotfQotCi1NZWRpYVN0
cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIG90aGVyKQotICAg
IDogUmVmQ291bnRlZCgpCi0gICAgLCBBY3RpdmVET01PYmplY3Qob3RoZXIuc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKQotICAgICwgbV9wcml2YXRlVHJhY2soKm90aGVyLnByaXZhdGVUcmFjaygp
LmNsb25lKCkpCi0gICAgLCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQoZmFsc2UpCi0gICAgLCBt
X3N0b3BwaW5nVHJhY2soZmFsc2UpCisgICAgLCBtX3ByaXZhdGUocHJpdmF0ZVRyYWNrKQogewog
ICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbV9wcml2YXRlVHJhY2stPnNldENsaWVudCh0
aGlzKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1U
cmFjazo6fk1lZGlhU3RyZWFtVHJhY2soKQogewotICAgIG1fcHJpdmF0ZVRyYWNrLT5zZXRDbGll
bnQobnVsbHB0cik7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0U291cmNlKFBhc3NS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbmV3U291cmNlKQotewotICAgIG1fcHJpdmF0ZVRy
YWNrLT5zZXRTb3VyY2UobmV3U291cmNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxs
cHRyKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkg
Y29uc3QKQEAgLTk4LDc1ICs3Miw3NCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFt
VHJhY2s6OmtpbmQoKSBjb25zdAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJp
bmc+IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb0tpbmQoInZp
ZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKLSAgICBpZiAobV9w
cml2YXRlVHJhY2stPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKKyAgICBp
ZiAobV9wcml2YXRlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pCiAgICAg
ICAgIHJldHVybiBhdWRpb0tpbmQ7CiAgICAgcmV0dXJuIHZpZGVvS2luZDsKIH0KIAogY29uc3Qg
U3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZVRyYWNrLT5pZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlkKCk7CiB9CiAKIGNvbnN0
IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6bGFiZWwoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGVUcmFjay0+bGFiZWwoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYWJlbCgpOwog
fQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGVUcmFjay0+ZW5hYmxlZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmVuYWJs
ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIHsKLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0RW5hYmxlZChlbmFibGVkKTsKLX0KLQotYm9v
bCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wcGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2
YXRlVHJhY2stPnN0b3BwZWQoKTsKKyAgICBtX3ByaXZhdGUtPnNldEVuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6bXV0ZWQoKSBjb25zdAogewotICAgIHJldHVy
biBtX3ByaXZhdGVUcmFjay0+bXV0ZWQoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5tdXRlZCgp
OwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlVHJhY2stPnJlYWRvbmx5KCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+
cmVhZG9ubHkoKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdGUoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3ByaXZhdGVUcmFjay0+cmVtb3RlKCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cmVtb3RlKCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFj
azo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21p
Y1N0cmluZz4gZW5kZWQoImVuZGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbGl2ZSgibGl2ZSIs
IEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxBdG9taWNTdHJpbmc+IG5ld1N0YXRlKCJuZXciLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKLQotICAgIHN3aXRjaCAobV9wcml2YXRlVHJhY2stPnJlYWR5U3Rh
dGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6TGl2ZToKLSAgICAgICAgcmV0
dXJuIGxpdmU7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOZXc6Ci0gICAgICAgIHJl
dHVybiBuZXdTdGF0ZTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkOgotICAg
ICAgICByZXR1cm4gZW5kZWQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBlbmRlZFN0YXRlKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGxpdmVTdGF0ZSgi
bGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAgcmV0dXJu
IGVuZGVkKCkgPyBlbmRlZFN0YXRlIDogbGl2ZVN0YXRlOwogfQogCi12b2lkIE1lZGlhU3RyZWFt
VHJhY2s6OmdldFNvdXJjZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiBjYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVuZGVkKCkgY29uc3QKIHsKLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0PiByZXF1ZXN0ID0gTWVkaWFTdHJl
YW1UcmFja1NvdXJjZXNSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spOwotICAgIGlm
ICghUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFTdHJlYW1U
cmFja1NvdXJjZXMocmVxdWVzdC5yZWxlYXNlKCkpKQotICAgICAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOworICAgIHJldHVybiBtX3ByaXZhdGUtPmVuZGVkKCk7Cit9CisKK1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgcmV0dXJuIE1l
ZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqbV9wcml2
YXRlLT5jbG9uZSgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVjaW5n
RGF0YSgpCit7CisgICAgLy8gTk9URTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlICJz
dG9wIiBtZXRob2QgaXMgY2FsbGVkIGZyb20gSlMsIHVzaW5nCisgICAgLy8gdGhlICJJbXBsZW1l
bnRlZEFzIiBJREwgYXR0cmlidXRlLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBBY3RpdmVET01PYmpl
Y3QgcmVxdWlyZXMKKyAgICAvLyBhICJzdG9wIiBtZXRob2QuCisKKyAgICBpZiAocmVtb3RlKCkg
fHwgZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRlLT5lbmRUcmFjaygp
OwogfQogCiBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpn
ZXRDb25zdHJhaW50cygpIGNvbnN0CkBAIC0xNzgsMTcgKzE1MSwxNiBAQCBSZWZQdHI8TWVkaWFU
cmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDb25zdHJhaW50cygpIGNvbnN0
CiAKIFJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3RhdGVzKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3ByaXZhdGVU
cmFjay0+c3RhdGVzKCkpOworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1f
cHJpdmF0ZS0+c3RhdGVzKCkpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM+
IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAgLy8gVGhl
IHNvdXJjZSBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYWNrcywgc28gaXRzIHN0YXRlcyBp
cyBub3QgbmVjZXNzYXJpbHkKLSAgICAvLyBpbiBzeW5jIHdpdGggdGhlIHRyYWNrIHN0YXRlLiBB
IHRyYWNrIHRoYXQgaXMgbmV3IG9yIGhhcyBlbmRlZCBhbHdheXMgaGFzIGEgc291cmNlCisgICAg
Ly8gaW4gc3luYyB3aXRoIHRoZSB0cmFjayBzdGF0ZS4gQSB0cmFjayB0aGF0IGhhcyBlbmRlZCBh
bHdheXMgaGFzIGEgc291cmNlCiAgICAgLy8gdHlwZSBvZiAibm9uZSIuCi0gICAgUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IHNvdXJjZUNhcGFiaWxpdGllcyA9IG1fcHJp
dmF0ZVRyYWNrLT5jYXBhYmlsaXRpZXMoKTsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUgPSBtX3ByaXZhdGVUcmFjay0+cmVhZHlTdGF0ZSgpOwotICAgIGlm
IChyZWFkeVN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5ldyB8fCByZWFkeVN0YXRlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkKQorICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlQ2FwYWJpbGl0aWVzPiBzb3VyY2VDYXBhYmlsaXRpZXMgPSBtX3ByaXZhdGUtPmNhcGFiaWxp
dGllcygpOworICAgIGlmIChlbmRlZCgpKQogICAgICAgICBzb3VyY2VDYXBhYmlsaXRpZXMtPnNl
dFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Tm9uZSk7CiAgICAgCiAgICAg
cmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUoc291cmNlQ2FwYWJpbGl0aWVz
LnJlbGVhc2UoKSk7CkBAIC0xOTcsMzggKzE2OSwxNSBAQCBSZWZQdHI8TWVkaWFTdHJlYW1DYXBh
YmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0CiB2b2lk
IE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYgY29u
c3RyYWludHMpCiB7CiAgICAgbV9jb25zdHJhaW50cy0+aW5pdGlhbGl6ZShjb25zdHJhaW50cyk7
Ci0gICAgbV9wcml2YXRlVHJhY2stPmFwcGx5Q29uc3RyYWludHMobV9jb25zdHJhaW50cyk7Cisg
ICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzKTsKIH0KIAotdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4pCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3Qg
TWVkaWFDb25zdHJhaW50cyYpCiB7CiAgICAgLy8gRklYTUU6IGFwcGx5IHRoZSBuZXcgY29uc3Ry
YWludHMgdG8gdGhlIHRyYWNrCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMjQyOAogfQogCi1SZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFTdHJl
YW1UcmFjazo6Y2xvbmUoKQotewotICAgIHJldHVybiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUo
KnRoaXMpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdEYXRhKCkK
LXsKLSAgICAvLyBOT1RFOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgInN0b3AiIG1l
dGhvZCBpcyBjYWxsZWQgZnJvbSBKUywgdXNpbmcKLSAgICAvLyB0aGUgIkltcGxlbWVudGVkQXMi
IElETCBhdHRyaWJ1dGUuIFRoaXMgaXMgZG9uZSBiZWNhdXNlIEFjdGl2ZURPTU9iamVjdCByZXF1
aXJlcwotICAgIC8vIGEgInN0b3AiIG1ldGhvZC4KLSAgICAKLSAgICAvLyBUaGUgc3RvcCBtZXRo
b2Qgc2hvdWxkICJQZXJtYW5lbnRseSBzdG9wIHRoZSBnZW5lcmF0aW9uIG9mIGRhdGEgZm9yIHRy
YWNrJ3Mgc291cmNlIiwgYnV0IGl0Ci0gICAgLy8gc2hvdWxkIG5vdCBwb3N0IGFuICdlbmRlZCcg
ZXZlbnQuIAotICAgIG1fc3RvcHBpbmdUcmFjayA9IHRydWU7Ci0gICAgbV9wcml2YXRlVHJhY2st
PnN0b3AoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OlN0b3BUcmFja0FuZFN0b3BTb3VyY2UpOwot
ICAgIG1fc3RvcHBpbmdUcmFjayA9IGZhbHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFtVHJhY2s6
OmVuZGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlVHJhY2stPmVuZGVkKCk7Ci19
Ci0KIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1UcmFjazo6
T2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7
CkBAIC0yNDEsNjIgKzE5MCwzMyBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW92ZU9ic2Vy
dmVyKE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyKiBvYnNlcnZlcikKICAgICAgICAgbV9vYnNl
cnZlcnMucmVtb3ZlKHBvcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tSZWFk
eVN0YXRlQ2hhbmdlZCgpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRW5kZWQoKQogewot
ICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBkaXNwYXRjaEV2ZW50KEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogCi0g
ICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlID0gbV9wcml2YXRl
VHJhY2stPnJlYWR5U3RhdGUoKTsKLSAgICBpZiAocmVhZHlTdGF0ZSA9PSBSZWFsdGltZU1lZGlh
U291cmNlOjpMaXZlKQotICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBlbHNlIGlm
IChyZWFkeVN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkICYmICFtX3N0b3BwaW5n
VHJhY2spCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBmb3IgKGF1dG8mIG9ic2Vy
dmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT50cmFja0RpZEVuZCgpOwogCiAg
ICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKIH0KICAgICAKIHZvaWQgTWVkaWFTdHJlYW1U
cmFjazo6dHJhY2tNdXRlZENoYW5nZWQoKQogewotICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtdXRlZCgpKQotICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0
Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsK
LSAgICBlbHNlCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS51bm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0KLSAgICBjb25maWd1cmVU
cmFja1JlbmRlcmluZygpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRW5hYmxl
ZENoYW5nZWQoKQotewotICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBB
dG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbXV0ZWQoKSA/IGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQg
OiBldmVudE5hbWVzKCkudW5tdXRlRXZlbnQ7CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBzZXRFbmFibGVkKG1fcHJpdmF0
ZVRyYWNrLT5lbmFibGVkKCkpOwogICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiB9CiAK
IHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6Y29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKQogewotICAg
IGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIDQuMy4xCiAgICAgLy8g
Li4uIG1lZGlhIGZyb20gdGhlIHNvdXJjZSBvbmx5IGZsb3dzIHdoZW4gYSBNZWRpYVN0cmVhbVRy
YWNrIG9iamVjdCBpcyBib3RoIHVubXV0ZWQgYW5kIGVuYWJsZWQKIH0KIAotdm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCi17Ci0gICAgbV9wcml2YXRlVHJhY2stPnNldFJlYWR5
U3RhdGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQpOwotCi0gICAgZm9yIChhdXRvJiBvYnNl
cnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+dHJhY2tEaWRFbmQoKTsKLX0K
LQogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKIHsKLSAgICBtX3ByaXZhdGVUcmFjay0+
c3RvcChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6U3RvcFRyYWNrT25seSk7CisgICAgc3RvcFBy
b2R1Y2luZ0RhdGEoKTsKIH0KIAogY29uc3QgY2hhciogTWVkaWFTdHJlYW1UcmFjazo6YWN0aXZl
RE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0zMTAsMzMgKzIzMCw2IEBAIGJvb2wgTWVkaWFTdHJl
YW1UcmFjazo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNjaGVkdWxlRXZlbnREaXNwYXRjaChQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKLXsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKLSAgICAgICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKLSAg
ICAgICAgaWYgKG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBjYWxsT25N
YWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+
PiBldmVudHM7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihwcm90
ZWN0ZWRUaGlzLT5tX211dGV4KTsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fZXZlbnRE
aXNwYXRjaFNjaGVkdWxlZCA9IGZhbHNlOwotICAgICAgICAgICAgZXZlbnRzID0gV1RGOjptb3Zl
KHByb3RlY3RlZFRoaXMtPm1fc2NoZWR1bGVkRXZlbnRzKTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmICghcHJvdGVjdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoYXV0byYgZXZlbnQgOiBldmVudHMpCi0gICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7Ci0gICAg
fSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDFkMDljYzQuLmEzNmI4NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29uIEFC
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgpAQCAtNDUsNyArNDUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgTWVkaWFDb25zdHJh
aW50c0ltcGw7CiBjbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKLWNsYXNzIE1lZGlhU3RyZWFtVHJh
Y2tTb3VyY2VzQ2FsbGJhY2s7CiBjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsKIGNsYXNz
IE1lZGlhVHJhY2tDb25zdHJhaW50czsKIApAQCAtNTgsNyArNTcsNiBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwotICAgIHN0YXRpYyBSZWY8
TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smKTsKICAgICB2aXJ0dWFs
IH5NZWRpYVN0cmVhbVRyYWNrKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBj
b25zdDsKQEAgLTcxLDI1ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0
OwogICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKICAgICBib29sIHJlbW90ZSgpIGNvbnN0Owot
ICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWFk
eVN0YXRlKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBlbmRlZCgpIGNvbnN0OworCisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+IGNsb25lKCk7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgp
OwogCiAgICAgUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gZ2V0Q29uc3RyYWludHMoKSBj
b25zdDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IHN0YXRlcygpIGNvbnN0OwogICAg
IFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gZ2V0Q2FwYWJpbGl0aWVzKCkgY29uc3Q7
CiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmKTsKLSAgICB2b2lk
IGFwcGx5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7CisgICAgdm9p
ZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIAotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEo
KTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZVRyYWNrLT5zb3VyY2UoKTsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBw
cml2YXRlVHJhY2soKSB7IHJldHVybiBtX3ByaXZhdGVUcmFjay5nZXQoKTsgfQotCi0gICAgYm9v
bCBlbmRlZCgpIGNvbnN0OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7IH0KKyAgICBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CiAKICAgICB2
b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNl
cnZlciopOwpAQCAtMTA1LDExICsxMDAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhU3RyZWFtVHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7CiAg
ICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJik7CiAKLSAgICB2
b2lkIHNldFNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KTsKLQogICAgIHZv
aWQgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHRyYWNrRGlkRW5kKCk7Ci0g
ICAgdm9pZCBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4pOwogCiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZSBmaW5hbDsK
QEAgLTEyMSwyMSArMTEyLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCB0cmFja1JlYWR5U3RhdGVDaGFuZ2VkKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZv
aWQgdHJhY2tFbmFibGVkQ2hhbmdlZCgpIG92ZXJyaWRlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOwotCi0gICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJ
bXBsPiBtX2NvbnN0cmFpbnRzOwotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgdm9pZCB0cmFja0Vu
ZGVkKCk7CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZCgpOwogCiAgICAgVmVjdG9yPE9ic2Vy
dmVyKj4gbV9vYnNlcnZlcnM7CisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBtX3By
aXZhdGU7CiAKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fcHJpdmF0ZVRyYWNr
OwotICAgIGJvb2wgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkOwotCi0gICAgYm9vbCBtX3N0b3Bw
aW5nVHJhY2s7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX2NvbnN0cmFpbnRz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKaW5kZXggZTgyMWYz
NS4uZGZiMmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCkBAIC00MSwyMiArNDEsMTcgQEAgZW51bSBNZWRp
YVN0cmVhbVRyYWNrU3RhdGUgeyAibmV3IiwgImxpdmUiLCAiZW5kZWQiIH07CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gX3JlYWRvbmx5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBi
b29sZWFuIHJlbW90ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFja1N0
YXRlIHJlYWR5U3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXJ0ZWQ7CiAg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZGVkOwogCi0gICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIHZvaWQgZ2V0U291cmNl
cyhNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICBNZWRpYVN0
cmVhbVRyYWNrIGNsb25lKCk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFd
IHZvaWQgc3RvcCgpOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIGdldENvbnN0cmFpbnRz
KCk7Ci0KICAgICBNZWRpYVNvdXJjZVN0YXRlcyBzdGF0ZXMoKTsKLQogICAgIE1lZGlhU3RyZWFt
Q2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVpdGhlciBBbGxWaWRl
b0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwotCiAgICAgdm9pZCBhcHBseUNv
bnN0cmFpbnRzKERpY3Rpb25hcnkgY29uc3RyYWludHMpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbm92ZXJjb25zdHJhaW5lZDsKLSAgICBNZWRpYVN0cmVhbVRyYWNrIGNsb25lKCk7
Ci0gICAgW0ltcGxlbWVudGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgpOwogCiAg
ICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERP
TVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29sZWFuIHVz
ZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiOTA0MDRjLi44ZmQ2OTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcApAQCAtNjUxLDcgKzY1MSw2IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rpb246OmRp
ZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGUqIHByaXZhdGVTdHJlYW0pCiAK
ICAgICAvLyBGSVhNRTogdGhpcyBjbGFzcyBzaG91bGRuJ3Qga25vdyB0aGF0IHRoZSBwcml2YXRl
IHN0cmVhbSBjbGllbnQgaXMgYSBNZWRpYVN0cmVhbSEKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+
IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4ocHJpdmF0ZVN0cmVhbS0+Y2xpZW50
KCkpOwotICAgIHN0cmVhbS0+c2V0QWN0aXZlKGZhbHNlKTsKIAogICAgIGlmIChtX3NpZ25hbGlu
Z1N0YXRlID09IFNpZ25hbGluZ1N0YXRlQ2xvc2VkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmNwcAppbmRleCAyNzMxMjdlLi4yZGUyNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTE1OCw5ICsx
NTgsOSBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cgogICAgIC8vIDQgLSBDcmVhdGUgdGhlIE1l
ZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3Ry
ZWFtLT5nZXRBdWRpb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyht
X2F1ZGlvQ29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV9h
dWRpb0NvbnN0cmFpbnRzKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5nZXRWaWRl
b1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3Ry
YWludHMpOworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRlb0NvbnN0cmFp
bnRzKTsKIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0cmVhbSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRl
LmNwcAppbmRleCA5ZTI3MzUyLi42OWIwYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29uIEFCLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKQEAgLTQyLDE2MCArNDIsOTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4g
TWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIHZpZGVvU291cmNlcykKK1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IE1l
ZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRp
YVN0cmVhbVByaXZhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1NvdXJjZXMs
IHZpZGVvU291cmNlcykpOwotfQotCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gTWVk
aWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4+JiBhdWRpb1ByaXZhdGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgdmlkZW9Qcml2YXRlVHJhY2tzKQotewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1Qcml2YXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSwgYXVkaW9Qcml2YXRlVHJhY2tzLCB2aWRlb1ByaXZhdGVUcmFja3MpKTsKLX0KLQotdm9p
ZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IHBycFNvdXJjZSkKLXsKLSAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlID0gcHJwU291cmNlOwotICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgotICAgICAgICBpZiAobV9hdWRpb1N0cmVhbVNv
dXJjZXMuZmluZChzb3VyY2UpID09IG5vdEZvdW5kKQotICAgICAgICAgICAgbV9hdWRpb1N0cmVh
bVNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRp
bWVNZWRpYVNvdXJjZTo6VmlkZW86Ci0gICAgICAgIGlmIChtX3ZpZGVvU3RyZWFtU291cmNlcy5m
aW5kKHNvdXJjZSkgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICBtX3ZpZGVvU3RyZWFtU291cmNl
cy5hcHBlbmQoc291cmNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlh
U291cmNlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotfQorICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
PiB0cmFja3M7CisgICAgdHJhY2tzLnJlc2VydmVDYXBhY2l0eShhdWRpb1NvdXJjZXMuc2l6ZSgp
ICsgdmlkZW9Tb3VyY2VzLnNpemUoKSk7CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1v
dmVTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2UpCi17Ci0gICAg
c2l6ZV90IHBvcyA9IG5vdEZvdW5kOwotICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgotICAgICAgICBwb3MgPSBtX2F1ZGlv
U3RyZWFtU291cmNlcy5maW5kKHNvdXJjZSk7Ci0gICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2VzLnJlbW92
ZShwb3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZp
ZGVvOgotICAgICAgICBwb3MgPSBtX3ZpZGVvU3RyZWFtU291cmNlcy5maW5kKHNvdXJjZSk7Ci0g
ICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CisgICAgZm9yIChhdXRvIHNvdXJjZSA6IGF1
ZGlvU291cmNlcykKKyAgICAgICAgdHJhY2tzLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKFdURjo6bW92ZShzb3VyY2UpKSk7CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRl
OjphZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKQotewotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmFkZFJlbW90ZVNvdXJjZShzb3VyY2UpOwot
ICAgIGVsc2UKLSAgICAgICAgYWRkU291cmNlKHNvdXJjZSk7Ci19CisgICAgZm9yIChhdXRvIHNv
dXJjZSA6IHZpZGVvU291cmNlcykKKyAgICAgICAgdHJhY2tzLmFwcGVuZChNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6Y3JlYXRlKFdURjo6bW92ZShzb3VyY2UpKSk7CiAKLXZvaWQgTWVkaWFTdHJl
YW1Qcml2YXRlOjpyZW1vdmVSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNl
KQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnJlbW92ZVJlbW90ZVNv
dXJjZShzb3VyY2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVtb3ZlU291cmNlKHNvdXJjZSk7Cisg
ICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKHRyYWNrcyk7CiB9CiAKLXZvaWQg
TWVkaWFTdHJlYW1Qcml2YXRlOjphZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSogdHJhY2spCitSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6
OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHRy
YWNrcykKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVU
cmFjayh0cmFjayk7Ci0gICAgZWxzZQotICAgICAgICBhZGRUcmFjayh0cmFjayk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVByaXZhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpLCB0cmFja3MpKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZVJl
bW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFjaykKK1JlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKCkKIHsKLSAgICBpZiAobV9j
bGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5yZW1vdmVSZW1vdGVUcmFjayh0cmFjayk7Ci0gICAg
ZWxzZQotICAgICAgICByZW1vdmVUcmFjayh0cmFjayk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+Pigp
KTsKIH0KIAotTWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVByaXZhdGUoY29uc3QgU3Ry
aW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlv
U291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVv
U291cmNlcykKK01lZGlhU3RyZWFtUHJpdmF0ZTo6TWVkaWFTdHJlYW1Qcml2YXRlKGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYg
dHJhY2tzKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBtX2lzQWN0
aXZlKGZhbHNlKQogewogICAgIEFTU0VSVChtX2lkLmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgYWRkVHJhY2so
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXNbaV0pKTsKIAotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAg
ICBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHZpZGVvU291cmNlc1tp
XSkpOworICAgIGZvciAoYXV0byYgdHJhY2sgOiB0cmFja3MpCisgICAgICAgIG1fdHJhY2tTZXQu
YWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CiAKLSAgICB1bnNpZ25lZCBwcm92aWRlZFNvdXJjZXNT
aXplID0gYXVkaW9Tb3VyY2VzLnNpemUoKSArIHZpZGVvU291cmNlcy5zaXplKCk7Ci0gICAgdW5z
aWduZWQgdHJhY2tzU2l6ZSA9IG1fYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUoKSArIG1fdmlkZW9Q
cml2YXRlVHJhY2tzLnNpemUoKTsKLQotICAgIGlmIChwcm92aWRlZFNvdXJjZXNTaXplID4gMCAm
JiB0cmFja3NTaXplID4gMCkKLSAgICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAgdXBkYXRl
QWN0aXZlU3RhdGUoRG9udE5vdGlmeUNsaWVudCk7CiB9CiAKLU1lZGlhU3RyZWFtUHJpdmF0ZTo6
TWVkaWFTdHJlYW1Qcml2YXRlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgYXVkaW9Qcml2YXRlVHJhY2tzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHZpZGVvUHJpdmF0ZVRyYWNrcykK
LSAgICA6IG1fY2xpZW50KDApCi0gICAgLCBtX2lkKGlkKQotICAgICwgbV9pc0FjdGl2ZShmYWxz
ZSkKK1ZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBNZWRpYVN0cmVhbVBy
aXZhdGU6OnRyYWNrcygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1faWQubGVuZ3RoKCkpOwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUoKTsgaSsrKQot
ICAgICAgICBhZGRUcmFjayhhdWRpb1ByaXZhdGVUcmFja3NbaV0pOwotCi0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB2aWRlb1ByaXZhdGVUcmFja3Muc2l6ZSgpOyBpKyspCi0gICAgICAgIGFk
ZFRyYWNrKHZpZGVvUHJpdmF0ZVRyYWNrc1tpXSk7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4+IHRyYWNrczsKKyAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1f
dHJhY2tTZXQuc2l6ZSgpKTsKIAotICAgIHVuc2lnbmVkIHByb3ZpZGVkVHJhY2tzU2l6ZSA9IGF1
ZGlvUHJpdmF0ZVRyYWNrcy5zaXplKCkgKyB2aWRlb1ByaXZhdGVUcmFja3Muc2l6ZSgpOwotICAg
IHVuc2lnbmVkIHRyYWNrc1NpemUgPSBtX2F1ZGlvUHJpdmF0ZVRyYWNrcy5zaXplKCkgKyBtX3Zp
ZGVvUHJpdmF0ZVRyYWNrcy5zaXplKCk7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tT
ZXQudmFsdWVzKCkpCisgICAgICAgIHRyYWNrcy5hcHBlbmQodHJhY2spOwogCi0gICAgaWYgKHBy
b3ZpZGVkVHJhY2tzU2l6ZSA+IDAgJiYgdHJhY2tzU2l6ZSA+IDApCi0gICAgICAgIG1faXNBY3Rp
dmUgPSB0cnVlOworICAgIHJldHVybiB0cmFja3M7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2
YXRlOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dXBk
YXRlQWN0aXZlU3RhdGUoTm90aWZ5Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKIHsK
LSAgICBpZiAobV9pc0FjdGl2ZSA9PSBhY3RpdmUpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBB
IHN0cmVhbSBpcyBhY3RpdmUgaWYgaXQgaGFzIGF0IGxlYXN0IG9uZSB1bi1lbmRlZCB0cmFjay4K
KyAgICBib29sIG5ld0FjdGl2ZVN0YXRlID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiB0cmFjayA6
IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5kZWQoKSkgewor
ICAgICAgICAgICAgbmV3QWN0aXZlU3RhdGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworICAgIGlmIChuZXdB
Y3RpdmVTdGF0ZSA9PSBtX2lzQWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9pc0FjdGl2
ZSA9IG5ld0FjdGl2ZVN0YXRlOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVu
dC0+c2V0U3RyZWFtSXNBY3RpdmUoYWN0aXZlKTsKKyAgICBpZiAobV9jbGllbnQgJiYgbm90aWZ5
Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmFjdGl2ZVN0
YXR1c0NoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFRyYWNrKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IHBycFRyYWNrKQordm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4mJiB0
cmFjaywgTm90aWZ5Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKIHsKLSAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB0cmFja3MgPSB0cmFjay0+dHlwZSgp
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvID8gbV9hdWRpb1ByaXZhdGVUcmFja3MgOiBt
X3ZpZGVvUHJpdmF0ZVRyYWNrczsKLQotICAgIHNpemVfdCBwb3MgPSB0cmFja3MuZmluZCh0cmFj
ayk7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICBpZiAobV90cmFja1NldC5jb250YWlu
cyh0cmFjay0+aWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYWNrcy5hcHBlbmQodHJh
Y2spOwotICAgIGlmICh0cmFjay0+c291cmNlKCkpCi0gICAgICAgIGFkZFNvdXJjZSh0cmFjay0+
c291cmNlKCkpOworICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CisKKyAg
ICBpZiAobV9jbGllbnQgJiYgbm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPmRpZEFkZFRyYWNrVG9Qcml2YXRlKCp0cmFjay5nZXQoKSk7CisKKyAg
ICB1cGRhdGVBY3RpdmVTdGF0ZShOb3RpZnlDbGllbnQpOwogfQogCi12b2lkIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4g
dHJhY2spCit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlDbGllbnRPcHRpb24gbm90aWZ5Q2xpZW50T3B0aW9u
KQogewotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgdHJhY2tz
ID0gdHJhY2stPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyA/IG1fYXVkaW9Q
cml2YXRlVHJhY2tzIDogbV92aWRlb1ByaXZhdGVUcmFja3M7Ci0KLSAgICBzaXplX3QgcG9zID0g
dHJhY2tzLmZpbmQodHJhY2spOwotICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCisgICAgaWYgKCFt
X3RyYWNrU2V0LnJlbW92ZSh0cmFjay5pZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJh
Y2tzLnJlbW92ZShwb3MpOworICAgIGlmIChtX2NsaWVudCAmJiBub3RpZnlDbGllbnRPcHRpb24g
PT0gTm90aWZ5Q2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVtb3ZlVHJhY2tGcm9tUHJp
dmF0ZSh0cmFjayk7CisKKyAgICB1cGRhdGVBY3RpdmVTdGF0ZShOb3RpZnlDbGllbnQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCmluZGV4IDM5ZWM2YzAuLjA5
ODY5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KICAqCkBAIC0zNyw3ICszNyw3IEBACiAKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCIKLSNpbmNsdWRlICJSZWFs
dGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNDUsNjggKzQ1
LDQ2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU7CiAKLWNsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCA6IHB1YmxpYyBNZWRpYVN0cmVh
bVRyYWNrOjpPYnNlcnZlciB7CitjbGFzcyBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCgpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNldFN0cmVhbUlzQWN0aXZlKGJvb2wpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRkUmVtb3RlU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBhZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1By
aXZhdGUqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVN0YXR1c0NoYW5nZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZEFkZFRyYWNrVG9Qcml2YXRlKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVUcmFja0Zyb21Qcml2YXRl
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTdHJlYW1Q
cml2YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Qcml2YXRlPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoY29uc3Qg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvU291cmNlcyk7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoY29uc3QgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiBhdWRpb1ByaXZhdGVUcmFja3MsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgdmlkZW9Qcml2YXRl
VHJhY2tzKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKGNv
bnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpOwor
ICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoY29uc3QgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+Jik7CisgICAgc3RhdGljIFJlZlB0cjxN
ZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZSgpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Q
cml2YXRlKCkgeyB9CiAKKyAgICBlbnVtIE5vdGlmeUNsaWVudE9wdGlvbiB7IE5vdGlmeUNsaWVu
dCwgRG9udE5vdGlmeUNsaWVudCB9OworCiAgICAgTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50KiBj
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudDsgfQogICAgIHZvaWQgc2V0Q2xpZW50KE1l
ZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAK
ICAgICBTdHJpbmcgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICB1bnNpZ25lZCBu
dW1iZXJPZkF1ZGlvU291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9TdHJlYW1Tb3VyY2Vz
LnNpemUoKTsgfQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGF1ZGlvU291cmNlcyh1bnNpZ25l
ZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1N0cmVhbVNvdXJjZXNbaW5kZXhdLmdldCgp
OyB9Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZlZpZGVvU291cmNlcygpIGNvbnN0IHsgcmV0dXJu
IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnNpemUoKTsgfQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2Uq
IHZpZGVvU291cmNlcyh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1N0cmVh
bVNvdXJjZXNbaW5kZXhdLmdldCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZkF1ZGlvVHJh
Y2tzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1ByaXZhdGVUcmFja3Muc2l6ZSgpOyB9Ci0gICAg
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIGF1ZGlvVHJhY2tzKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2F1ZGlvUHJpdmF0ZVRyYWNrc1tpbmRleF0uZ2V0KCk7IH0KLQotICAgIHVu
c2lnbmVkIG51bWJlck9mVmlkZW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvUHJpdmF0
ZVRyYWNrcy5zaXplKCk7IH0KLSAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSogdmlkZW9UcmFj
a3ModW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Qcml2YXRlVHJhY2tzW2lu
ZGV4XS5nZXQoKTsgfQotCi0gICAgdm9pZCBhZGRTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPik7Ci0gICAgdm9pZCByZW1vdmVTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPik7Ci0KLSAgICB2b2lkIGFkZFJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291
cmNlKik7Ci0gICAgdm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSop
OworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiB0cmFja3MoKSBj
b25zdDsKIAogICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQot
ICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwotCi0gICAgdm9pZCBhZGRUcmFjayhQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPik7Ci0gICAgdm9pZCByZW1vdmVUcmFjayhQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPik7CisgICAgdm9pZCB1cGRhdGVBY3RpdmVTdGF0
ZShOb3RpZnlDbGllbnRPcHRpb24pOwogCi0gICAgdm9pZCBhZGRSZW1vdGVUcmFjayhNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSopOwotICAgIHZvaWQgcmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUqKTsKKyAgICB2b2lkIGFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4mJiwgTm90aWZ5Q2xpZW50T3B0aW9uKTsKKyAgICB2b2lkIHJlbW92ZVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgTm90aWZ5Q2xpZW50T3B0aW9uKTsKIAogcHJpdmF0
ZToKLSAgICBNZWRpYVN0cmVhbVByaXZhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9y
PFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvU291cmNlcyk7Ci0gICAgTWVkaWFT
dHJlYW1Qcml2YXRlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+PiYgYXVkaW9Qcml2YXRlVHJhY2tzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHZpZGVvUHJpdmF0ZVRyYWNrcyk7CisgICAg
TWVkaWFTdHJlYW1Qcml2YXRlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYpOwogCiAgICAgTWVkaWFTdHJlYW1Qcml2YXRlQ2xp
ZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9pZDsKLSAgICBWZWN0b3I8UmVmUHRyPFJlYWx0
aW1lTWVkaWFTb3VyY2U+PiBtX2F1ZGlvU3RyZWFtU291cmNlczsKLSAgICBWZWN0b3I8UmVmUHRy
PFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBtX3ZpZGVvU3RyZWFtU291cmNlczsKLQotICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBtX2F1ZGlvUHJpdmF0ZVRyYWNrczsK
LSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gbV92aWRlb1ByaXZh
dGVUcmFja3M7CiAgICAgYm9vbCBtX2lzQWN0aXZlOworCisgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IG1fdHJhY2tTZXQ7CiB9OwogCiB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPj4gTWVkaWFTdHJlYW1Qcml2YXRlVmVj
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCmluZGV4IDMxYTFiNmQuLmQ4MTc4ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICog
IENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiwxODYgKzM3
LDg4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShQYXNzUmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSkKK1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShSZWZQdHI8UmVhbHRpbWVNZWRpYVNv
dXJjZT4mJiBzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZShzb3VyY2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlKFdURjo6bW92ZShzb3VyY2UpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkpKTsKK30KKworUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6Y3JlYXRlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwg
Y29uc3QgU3RyaW5nJiBpZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlKFdURjo6bW92ZShzb3VyY2UpLCBpZCkpOwogfQogCiBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoY29uc3QgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmIG90aGVyKQogICAgIDogUmVmQ291bnRlZCgpCisgICAgLCBtX3NvdXJjZShvdGhl
ci5zb3VyY2UoKSkKICAgICAsIG1fY2xpZW50KG51bGxwdHIpCisgICAgLCBtX2lkKGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKSkKKyAgICAsIG1faXNFbmFibGVkKG90aGVyLmVuYWJsZWQoKSkK
KyAgICAsIG1faXNFbmRlZChvdGhlci5lbmRlZCgpKQogewotICAgIG1faWdub3JlTXV0YXRpb25z
ID0gdHJ1ZTsKLSAgICBtX2lkID0gY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOwotICAgIHNl
dFNvdXJjZShvdGhlci5zb3VyY2UoKSk7Ci0gICAgbV9yZWFkeVN0YXRlID0gb3RoZXIucmVhZHlT
dGF0ZSgpOwotICAgIG1fbXV0ZWQgPSBvdGhlci5tdXRlZCgpOwotICAgIG1fZW5hYmxlZCA9IG90
aGVyLmVuYWJsZWQoKTsKLSAgICBtX3N0b3BwZWQgPSBvdGhlci5zdG9wcGVkKCk7Ci0gICAgbV9p
Z25vcmVNdXRhdGlvbnMgPSBmYWxzZTsKKyAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7
CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShQ
YXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSkKLSAgICA6IG1fc291cmNlKG51
bGxwdHIpCitNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUo
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBjb25zdCBTdHJpbmcmIGlkKQor
ICAgIDogUmVmQ291bnRlZCgpCisgICAgLCBtX3NvdXJjZShzb3VyY2UpCiAgICAgLCBtX2NsaWVu
dChudWxscHRyKQotICAgICwgbV9yZWFkeVN0YXRlKFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5ldykK
LSAgICAsIG1fbXV0ZWQoZmFsc2UpCi0gICAgLCBtX2VuYWJsZWQodHJ1ZSkKLSAgICAsIG1fc3Rv
cHBlZChmYWxzZSkKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAg
ICwgbV9pc0VuZGVkKGZhbHNlKQogewotICAgIG1faWdub3JlTXV0YXRpb25zID0gdHJ1ZTsKLSAg
ICBzZXRTb3VyY2Uoc291cmNlKTsKLSAgICBtX2lnbm9yZU11dGF0aW9ucyA9IGZhbHNlOworICAg
IG1fc291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6On5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgpCiB7Ci0gICAgaWYgKG1fc291cmNlKQotICAg
ICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OnNldFNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
IHNvdXJjZSkKLXsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlLT5yZW1vdmVP
YnNlcnZlcih0aGlzKTsKLQotICAgIG1fc291cmNlID0gc291cmNlOwotCi0gICAgaWYgKCFtX3Nv
dXJjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2V0TXV0ZWQobV9zb3VyY2UtPm11dGVkKCkp
OwotICAgIHNldFJlYWR5U3RhdGUobV9zb3VyY2UtPnJlYWR5U3RhdGUoKSk7Ci0gICAgaWYgKG1f
c291cmNlKQotICAgICAgICBtX3NvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci19Ci0KLWNvbnN0
IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmlkKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1faWQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9pZDsKLQotICAgIC8vIFRoZSBzcGVj
IHNheXM6Ci0gICAgLy8gICBVbmxlc3MgYSBNZWRpYVN0cmVhbVRyYWNrIG9iamVjdCBpcyBjcmVh
dGVkIGFzIGEgcGFydCBhIG9mIHNwZWNpYWwgcHVycG9zZSBhbGdvcml0aG0gdGhhdAotICAgIC8v
ICAgc3BlY2lmaWVzIGhvdyB0aGUgdHJhY2sgaWQgbXVzdCBiZSBpbml0aWFsaXplZCwgdGhlIHVz
ZXIgYWdlbnQgbXVzdCBnZW5lcmF0ZSBhIGdsb2JhbGx5Ci0gICAgLy8gICB1bmlxdWUgaWRlbnRp
ZmllciBzdHJpbmcgYW5kIGluaXRpYWxpemUgdGhlIG9iamVjdCdzIGlkIGF0dHJpYnV0ZSB0byB0
aGF0IHN0cmluZy4KLSAgICBpZiAobV9zb3VyY2UgJiYgbV9zb3VyY2UtPnVzZUlERm9yVHJhY2tJ
RCgpKQotICAgICAgICByZXR1cm4gbV9zb3VyY2UtPmlkKCk7Ci0KLSAgICBtX2lkID0gY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpOwotICAgIHJldHVybiBtX2lkOworICAgIG1fc291cmNlLT5y
ZW1vdmVPYnNlcnZlcih0aGlzKTsKIH0KIAogY29uc3QgU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6bGFiZWwoKSBjb25zdAogewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgcmV0
dXJuIG1fc291cmNlLT5uYW1lKCk7Ci0KLSAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLX0KLQot
Ym9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5kZWQoKSBjb25zdAotewotICAgIHJldHVy
biBtX3N0b3BwZWQgfHwgKG1fc291cmNlICYmIG1fc291cmNlLT5yZWFkeVN0YXRlKCkgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQpOworICAgIHJldHVybiBtX3NvdXJjZS0+bmFtZSgpOwog
fQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjptdXRlZCgpIGNvbnN0CiB7Ci0gICAg
aWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAg
IHJldHVybiBtX3NvdXJjZS0+bXV0ZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKLXsKLSAgICBpZiAobV9tdXRlZCA9PSBtdXRlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tdXRlZCA9IG11dGVkOwotCi0gICAgaWYgKCFtX2Ns
aWVudCB8fCBtX2lnbm9yZU11dGF0aW9ucykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGll
bnQtPnRyYWNrTXV0ZWRDaGFuZ2VkKCk7Ci19Ci0KIGJvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnJlYWRvbmx5KCkgY29uc3QKIHsKLSAgICBpZiAobV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICByZXR1cm4gbV9zb3VyY2UtPnJlYWRvbmx5KCk7
CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnJlbW90ZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCFtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0dXJuIG1f
c291cmNlLT5yZW1vdGUoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKG1fc3RvcHBlZCB8fCBtX2VuYWJsZWQg
PT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gNC4zLjMuMQotICAgIC8vIC4u
LiBhZnRlciBhIE1lZGlhU3RyZWFtVHJhY2sgaXMgZGlzYXNzb2NpYXRlZCBmcm9tIGl0cyB0cmFj
aywgaXRzIGVuYWJsZWQgYXR0cmlidXRlIHN0aWxsCi0gICAgLy8gY2hhbmdlcyB2YWx1ZSB3aGVu
IHNldDsgaXQganVzdCBkb2Vzbid0IGRvIGFueXRoaW5nIHdpdGggdGhhdCBuZXcgdmFsdWUuCi0g
ICAgbV9lbmFibGVkID0gZW5hYmxlZDsKLQotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgbV9z
b3VyY2UtPnNldEVuYWJsZWQoZW5hYmxlZCk7Ci0KLSAgICBpZiAoIW1fY2xpZW50IHx8IG1faWdu
b3JlTXV0YXRpb25zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+dHJhY2tFbmFi
bGVkQ2hhbmdlZCgpOworICAgIC8vIEFsd2F5cyB1cGRhdGUgdGhlIGVuYWJsZWQgc3RhdGUgcmVn
YXJkbGVzcyBvZiB0aGUgdHJhY2sgYmVpbmcgZW5kZWQuCisgICAgbV9pc0VuYWJsZWQgPSBlbmFi
bGVkOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzdG9wKFN0b3BCZWhhdmlv
ciBzdG9wU291cmNlKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5kVHJhY2soKQog
ewotICAgIGlmIChtX3N0b3BwZWQpCisgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChzdG9wU291cmNlID09IFN0b3BUcmFja0FuZFN0b3BTb3VyY2UgJiYgbV9zb3Vy
Y2UpCi0gICAgICAgIG1fc291cmNlLT5zdG9wKCk7Ci0KLSAgICBzZXRSZWFkeVN0YXRlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkVuZGVkKTsKLSAgICBtX3N0b3BwZWQgPSB0cnVlOworICAgIG1faXNF
bmRlZCA9IHRydWU7CisgICAgbV9zb3VyY2UtPnJlcXVlc3RTdG9wKHRoaXMpOwogfQogCi1SZWFs
dGltZU1lZGlhU291cmNlOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpyZWFk
eVN0YXRlKCkgY29uc3QKLXsKLSAgICBpZiAobV9zdG9wcGVkKQotICAgICAgICByZXR1cm4gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQ7Ci0KLSAgICByZXR1cm4gbV9yZWFkeVN0YXRlOwotfQot
Ci12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzZXRSZWFkeVN0YXRlKFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlJlYWR5U3RhdGUgc3RhdGUpCitSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjbG9uZSgpCiB7Ci0gICAgaWYgKG1fcmVhZHlT
dGF0ZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpFbmRlZCB8fCBtX3JlYWR5U3RhdGUgPT0gc3Rh
dGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWR5U3Rh
dGUgb2xkU3RhdGUgPSBtX3JlYWR5U3RhdGU7Ci0gICAgbV9yZWFkeVN0YXRlID0gc3RhdGU7Ci0K
LSAgICBpZiAoIW1fY2xpZW50IHx8IG1faWdub3JlTXV0YXRpb25zKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoKG1fcmVhZHlTdGF0ZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpMaXZlICYm
IG9sZFN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5ldykgfHwgbV9yZWFkeVN0YXRlID09
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkKQotICAgICAgICBtX2NsaWVudC0+dHJhY2tSZWFk
eVN0YXRlQ2hhbmdlZCgpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUoKnRoaXMpKTsKIH0KIAotUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2xvbmUoKQorUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlw
ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSgqdGhpcykpOworICAgIHJldHVybiBt
X3NvdXJjZS0+dHlwZSgpOwogfQogCi0gICAgCiBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmNvbnN0cmFpbnRzKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9jb25zdHJhaW50czsKQEAgLTIyMyw2MyArMTI2LDQwIEBAIFJlZlB0cjxNZWRpYUNvbnN0cmFp
bnRzPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y29uc3RyYWludHMoKSBjb25zdAogCiBjb25z
dCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c3Rh
dGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc291cmNlKSB7Ci0gICAgICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzLCBub1N0
YXRlLCAoKSk7Ci0gICAgICAgIHJldHVybiBub1N0YXRlOwotICAgIH0KLSAgICAKICAgICByZXR1
cm4gbV9zb3VyY2UtPnN0YXRlcygpOwogfQogCi1SZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjp0eXBlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fc291cmNl
KQotICAgICAgICByZXR1cm4gUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZTsKLQotICAgIHJldHVy
biBtX3NvdXJjZS0+dHlwZSgpOwotfQotCiBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFi
aWxpdGllcz4gTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNhcGFiaWxpdGllcygpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICByZXR1cm4gbV9z
b3VyY2UtPmNhcGFiaWxpdGllcygpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjphcHBseUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4pCit2b2lkIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMmKQogewogICAgIC8vIEZJWE1FOiBhcHBseSB0aGUgbmV3IGNvbnN0cmFpbnRzIHRvIHRo
ZSB0cmFjawogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjI0MjgKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlUmVhZHlTdGF0
ZUNoYW5nZWQoKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlU3RvcHBlZCgp
CiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkKKyAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNldFJlYWR5U3RhdGUobV9zb3VyY2UtPnJlYWR5U3RhdGUoKSk7Ci19CiAK
LXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCi17Ci0g
ICAgaWYgKHN0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldE11dGVkKG1f
c291cmNlLT5tdXRlZCgpKTsKKyAgICBtX2lzRW5kZWQgPSB0cnVlOworCisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+dHJhY2tFbmRlZCgpOwogfQogCi12b2lkIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCit2b2lkIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpzb3VyY2VNdXRlZENoYW5nZWQoKQogewotICAgIGlmIChzdG9wcGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzZXRFbmFibGVkKG1fc291cmNlLT5lbmFibGVk
KCkpOworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnRyYWNrTXV0ZWRDaGFu
Z2VkKCk7CiB9CiAKLWJvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Om9ic2VydmVySXNFbmFi
bGVkKCkKK2Jvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnByZXZlbnRTb3VyY2VGcm9tU3Rv
cHBpbmcoKQogewotICAgIHJldHVybiBlbmFibGVkKCk7CisgICAgcmV0dXJuICFtX2lzRW5kZWQ7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCmlu
ZGV4IDU0MzMzZmIuLjJhYjAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5LDcgKzMwLDYgQEAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVk
ZSAiUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJp
bmcuaD4KIApAQCAtNDIsNzggKzQyLDY1IEBAIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNs
aWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrRW5kZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHRyYWNrTXV0ZWRDaGFuZ2VkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja0VuYWJsZWRD
aGFuZ2VkKCkgPSAwOwogfTsKIAogY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4sIHB1YmxpYyBSZWFsdGltZU1l
ZGlhU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+IGNyZWF0ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2U+KTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBjcmVhdGUo
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+IGNyZWF0ZShSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwg
Y29uc3QgU3RyaW5nJiBpZCk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSgpOwogCi0gICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0OworICAgIGNvbnN0IFN0cmluZyYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBsYWJlbCgpIGNv
bnN0OwogCi0gICAgYm9vbCBlbmRlZCgpIGNvbnN0OworICAgIGJvb2wgZW5kZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzRW5kZWQ7IH0KIAogICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKLSAgICB2b2lk
IHNldE11dGVkKGJvb2wpOwogCiAgICAgYm9vbCByZWFkb25seSgpIGNvbnN0OwogICAgIGJvb2wg
cmVtb3RlKCkgY29uc3Q7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Vu
YWJsZWQ7IH0KKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5hYmxlZDsg
fQogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAotICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShS
ZWFsdGltZU1lZGlhU291cmNlOjpSZWFkeVN0YXRlKTsKLSAgICBSZWFsdGltZU1lZGlhU291cmNl
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKLQogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gY2xvbmUoKTsKIAogICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2Uo
UGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPik7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZSB0eXBlKCkgY29uc3Q7CiAKLSAgICBlbnVtIFN0b3BCZWhhdmlvciB7IFN0b3BUcmFj
a0FuZFN0b3BTb3VyY2UsIFN0b3BUcmFja09ubHkgfTsKLSAgICB2b2lkIHN0b3AoU3RvcEJlaGF2
aW9yKTsKLSAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3N0b3BwZWQ7IH0KLSAg
ICAKLSAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNsaWVudCogY2xp
ZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgdm9pZCBlbmRUcmFjaygpOwogCi0gICAg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDbGll
bnQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNs
aWVudDsgfQogCiAgICAgY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkg
Y29uc3Q7CiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IGNhcGFi
aWxpdGllcygpIGNvbnN0OwogCiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFp
bnRzKCkgY29uc3Q7Ci0gICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4pOworICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0
cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7CiAKLXByb3Rl
Y3RlZDoKK3ByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoY29u
c3QgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsKLSAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KTsKKyAgICBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZShSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgY29uc3QgU3RyaW5nJiBpZCk7
CiAKLXByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICAvLyBSZWFsdGltZU1lZGlhU291cmNl
T2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlUmVhZHlTdGF0ZUNoYW5nZWQoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RvcHBlZCgpIG92ZXJyaWRlIGZp
bmFsOwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VNdXRlZENoYW5nZWQoKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5hYmxlZENoYW5nZWQoKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIGJvb2wgb2JzZXJ2ZXJJc0VuYWJsZWQoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2aXJ0dWFsIGJvb2wgcHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpIG92ZXJyaWRlIGZp
bmFsOwogICAgIAogICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBtX3NvdXJjZTsKICAg
ICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNsaWVudCogbV9jbGllbnQ7CiAgICAgUmVmUHRyPE1l
ZGlhQ29uc3RyYWludHM+IG1fY29uc3RyYWludHM7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgbXV0YWJsZSBTdHJpbmcgbV9pZDsKIAotICAg
IGJvb2wgbV9tdXRlZDsKLSAgICBib29sIG1fZW5hYmxlZDsKLSAgICBib29sIG1fc3RvcHBlZDsK
LSAgICBib29sIG1faWdub3JlTXV0YXRpb25zOworICAgIFN0cmluZyBtX2lkOworICAgIGJvb2wg
bV9pc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzRW5kZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9S
ZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IGIyMzZkOTEuLjBjNDU2MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC0yLDYgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDQsOCArNDUsNyBAQCBSZWFsdGltZU1lZGlhU291cmNl
OjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3Qg
U3RyaQogICAgIDogbV9pZChpZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9uYW1lKG5h
bWUpCi0gICAgLCBtX3JlYWR5U3RhdGUoTmV3KQotICAgICwgbV9lbmFibGVkKHRydWUpCisgICAg
LCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX211dGVkKGZhbHNlKQogICAgICwgbV9yZWFkb25s
eShmYWxzZSkKICAgICAsIG1fcmVtb3RlKGZhbHNlKQpAQCAtNTQsMzYgKzU0LDE4IEBAIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlw
ZSB0eXBlLCBjb25zdCBTdHJpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX2lkID0gY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpOworCisgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7CiB9
CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVzZXQoKQogewotICAgIG1fcmVhZHlTdGF0
ZSA9IE5ldzsKLSAgICBtX2VuYWJsZWQgPSB0cnVlOworICAgIG1fc3RvcHBlZCA9IGZhbHNlOwog
ICAgIG1fbXV0ZWQgPSBmYWxzZTsKICAgICBtX3JlYWRvbmx5ID0gZmFsc2U7CiAgICAgbV9yZW1v
dGUgPSBmYWxzZTsKIH0KIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRSZWFkeVN0YXRl
KFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEVuZGVk
IHx8IG1fcmVhZHlTdGF0ZSA9PSByZWFkeVN0YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOwotICAgIGZvciAoYXV0byBvYnNlcnZlciA9IG1fb2Jz
ZXJ2ZXJzLmJlZ2luKCk7IG9ic2VydmVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK29ic2VydmVy
KQotICAgICAgICAoKm9ic2VydmVyKS0+c291cmNlUmVhZHlTdGF0ZUNoYW5nZWQoKTsKLQotICAg
IGlmIChtX3JlYWR5U3RhdGUgPT0gTGl2ZSkgewotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICAvLyBUaGVyZSBhcmUgbm8gbW9y
ZSBjb25zdW1lcnMgb2YgdGhpcyBzb3VyY2UncyBkYXRhLCBzaHV0IGl0IGRvd24gYXMgYXBwcm9w
cmlhdGUuCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKLSAgICAgICAgc3RvcFByb2R1
Y2luZ0RhdGEoKTsKLX0KLQogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcihS
ZWFsdGltZU1lZGlhU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgbV9vYnNlcnZl
cnMuYXBwZW5kKG9ic2VydmVyKTsKQEAgLTEwNiw1MSArODgsNDMgQEAgdm9pZCBSZWFsdGltZU1l
ZGlhU291cmNlOjpzZXRNdXRlZChib29sIG11dGVkKQogCiAgICAgbV9tdXRlZCA9IG11dGVkOwog
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCkKKyAgICBpZiAoc3RvcHBlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2VydmVycy5iZWdp
bigpOyBvYnNlcnZlciAhPSBtX29ic2VydmVycy5lbmQoKTsgKytvYnNlcnZlcikKLSAgICAgICAg
KCpvYnNlcnZlciktPnNvdXJjZU11dGVkQ2hhbmdlZCgpOworICAgIGZvciAoYXV0byYgb2JzZXJ2
ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZU11dGVkQ2hhbmdlZCgp
OwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQorYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpyZWFkb25seSgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFlbmFibGVkKSB7Ci0gICAgICAgIC8vIERvbid0IGRpc2FibGUgdGhlIHNvdXJjZSB1bmxlc3Mg
YWxsIG9ic2VydmVycyBhcmUgZGlzYWJsZWQuCi0gICAgICAgIGZvciAoYXV0byBvYnNlcnZlciA9
IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IG9ic2VydmVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK29i
c2VydmVyKSB7Ci0gICAgICAgICAgICBpZiAoKCpvYnNlcnZlciktPm9ic2VydmVySXNFbmFibGVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQorICAgIHJldHVy
biBtX3JlYWRvbmx5OworfQogCi0gICAgaWYgKG1fZW5hYmxlZCA9PSBlbmFibGVkKQordm9pZCBS
ZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIpCit7Cisg
ICAgaWYgKHN0b3BwZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9lbmFibGVkID0gZW5h
YmxlZDsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOwogCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBF
bmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFlbmFibGVkKQotICAgICAgICBzdG9w
UHJvZHVjaW5nRGF0YSgpOwotICAgIGVsc2UKLSAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7
CisgICAgZm9yIChhdXRvIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKG9i
c2VydmVyICE9IGNhbGxpbmdPYnNlcnZlcikKKyAgICAgICAgICAgIG9ic2VydmVyLT5zb3VyY2VT
dG9wcGVkKCk7CisgICAgfQogCi0gICAgZm9yIChhdXRvIG9ic2VydmVyID0gbV9vYnNlcnZlcnMu
YmVnaW4oKTsgb2JzZXJ2ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsrb2JzZXJ2ZXIpCi0gICAg
ICAgICgqb2JzZXJ2ZXIpLT5zb3VyY2VFbmFibGVkQ2hhbmdlZCgpOworICAgIHN0b3BQcm9kdWNp
bmdEYXRhKCk7CiB9CiAKLWJvb2wgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVhZG9ubHkoKSBjb25z
dAordm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGlu
Z09ic2VydmVyKQogewotICAgIHJldHVybiBtX3JlYWRvbmx5OwotfQorICAgIGlmIChzdG9wcGVk
KCkpCisgICAgICAgIHJldHVybjsKIAotdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wKCkK
LXsKLSAgICAvLyBUaGlzIGlzIGNhbGxlZCBmcm9tIHRoZSB0cmFjay5zdG9wKCkgbWV0aG9kLCB3
aGljaCBzaG91bGQgIlBlcm1hbmVudGx5IHN0b3AgdGhlIGdlbmVyYXRpb24gb2YgZGF0YQotICAg
IC8vIGZvciB0cmFjaydzIHNvdXJjZSIsIHNvIGdvIHN0cmFpZ2h0IHRvIGVuZGVkLiBUaGlzIHdp
bGwgbm90aWZ5IGFueSBvdGhlciB0cmFja3MgdXNpbmcgdGhpcyBzb3VyY2UKLSAgICAvLyB0aGF0
IGl0IGlzIG5vIGxvbmdlciBhdmFpbGFibGUuCi0gICAgc2V0UmVhZHlTdGF0ZShFbmRlZCk7Cisg
ICAgZm9yIChhdXRvIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpIHsKKyAgICAgICAgaWYgKG9ic2Vy
dmVyLT5wcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIHN0b3AoY2FsbGluZ09ic2VydmVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVNZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5oCmluZGV4IDRmOTYwMWYuLjcwMGY3NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmgKQEAgLTU2LDE4ICs1NiwxNiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk9i
c2VydmVyKCkgeyB9CiAgICAgICAgIAogICAgICAgICAvLyBTb3VyY2Ugc3RhdGUgY2hhbmdlcy4K
LSAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVJlYWR5U3RhdGVDaGFuZ2VkKCkgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlU3RvcHBlZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUVuYWJsZWRDaGFuZ2VkKCkgPSAwOwogCiAgICAgICAgIC8vIE9ic2VydmVyIHN0YXRlIHF1ZXJp
ZXMuCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvYnNlcnZlcklzRW5hYmxlZCgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSA9IDA7CiAgICAgfTsK
IAogICAgIHZpcnR1YWwgflJlYWx0aW1lTWVkaWFTb3VyY2UoKSB7IH0KIAogICAgIGJvb2wgaXNB
dWRpb1N0cmVhbVNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBBdWRpbzsgfQotICAg
IHZpcnR1YWwgYm9vbCB1c2VJREZvclRyYWNrSUQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIApAQCAtODAs
MTIgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3Vy
Y2VDYXBhYmlsaXRpZXM+IGNhcGFiaWxpdGllcygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpID0gMDsKICAgICAKLSAgICBl
bnVtIFJlYWR5U3RhdGUgeyBOZXcgPSAwLCBMaXZlID0gMSwgRW5kZWQgPSAyIH07Ci0gICAgdmly
dHVhbCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLQotICAgIHZp
cnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCk7CisgICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdG9wcGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX211dGVkOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpOwpAQCAtMTAy
LDcgKzk1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSB7IH0KIAotICAgIHZv
aWQgc3RvcCgpOworICAgIHZvaWQgc3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyID0gbnVs
bHB0cik7CisgICAgdm9pZCByZXF1ZXN0U3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyID0g
bnVsbHB0cik7CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKQEAgLTExMywxMCArMTA3LDkgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9u
YW1lOwotICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIGJvb2wgbV9zdG9wcGVkOwog
ICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogCi0gICAgYm9vbCBtX2VuYWJsZWQ7
CiAgICAgYm9vbCBtX211dGVkOwogICAgIGJvb2wgbV9yZWFkb25seTsKICAgICBib29sIG1fcmVt
b3RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3Bl
bndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ck93ci5jcHAKaW5kZXggOGViZDQyOS4uYTNiNTg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVu
d2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwCkBAIC0xMTUsNyArMTE1LDYg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IGF1ZGlvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW8pOwogICAgICAgICBpZiAoYXVkaW9Tb3VyY2UpIHsKICAgICAgICAgICAgIGF1ZGlvU291cmNl
LT5yZXNldCgpOwotICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKGF1
ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYXQKICAgICAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+IHZpZGVvU291cmNlID0gZmlyc3RTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW8pOwogICAgICAgICBpZiAodmlkZW9Tb3VyY2UpIHsKICAgICAgICAgICAgIHZpZGVvU291cmNl
LT5yZXNldCgpOwotICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUoUmVhbHRp
bWVNZWRpYVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZp
ZGVvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuY3BwCmluZGV4IGMzODZkODEuLjgzZTg3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuY3BwCkBAIC0xNzQsNyArMTc0LDYgQEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKIAogICAg
ICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gYXVkaW9Tb3VyY2UgPSBpdC0+dmFsdWU7
CiAgICAgICAgIGF1ZGlvU291cmNlLT5yZXNldCgpOwotICAgICAgICBhdWRpb1NvdXJjZS0+c2V0
UmVhZHlTdGF0ZShSZWFsdGltZU1lZGlhU291cmNlOjpMaXZlKTsKICAgICAgICAgYXVkaW9Tb3Vy
Y2VzLmFwcGVuZChhdWRpb1NvdXJjZS5yZWxlYXNlKCkpOwogICAgIH0KIApAQCAtMTkwLDcgKzE4
OSw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNyZWF0ZU1lZGlhU3Ry
ZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAKICAgICAgICAgUmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+IHZpZGVvU291cmNlID0gaXQtPnZhbHVlOwogICAgICAgICB2aWRlb1NvdXJj
ZS0+cmVzZXQoKTsKLSAgICAgICAgdmlkZW9Tb3VyY2UtPnNldFJlYWR5U3RhdGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9Tb3Vy
Y2UucmVsZWFzZSgpKTsKICAgICB9CiAgICAgCg==
</data>
<flag name="review"
          id="280803"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255747</attachid>
            <date>2015-06-29 07:27:06 -0700</date>
            <delta_ts>2015-06-29 11:39:10 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>update-mediastream-api_1.patch</filename>
            <type>text/plain</type>
            <size>131808</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MTUzZWVmLi5iMDg0MmNmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTUtMDYt
MjggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjMxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Qgc3RhdHVzOiAzIGFkZGVkLCA4IGV4
aXN0aW5nIGVuYWJsZWQgKHNvbWUgdXBkYXRlZCkgYW5kIDEgcmVtb3ZlZC4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS1hZGQtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0
bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtdHJhY2tzLXRv
LWluYWN0aXZlLXN0cmVhbS5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tY2xvbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWNsb25lLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRo
LWVuZGVkLXRyYWNrcy5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tZ2V0VHJhY2tzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLWdldFRyYWNrcy5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1jbG9uZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LWdldFNvdXJjZXMuaHRtbDogUmVtb3ZlZC4gVGVzdGVkIG1ldGhvZCByZW1vdmVkIGZyb20gc3Bl
Yy4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2sta2luZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay1raW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay1zdG9wLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLXN0b3AuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNv
bnN0cnVjdG9yLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9yZXNvdXJjZXMvZ2V0
VXNlck1lZGlhLWhlbHBlci5qczogQWRkZWQuCisgICAgICAgICgucmVqZWN0KToKKyAgICAgICAg
KGdldFVzZXJNZWRpYSk6CisgICAgICAgIChkZWZhdWx0UmVqZWN0T3JDYXRjaCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTUtMDYtMjQgIERvdWcgUnVz
c2VsbCAgPGRfcnVzc2VsbEBhcHBsZS5jb20+CiAKICAgICAgICAgQnVnIDE0NjE3NyAtIEFYOiBB
WE9iamVjdENhY2hlIHNob3VsZCB0cnkgdG8gdXNlIGFuIHVuaWdub3JlZCBhY2Nlc3NpYmlsaXR5
T2JqZWN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNzNhYzFmLi5mNzA0NDNiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTQ0LDEwICs0NCw2IEBAIHdlYmtpdC5vcmcvYi83MjY5OCBtZWRpYS9hdWRp
by1nYXJiYWdlLWNvbGxlY3QuaHRtbCBbIFNraXAgXQogCiB3ZWJraXQub3JnL2IvNTM5OTAgZmFz
dC9mb3Jtcy9zZWFyY2gtZXZlbnQtZGVsYXkuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgTm8g
cG9ydCBpbiBXZWJLaXQgYWxyZWFkeSBzdXBwb3J0IGdldE1lZGlhU3RyZWFtLCBzbyB3ZSBhcmUg
c2tpcHBpbmcgdGhvc2UgZm9yIG5vdy4KLWZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29u
c3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lwIF0KLWZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tY2xvbmUuaHRtbCBbIFNraXAgXQotCiB3ZWJraXQub3JnL2IvMTI2MTQyIGNz
czMvY2FsYy90cmFuc2l0aW9ucy1kZXBlbmRlbnQuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKIHdl
YmtpdC5vcmcvYi8xMjQ5MzIgbWVkaWEvdmlkZW8tc2l6ZS5odG1sIFsgUGFzcyBGYWlsdXJlIF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRk
LWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0CmluZGV4IGQ2MjQ3MTAu
LmZmNzZmZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tYWRkLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dApA
QCAtNCw5ICs0LDIwIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIAogUEFTUyBzdHJlYW0x
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtMi5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMg
MQorKioqIGV4dHJhY3QgYXVkaW9UcmFjaworKioqIHN0b3AgYXVkaW9UcmFjawogUEFTUyBhdWRp
b1RyYWNrLnJlYWR5U3RhdGUgaXMgImVuZGVkIgotUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoIGlzIDIKKyoqKiBjb25zdHJ1Y3QgbmV3ICdlbXB0eScgc3RyZWFtMgorUEFTUyBz
dHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZh
bHNlCisqKiogYWRkIGVuZGVkIGF1ZGlvVHJhY2sgdG8gc3RyZWFtMgorKioqIHNjaGVkdWxlIGNv
bnRpbnVhdGlvbiBvZiB0ZXN0CisqKiogZXh0cmFjdCB2aWRlb1RyYWNrIChhbmQgdmVyaWZ5IGxp
dmVuZXNzKQorUEFTUyB2aWRlb1RyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCisqKiogYWRkIGxp
dmUgdmlkZW9UcmFjayB0byBzdHJlYW0yCisqKiogc3RyZWFtMiBpcyBhY3RpdmUgYWdhaW4KK1BB
U1Mgc3RyZWFtMi5hY3RpdmUgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCmluZGV4IDFjZDQ5
ZDYuLjRmOGNiZjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy5odG1sCkBAIC0yLDI3ICsyLDEz
IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jl
c291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlw
dD4KIAogICAgICAgICAgICAgdmFyIHN0cmVhbTE7CiAgICAgICAgICAgICB2YXIgc3RyZWFtMjsK
ICAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrOwotCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJv
cigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdl
bmVyYXRpb24gZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFy
eSwgY2FsbGJhY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBj
YWxsYmFjaywgZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlv
biA6JyArIGUpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKIAog
ICAgICAgICAgICAgZnVuY3Rpb24gdHJ5QWRkVHJhY2soc3RyZWFtLCB0cmFjaykKICAgICAgICAg
ICAgIHsKQEAgLTM0LDM1ICsyMCw2MiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAorICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkTm90RmlyZUFjdGl2ZSgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgic3RyZWFtMiBzaG91bGQgbm90IGJl
Y29tZSBhY3RpdmUgaWYgYW4gZW5kZWQgdHJhY2sgaXMgYWRkZWQiKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkRmlyZUFjdGl2ZSgpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBzdHJlYW0yIGlzIGFjdGl2ZSBhZ2FpbiIpOwor
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFjdGl2ZScsICd0cnVlJyk7CisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIGNvbnRpbnVlVGVzdCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVidWcoIioqKiBleHRyYWN0IHZpZGVvVHJhY2sgKGFuZCB2ZXJpZnkgbGl2ZW5lc3MpIik7Cisg
ICAgICAgICAgICAgICAgdmlkZW9UcmFjayA9IHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKVswXTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3ZpZGVvVHJhY2sucmVhZHlT
dGF0ZScsICdsaXZlJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGFkZCBsaXZlIHZp
ZGVvVHJhY2sgdG8gc3RyZWFtMiIpOworICAgICAgICAgICAgICAgIHN0cmVhbTIub25hY3RpdmUg
PSBzaG91bGRGaXJlQWN0aXZlOworICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIs
IHZpZGVvVHJhY2spOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmdW5jdGlvbiBjcmVh
dGVTdHJlYW1BbmRBZGRUcmFja3MoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiKioqIGV4dHJhY3QgYXVkaW9UcmFjayIpOwogICAgICAgICAgICAgICAg
IGF1ZGlvVHJhY2sgPSBzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAgICAgICAgICAg
ICAgZGVidWcoIioqKiBzdG9wIGF1ZGlvVHJhY2siKTsKICAgICAgICAgICAgICAgICBhdWRpb1Ry
YWNrLnN0b3AoKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2F1ZGlv
VHJhY2sucmVhZHlTdGF0ZScsICdlbmRlZCcpOwotICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNr
KHN0cmVhbTIsIGF1ZGlvVHJhY2spOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0y
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzInKTsKIAotICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogY29u
c3RydWN0IG5ldyAnZW1wdHknIHN0cmVhbTIiKQorICAgICAgICAgICAgICAgIHN0cmVhbTIgPSBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFt
Mi5nZXRUcmFja3MoKS5sZW5ndGgnLCAnMCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdz
dHJlYW0yLmFjdGl2ZScsICdmYWxzZScpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0yKHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RyZWFtMiA9IHM7Ci0gICAg
ICAgICAgICAgICAgY3JlYXRlU3RyZWFtQW5kQWRkVHJhY2tzKCk7CisgICAgICAgICAgICAgICAg
ZGVidWcoIioqKiBhZGQgZW5kZWQgYXVkaW9UcmFjayB0byBzdHJlYW0yIik7CisgICAgICAgICAg
ICAgICAgc3RyZWFtMi5vbmFjdGl2ZSA9IHNob3VsZE5vdEZpcmVBY3RpdmU7CisgICAgICAgICAg
ICAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMiwgYXVkaW9UcmFjayk7CisKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiKioqIHNjaGVkdWxlIGNvbnRpbnVhdGlvbiBvZiB0ZXN0Iik7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChjb250aW51ZVRlc3QpOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJl
YW0ocykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHJlYW0xID0gczsKICAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcx
Jyk7Ci0gICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtMik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgICAgIGNyZWF0ZVN0cmVhbUFu
ZEFkZFRyYWNrcygpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFy
dE1lZGlhKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVz
dCBhZGRpbmcgdHJhY2tzIHRvIGluYWN0aXZlIE1lZGlhU3RyZWFtLiIpOwotICAgICAgICAgICAg
ICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTEpOyAK
KyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGIyZTFkMDUuLmU4OGMyZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3Mt
ZXhwZWN0ZWQudHh0CkBAIC00NCwxMyArNDQsMjQgQEAgUEFTUyBzdHJlYW0xLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyAyCiBQQVNTIHN0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMgogCi0qKiogcmVt
b3ZlIGFsbCB0cmFja3MsIHN0cmVhbS5lbmRlZCBzaG91bGQgcmV0dXJuIHRydWUKKyoqKiByZW1v
dmUgYWxsIHRyYWNrcywgc3RyZWFtIHdpbGwgYmVjb21lIGluYWN0aXZlCiBQQVNTIHN0cmVhbTIu
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMAogUEFTUyBzdHJlYW0yLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIGlzIDAKIAotKioqIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlbW92ZSBh
IHRyYWNrIGFmdGVyIHRoZSBzdHJlYW0gaGFzIGVuZGVkCi1QQVNTIHN0cmVhbTIucmVtb3ZlVHJh
Y2soYXVkaW9UcmFjaykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjog
RE9NIEV4Y2VwdGlvbiAxMS4KKyoqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIHRydWUgKHVu
dGlsIGV2ZW50IGlzIGZpcmVkKQorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyB0cnVlCisKIFN0cmVh
bTIgaXMgaW5hY3RpdmUuCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZhbHNlCisKKyoqKiBhZGQg
bm9uLWVuZGVkIHRyYWNrCitQQVNTIGF1ZGlvVHJhY2sucmVhZHlTdGF0ZSBpcyBub3QgImVuZGVk
IgorCisqKiogYWN0aXZlIGF0dHJpYnV0ZSBpcyBzdGlsbCBmYWxzZSAodW50aWwgZXZlbnQgaXMg
ZmlyZWQpCitQQVNTIHN0cmVhbTIuYWN0aXZlIGlzIGZhbHNlCisKK1N0cmVhbTIgaXMgYWN0aXZl
LgorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbAppbmRl
eCBlZGU4ZTlmLi5lYzZjMGJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sCkBAIC0y
LDYgKzIsNyBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPC9o
ZWFkPgogICAgIDxib2R5PgogICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KQEAgLTE0
LDIwICsxNSw2IEBACiAgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKICAgICAgICAgICAgIHZh
ciB2aWRlb1RyYWNrOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsKLSAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1
bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgICAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRp
YSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBm
dW5jdGlvbiB0cnlBZGRUcmFjayhzdHJlYW0sIHRyYWNrKSB7CiAgICAgICAgICAgICAgICAgdHJ5
IHsKICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmFkZFRyYWNrKHRyYWNrKTsKQEAgLTUxLDEz
ICszOCwyMSBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzaG91bGRG
aXJlQWN0aXZlKCkgewotICAgICAgICAgICAgICAgIGRlYnVnKCJTdHJlYW0yIGlzIGFjdGl2ZS4i
KTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPlN0cmVhbTIgaXMgYWN0aXZlLiIpOworICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFjdGl2ZScsICd0cnVlJyk7CiAgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHNob3VsZEZpcmVJbkFjdGl2ZSgpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiU3Ry
ZWFtMiBpcyBpbmFjdGl2ZS4iKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiPGJyPlN0cmVhbTIgaXMgaW5hY3RpdmUuIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIuYWN0aXZlJywgJ2ZhbHNlJyk7CisKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiPGJyPioqKiBhZGQgbm9uLWVuZGVkIHRyYWNrIik7CisgICAgICAgICAg
ICAgICAgc2hvdWxkTm90QmUoJ2F1ZGlvVHJhY2sucmVhZHlTdGF0ZScsICciZW5kZWQiJyk7Cisg
ICAgICAgICAgICAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMiwgYXVkaW9UcmFjayk7CisKKyAgICAg
ICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIGZhbHNl
ICh1bnRpbCBldmVudCBpcyBmaXJlZCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtMi5hY3RpdmUnLCAnZmFsc2UnKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVu
Y3Rpb24gZ290U3RyZWFtMihzKSB7CkBAIC0xMjQsMjIgKzExOSwyMiBAQAogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzInKTsKICAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcs
ICcyJyk7CiAKLSAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiByZW1vdmUgYWxsIHRyYWNr
cywgc3RyZWFtLmVuZGVkIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICAgICAgICAgICAgICAgIGRl
YnVnKCI8YnI+KioqIHJlbW92ZSBhbGwgdHJhY2tzLCBzdHJlYW0gd2lsbCBiZWNvbWUgaW5hY3Rp
dmUiKTsKICAgICAgICAgICAgICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0yLCBzdHJlYW0yLmdl
dEF1ZGlvVHJhY2tzKClbMF0pOwogICAgICAgICAgICAgICAgIHRyeVJlbW92ZVRyYWNrKHN0cmVh
bTIsIHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKVswXSk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOwogICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCdzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKIAot
ICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIGl0IHNob3VsZCBiZSBpbXBvc3NpYmxlIHRv
IHJlbW92ZSBhIHRyYWNrIGFmdGVyIHRoZSBzdHJlYW0gaGFzIGVuZGVkIik7Ci0gICAgICAgICAg
ICAgICAgc2hvdWxkVGhyb3coJ3N0cmVhbTIucmVtb3ZlVHJhY2soYXVkaW9UcmFjayknLCAnIkVy
cm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMSInKTsKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiPGJyPioqKiBhY3RpdmUgYXR0cmlidXRlIGlzIHN0aWxsIHRydWUgKHVudGls
IGV2ZW50IGlzIGZpcmVkKSIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFj
dGl2ZScsICd0cnVlJyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdv
dFN0cmVhbTEocykgewogICAgICAgICAgICAgICAgIHN0cmVhbTEgPSBzOwotICAgICAgICAgICAg
ICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIpOwor
ICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBnZXRVc2Vy
TWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0xKTsKKyAgICAgICAgICAg
IGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTEpOwogCiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CiAgICAgICAg
ICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1pbmFjdGl2
ZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
YWRkLXRyYWNrcy10by1pbmFjdGl2ZS1zdHJlYW0uaHRtbAppbmRleCBiZTliYTVlLi42MjBiYjMy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFk
ZC10cmFja3MtdG8taW5hY3RpdmUtc3RyZWFtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtdHJhY2tzLXRvLWluYWN0aXZlLXN0cmVhbS5odG1s
CkBAIC0yLDI4ICsyLDEzIEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4K
ICAgICAgICAgPHNjcmlwdD4KIAogCiAgICAgICAgICAgICB2YXIgc3RyZWFtMTsKICAgICAgICAg
ICAgIHZhciBhdWRpb1RyYWNrOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24g
ZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJh
Y2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAg
ICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywg
ZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUp
OwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGZ1bmN0aW9uIHRyeUFkZFRyYWNrKHN0cmVh
bSwgdHJhY2spCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKQEAgLTU1LDcg
KzQwLDcgQEAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0TWVkaWEoKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IGFkZGluZyB0cmFja3MgdG8gaW5h
Y3RpdmUgTWVkaWFTdHJlYW0uIik7Ci0gICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMSk7IAorICAgICAgICAgICAgICAgIGdldFVz
ZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTEpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwog
ICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY2xvbmUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZmZlNDMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWNsb25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACisKK1BBU1MgbWVkaWFTdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBtZWRpYVN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCituZXdNZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtLmNsb25lKCkK
K1BBU1MgbWVkaWFTdHJlYW0uaWQgaXMgbm90IG5ld01lZGlhU3RyZWFtLmlkCitjaGVjayB0cmFj
a3MKK1BBU1MgdHJhY2suaWQgaXMgbm90IG5ld1RyYWNrLmlkCitQQVNTIHRyYWNrLmtpbmQgaXMg
bmV3VHJhY2sua2luZAorUEFTUyB0cmFjay5sYWJlbCBpcyBuZXdUcmFjay5sYWJlbAorUEFTUyB0
cmFjay5yZWFkeVN0YXRlIGlzIG5ld1RyYWNrLnJlYWR5U3RhdGUKK1BBU1MgdHJhY2suZW5hYmxl
ZCBpcyBuZXdUcmFjay5lbmFibGVkCitQQVNTIHRyYWNrLm11dGVkIGlzIG5ld1RyYWNrLm11dGVk
Citkb25lCitjaGVjayB0cmFja3MKK1BBU1MgdHJhY2suaWQgaXMgbm90IG5ld1RyYWNrLmlkCitQ
QVNTIHRyYWNrLmtpbmQgaXMgbmV3VHJhY2sua2luZAorUEFTUyB0cmFjay5sYWJlbCBpcyBuZXdU
cmFjay5sYWJlbAorUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzIG5ld1RyYWNrLnJlYWR5U3RhdGUK
K1BBU1MgdHJhY2suZW5hYmxlZCBpcyBuZXdUcmFjay5lbmFibGVkCitQQVNTIHRyYWNrLm11dGVk
IGlzIG5ld1RyYWNrLm11dGVkCitkb25lCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sCmluZGV4IDVkNjdjOGQuLjI4ZTEzODQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY2xvbmUuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLmh0bWwK
QEAgLTIsNTEgKzIsNDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0Pgog
ICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOwogICAgICAgICAg
ICAgdmFyIG5ld01lZGlhU3RyZWFtOwotICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2tzOwotICAg
ICAgICAgICAgdmFyIHZpZGVvVHJhY2tzOwotICAgICAgICAgICAgdmFyIG5ld0F1ZGlvVHJhY2tz
OwotICAgICAgICAgICAgdmFyIG5ld1ZpZGVvVHJhY2tzOwotCi0gICAgICAgICAgICBmdW5jdGlv
biBjaGVja1RyYWNrcyh0cmFja1NldDEsIHRyYWNrU2V0MikgewotICAgICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdHJhY2tTZXQxLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCd0cmFja1NldDFbaV0ucmVhZHlTdGF0ZScsICd0cmFja1NldDJbaV0u
cmVhZHlTdGF0ZScpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2tTZXQxW2ld
LmVuYWJsZWQnLCAndHJhY2tTZXQyW2ldLmVuYWJsZWQnKTsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3RyYWNrU2V0MVtpXS5tdXRlZCcsICd0cmFja1NldDJbaV0ubXV0ZWQnKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgdHJhY2s7CisgICAgICAgICAgICB2YXIg
bmV3VHJhY2s7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrVHJhY2tzKHRyYWNrMSwgdHJh
Y2syKSB7CisgICAgICAgICAgICAgICAgdHJhY2sgPSB0cmFjazE7CisgICAgICAgICAgICAgICAg
bmV3VHJhY2sgPSB0cmFjazI7CisgICAgICAgICAgICAgICAgZGVidWcoImNoZWNrIHRyYWNrcyIp
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd0cmFjay5pZCcsICduZXdUcmFjay5pZCcp
OworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5raW5kJywgJ25ld1RyYWNrLmtpbmQn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2subGFiZWwnLCAnbmV3VHJhY2subGFi
ZWwnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sucmVhZHlTdGF0ZScsICduZXdU
cmFjay5yZWFkeVN0YXRlJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmVuYWJs
ZWQnLCAnbmV3VHJhY2suZW5hYmxlZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFj
ay5tdXRlZCcsICduZXdUcmFjay5tdXRlZCcpOworICAgICAgICAgICAgICAgIGRlYnVnKCJkb25l
Iik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJl
YW0pIHsKICAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsKICAgICAgICAgICAg
ICAgICBkZWJ1ZygiIik7CiAKKyAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBkb24ndCBoYXZl
IGFueSBndWFyYW50ZWVzIG9uIHRoZSBvcmRlciBmcm9tIGdldEF1ZGlvL1ZpZGVvVHJhY2tzKCks
IHdlCisgICAgICAgICAgICAgICAgLy8gY2FuJ3QgaGF2ZSBhIHN0cmVhbSB3aXRoIG1vcmUgdGhh
biBvbmUgdHJhY2sgb2YgZWFjaCBraW5kLgorICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtZWRp
YVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ21lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKwog
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coIm5ld01lZGlhU3RyZWFtID0gbWVkaWFTdHJlYW0u
Y2xvbmUoKSIpOwogCiAgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ21lZGlhU3RyZWFtLmlk
JywgJ25ld01lZGlhU3RyZWFtLmlkJyk7CiAKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJh
dWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkiKTsKLSAgICAgICAgICAg
ICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJuZXdBdWRpb1RyYWNrcyA9IG5ld01l
ZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkiKTsKLSAgICAgICAgICAgICAgICBldmFsQW5kTG9n
KCJuZXdWaWRlb1RyYWNrcyA9IG5ld01lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKCkiKTsKLQot
ICAgICAgICAgICAgICAgIGNoZWNrVHJhY2tzKGF1ZGlvVHJhY2tzLCBuZXdBdWRpb1RyYWNrcyk7
Ci0gICAgICAgICAgICAgICAgY2hlY2tUcmFja3ModmlkZW9UcmFja3MsIG5ld1ZpZGVvVHJhY2tz
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrcyhtZWRpYVN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdLCBuZXdNZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
KTsKKyAgICAgICAgICAgICAgICBjaGVja1RyYWNrcyhtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNr
cygpWzBdLCBuZXdNZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdKTsKIAotICAgICAgICAg
ICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhRXJyb3IoKSB7Ci0gICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgnQ291bGQgbm90IGdldCBNZWRpYVN0cmVhbScpOwogICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgp
IHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtLCBn
ZXRVc2VyTWVkaWFFcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0
aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlv
OnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNr
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1ZWIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJh
Y2tzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACisKK1BBU1MgdHlwZW9mIG1lZGlhU3Ry
ZWFtLmFjdGl2ZSBpcyAnYm9vbGVhbicKK1BBU1MgbWVkaWFTdHJlYW0uYWN0aXZlIGlzIHRydWUK
K3ZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdCithdWRpb1RyYWNr
ID0gbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXQorUEFTUyB2aWRlb1RyYWNrLnJlYWR5
U3RhdGUgaXMgbm90ICJlbmRlZCIKK1BBU1MgYXVkaW9UcmFjay5yZWFkeVN0YXRlIGlzIG5vdCAi
ZW5kZWQiCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBpcyAiZW5kZWQiCitQQVNTIGF1ZGlv
VHJhY2sucmVhZHlTdGF0ZSBpcyAiZW5kZWQiCitQQVNTIHR5cGVvZiBuZXdNZWRpYVN0cmVhbS5h
Y3RpdmUgaXMgJ2Jvb2xlYW4nCitQQVNTIG5ld01lZGlhU3RyZWFtLmFjdGl2ZSBpcyBmYWxzZQor
UEFTUyBtZWRpYVN0cmVhbS5pZCBpcyBub3QgbmV3TWVkaWFTdHJlYW0uaWQKK1BBU1MgdHlwZW9m
IG1lZGlhU3RyZWFtQ29weS5hY3RpdmUgaXMgJ2Jvb2xlYW4nCitQQVNTIG1lZGlhU3RyZWFtQ29w
eS5hY3RpdmUgaXMgZmFsc2UKK1BBU1MgbWVkaWFTdHJlYW1Db3B5LmlkIGlzIG5vdCBuZXdNZWRp
YVN0cmVhbS5pZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy5odG1sCmlu
ZGV4IGQ3NDI0NDUuLjA0ZDhlYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1l
bmRlZC10cmFja3MuaHRtbApAQCAtMiwxNiArMiwxOCBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAgICAgICAgICAgICB2YXIgbWVkaWFT
dHJlYW07CiAgICAgICAgICAgICB2YXIgdmlkZW9UcmFjazsKICAgICAgICAgICAgIHZhciBhdWRp
b1RyYWNrOwogICAgICAgICAgICAgdmFyIG5ld01lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFy
IG1lZGlhU3RyZWFtQ29weTsKIAogICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVh
bSkgewogICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtID0gc3RyZWFtOwogICAgICAgICAgICAg
ICAgIGRlYnVnKCIiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdtZWRpYVN0
cmVhbS5lbmRlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdt
ZWRpYVN0cmVhbS5hY3RpdmUnLCB0cnVlKTsKIAogICAgICAgICAgICAgICAgIGV2YWxBbmRMb2co
InZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdIik7CiAgICAgICAg
ICAgICAgICAgZXZhbEFuZExvZygiYXVkaW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKClbMF0iKTsKQEAgLTI5LDI2ICszMSwxOCBAQAogICAgICAgICAgICAgICAgIHRyYWNrc0Fy
cmF5LnB1c2goYXVkaW9UcmFjayk7CiAgICAgICAgICAgICAgICAgbmV3TWVkaWFTdHJlYW0gPSBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0odHJhY2tzQXJyYXkpOwogCi0gICAgICAgICAgICAgICAgc2hv
dWxkRXZhbHVhdGVUbygnbmV3TWVkaWFTdHJlYW0uZW5kZWQnLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgICBzaG91bGROb3RCZUVxdWFsVG9TdHJpbmcobWVkaWFTdHJlYW0uaWQsIG5ld01lZGlhU3Ry
ZWFtLmlkKTsKKyAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCduZXdNZWRpYVN0cmVh
bS5hY3RpdmUnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ21lZGlhU3Ry
ZWFtLmlkJywgJ25ld01lZGlhU3RyZWFtLmlkJyk7CiAKLSAgICAgICAgICAgICAgICB2YXIgbWVk
aWFTdHJlYW1Db3B5ID0gbmV3IHdlYmtpdE1lZGlhU3RyZWFtKG5ld01lZGlhU3RyZWFtKTsKLSAg
ICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdtZWRpYVN0cmVhbUNvcHkuZW5kZWQnLCB0
cnVlKTsKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbUNvcHkgPSBuZXcgd2Via2l0TWVkaWFT
dHJlYW0obmV3TWVkaWFTdHJlYW0pOworICAgICAgICAgICAgICAgIHNob3VsZEV2YWx1YXRlVG8o
J21lZGlhU3RyZWFtQ29weS5hY3RpdmUnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgc2hvdWxk
Tm90QmUoJ21lZGlhU3RyZWFtQ29weS5pZCcsICduZXdNZWRpYVN0cmVhbS5pZCcpOwotICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWFFcnJvcigpIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdDb3VsZCBub3QgZ2V0IE1lZGlhU3RyZWFtJyk7CiAg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIHN0YXJ0KCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVv
OnRydWV9LCBnb3RTdHJlYW0sIGdldFVzZXJNZWRpYUVycm9yKTsKLSAgICAgICAgICAgICAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVz
ZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdldFVzZXJN
ZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tZ2V0VHJh
Y2tzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0tZ2V0VHJhY2tzLWV4cGVjdGVkLnR4dAppbmRleCA1MDk0YjJlLi43NmVhMmE0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWdldFRyYWNrcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS1nZXRUcmFja3MtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDE0IEBACi1UZXN0IGFkZGluZyB0
cmFja3MgdG8gaW5hY3RpdmUgTWVkaWFTdHJlYW0uCitUZXN0IHRoZSBkaWZmZXJlbnQgbWV0aG9k
cyB0byBnZXQgdHJhY2tzIGZyb20gYSBNZWRpYVN0cmVhbS4KIAogT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgogCiAKIFBBU1Mgc3RyZWFtMS5nZXRUcmFja3MoKS5sZW5ndGggaXMgMgogUEFTUyBz
dHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCBpcyAyCitnZXRBdWRpb1RyYWNrcygpLCBnZXRWaWRl
b1RyYWNrcygpIGFuZCBnZXRUcmFja3MoKSBtdXN0IHJldHVybiBhIG5ldyBzZXF1ZW5jZSBhdCBl
dmVyeSBpbnZvY2F0aW9uCitQQVNTIHN0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKSAhPSBzdHJlYW0y
LmdldEF1ZGlvVHJhY2tzKCkgaXMgdHJ1ZQorUEFTUyBzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCkg
IT0gc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpIGlzIHRydWUKK1BBU1Mgc3RyZWFtMi5nZXRUcmFj
a3MoKSAhPSBzdHJlYW0yLmdldFRyYWNrcygpIGlzIHRydWUKIFBBU1MgdHJhY2sgYWRkZWQgdG8g
c3RyZWFtLgogUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDIKIFBBU1Mg
c3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCkBAIC0xMiw3ICsxNiwxMiBAQCBQ
QVNTIHN0cmVhbTIuZ2V0VHJhY2tzKCkubGVuZ3RoIGlzIDMKIFBBU1MgdHJhY2sgYWRkZWQgdG8g
c3RyZWFtLgogUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDIKIFBBU1Mg
c3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAyCi1QQVNTIHN0cmVhbTIuZ2V0VHJh
Y2tzKCkubGVuZ3RoIGlzIDQKK1BBU1MgYWxsVHJhY2tzLmxlbmd0aCBpcyA0CitQQVNTIHN0cmVh
bTIuZ2V0VHJhY2tCeUlkKGlkKSBpcyBub24tbnVsbC4KK1BBU1Mgc3RyZWFtMi5nZXRUcmFja0J5
SWQoaWQpIGlzIG5vbi1udWxsLgorUEFTUyBzdHJlYW0yLmdldFRyYWNrQnlJZChpZCkgaXMgbm9u
LW51bGwuCitQQVNTIHN0cmVhbTIuZ2V0VHJhY2tCeUlkKGlkKSBpcyBub24tbnVsbC4KK1BBU1Mg
c3RyZWFtMi5nZXRUcmFja0J5SWQoImZvby1pZCIpIGlzIG51bGwKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1nZXRUcmFja3MuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tZ2V0VHJhY2tzLmh0bWwKaW5kZXggODFjYTBj
Ni4uNzliZjA2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS1nZXRUcmFja3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLWdldFRyYWNrcy5odG1sCkBAIC0yLDI4ICsyLDE1IEBACiA8aHRtbD4KICAg
ICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2Vy
TWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAgICAgICAgPHNjcmlwdD4KIAogICAgICAgICAg
ICAgdmFyIHN0cmVhbTE7CiAgICAgICAgICAgICB2YXIgc3RyZWFtMjsKICAgICAgICAgICAgIHZh
ciBhdWRpb1RyYWNrOwogICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGVycm9yKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdldFVzZXJN
ZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGRpY3Rpb25hcnksIGNhbGxiYWNrLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEg
dGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBh
bGxUcmFja3M7CisgICAgICAgICAgICB2YXIgaWQ7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHRy
eUFkZFRyYWNrKHN0cmVhbSwgdHJhY2spCiAgICAgICAgICAgICB7CkBAIC0zOSw2ICsyNiwxMiBA
QAogICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU3RyZWFtQW5kQWRkVHJhY2tzKCkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5nZXRUcmFja3MoKS5s
ZW5ndGgnLCAnMicpOworCisgICAgICAgICAgICAgICAgZGVidWcoJ2dldEF1ZGlvVHJhY2tzKCks
IGdldFZpZGVvVHJhY2tzKCkgYW5kIGdldFRyYWNrcygpIG11c3QgcmV0dXJuIGEgbmV3IHNlcXVl
bmNlIGF0IGV2ZXJ5IGludm9jYXRpb24nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUo
J3N0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKSAhPSBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCknKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoJ3N0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKSAh
PSBzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCknKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZVRy
dWUoJ3N0cmVhbTIuZ2V0VHJhY2tzKCkgIT0gc3RyZWFtMi5nZXRUcmFja3MoKScpOworCiAgICAg
ICAgICAgICAgICAgYXVkaW9UcmFjayA9IHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKVswXTsKICAg
ICAgICAgICAgICAgICB0cnlBZGRUcmFjayhzdHJlYW0yLCBhdWRpb1RyYWNrKTsKICAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7
CkBAIC00OCw3ICs0MSwxMyBAQAogICAgICAgICAgICAgICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIs
IHZpZGVvVHJhY2spOwogICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoJywgJzInKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFt
Mi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ3N0cmVhbTIuZ2V0VHJhY2tzKCkubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgICAgICAgICBh
bGxUcmFja3MgPSBzdHJlYW0yLmdldFRyYWNrcygpOworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdhbGxUcmFja3MubGVuZ3RoJywgJzQnKTsKKyAgICAgICAgICAgICAgICBhbGxUcmFja3MuZm9y
RWFjaChmdW5jdGlvbiAodHJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgaWQgPSB0cmFjay5p
ZDsKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVOb25OdWxsKCdzdHJlYW0yLmdldFRyYWNr
QnlJZChpZCknKTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIHNob3VsZEJl
TnVsbCgnc3RyZWFtMi5nZXRUcmFja0J5SWQoImZvby1pZCIpJyk7CiAKICAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAgIH0KQEAgLTYzLDEzICs2MiwxMyBAQAogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0cmVhbTEgPSBzOwogICAgICAgICAgICAgICAg
IHNob3VsZEJlKCdzdHJlYW0xLmdldFRyYWNrcygpLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAg
ICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMik7
CisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRl
bzp0cnVlfSwgZ290U3RyZWFtMik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0TWVkaWEoKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IGFkZGluZyB0cmFja3MgdG8gaW5hY3RpdmUgTWVkaWFTdHJlYW0uIik7Ci0gICAg
ICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtMSk7IAorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoZSBkaWZmZXJlbnQg
bWV0aG9kcyB0byBnZXQgdHJhY2tzIGZyb20gYSBNZWRpYVN0cmVhbS4iKTsKKyAgICAgICAgICAg
ICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW0xKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKICAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RydWN0b3IuaHRtbAppbmRleCA3MWJhODExLi4xNzZlNDA1IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbApA
QCAtMiw2ICsyLDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgogICAg
IDwvaGVhZD4KICAgICA8Ym9keT4KICAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBA
IC00MCwyMCArNDEsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpIHsKLSAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdl
dFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgICAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlv
bmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBl
eGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBmdW5jdGlvbiBn
b3RTdHJlYW0ocykgewogICAgICAgICAgICAgICAgIGxvY2FsU3RyZWFtID0gczsKICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCdHb3QgbG9jYWwgc3RyZWFtLicpOwpAQCAtMTA0LDcgKzkxLDcg
QEAKICAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoJ2NoZWNrSWRBdHRyaWJ1dGUobmV3U3Ry
ZWFtLmlkKScpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBnZXRVc2VyTWVkaWEoe3Zp
ZGVvOnRydWUsIGF1ZGlvOnRydWV9LCBnb3RTdHJlYW0pOworICAgICAgICAgICAgZ2V0VXNlck1l
ZGlhKCJhbGxvdyIsIHt2aWRlbzp0cnVlLCBhdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKIAogICAg
ICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAgICAgd2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZWY2OGRlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNs
b25lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI2IEBACitUZXN0cyBNZWRpYVN0cmVhbVRyYWNr
LmNsb25lKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0VXNlck1l
ZGlhIHN1Y2NlZWRlZC4KKwordmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KClbMF0KK0luaXRpYWxpemUgZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzIG9uIHZpZGVvVHJhY2sK
KwordmlkZW9UcmFjazIgPSB2aWRlb1RyYWNrLmNsb25lKCkKK1BBU1MgdmlkZW9UcmFjay5pZCBp
cyBub3QgdmlkZW9UcmFjazIuaWQKK1BBU1MgdmlkZW9UcmFjay5raW5kIGlzIHZpZGVvVHJhY2sy
LmtpbmQKK1BBU1MgdmlkZW9UcmFjay5sYWJlbCBpcyB2aWRlb1RyYWNrMi5sYWJlbAorUEFTUyB2
aWRlb1RyYWNrLm11dGVkIGlzIHZpZGVvVHJhY2syLm11dGVkCitQQVNTIHZpZGVvVHJhY2suZW5h
YmxlZCBpcyB2aWRlb1RyYWNrMi5lbmFibGVkCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBp
cyB2aWRlb1RyYWNrMi5yZWFkeVN0YXRlCitQQVNTIHZpZGVvVHJhY2sub25tdXRlIGlzIG5vdCB2
aWRlb1RyYWNrMi5vbm11dGUKK1BBU1MgdmlkZW9UcmFjay5vbnVubXV0ZSBpcyBub3QgdmlkZW9U
cmFjazIub251bm11dGUKK1BBU1MgdmlkZW9UcmFjay5vbmVuZGVkIGlzIG5vdCB2aWRlb1RyYWNr
Mi5vbmVuZGVkCitQQVNTIHZpZGVvVHJhY2sub25vdmVyY29uc3RyYWluZWQgaXMgbm90IHZpZGVv
VHJhY2syLm9ub3ZlcmNvbnN0cmFpbmVkCitQQVNTIHZpZGVvVHJhY2sucmVhZHlTdGF0ZSBpcyBu
b3QgdmlkZW9UcmFjazIucmVhZHlTdGF0ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMTdjNmYxZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sCkBAIC0wLDAgKzEsNjAg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dl
dFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICAgICAgdmFyIG1lZGlhU3RyZWFtOworICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CisgICAg
ICAgICAgICB2YXIgdmlkZW9UcmFjazI7CisgICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKKwor
ICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFtKHN0cmVhbSkgeworICAgICAgICAgICAgICAg
IG1lZGlhU3RyZWFtID0gc3RyZWFtOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ2dldFVz
ZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiIik7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygidmlkZW9UcmFjayA9IG1lZGlhU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0iKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCJJbml0aWFsaXplIGV2ZW50
IGhhbmRsZXIgYXR0cmlidXRlcyBvbiB2aWRlb1RyYWNrIik7CisgICAgICAgICAgICAgICAgdmlk
ZW9UcmFjay5vbm11dGUgPSBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgICAgICAgICB2aWRlb1Ry
YWNrLm9udW5tdXRlID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICAgICAgdmlkZW9UcmFj
ay5vbmVuZGVkID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5v
bm92ZXJjb25zdHJhaW5lZCA9IGZ1bmN0aW9uICgpIHt9OworCisgICAgICAgICAgICAgICAgZGVi
dWcoIiIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coInZpZGVvVHJhY2syID0gdmlkZW9U
cmFjay5jbG9uZSgpIik7CisKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFj
ay5pZCcsICd2aWRlb1RyYWNrMi5pZCcpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd2aWRl
b1RyYWNrLmtpbmQnLCAndmlkZW9UcmFjazIua2luZCcpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCd2aWRlb1RyYWNrLmxhYmVsJywgJ3ZpZGVvVHJhY2syLmxhYmVsJyk7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2subXV0ZWQnLCAndmlkZW9UcmFjazIubXV0ZWQnKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5lbmFibGVkJywgJ3ZpZGVvVHJh
Y2syLmVuYWJsZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9UcmFjay5yZWFk
eVN0YXRlJywgJ3ZpZGVvVHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIHNo
b3VsZE5vdEJlKCd2aWRlb1RyYWNrLm9ubXV0ZScsICd2aWRlb1RyYWNrMi5vbm11dGUnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5vbnVubXV0ZScsICd2aWRlb1Ry
YWNrMi5vbnVubXV0ZScpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd2aWRlb1RyYWNr
Lm9uZW5kZWQnLCAndmlkZW9UcmFjazIub25lbmRlZCcpOworICAgICAgICAgICAgICAgIHNob3Vs
ZE5vdEJlKCd2aWRlb1RyYWNrLm9ub3ZlcmNvbnN0cmFpbmVkJywgJ3ZpZGVvVHJhY2syLm9ub3Zl
cmNvbnN0cmFpbmVkJyk7CisKKyAgICAgICAgICAgICAgICB2aWRlb1RyYWNrLnN0b3AoKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5yZWFkeVN0YXRlJywgJ3ZpZGVv
VHJhY2syLnJlYWR5U3RhdGUnKTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAg
ICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgTWVkaWFTdHJlYW1UcmFjay5jbG9uZSgpIik7Cisg
ICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHt2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCki
PgorICAgICAgICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stZ2V0U291cmNlcy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBkMGE0M2IuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLWdldFNvdXJjZXMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotVGVzdHMgTWVkaWFTdHJlYW1UcmFjazo6Z2V0U291cmNlcy4KLQotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLQotKioqIGNhbGxpbmcgTWVkaWFTdHJlYW1UcmFjay5n
ZXRTb3VyY2VzKCkgKioqCi1QQVNTIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3Vy
Y2VzMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBjYWxsYmFjayBjYWxsZWQuCi1z
b3VyY2VzMVswXS5zb3VyY2VJZCA9ICIyMzljMjRiMS0yYjE1LTExZTMtODIyNC0wODAwMjAwYzlh
NjYiCi1zb3VyY2VzMVswXS5sYWJlbCA9ICJNb2NrIGF1ZGlvIGRldmljZSIKLXNvdXJjZXMxWzBd
LmtpbmQgPSAiYXVkaW8iCi1zb3VyY2VzMVsxXS5zb3VyY2VJZCA9ICIyMzljMjRiMC0yYjE1LTEx
ZTMtODIyNC0wODAwMjAwYzlhNjYiCi1zb3VyY2VzMVsxXS5sYWJlbCA9ICJNb2NrIHZpZGVvIGRl
dmljZSIKLXNvdXJjZXMxWzFdLmtpbmQgPSAidmlkZW8iCi0KLSoqKiBjYWxsaW5nIG5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoKSAqKioKLVBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KLVBBU1MgY2FsbGJhY2sgY2FsbGVkLgotCi0qKiogY2FsbGluZyBNZWRpYVN0cmVhbVRyYWNr
LmdldFNvdXJjZXMoKSAqKioKLVBBU1MgTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNv
dXJjZXMyKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGNhbGxiYWNrIGNhbGxlZC4K
LVBBU1Mgc291cmNlczIubGVuZ3RoID09IHNvdXJjZXMxLmxlbmd0aCBpcyB0cnVlCi1QQVNTIHNv
dXJjZXMyWzBdLnNvdXJjZUlkID09PSBzb3VyY2VzMVswXS5zb3VyY2VJZCBpcyB0cnVlCi1QQVNT
IHNvdXJjZXMyWzBdLmxhYmVsID09PSBzb3VyY2VzMVswXS5sYWJlbCBpcyB0cnVlCi1QQVNTIHNv
dXJjZXMyWzBdLmtpbmQgPT09IHNvdXJjZXMxWzBdLmtpbmQgaXMgdHJ1ZQotUEFTUyBzb3VyY2Vz
MlsxXS5zb3VyY2VJZCA9PT0gc291cmNlczFbMV0uc291cmNlSWQgaXMgdHJ1ZQotUEFTUyBzb3Vy
Y2VzMlsxXS5sYWJlbCA9PT0gc291cmNlczFbMV0ubGFiZWwgaXMgdHJ1ZQotUEFTUyBzb3VyY2Vz
MlsxXS5raW5kID09PSBzb3VyY2VzMVsxXS5raW5kIGlzIHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRjZDNjOC4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotICAg
IDwvaGVhZD4KLSAgICA8Ym9keT4KLSAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci0g
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotICAgICAgICA8c2NyaXB0PgotICAgICAg
ICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNvdXJjZXMuIik7
Ci0KLSAgICAgICAgICAgIHZhciBzb3VyY2VzMSA9IG51bGw7Ci0gICAgICAgICAgICB2YXIgc291
cmNlczIgPSBudWxsOwotICAgICAgICAgICAgdmFyIHRpbWVyID0gbnVsbDsKLQotICAgICAgICAg
ICAgZnVuY3Rpb24gZmluaXNoVGVzdCgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRpbWVyKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4n
KTsKLSAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShfY29uc3RyYWludHMsIF9jYWxsYmFjaykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBw
cmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGluZyBmb3Igd2Via2l0R2V0VXNlck1lZGlhKCkiKTsK
LSAgICAgICAgICAgICAgICAgICAgY29uc3RyYWludHMgPSBfY29uc3RyYWludHM7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrID0gX2NhbGxiYWNrOwotICAgICAgICAgICAgICAgICAgICBk
ZWJ1ZygiPGJyPioqKiBjYWxsaW5nIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoKSAqKioi
KTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRH
ZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcikiKTsKLSAgICAgICAgICAg
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtp
dEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAg
ICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZnVuY3Rpb24gZ290U291cmNlczIoc291cmNlcykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjYWxsYmFjayBjYWxsZWQuJyk7Ci0gICAgICAgICAg
ICAgICAgc291cmNlczIgPSBzb3VyY2VzOwotICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgn
c291cmNlczIubGVuZ3RoID09IHNvdXJjZXMxLmxlbmd0aCcpOwotICAgICAgICAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCBzb3VyY2VzMi5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZVRydWUoInNvdXJjZXMyWyIgKyBpICsgIl0uc291cmNlSWQgPT09IHNvdXJjZXMx
WyIgKyBpICsgIl0uc291cmNlSWQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJzb3VyY2VzMlsiICsgaSArICJdLmxhYmVsID09PSBzb3VyY2VzMVsiICsgaSArICJdLmxhYmVs
Iik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgic291cmNlczJbIiArIGkgKyAi
XS5raW5kID09PSBzb3VyY2VzMVsiICsgaSArICJdLmtpbmQiKTsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBmaW5pc2hUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgnY2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAgICAg
IHByaW1lVGltZW91dCgiVGltZW91dCB3YWl0aW5nIGZvciBNZWRpYVN0cmVhbVRyYWNrLmdldFNv
dXJjZXMoKSIpOwotCi0gICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogY2FsbGluZyBNZWRp
YVN0cmVhbVRyYWNrLmdldFNvdXJjZXMoKSAqKioiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRO
b3RUaHJvdygnTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNvdXJjZXMyKTsnKTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZ290U291cmNlczEoc291cmNlcykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdjYWxsYmFjayBjYWxs
ZWQuJyk7Ci0gICAgICAgICAgICAgICAgc291cmNlczEgPSBzb3VyY2VzOwotICAgICAgICAgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VzMS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgICAgICBkZWJ1Zygic291cmNlczFbIiArIGkgKyAiXS5zb3VyY2VJZCA9IFwiIiArIHNvdXJj
ZXMxW2ldLnNvdXJjZUlkICsgIlwiIik7Ci0gICAgICAgICAgICAgICAgICAgIGRlYnVnKCJzb3Vy
Y2VzMVsiICsgaSArICJdLmxhYmVsID0gXCIiICsgc291cmNlczFbaV0ubGFiZWwgKyAiXCIiKTsK
LSAgICAgICAgICAgICAgICAgICAgZGVidWcoInNvdXJjZXMxWyIgKyBpICsgIl0ua2luZCA9IFwi
IiArIHNvdXJjZXMxW2ldLmtpbmQgKyAiXCIiKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBwcmltZVRpbWVvdXQo
bXNnKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7
Ci0gICAgICAgICAgICAgICAgdGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0ZXN0RmFp
bGVkKG1zZyk7IGZpbmlzaEpTVGVzdCgpIH0sIDQwMDApOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBwcmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGluZyBmb3IgTWVkaWFTdHJlYW1UcmFj
ay5nZXRTb3VyY2VzKCkiKTsKLSAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIGNhbGxpbmcgTWVk
aWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKCkgKioqIik7Ci0gICAgICAgICAgICBzaG91bGROb3RU
aHJvdygnTWVkaWFTdHJlYW1UcmFjay5nZXRTb3VyY2VzKGdvdFNvdXJjZXMxKTsnKTsKLQotICAg
ICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotICAgICAgICAgICAgd2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0gICAgICAgIDwvc2NyaXB0PgotICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzZiNDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2sta2luZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBNZWRpYVN0cmVhbVRyYWNrIGtpbmQKKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQorUEFTUyBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCBpcyAxCitQQVNTIG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0ua2luZCBpcyAiYXVk
aW8iCitQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF0ua2luZCBpcyAidmlkZW8i
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtp
bmQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1r
aW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg5NjA2YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay1raW5kLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICB2YXIgbWVkaWFTdHJlYW07CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pIHsKKyAgICAgICAgICAgICAgICBt
ZWRpYVN0cmVhbSA9IHN0cmVhbTsKKworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdtZWRpYVN0
cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ21lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKworICAg
ICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbWVkaWFTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKVswXS5raW5kJywgJ2F1ZGlvJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmtpbmQnLCAndmlkZW8n
KTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bigiVGVzdCBNZWRpYVN0cmVhbVRyYWNrIGtpbmQiKTsKKyAgICAgICAgICAgICAgICBnZXRVc2Vy
TWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAg
IDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2YzNmViCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LXN0b3AtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK1Rlc3QgTWVkaWFTdHJlYW1UcmFj
ayBzdG9wKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKKyoqKiBleHRyYWN0IHRy
YWNrCitQQVNTIHRyYWNrLnJlYWR5U3RhdGUgaXMgImxpdmUiCisqKiogc3RvcmUgdHJhY2sgYXR0
cmlidXRlcyB0aGF0IHNob3VsZCBiZSBwcmVzZXJ2ZWQKK2tpbmQgPSB0cmFjay5raW5kCitpZCA9
IHRyYWNrLmlkCitsYWJlbCA9IHRyYWNrLmxhYmVsCitlbmFibGVkID0gdHJhY2suZW5hYmxlZAor
cmVhZG9ubHkgPSB0cmFjay5yZWFkb25seQorcmVtb3RlID0gdHJhY2sucmVtb3RlCittdXRlZCA9
IHRyYWNrLm11dGVkCisqKiogc3RvcCB0cmFjaworUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzICJl
bmRlZCIKKyoqKiBjb21wYXJlIGFnYWluc3Qgc3RvcmVkIGF0dHJpYnV0ZSB2YWx1ZXMKK1BBU1Mg
dHJhY2sua2luZCBpcyBraW5kCitQQVNTIHRyYWNrLmlkIGlzIGlkCitQQVNTIHRyYWNrLmxhYmVs
IGlzIGxhYmVsCitQQVNTIHRyYWNrLmVuYWJsZWQgaXMgZW5hYmxlZAorUEFTUyB0cmFjay5yZWFk
b25seSBpcyByZWFkb25seQorUEFTUyB0cmFjay5yZW1vdGUgaXMgcmVtb3RlCitQQVNTIHRyYWNr
Lm11dGVkIGlzIG11dGVkCisqKiogdG9nZ2xlIGVuYWJsZSAoc2hvdWxkIG5vdyB0aHJvdykKK1BB
U1MgdHJhY2suZW5hYmxlZCA9ICF0cmFjay5lbmFibGVkIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyB0cmFjay5lbmFibGVkIGlzIG5vdCBlbmFibGVkCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLXN0b3AuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM3NTBlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWwKQEAgLTAs
MCArMSw2NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICB2YXIgdHJhY2s7CisgICAgICAgICAgICB2YXIga2luZDsKKyAgICAgICAg
ICAgIHZhciBpZDsKKyAgICAgICAgICAgIHZhciBsYWJlbDsKKyAgICAgICAgICAgIHZhciBlbmFi
bGVkOworICAgICAgICAgICAgdmFyIHJlYWRvbmx5OworICAgICAgICAgICAgdmFyIHJlbW90ZTsK
KyAgICAgICAgICAgIHZhciBtdXRlZDsKKworICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
KHN0cmVhbSkgeworICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogZXh0cmFjdCB0cmFjayIpOwor
ICAgICAgICAgICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF07CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnImxpdmUiJyk7CisKKyAg
ICAgICAgICAgICAgICBkZWJ1ZygiKioqIHN0b3JlIHRyYWNrIGF0dHJpYnV0ZXMgdGhhdCBzaG91
bGQgYmUgcHJlc2VydmVkIik7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygna2luZCA9IHRy
YWNrLmtpbmQnKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCdpZCA9IHRyYWNrLmlkJyk7
CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygnbGFiZWwgPSB0cmFjay5sYWJlbCcpOworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coJ2VuYWJsZWQgPSB0cmFjay5lbmFibGVkJyk7CisgICAg
ICAgICAgICAgICAgZXZhbEFuZExvZygncmVhZG9ubHkgPSB0cmFjay5yZWFkb25seScpOworICAg
ICAgICAgICAgICAgIGV2YWxBbmRMb2coJ3JlbW90ZSA9IHRyYWNrLnJlbW90ZScpOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coJ211dGVkID0gdHJhY2subXV0ZWQnKTsKKworICAgICAgICAg
ICAgICAgIGRlYnVnKCIqKiogc3RvcCB0cmFjayIpOworICAgICAgICAgICAgICAgIHRyYWNrLnN0
b3AoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sucmVhZHlTdGF0ZScsICciZW5k
ZWQiJyk7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGNvbXBhcmUgYWdhaW5zdCBzdG9y
ZWQgYXR0cmlidXRlIHZhbHVlcyIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5r
aW5kJywgJ2tpbmQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2suaWQnLCAnaWQn
KTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2subGFiZWwnLCAnbGFiZWwnKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2suZW5hYmxlZCcsICdlbmFibGVkJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWRvbmx5JywgJ3JlYWRvbmx5Jyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlbW90ZScsICdyZW1vdGUnKTsKKyAgICAgICAg
ICAgICAgICBzaG91bGRCZSgndHJhY2subXV0ZWQnLCAnbXV0ZWQnKTsKKworICAgICAgICAgICAg
ICAgIGRlYnVnKCIqKiogdG9nZ2xlIGVuYWJsZSAoc2hvdWxkIG5vdyB0aHJvdykiKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGROb3RUaHJvdygndHJhY2suZW5hYmxlZCA9ICF0cmFjay5lbmFibGVk
Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3RyYWNrLmVuYWJsZWQnLCAnZW5hYmxl
ZCcpOworCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0IE1lZGlhU3RyZWFtVHJhY2sgc3RvcCgpIik7CisgICAgICAgICAgICAgICAgZ2V0
VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAg
ICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggOGE1OTk0YS4uYmJmYjRhNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDYg
QEAgVGhpcyB0ZXN0cyB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBNZWRpYVN0cmVhbVRyYWNrRXZl
bnQgRE9NIGNsYXNzLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgZ2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIAogKioqIGdldFVzZXJNZWRpYSgpIHN1Y2NlZWRlZCwgdGVzdCBzdHJlYW0g
KioqCiBQQVNTIG1lZGlhU3RyZWFtIGlzIG5vbi1udWxsLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3IuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNv
bnN0cnVjdG9yLmh0bWwKaW5kZXggMDY3Nzk1Yy4uNTYxYzQ2YyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3Iu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC1jb25zdHJ1Y3Rvci5odG1sCkBAIC0yLDYgKzIsNyBAQAogPGh0bWw+CiAgICAgPGhlYWQ+
CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgPC9oZWFkPgogICAgICAgICA8c2NyaXB0PgogCkBAIC0x
OSwyMiArMjAsNiBAQAogICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBlcnJvcigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICAg
ICAgICAgICAgICAgIGVuZFRlc3QoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVu
Y3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpOwotICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Vi
a2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICAgICAgICAg
ICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAg
ICAgICAgICBmdW5jdGlvbiB0ZXN0TWVkaWFTdHJlYW1UcmFja0V2ZW50KCkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBObyBpbml0aWFsaXplciBwYXNzZWQg
KioqIik7CkBAIC05Miw3ICs3Nyw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBwcmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGlu
ZyBmb3IgZ2V0VXNlck1lZGlhKCkiKTsKLSAgICAgICAgICAgICAgICBzaG91bGROb3RUaHJvdygn
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKScpOworICAg
ICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW0pOwogICAgICAgICAgICAgfQogCiAgICAgICAgIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9yZXNvdXJjZXMvZ2V0VXNlck1l
ZGlhLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcmVzb3VyY2VzL2dl
dFVzZXJNZWRpYS1oZWxwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NjIyNWFhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
cmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMKQEAgLTAsMCArMSwyMiBAQAorZnVuY3Rp
b24gZ2V0VXNlck1lZGlhKHBlcm1pc3Npb24sIGNvbnN0cmFpbnRzLCBzdWNjZXNzQ2FsbGJhY2ss
IGVycm9yQ2FsbGJhY2spIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbihwZXJtaXNzaW9uID09ICJhbGxvdyIpOwor
ICAgIGVsc2UgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBub3QgYmUgcnVuIHdpdGhv
dXQgdGhlIHRlc3RSdW5uZXIiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgfQorCisg
ICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoY29uc3RyYWludHMpLnRoZW4o
c3VjY2Vzc0NhbGxiYWNrLCByZWplY3QpLmNhdGNoKGRlZmF1bHRSZWplY3RPckNhdGNoKTsKKwor
ICAgIGZ1bmN0aW9uIHJlamVjdChlKSB7CisgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKQorICAg
ICAgICAgICAgZXJyb3JDYWxsYmFjayhlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVm
YXVsdFJlamVjdE9yQ2F0Y2goZSk7CisgICAgfQorfQorCitmdW5jdGlvbiBkZWZhdWx0UmVqZWN0
T3JDYXRjaChlKSB7CisgICAgdGVzdEZhaWxlZCgnZ2V0VXNlck1lZGlhIGZhaWxlZDonICsgZSk7
CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDBmNGY2ZGEuLmM4MDNhYmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0zMTUsMTYgKzMxNSw3IEBAIHdlYmtpdC5vcmcvYi84
NTIxMSBpZXRlc3RjZW50ZXIvY3NzMy9mbGV4Ym94L2ZsZXhib3gtYWxpZ24tc3RyZXRjaC0wMDEu
aHRtIFsgSW1hCiB3ZWJraXQub3JnL2IvODUyMTIgaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9m
bGV4Ym94LWxheW91dC0wMDIuaHRtIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKICMgTWVkaWFzdHJl
YW0gaW1wbGVtZW50YXRpb24gaXMgbm90IGNvbXBsZXRlIHlldC4KLXdlYmtpdC5vcmcvYi83OTIw
MyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbCBbIFNr
aXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRk
LXJlbW92ZS10cmFja3MuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1pbmFjdGl2ZS1zdHJlYW0uaHRtbCBb
IFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
Y2xvbmUuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNzkyMDMg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3Mu
aHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tZ2V0VHJhY2tzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLU1lZGlhRWxlbWVudC1zcmNPYmplY3QuaHRtbCBbIFNraXAg
XQotd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2
ZW50LWNvbnN0cnVjdG9yLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZ2V0U291cmNlcy5odG1sIFsgU2tpcCBdCiB3ZWJr
aXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stb25lbmRlZC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0
cmVhbS9SVENJY2VDYW5kaWRhdGUuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJmMTkxNTUu
LmE4ODg4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTkgQEAKKzIwMTUtMDYtMjggIEFkYW0g
QmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAgICAgIFdlYlJU
QzogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjMxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gQVBJIChNZWRpYVN0
cmVhbSwgTWVkaWFTdHJlYW1UcmFjayBhbmQKKyAgICAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSkg
dG8gbWF0Y2ggdGhlIE1lZGlhIENhcHR1cmUgYW5kIFN0cmVhbQorICAgICAgICBzcGVjaWZpY2F0
aW9uIFsxXS4gTm90YWJsZSBjaGFuZ2VzOgorCisgICAgICAgIFVwZGF0ZWQgZXZlbnQgaGFuZGxp
bmcgdG8gc3luY2hyb25vdXNseSB1cGRhdGUgY29ycmVzcG9uZGluZworICAgICAgICBzdGF0ZS9h
dHRyaWJ1dGVzIGFzIGV2ZW50cyBhcmUgZGlzcGF0Y2hlZC4KKworICAgICAgICBSZW1vdmVkICdu
ZXcnIHN0YXRlIGZyb20gTWVkaWFTdHJlYW1UcmFjay4gQSB0cmFjayBpcyBlaXRoZXIgJ2xpdmUn
IG9yCisgICAgICAgICdlbmRlZCcuIEFzIGEgY29uc2VxdWVuY2UgJ3N0YXJ0ZWQnIGV2ZW50IGlz
IGFsc28gcmVtb3ZlZC4KKworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrIGFsd2F5cyBoYXMgYSBz
b3VyY2UgKGRpc2Nvbm5lY3RlZCBzb3VyY2UgY29uY2VwdCB3YXMKKyAgICAgICAgcmVtb3ZlZCBm
cm9tIHRoZSBzcGVjKS4gVGhlcmVmb3JlLCBtb3JlIHN0YXRlIGNhbiBiZSBrZXB0IGF0IHRoZSBz
b3VyY2UKKyAgICAgICAgd2l0aG91dCBnb2luZyBhd2F5LgorCisgICAgICAgIENhbGN1bGF0ZSBN
ZWRpYVN0cmVhbS5hY3RpdmUgaW50ZXJuYWxseSwgZnJvbSB0aGUgdHJhY2sgc2V0LCBpbnN0ZWFk
IG9mCisgICAgICAgIHNldHRpbmcgaXQgZXh0ZXJuYWxseS4KKworICAgICAgICBVcGRhdGVkIFJl
YWx0aW1lTWVkaWFTb3VyY2UgT2JzZXJ2ZXIgaW50ZXJmYWNlLgorCisgICAgICAgIFJlcGxhY2Vk
IE1lZGlhU3RyZWFtJ3Mgc2VwYXJhdGUgYXVkaW8gYW5kIHZpZGVvIHRyYWNrIGxpc3RzIHdpdGgg
YQorICAgICAgICBzaW5nbGUgdHJhY2sgc2V0IChtb3JlIGFsaWduZWQgd2l0aCBzcGVjKS4KKwor
ICAgICAgICBVcGRhdGVkIE1lZGlhU3RyZWFtIGNvbnN0cnVjdG9yIHRvIGFkb3B0IGluc3RlYWQg
b2YgY2xvbmUgdHJhY2sKKyAgICAgICAgYXJndW1lbnRzIChvciB0cmFja3MgZnJvbSBNZWRpYVN0
cmVhbSBhcmd1bWVudCkuCisKKyAgICAgICAgUmVtb3ZlZCBNZWRpYVN0cmVhbVRyYWNrLmdldFNv
dXJjZXMoKSBhbmQgY29ycmVzcG9uZGluZyB0ZXN0IChyZW1vdmVkCisgICAgICAgIGZyb20gc3Bl
YykuCisKKyAgICAgICAgVGVzdCBzdGF0dXM6IDMgYWRkZWQsIDggZXhpc3RpbmcgZW5hYmxlZCAo
c29tZSB1cGRhdGVkKSBhbmQgMSByZW1vdmVkLgorCisgICAgICAgIFsxXSBodHRwOi8vdzNjLmdp
dGh1Yi5pby9tZWRpYWNhcHR1cmUtbWFpbi9hcmNoaXZlcy8yMDE1MDUyMy9nZXR1c2VybWVkaWEu
aHRtbAorCisgICAgICAgIFRlc3RzOiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2st
Y2xvbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLWtpbmQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLXN0b3AuaHRtbAorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6Y2xvbmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFk
ZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRBdWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6Z2V0VmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06OmdldFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y29udGV4dERl
c3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFjdGl2ZVN0YXR1c0NoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmRpZEFkZFRyYWNrVG9Qcml2YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpkaWRSZW1vdmVUcmFja0Zyb21Qcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjppbnRlcm5hbEFkZFRyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjppbnRlcm5hbFJlbW92ZVRyYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tWZWN0b3JGb3JUeXBlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjp+TWVkaWFTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06OnJlZ2lzdHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtOjphZGRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbTo6cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6TWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp+TWVkaWFT
dHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpraW5kKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmlkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6
c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjptdXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpyZWFkb25seSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjplbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpj
bG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJvZHVjaW5n
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdGF0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6dHJhY2tFbmRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtVHJhY2s6OmdldENvbnN0cmFpbnRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2s6OmFkZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtVHJhY2s6OnJlbW92ZU9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmFjdGl2ZURPTU9iamVjdE5h
bWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6Y2FuU3Vz
cGVuZEZvclBhZ2VDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpkaWRS
ZW1vdmVSZW1vdGVTdHJlYW0pOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vVXNlck1lZGlhUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1
ZXN0OjpkaWRDcmVhdGVTdHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6Ok1lZGlh
U3RyZWFtUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnRy
YWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFjdGl2
ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6YWRkVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1vdmVUcmFjayk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OmFjdGl2ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1By
aXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6On5NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnNldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OmVuZFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6dHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YXBwbHlDb25z
dHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291
cmNlU3RvcHBlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c291cmNlTXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjptdXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVhZG9ubHkpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnJlbW90ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y29uc3RyYWludHMpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2Fw
YWJpbGl0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjplbmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6ZW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0Q2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2Up
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNs
aWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpS
ZWFsdGltZU1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldE11
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3ApOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BwZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6aWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6bXV0ZWQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0UmVhZG9ubHkpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJj
ZUNlbnRlck93ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0pOiBEZWxl
dGVkLgorCiAyMDE1LTA2LTI0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBQbHVnaW5NYWluVGhyZWFkU2NoZWR1bGVyIHRvIFdlYktpdC93aW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAKaW5kZXggYWZiNTIzYS4uN2FhYzVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC00MSw2OCArNDEsNTkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNy
ZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPFJl
YWx0aW1lTWVkaWFTb3VyY2U+PigpLCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
PigpKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJl
YW1Qcml2YXRlOjpjcmVhdGUoKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtPiBzdHJlYW0pCitSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0qIHN0cmVhbSkKIHsKICAg
ICBBU1NFUlQoc3RyZWFtKTsKIAotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+PiBhdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPj4gdmlkZW9UcmFja3M7Ci0KLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5t
X2F1ZGlvVHJhY2tzKQotICAgICAgICBhdWRpb1RyYWNrcy5hcHBlbmQoJnRyYWNrLT5wcml2YXRl
VHJhY2soKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW0oY29udGV4dCwg
c3RyZWFtLT5nZXRUcmFja3MoKSkpOworfQogCi0gICAgZm9yIChhdXRvJiB0cmFjayA6IHN0cmVh
bS0+bV92aWRlb1RyYWNrcykKLSAgICAgICAgdmlkZW9UcmFja3MuYXBwZW5kKCZ0cmFjay0+cHJp
dmF0ZVRyYWNrKCkpOworUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4+JiB0cmFja3MpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJl
YW0oY29udGV4dCwgdHJhY2tzKSk7Cit9CiAKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0
ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9U
cmFja3MpKTsKK1JlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiYmIHN0cmVh
bVByaXZhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW0oY29udGV4
dCwgV1RGOjptb3ZlKHN0cmVhbVByaXZhdGUpKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbT4gTWVk
aWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYgdHJhY2tzKQorTWVkaWFTdHJlYW06Ok1l
ZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiB0cmFja3MpCisgICAgOiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcigmY29udGV4dCkKKyAgICAsIG1fYWN0aXZpdHlFdmVudFRpbWVyKCp0aGlzLCAm
TWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKQogewotICAgIFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBhdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdmlkZW9UcmFja3M7CisgICAgLy8gVGhpcyBj
b25zdHJ1Y3RvciBwcmVzZXJ2ZXMgTWVkaWFTdHJlYW1UcmFjayBpbnN0YW5jZXMgYW5kIG11c3Qg
YmUgdXNlZCBieSBjYWxscyBvcmlnaW5hdGluZworICAgIC8vIGZyb20gdGhlIEphdmFTY3JpcHQg
TWVkaWFTdHJlYW0gY29uc3RydWN0b3IuCisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZT4+IHRyYWNrUHJpdmF0ZXM7CisgICAgdHJhY2tQcml2YXRlcy5yZXNlcnZlQ2Fw
YWNpdHkodHJhY2tzLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogdHJhY2tzKSB7
Ci0gICAgICAgIGlmICh0cmFjay0+a2luZCgpID09ICJhdWRpbyIpCi0gICAgICAgICAgICBhdWRp
b1RyYWNrcy5hcHBlbmQoJnRyYWNrLT5wcml2YXRlVHJhY2soKSk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHZpZGVvVHJhY2tzLmFwcGVuZCgmdHJhY2stPnByaXZhdGVUcmFjaygpKTsKKyAg
ICAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOworICAgICAgICBtX3RyYWNrU2V0LmFkZCh0
cmFjay0+aWQoKSwgdHJhY2spOworICAgICAgICB0cmFja1ByaXZhdGVzLmFwcGVuZCgmdHJhY2st
PnByaXZhdGVUcmFjaygpKTsKICAgICB9CiAKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0
ZShjb250ZXh0LCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShhdWRpb1RyYWNrcywgdmlkZW9U
cmFja3MpKTsKLX0KLQotUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBwcml2YXRlU3RyZWFtKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFt
KGNvbnRleHQsIHByaXZhdGVTdHJlYW0pKTsKKyAgICBtX3ByaXZhdGUgPSBNZWRpYVN0cmVhbVBy
aXZhdGU6OmNyZWF0ZSh0cmFja1ByaXZhdGVzKTsKKyAgICBtX2lzQWN0aXZlID0gbV9wcml2YXRl
LT5hY3RpdmUoKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIH0KIAotTWVkaWFT
dHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRlU3RyZWFtKQorTWVkaWFTdHJlYW06Ok1l
ZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+JiYgc3RyZWFtUHJpdmF0ZSkKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyKCZjb250ZXh0KQotICAgICwgbV9wcml2YXRlKHByaXZhdGVTdHJlYW0pCi0gICAgLCBt
X3NjaGVkdWxlZEV2ZW50VGltZXIoKnRoaXMsICZNZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRU
aW1lckZpcmVkKQorICAgICwgbV9wcml2YXRlKHN0cmVhbVByaXZhdGUpCisgICAgLCBtX2lzQWN0
aXZlKG1fcHJpdmF0ZS0+YWN0aXZlKCkpCisgICAgLCBtX2FjdGl2aXR5RXZlbnRUaW1lcigqdGhp
cywgJk1lZGlhU3RyZWFtOjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBBU1NFUlQo
bV9wcml2YXRlKTsKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIAotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjazsKLSAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNr
cyA9IG1fcHJpdmF0ZS0+bnVtYmVyT2ZBdWRpb1RyYWNrcygpOwotICAgIG1fYXVkaW9UcmFja3Mu
cmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mQXVkaW9UcmFja3MpOwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbnVtYmVyT2ZBdWRpb1RyYWNrczsgaSsrKSB7Ci0gICAgICAgIHRyYWNrID0gTWVk
aWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsICptX3ByaXZhdGUtPmF1ZGlvVHJhY2tzKGkp
KTsKKyAgICBmb3IgKGF1dG8mIHRyYWNrUHJpdmF0ZSA6IG1fcHJpdmF0ZS0+dHJhY2tzKCkpIHsK
KyAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gTWVkaWFTdHJlYW1UcmFj
azo6Y3JlYXRlKGNvbnRleHQsICp0cmFja1ByaXZhdGUpOwogICAgICAgICB0cmFjay0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7Ci0gICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrLnJlbGVhc2Uo
KSk7Ci0gICAgfQotCi0gICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBtX3ByaXZhdGUt
Pm51bWJlck9mVmlkZW9UcmFja3MoKTsKLSAgICBtX3ZpZGVvVHJhY2tzLnJlc2VydmVDYXBhY2l0
eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mVmlkZW9UcmFja3M7IGkrKykgewotICAgICAgICB0cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6
OmNyZWF0ZShjb250ZXh0LCAqbV9wcml2YXRlLT52aWRlb1RyYWNrcyhpKSk7Ci0gICAgICAgIHRy
YWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQodHJh
Y2sucmVsZWFzZSgpKTsKKyAgICAgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCksIFdURjo6
bW92ZSh0cmFjaykpOwogICAgIH0KIH0KIApAQCAtMTExLDI1OCArMTAyLDE0NCBAQCBNZWRpYVN0
cmVhbTo6fk1lZGlhU3RyZWFtKCkKICAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsK
IH0KIAotYm9vbCBNZWRpYVN0cmVhbTo6YWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5hY3RpdmUoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbTo6c2V0QWN0aXZlKGJvb2wg
aXNBY3RpdmUpCitSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjbG9uZSgpCiB7Ci0g
ICAgaWYgKGFjdGl2ZSgpID09IGlzQWN0aXZlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9wcml2
YXRlLT5zZXRBY3RpdmUoaXNBY3RpdmUpOwotfQotCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBN
ZWRpYVN0cmVhbTo6Y2xvbmUoKQotewotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+IHRyYWNrU2V0OworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IGNsb25l
ZFRyYWNrczsKKyAgICBjbG9uZWRUcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6
ZSgpKTsKIAotICAgIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcih0cmFja1NldCwgZ2V0QXVk
aW9UcmFja3MoKSk7Ci0gICAgY2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKHRyYWNrU2V0LCBn
ZXRWaWRlb1RyYWNrcygpKTsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZSgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0cmFja1NldCk7Ci19CisgICAgZm9yIChhdXRvJiB0cmFjayA6
IG1fdHJhY2tTZXQudmFsdWVzKCkpCisgICAgICAgIGNsb25lZFRyYWNrcy5hcHBlbmQodHJhY2st
PmNsb25lKCkpOwogCi12b2lkIE1lZGlhU3RyZWFtOjpjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IoVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mIGRlc3RpbmF0aW9uLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYgc291cmNlKQotewotICAgIGZvciAoYXV0
byYgdHJhY2sgOiBzb3VyY2UpCi0gICAgICAgIGRlc3RpbmF0aW9uLmFwcGVuZCh0cmFjay0+Y2xv
bmUoKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgY2xvbmVkVHJhY2tzKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaykKIHsKLSAgICBpZiAoIXBycFRyYWNrKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgaWYgKCFpbnRlcm5hbEFkZFRyYWNrKFdURjo6bW92ZSh0cmFjayksIFN0cmVh
bU1vZGlmaWVyOjpEb21BUEkpKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGFk
ZFRyYWNrKHBycFRyYWNrKSkgewotICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNl
cnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOwotICAg
IH0KLX0KLQotYm9vbCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiBwcnBUcmFjaykKLXsKLSAgICAvLyBUaGlzIGlzIGEgY29tbW9uIHBhcnQgdXNlZCBi
eSBhZGRUcmFjayBjYWxsZWQgYnkgSmF2YVNjcmlwdAotICAgIC8vIGFuZCBhZGRSZW1vdGVUcmFj
ayBhbmQgb25seSBhZGRSZW1vdGVUcmFjayBtdXN0IGZpcmUgYWRkdHJhY2sgZXZlbnQKLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKLSAgICBpZiAoZ2V0VHJh
Y2tCeUlkKHRyYWNrLT5pZCgpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNrcyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0
cmFjay0+c291cmNlKCktPnR5cGUoKSk7CiAKLSAgICB0cmFja3MtPmFwcGVuZCh0cmFjayk7Ci0g
ICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOwotICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2soJnRy
YWNrLT5wcml2YXRlVHJhY2soKSk7Ci0gICAgc2V0QWN0aXZlKHRydWUpOwotICAgIHJldHVybiB0
cnVlOworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2Jz
ZXJ2ZXItPmRpZEFkZE9yUmVtb3ZlVHJhY2soKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6cmVt
b3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCit2b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNr
KiB0cmFjaykKIHsKLSAgICBpZiAoIWFjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXBycFRyYWNrKSB7
Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgaWYgKCFpbnRlcm5hbFJlbW92
ZVRyYWNrKHRyYWNrLCBTdHJlYW1Nb2RpZmllcjo6RG9tQVBJKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAotICAgIGlmIChyZW1vdmVUcmFjayhwcnBUcmFjaykpIHsKLSAgICAgICAgZm9yIChh
dXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICAgICAgb2JzZXJ2ZXItPmRpZEFk
ZE9yUmVtb3ZlVHJhY2soKTsKLSAgICB9CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2Jz
ZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOwogfQogCi1i
b29sIE1lZGlhU3RyZWFtOjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
IHBycFRyYWNrKQorTWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZChT
dHJpbmcgaWQpCiB7Ci0gICAgLy8gVGhpcyBpcyBhIGNvbW1vbiBwYXJ0IHVzZWQgYnkgcmVtb3Zl
VHJhY2sgY2FsbGVkIGJ5IEphdmFTY3JpcHQKLSAgICAvLyBhbmQgcmVtb3ZlUmVtb3RlVHJhY2sg
YW5kIG9ubHkgcmVtb3ZlUmVtb3RlVHJhY2sgbXVzdCBmaXJlIHJlbW92ZXRyYWNrIGV2ZW50Ci0g
ICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNrcyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0
cmFjay0+c291cmNlKCktPnR5cGUoKSk7Ci0KLSAgICBzaXplX3QgcG9zID0gdHJhY2tzLT5maW5k
KHRyYWNrKTsKLSAgICBpZiAocG9zID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICB0cmFja3MtPnJlbW92ZShwb3MpOwotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlVHJhY2so
JnRyYWNrLT5wcml2YXRlVHJhY2soKSk7Ci0gICAgLy8gVGhlcmUgY2FuIGJlIG90aGVyIHRyYWNr
cyB1c2luZyB0aGUgc2FtZSBzb3VyY2UgaW4gdGhlIHNhbWUgTWVkaWFTdHJlYW0sCi0gICAgLy8g
bGlrZSB3aGVuIE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkgaXMgY2FsbGVkLCBmb3IgaW5zdGFu
Y2UuCi0gICAgLy8gU3BlYyBzYXlzIHRoYXQgYSBzb3VyY2UgY2FuIGJlIHNoYXJlZCwgc28gd2Ug
bXVzdCBhc3N1cmUgdGhhdCB0aGVyZSBpcyBubwotICAgIC8vIG90aGVyIHRyYWNrIHVzaW5nIGl0
LgotICAgIGlmICghaGF2ZVRyYWNrV2l0aFNvdXJjZSh0cmFjay0+c291cmNlKCkpKQotICAgICAg
ICBtX3ByaXZhdGUtPnJlbW92ZVNvdXJjZSh0cmFjay0+c291cmNlKCkpOwotCi0gICAgdHJhY2st
PnJlbW92ZU9ic2VydmVyKHRoaXMpOwotICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYg
IW1fdmlkZW9UcmFja3Muc2l6ZSgpKQotICAgICAgICBzZXRBY3RpdmUoZmFsc2UpOworICAgIGF1
dG8gaXQgPSBtX3RyYWNrU2V0LmZpbmQoaWQpOworICAgIGlmIChpdCAhPSBtX3RyYWNrU2V0LmVu
ZCgpKQorICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogCi0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLWJvb2wgTWVkaWFTdHJlYW06OmhhdmVUcmFja1dp
dGhTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2UpCitWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBNZWRpYVN0cmVhbTo6Z2V0QXVkaW9UcmFja3MoKSBj
b25zdAogewotICAgIGlmIChzb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpB
dWRpbykgewotICAgICAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykgewotICAg
ICAgICAgICAgaWYgKHRyYWNrLT5zb3VyY2UoKSA9PSBzb3VyY2UuZ2V0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKSB7Ci0gICAgICAgIGlm
ICh0cmFjay0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cmFja1ZlY3RvckZv
clR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8pOwogfQogCi1NZWRpYVN0cmVhbVRyYWNr
KiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkKK1ZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtOjpnZXRWaWRlb1RyYWNrcygpIGNvbnN0CiB7Ci0g
ICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpIHsKLSAgICAgICAgaWYgKHRyYWNr
LT5pZCgpID09IGlkKQotICAgICAgICAgICAgcmV0dXJuIHRyYWNrLmdldCgpOwotICAgIH0KLQot
ICAgIGZvciAoYXV0byYgdHJhY2sgOiAgbV92aWRlb1RyYWNrcykgewotICAgICAgICBpZiAodHJh
Y2stPmlkKCkgPT0gaWQpCi0gICAgICAgICAgICByZXR1cm4gdHJhY2suZ2V0KCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRyYWNrVmVjdG9yRm9yVHlwZShSZWFs
dGltZU1lZGlhU291cmNlOjpWaWRlbyk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4+IE1lZGlhU3RyZWFtOjpnZXRUcmFja3MoKQorVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPj4gTWVkaWFTdHJlYW06OmdldFRyYWNrcygpIGNvbnN0CiB7CiAgICAgVmVjdG9yPFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gdHJhY2tzOwotICAgIGZvciAoYXV0byYgdHJhY2sgOiBt
X2F1ZGlvVHJhY2tzKQotICAgICAgICB0cmFja3MuYXBwZW5kKHRyYWNrLmdldCgpKTsKLSAgICBm
b3IgKGF1dG8mIHRyYWNrIDogbV92aWRlb1RyYWNrcykKLSAgICAgICAgdHJhY2tzLmFwcGVuZCh0
cmFjay5nZXQoKSk7CisgICAgdHJhY2tzLnJlc2VydmVDYXBhY2l0eShtX3RyYWNrU2V0LnNpemUo
KSk7CisgICAgY29weVZhbHVlc1RvVmVjdG9yKG1fdHJhY2tTZXQsIHRyYWNrcyk7CiAKICAgICBy
ZXR1cm4gdHJhY2tzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjp0cmFja0RpZEVuZCgpCi17Ci0g
ICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVkaW9UcmFja3MpIHsKLSAgICAgICAgaWYgKCF0cmFj
ay0+ZW5kZWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZm9yIChhdXRvJiB0
cmFjayA6IG1fdmlkZW9UcmFja3MpIHsKLSAgICAgICAgaWYgKCF0cmFjay0+ZW5kZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIW1fYXVkaW9UcmFja3Muc2l6ZSgp
ICYmICFtX3ZpZGVvVHJhY2tzLnNpemUoKSkKLSAgICAgICAgc2V0QWN0aXZlKGZhbHNlKTsKLX0K
LQotdm9pZCBNZWRpYVN0cmVhbTo6c2V0U3RyZWFtSXNBY3RpdmUoYm9vbCBzdHJlYW1BY3RpdmUp
Cit2b2lkIE1lZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBpZiAoc3RyZWFt
QWN0aXZlKQotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuYWN0aXZlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotICAgIGVsc2UKLSAgICAgICAg
c2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmluYWN0aXZl
RXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpj
b250ZXh0RGVzdHJveWVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OmNvbnRleHREZXN0cm95
ZWQoKQordm9pZCBNZWRpYVN0cmVhbTo6dHJhY2tEaWRFbmQoKQogewotICAgIENvbnRleHREZXN0
cnVjdGlvbk9ic2VydmVyOjpjb250ZXh0RGVzdHJveWVkKCk7CisgICAgbV9wcml2YXRlLT51cGRh
dGVBY3RpdmVTdGF0ZShNZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9wdGlvbjo6Tm90
aWZ5KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3RlU291cmNlKFJlYWx0aW1lTWVk
aWFTb3VyY2UqIHNvdXJjZSkKK3ZvaWQgTWVkaWFTdHJlYW06OmFjdGl2ZVN0YXR1c0NoYW5nZWQo
KQogewotICAgIEFTU0VSVChzb3VyY2UpOwotICAgIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpjcmVhdGUoc291cmNlKS5nZXQoKSk7CisgICAgLy8gU2NoZWR1bGUgdGhl
IGFjdGl2ZSBzdGF0ZSBjaGFuZ2UgYW5kIGV2ZW50IGRpc3BhdGNoIHNpbmNlIHRoaXMgY2FsbGJh
Y2sgbWF5IGJlIGNhbGxlZAorICAgIC8vIHN5bmNocm9ub3VzbHkgZnJvbSB0aGUgRE9NIEFQSSAo
ZS5nLiBhcyBhIHJlc3VsdCBvZiBhZGRUcmFjaygpKS4KKyAgICBzY2hlZHVsZUFjdGl2ZVN0YXRl
Q2hhbmdlKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVJlbW90ZVNvdXJjZShSZWFs
dGltZU1lZGlhU291cmNlKiBzb3VyY2UpCit2b2lkIE1lZGlhU3RyZWFtOjpkaWRBZGRUcmFja1Rv
UHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQogewotICAgIEFT
U0VSVChzb3VyY2UpOwotICAgIGlmICghYWN0aXZlKCkpCisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRl
eHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+KiB0cmFja3MgPSB0cmFja1ZlY3RvckZvclR5cGUoc291cmNlLT50eXBlKCkpOwotCi0gICAg
Zm9yIChpbnQgaSA9IHRyYWNrcy0+c2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAg
aWYgKCgqdHJhY2tzKVtpXS0+c291cmNlKCkgIT0gc291cmNlKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gKCp0cmFja3Mp
W2ldOwotICAgICAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7Ci0gICAgICAgIHRyYWNr
cy0+cmVtb3ZlKGkpOwotICAgICAgICBtX3ByaXZhdGUtPnJlbW92ZVRyYWNrKCZ0cmFjay0+cHJp
dmF0ZVRyYWNrKCkpOwotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1U
cmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBm
YWxzZSwgdHJhY2sucmVsZWFzZSgpKSk7Ci0gICAgfQorICAgIGludGVybmFsQWRkVHJhY2soTWVk
aWFTdHJlYW1UcmFjazo6Y3JlYXRlKCpjb250ZXh0LCB0cmFja1ByaXZhdGUpLCBTdHJlYW1Nb2Rp
Zmllcjo6UGxhdGZvcm0pOworfQogCi0gICAgbV9wcml2YXRlLT5yZW1vdmVTb3VyY2Uoc291cmNl
KTsKK3ZvaWQgTWVkaWFTdHJlYW06OmRpZFJlbW92ZVRyYWNrRnJvbVByaXZhdGUoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmIHRyYWNrUHJpdmF0ZSkKK3sKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2sgPSBnZXRUcmFja0J5SWQodHJhY2tQcml2YXRlLmlkKCkpOworICAgIGludGVy
bmFsUmVtb3ZlVHJhY2soV1RGOjptb3ZlKHRyYWNrKSwgU3RyZWFtTW9kaWZpZXI6OlBsYXRmb3Jt
KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6YWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUqIHByaXZhdGVUcmFjaykKK2Jvb2wgTWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJh
Y2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFN0cmVhbU1vZGlmaWVyIHN0cmVh
bU1vZGlmaWVyKQogewotICAgIEFTU0VSVChwcml2YXRlVHJhY2spOwotICAgIGlmICghYWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoZ2V0VHJhY2tCeUlkKHRyYWNrLT5pZCgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRy
YWNrOwotICAgIHN3aXRjaCAocHJpdmF0ZVRyYWNrLT50eXBlKCkpIHsKLSAgICBjYXNlIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Vmlk
ZW86Ci0gICAgICAgIHRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICpwcml2YXRlVHJhY2spOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCks
IHRyYWNrKTsKKyAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CiAKLSAgICBpZiAoIXRyYWNr
KQotICAgICAgICByZXR1cm47CisgICAgaWYgKHN0cmVhbU1vZGlmaWVyID09IFN0cmVhbU1vZGlm
aWVyOjpEb21BUEkpCisgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2soJnRyYWNrLT5wcml2YXRl
VHJhY2soKSwgTWVkaWFTdHJlYW1Qcml2YXRlOjpOb3RpZnlDbGllbnRPcHRpb246OkRvbnROb3Rp
ZnkpOworICAgIGVsc2UKKyAgICAgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCBXVEY6
Om1vdmUodHJhY2spKSk7CiAKLSAgICBpZiAoYWRkVHJhY2sodHJhY2spKQotICAgICAgICBzY2hl
ZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUqIHByaXZhdGVUcmFjaykKK2Jvb2wgTWVkaWFTdHJlYW06OmludGVybmFsUmVt
b3ZlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIFN0cmVhbU1vZGlmaWVy
IHN0cmVhbU1vZGlmaWVyKQogewotICAgIEFTU0VSVChwcml2YXRlVHJhY2spOwotICAgIGlmICgh
YWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fdHJhY2tTZXQucmVtb3ZlKHRy
YWNrLT5pZCgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdHJhY2stPnJlbW92ZU9i
c2VydmVyKHRoaXMpOworCisgICAgaWYgKHN0cmVhbU1vZGlmaWVyID09IFN0cmVhbU1vZGlmaWVy
OjpEb21BUEkpCisgICAgICAgIG1fcHJpdmF0ZS0+cmVtb3ZlVHJhY2sodHJhY2stPnByaXZhdGVU
cmFjaygpLCBNZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9wdGlvbjo6RG9udE5vdGlm
eSk7CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIFdU
Rjo6bW92ZSh0cmFjaykpKTsKIAotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9
IGdldFRyYWNrQnlJZChwcml2YXRlVHJhY2stPmlkKCkpOwotICAgIGlmIChyZW1vdmVUcmFjayh0
cmFjaykpCi0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0
cmFjay5yZWxlYXNlKCkpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBNZWRpYVN0cmVh
bTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQordm9pZCBN
ZWRpYVN0cmVhbTo6c2NoZWR1bGVBY3RpdmVTdGF0ZUNoYW5nZSgpCiB7Ci0gICAgbV9zY2hlZHVs
ZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFt
ZSA9IG1faXNBY3RpdmUgPyBldmVudE5hbWVzKCkuaW5hY3RpdmVFdmVudCA6IGV2ZW50TmFtZXMo
KS5hY3RpdmVFdmVudDsKKyAgICBtX3NjaGVkdWxlZEFjdGl2aXR5RXZlbnRzLmFwcGVuZChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBpZiAoIW1fc2NoZWR1
bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIu
c3RhcnRPbmVTaG90KDApOworICAgIGlmICghbV9hY3Rpdml0eUV2ZW50VGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9hY3Rpdml0eUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12
b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKQordm9pZCBNZWRpYVN0
cmVhbTo6YWN0aXZpdHlFdmVudFRpbWVyRmlyZWQoKQogewogICAgIFZlY3RvcjxSZWZQdHI8RXZl
bnQ+PiBldmVudHM7Ci0gICAgZXZlbnRzLnN3YXAobV9zY2hlZHVsZWRFdmVudHMpOworICAgIGV2
ZW50cy5zd2FwKG1fc2NoZWR1bGVkQWN0aXZpdHlFdmVudHMpOwogCi0gICAgZm9yIChhdXRvJiBl
dmVudCA6IGV2ZW50cykKKyAgICBmb3IgKGF1dG8mIGV2ZW50IDogZXZlbnRzKSB7CisgICAgICAg
IG1faXNBY3RpdmUgPSBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5hY3RpdmVFdmVudDsK
ICAgICAgICAgZGlzcGF0Y2hFdmVudChldmVudC5yZWxlYXNlKCkpOworICAgIH0KIAogICAgIGV2
ZW50cy5jbGVhcigpOwogfQpAQCAtMzcyLDE3ICsyNDksMTUgQEAgVVJMUmVnaXN0cnkmIE1lZGlh
U3RyZWFtOjpyZWdpc3RyeSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtUmVnaXN0cnk6
OnJlZ2lzdHJ5KCk7CiB9CiAKLVZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+KiBNZWRp
YVN0cmVhbTo6dHJhY2tWZWN0b3JGb3JUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgdHlw
ZSkKK1ZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtOjp0cmFja1Zl
Y3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBmaWx0ZXJUeXBlKSBjb25zdAog
ewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVk
aW86Ci0gICAgICAgIHJldHVybiAmbV9hdWRpb1RyYWNrczsKLSAgICBjYXNlIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlZpZGVvOgotICAgICAgICByZXR1cm4gJm1fdmlkZW9UcmFja3M7Ci0gICAgY2Fz
ZSBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiB0cmFja3M7CisgICAgZm9y
IChhdXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFsdWVzKCkpIHsKKyAgICAgICAgaWYgKHRyYWNr
LT5zb3VyY2UoKS0+dHlwZSgpID09IGZpbHRlclR5cGUpCisgICAgICAgICAgICB0cmFja3MuYXBw
ZW5kKHRyYWNrKTsKICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gdHJh
Y2tzOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbTo6T2Jz
ZXJ2ZXIqIG9ic2VydmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCmluZGV4IGJmNjM4ODUuLmU0MTY5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC0zOCwxMiArMzgsMTMgQEAKICNpbmNsdWRlICJT
Y3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlVSTFJlZ2lz
dHJ5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBNZWRpYVN0cmVhbSBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtPiwg
cHVibGljIFVSTFJlZ2lzdHJhYmxlLCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgTWVk
aWFTdHJlYW1Qcml2YXRlQ2xpZW50LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwg
cHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKK2NsYXNzIE1lZGlhU3RyZWFtIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+LCBwdWJsaWMgVVJMUmVnaXN0cmFi
bGUsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBNZWRpYVN0cmVhbVByaXZhdGVDbGll
bnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQ29udGV4dERlc3Ry
dWN0aW9uT2JzZXJ2ZXIsIHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrOjpPYnNlcnZlciB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgT2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKQEAgLTUyLDI1ICs1MywyNCBA
QCBwdWJsaWM6CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7Cisg
ICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBNZWRpYVN0cmVhbSopOwogICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
Pj4mKTsKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPik7CisgICAgc3RhdGljIFJl
ZjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8TWVk
aWFTdHJlYW1Qcml2YXRlPiYmKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCiAgICAg
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLT5pZCgpOyB9CiAKLSAgICB2b2lk
IGFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYm
KTsKKyAgICB2b2lkIHJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqKTsKICAgICBNZWRpYVN0
cmVhbVRyYWNrKiBnZXRUcmFja0J5SWQoU3RyaW5nKTsKIAotICAgIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4+JiBnZXRBdWRpb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1f
YXVkaW9UcmFja3M7IH0KLSAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
PiYgZ2V0VmlkZW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvVHJhY2tzOyB9Ci0gICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gZ2V0VHJhY2tzKCk7CisgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gZ2V0QXVkaW9UcmFja3MoKSBjb25zdDsKKyAgICBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRWaWRlb1RyYWNrcygpIGNvbnN0Owor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IGdldFRyYWNrcygpIGNvbnN0Owog
Ci0gICAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY2xvbmUoKTsKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW0+IGNsb25lKCk7CiAKLSAgICBib29sIGFjdGl2ZSgpIGNvbnN0OwotICAgIHZvaWQgc2V0
QWN0aXZlKGJvb2wpOworICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9pc0FjdGl2
ZTsgfQogCiAgICAgTWVkaWFTdHJlYW1Qcml2YXRlKiBwcml2YXRlU3RyZWFtKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CiAKQEAgLTg4LDQyICs4OCw0MiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Q
cml2YXRlPik7CisgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+Jik7CisgICAgTWVkaWFTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYpOwogCiAg
ICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOwogCiBwcml2YXRlOgorICAgIGVudW0gY2xhc3Mg
U3RyZWFtTW9kaWZpZXIgeyBEb21BUEksIFBsYXRmb3JtIH07CisKICAgICAvLyBFdmVudFRhcmdl
dAogICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVm
KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFs
IHsgZGVyZWYoKTsgfQogCi0gICAgLy8gTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50CisgICAgLy8g
TWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tEaWRFbmQo
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RyZWFtSXNBY3RpdmUoYm9v
bCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVNvdXJjZShSZWFs
dGltZU1lZGlhU291cmNlKikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZVJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKikgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKikgb3ZlcnJpZGUgZmluYWw7Ci0KLSAgICBib29sIHJlbW92ZVRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4pOwotICAgIGJvb2wgYWRkVHJhY2soUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7CiAKLSAgICBib29sIGhhdmVUcmFja1dpdGhTb3VyY2Uo
UGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPik7CisgICAgLy8gTWVkaWFTdHJlYW1Qcml2
YXRlQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGFjdGl2ZVN0YXR1c0NoYW5nZWQoKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVHJhY2tUb1ByaXZhdGUoTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVt
b3ZlVHJhY2tGcm9tUHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlIGZp
bmFsOwogCi0gICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OwotICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKCk7CisgICAgYm9vbCBpbnRlcm5h
bEFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBTdHJlYW1Nb2RpZmllcik7Cisg
ICAgYm9vbCBpbnRlcm5hbFJlbW92ZVRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmLCBT
dHJlYW1Nb2RpZmllcik7CiAKLSAgICB2b2lkIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3RvcihW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4+Jik7CisgICAgdm9pZCBzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKCk7
CisgICAgdm9pZCBhY3Rpdml0eUV2ZW50VGltZXJGaXJlZCgpOwogCi0gICAgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNrVmVjdG9yRm9yVHlwZShSZWFsdGltZU1lZGlhU291
cmNlOjpUeXBlKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiB0cmFja1Zl
Y3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSkgY29uc3Q7CiAKICAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBtX3ByaXZhdGU7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPj4gbV9hdWRpb1RyYWNrczsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiBtX3ZpZGVvVHJhY2tzOwogCi0gICAgVGltZXIgbV9zY2hlZHVsZWRFdmVudFRp
bWVyOwotICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEV2ZW50czsKKyAgICBi
b29sIG1faXNBY3RpdmU7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPj4gbV90cmFja1NldDsKKworICAgIFRpbWVyIG1fYWN0aXZpdHlFdmVudFRpbWVyOworICAg
IFZlY3RvcjxSZWZQdHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEFjdGl2aXR5RXZlbnRzOwogCiAgICAg
VmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCA1NWE5MGU1Li4yMTU1
N2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmlkbApAQCAtMzcsMTAgKzM3LDExIEBACiAgICAgc2VxdWVuY2U8TWVkaWFTdHJlYW1U
cmFjaz4gZ2V0QXVkaW9UcmFja3MoKTsKICAgICBzZXF1ZW5jZTxNZWRpYVN0cmVhbVRyYWNrPiBn
ZXRWaWRlb1RyYWNrcygpOwogICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldFRyYWNr
cygpOwotCi0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhZGRUcmFjayhNZWRpYVN0cmVhbVRy
YWNrIHRyYWNrKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIHJlbW92ZVRyYWNrKE1lZGlh
U3RyZWFtVHJhY2sgdHJhY2spOwogICAgIE1lZGlhU3RyZWFtVHJhY2sgZ2V0VHJhY2tCeUlkKERP
TVN0cmluZyB0cmFja0lkKTsKKworICAgIHZvaWQgYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0
cmFjayk7CisgICAgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKTsKKwog
ICAgIE1lZGlhU3RyZWFtIGNsb25lKCk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBhY3RpdmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA3MWMxZDhhLi4wMDZkNTMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJp
Y3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC00MCwxMSAr
NDAsOSBAQAogI2luY2x1ZGUgIk1lZGlhU291cmNlU3RhdGVzLmgiCiAjaW5jbHVkZSAiTWVkaWFT
dHJlYW0uaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVByaXZhdGUuaCIKLSNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFj
a1NvdXJjZXNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFUcmFja0NvbnN0cmFpbnRzLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNDMgKzUyLDE5IEBA
IFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0
cmVhbVRyYWNrKGNvbnRleHQsIHByaXZhdGVUcmFjaykpOwogfQogCi1SZWY8TWVkaWFTdHJlYW1U
cmFjaz4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQot
ewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtVHJhY2sodHJhY2spKTsKLX0K
LQogTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKQogICAg
IDogUmVmQ291bnRlZCgpCiAgICAgLCBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAgLCBt
X3ByaXZhdGVUcmFjayhwcml2YXRlVHJhY2spCi0gICAgLCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVs
ZWQoZmFsc2UpCi0gICAgLCBtX3N0b3BwaW5nVHJhY2soZmFsc2UpCi17Ci0gICAgc3VzcGVuZElm
TmVlZGVkKCk7Ci0KLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0Q2xpZW50KHRoaXMpOwotfQotCi1N
ZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smIG90aGVy
KQotICAgIDogUmVmQ291bnRlZCgpCi0gICAgLCBBY3RpdmVET01PYmplY3Qob3RoZXIuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9wcml2YXRlVHJhY2soKm90aGVyLnByaXZhdGVU
cmFjaygpLmNsb25lKCkpCi0gICAgLCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQoZmFsc2UpCi0g
ICAgLCBtX3N0b3BwaW5nVHJhY2soZmFsc2UpCisgICAgLCBtX3ByaXZhdGUocHJpdmF0ZVRyYWNr
KQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogCi0gICAgbV9wcml2YXRlVHJhY2stPnNldENs
aWVudCh0aGlzKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKIH0KIAogTWVkaWFT
dHJlYW1UcmFjazo6fk1lZGlhU3RyZWFtVHJhY2soKQogewotICAgIG1fcHJpdmF0ZVRyYWNrLT5z
ZXRDbGllbnQobnVsbHB0cik7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0U291cmNl
KFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbmV3U291cmNlKQotewotICAgIG1fcHJp
dmF0ZVRyYWNrLT5zZXRTb3VyY2UobmV3U291cmNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVu
dChudWxscHRyKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpr
aW5kKCkgY29uc3QKQEAgLTk4LDc1ICs3Miw3NCBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
U3RyZWFtVHJhY2s6OmtpbmQoKSBjb25zdAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9t
aWNTdHJpbmc+IGF1ZGlvS2luZCgiYXVkaW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiB2aWRlb0tp
bmQoInZpZGVvIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CiAKLSAgICBp
ZiAobV9wcml2YXRlVHJhY2stPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykK
KyAgICBpZiAobV9wcml2YXRlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8p
CiAgICAgICAgIHJldHVybiBhdWRpb0tpbmQ7CiAgICAgcmV0dXJuIHZpZGVvS2luZDsKIH0KIAog
Y29uc3QgU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjppZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZVRyYWNrLT5pZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlkKCk7CiB9CiAK
IGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6bGFiZWwoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3ByaXZhdGVUcmFjay0+bGFiZWwoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5sYWJl
bCgpOwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVuYWJsZWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGVUcmFjay0+ZW5hYmxlZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUt
PmVuYWJsZWQoKTsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0RW5hYmxlZChlbmFibGVkKTsKLX0K
LQotYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wcGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlVHJhY2stPnN0b3BwZWQoKTsKKyAgICBtX3ByaXZhdGUtPnNldEVuYWJsZWQoZW5h
YmxlZCk7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6bXV0ZWQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGVUcmFjay0+bXV0ZWQoKTsKKyAgICByZXR1cm4gbV9wcml2YXRlLT5t
dXRlZCgpOwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wcml2YXRlVHJhY2stPnJlYWRvbmx5KCk7CisgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cmVhZG9ubHkoKTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjpyZW1vdGUoKSBj
b25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGVUcmFjay0+cmVtb3RlKCk7CisgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+cmVtb3RlKCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJl
YW1UcmFjazo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEF0b21pY1N0cmluZz4gZW5kZWQoImVuZGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbGl2ZSgi
bGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IG5ld1N0YXRlKCJuZXciLCBBdG9taWNTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLQotICAgIHN3aXRjaCAobV9wcml2YXRlVHJhY2stPnJl
YWR5U3RhdGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6TGl2ZToKLSAgICAg
ICAgcmV0dXJuIGxpdmU7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpOZXc6Ci0gICAg
ICAgIHJldHVybiBuZXdTdGF0ZTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVk
OgotICAgICAgICByZXR1cm4gZW5kZWQ7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIGVtcHR5QXRvbTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBlbmRlZFN0YXRlKCJlbmRlZCIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IGxpdmVT
dGF0ZSgibGl2ZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisgICAg
cmV0dXJuIGVuZGVkKCkgPyBlbmRlZFN0YXRlIDogbGl2ZVN0YXRlOwogfQogCi12b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmdldFNvdXJjZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrPiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ29kZSYgZWMpCitib29sIE1lZGlhU3RyZWFtVHJhY2s6OmVuZGVkKCkgY29uc3QKIHsK
LSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0PiByZXF1ZXN0ID0gTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgY2FsbGJhY2spOwot
ICAgIGlmICghUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6c2luZ2xldG9uKCkuZ2V0TWVkaWFT
dHJlYW1UcmFja1NvdXJjZXMocmVxdWVzdC5yZWxlYXNlKCkpKQotICAgICAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOworICAgIHJldHVybiBtX3ByaXZhdGUtPmVuZGVkKCk7Cit9CisKK1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjbG9uZSgpCit7CisgICAgcmV0
dXJuIE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAq
bV9wcml2YXRlLT5jbG9uZSgpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCit7CisgICAgLy8gTk9URTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4g
dGhlICJzdG9wIiBtZXRob2QgaXMgY2FsbGVkIGZyb20gSlMsIHVzaW5nCisgICAgLy8gdGhlICJJ
bXBsZW1lbnRlZEFzIiBJREwgYXR0cmlidXRlLiBUaGlzIGlzIGRvbmUgYmVjYXVzZSBBY3RpdmVE
T01PYmplY3QgcmVxdWlyZXMKKyAgICAvLyBhICJzdG9wIiBtZXRob2QuCisKKyAgICBpZiAocmVt
b3RlKCkgfHwgZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9wcml2YXRlLT5lbmRU
cmFjaygpOwogfQogCiBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRy
YWNrOjpnZXRDb25zdHJhaW50cygpIGNvbnN0CkBAIC0xNzgsMTcgKzE1MSwxNiBAQCBSZWZQdHI8
TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBNZWRpYVN0cmVhbVRyYWNrOjpnZXRDb25zdHJhaW50cygp
IGNvbnN0CiAKIFJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gTWVkaWFTdHJlYW1UcmFjazo6c3Rh
dGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTWVkaWFTb3VyY2VTdGF0ZXM6OmNyZWF0ZShtX3By
aXZhdGVUcmFjay0+c3RhdGVzKCkpOworICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3Jl
YXRlKG1fcHJpdmF0ZS0+c3RhdGVzKCkpOwogfQogCiBSZWZQdHI8TWVkaWFTdHJlYW1DYXBhYmls
aXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0CiB7CiAgICAg
Ly8gVGhlIHNvdXJjZSBtYXkgYmUgc2hhcmVkIGJ5IG11bHRpcGxlIHRyYWNrcywgc28gaXRzIHN0
YXRlcyBpcyBub3QgbmVjZXNzYXJpbHkKLSAgICAvLyBpbiBzeW5jIHdpdGggdGhlIHRyYWNrIHN0
YXRlLiBBIHRyYWNrIHRoYXQgaXMgbmV3IG9yIGhhcyBlbmRlZCBhbHdheXMgaGFzIGEgc291cmNl
CisgICAgLy8gaW4gc3luYyB3aXRoIHRoZSB0cmFjayBzdGF0ZS4gQSB0cmFjayB0aGF0IGhhcyBl
bmRlZCBhbHdheXMgaGFzIGEgc291cmNlCiAgICAgLy8gdHlwZSBvZiAibm9uZSIuCi0gICAgUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+IHNvdXJjZUNhcGFiaWxpdGllcyA9
IG1fcHJpdmF0ZVRyYWNrLT5jYXBhYmlsaXRpZXMoKTsKLSAgICBSZWFsdGltZU1lZGlhU291cmNl
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUgPSBtX3ByaXZhdGVUcmFjay0+cmVhZHlTdGF0ZSgpOwot
ICAgIGlmIChyZWFkeVN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5ldyB8fCByZWFkeVN0
YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkKQorICAgIFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBzb3VyY2VDYXBhYmlsaXRpZXMgPSBtX3ByaXZhdGUtPmNh
cGFiaWxpdGllcygpOworICAgIGlmIChlbmRlZCgpKQogICAgICAgICBzb3VyY2VDYXBhYmlsaXRp
ZXMtPnNldFNvdXJjZVR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlczo6Tm9uZSk7CiAgICAg
CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOjpjcmVhdGUoc291cmNlQ2FwYWJp
bGl0aWVzLnJlbGVhc2UoKSk7CkBAIC0xOTcsMzggKzE2OSwxNSBAQCBSZWZQdHI8TWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENhcGFiaWxpdGllcygpIGNvbnN0
CiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFy
eSYgY29uc3RyYWludHMpCiB7CiAgICAgbV9jb25zdHJhaW50cy0+aW5pdGlhbGl6ZShjb25zdHJh
aW50cyk7Ci0gICAgbV9wcml2YXRlVHJhY2stPmFwcGx5Q29uc3RyYWludHMobV9jb25zdHJhaW50
cyk7CisgICAgbV9wcml2YXRlLT5hcHBseUNvbnN0cmFpbnRzKCptX2NvbnN0cmFpbnRzKTsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphcHBseUNvbnN0cmFpbnRzKFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4pCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMo
Y29uc3QgTWVkaWFDb25zdHJhaW50cyYpCiB7CiAgICAgLy8gRklYTUU6IGFwcGx5IHRoZSBuZXcg
Y29uc3RyYWludHMgdG8gdGhlIHRyYWNrCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMjQyOAogfQogCi1SZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVk
aWFTdHJlYW1UcmFjazo6Y2xvbmUoKQotewotICAgIHJldHVybiBNZWRpYVN0cmVhbVRyYWNrOjpj
cmVhdGUoKnRoaXMpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdE
YXRhKCkKLXsKLSAgICAvLyBOT1RFOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUgInN0
b3AiIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBKUywgdXNpbmcKLSAgICAvLyB0aGUgIkltcGxlbWVu
dGVkQXMiIElETCBhdHRyaWJ1dGUuIFRoaXMgaXMgZG9uZSBiZWNhdXNlIEFjdGl2ZURPTU9iamVj
dCByZXF1aXJlcwotICAgIC8vIGEgInN0b3AiIG1ldGhvZC4KLSAgICAKLSAgICAvLyBUaGUgc3Rv
cCBtZXRob2Qgc2hvdWxkICJQZXJtYW5lbnRseSBzdG9wIHRoZSBnZW5lcmF0aW9uIG9mIGRhdGEg
Zm9yIHRyYWNrJ3Mgc291cmNlIiwgYnV0IGl0Ci0gICAgLy8gc2hvdWxkIG5vdCBwb3N0IGFuICdl
bmRlZCcgZXZlbnQuIAotICAgIG1fc3RvcHBpbmdUcmFjayA9IHRydWU7Ci0gICAgbV9wcml2YXRl
VHJhY2stPnN0b3AoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OlN0b3BUcmFja0FuZFN0b3BTb3Vy
Y2UpOwotICAgIG1fc3RvcHBpbmdUcmFjayA9IGZhbHNlOwotfQotCi1ib29sIE1lZGlhU3RyZWFt
VHJhY2s6OmVuZGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlVHJhY2stPmVuZGVk
KCk7Ci19Ci0KIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1U
cmFjazo6T2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNl
cnZlcik7CkBAIC0yNDEsNjIgKzE5MCwzMyBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW92
ZU9ic2VydmVyKE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyKiBvYnNlcnZlcikKICAgICAgICAg
bV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJh
Y2tSZWFkeVN0YXRlQ2hhbmdlZCgpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrRW5kZWQo
KQogewotICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKKyAgICBkaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwogCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlID0gbV9w
cml2YXRlVHJhY2stPnJlYWR5U3RhdGUoKTsKLSAgICBpZiAocmVhZHlTdGF0ZSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpMaXZlKQotICAgICAgICBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhcnRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBl
bHNlIGlmIChyZWFkeVN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkICYmICFtX3N0
b3BwaW5nVHJhY2spCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBmb3IgKGF1dG8m
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT50cmFja0RpZEVuZCgp
OwogCiAgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKIH0KICAgICAKIHZvaWQgTWVkaWFT
dHJlYW1UcmFjazo6dHJhY2tNdXRlZENoYW5nZWQoKQogewotICAgIGlmIChzdG9wcGVkKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtdXRlZCgpKQotICAgICAgICBzY2hlZHVsZUV2ZW50
RGlzcGF0Y2goRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFs
c2UpKTsKLSAgICBlbHNlCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS51bm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0KLSAgICBjb25m
aWd1cmVUcmFja1JlbmRlcmluZygpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnRyYWNr
RW5hYmxlZENoYW5nZWQoKQotewotICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsK
KyAgICBBdG9taWNTdHJpbmcgZXZlbnRUeXBlID0gbXV0ZWQoKSA/IGV2ZW50TmFtZXMoKS5tdXRl
RXZlbnQgOiBldmVudE5hbWVzKCkudW5tdXRlRXZlbnQ7CisgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNlKSk7CiAKLSAgICBzZXRFbmFibGVkKG1f
cHJpdmF0ZVRyYWNrLT5lbmFibGVkKCkpOwogICAgIGNvbmZpZ3VyZVRyYWNrUmVuZGVyaW5nKCk7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6Y29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKQog
ewotICAgIGlmIChzdG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIDQuMy4xCiAg
ICAgLy8gLi4uIG1lZGlhIGZyb20gdGhlIHNvdXJjZSBvbmx5IGZsb3dzIHdoZW4gYSBNZWRpYVN0
cmVhbVRyYWNrIG9iamVjdCBpcyBib3RoIHVubXV0ZWQgYW5kIGVuYWJsZWQKIH0KIAotdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrOjp0cmFja0RpZEVuZCgpCi17Ci0gICAgbV9wcml2YXRlVHJhY2stPnNl
dFJlYWR5U3RhdGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQpOwotCi0gICAgZm9yIChhdXRv
JiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQotICAgICAgICBvYnNlcnZlci0+dHJhY2tEaWRFbmQo
KTsKLX0KLQogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKIHsKLSAgICBtX3ByaXZhdGVU
cmFjay0+c3RvcChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6U3RvcFRyYWNrT25seSk7CisgICAg
c3RvcFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogY29uc3QgY2hhciogTWVkaWFTdHJlYW1UcmFjazo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBAIC0zMTAsMzMgKzIzMCw2IEBAIGJvb2wgTWVk
aWFTdHJlYW1UcmFjazo6Y2FuU3VzcGVuZEZvclBhZ2VDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNjaGVkdWxlRXZlbnREaXNwYXRj
aChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKLXsKLSAgICB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX211dGV4KTsKLSAgICAgICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50
KTsKLSAgICAgICAgaWYgKG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBj
YWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+PiBldmVudHM7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihwcm90ZWN0ZWRUaGlzLT5tX211dGV4KTsKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
ZXZlbnREaXNwYXRjaFNjaGVkdWxlZCA9IGZhbHNlOwotICAgICAgICAgICAgZXZlbnRzID0gV1RG
Ojptb3ZlKHByb3RlY3RlZFRoaXMtPm1fc2NoZWR1bGVkRXZlbnRzKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoYXV0byYgZXZlbnQgOiBldmVudHMpCi0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7
Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDFkMDljYzQuLmEzNmI4NDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFC
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEVyaWNz
c29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgpAQCAtNDUsNyArNDUs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEaWN0aW9uYXJ5OwogY2xhc3MgTWVkaWFD
b25zdHJhaW50c0ltcGw7CiBjbGFzcyBNZWRpYVNvdXJjZVN0YXRlczsKLWNsYXNzIE1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s7CiBjbGFzcyBNZWRpYVN0cmVhbUNhcGFiaWxpdGllczsK
IGNsYXNzIE1lZGlhVHJhY2tDb25zdHJhaW50czsKIApAQCAtNTgsNyArNTcsNiBAQCBwdWJsaWM6
CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwotICAgIHN0YXRp
YyBSZWY8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smKTsKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbVRyYWNrKCk7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtp
bmQoKSBjb25zdDsKQEAgLTcxLDI1ICs2OSwyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBtdXRlZCgp
IGNvbnN0OwogICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKICAgICBib29sIHJlbW90ZSgpIGNv
bnN0OwotICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0OwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiByZWFkeVN0YXRlKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRTb3VyY2VzKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2Fs
bGJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBlbmRlZCgpIGNvbnN0OworCisgICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNsb25lKCk7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5n
RGF0YSgpOwogCiAgICAgUmVmUHRyPE1lZGlhVHJhY2tDb25zdHJhaW50cz4gZ2V0Q29uc3RyYWlu
dHMoKSBjb25zdDsKICAgICBSZWZQdHI8TWVkaWFTb3VyY2VTdGF0ZXM+IHN0YXRlcygpIGNvbnN0
OwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGllcz4gZ2V0Q2FwYWJpbGl0aWVzKCkg
Y29uc3Q7CiAgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IERpY3Rpb25hcnkmKTsKLSAg
ICB2b2lkIGFwcGx5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPik7Cisg
ICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWludHMmKTsKIAotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjbG9uZSgpOwotICAgIHZvaWQgc3RvcFByb2R1Y2lu
Z0RhdGEoKTsKLQotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZVRyYWNrLT5zb3VyY2UoKTsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJiBwcml2YXRlVHJhY2soKSB7IHJldHVybiBtX3ByaXZhdGVUcmFjay5nZXQoKTsgfQotCi0g
ICAgYm9vbCBlbmRlZCgpIGNvbnN0OworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIHNvdXJjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS0+c291cmNlKCk7IH0KKyAgICBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgcHJpdmF0ZVRyYWNrKCkgeyByZXR1cm4gbV9wcml2YXRlLmdldCgpOyB9CiAK
ICAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7CiAgICAgdm9pZCByZW1vdmVPYnNlcnZl
cihPYnNlcnZlciopOwpAQCAtMTA1LDExICsxMDAsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhU3Ry
ZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Jik7CiAgICAgZXhwbGljaXQgTWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJik7CiAK
LSAgICB2b2lkIHNldFNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KTsKLQog
ICAgIHZvaWQgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKLSAgICB2b2lkIHRyYWNrRGlkRW5k
KCk7Ci0gICAgdm9pZCBzY2hlZHVsZUV2ZW50RGlzcGF0Y2goUGFzc1JlZlB0cjxFdmVudD4pOwog
CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZSBm
aW5hbDsKQEAgLTEyMSwyMSArMTEyLDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIC8vIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCB0cmFja1JlYWR5U3RhdGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZCgpIG92ZXJyaWRlOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOwotCi0gICAgUmVmUHRyPE1lZGlhQ29uc3Ry
YWludHNJbXBsPiBtX2NvbnN0cmFpbnRzOwotICAgIE11dGV4IG1fbXV0ZXg7CisgICAgdm9pZCB0
cmFja0VuZGVkKCk7CisgICAgdm9pZCB0cmFja011dGVkQ2hhbmdlZCgpOwogCiAgICAgVmVjdG9y
PE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisgICAgUmVmPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
PiBtX3ByaXZhdGU7CiAKLSAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1fcHJpdmF0
ZVRyYWNrOwotICAgIGJvb2wgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkOwotCi0gICAgYm9vbCBt
X3N0b3BwaW5nVHJhY2s7CisgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHNJbXBsPiBtX2NvbnN0
cmFpbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKaW5kZXgg
ZTgyMWYzNS4uZGZiMmRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCkBAIC00MSwyMiArNDEsMTcgQEAgZW51
bSBNZWRpYVN0cmVhbVRyYWNrU3RhdGUgeyAibmV3IiwgImxpdmUiLCAiZW5kZWQiIH07CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gX3JlYWRvbmx5OwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHJlbW90ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1U
cmFja1N0YXRlIHJlYWR5U3RhdGU7Ci0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnN0YXJ0
ZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZGVkOwogCi0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIHZvaWQgZ2V0
U291cmNlcyhNZWRpYVN0cmVhbVRyYWNrU291cmNlc0NhbGxiYWNrIGNhbGxiYWNrKTsKKyAgICBN
ZWRpYVN0cmVhbVRyYWNrIGNsb25lKCk7CisgICAgW0ltcGxlbWVudGVkQXM9c3RvcFByb2R1Y2lu
Z0RhdGFdIHZvaWQgc3RvcCgpOwogCiAgICAgTWVkaWFUcmFja0NvbnN0cmFpbnRzIGdldENvbnN0
cmFpbnRzKCk7Ci0KICAgICBNZWRpYVNvdXJjZVN0YXRlcyBzdGF0ZXMoKTsKLQogICAgIE1lZGlh
U3RyZWFtQ2FwYWJpbGl0aWVzIGdldENhcGFiaWxpdGllcygpOyAvLyByZXR1cm5zIGVpdGhlciBB
bGxWaWRlb0NhcGFiaWxpdGllcyBvciBBbGxBdWRpb0NhcGFiaWxpdGllcwotCiAgICAgdm9pZCBh
cHBseUNvbnN0cmFpbnRzKERpY3Rpb25hcnkgY29uc3RyYWludHMpOwogCiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbm92ZXJjb25zdHJhaW5lZDsKLSAgICBNZWRpYVN0cmVhbVRyYWNrIGNs
b25lKCk7Ci0gICAgW0ltcGxlbWVudGVkQXM9c3RvcFByb2R1Y2luZ0RhdGFdIHZvaWQgc3RvcCgp
OwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3Rl
bmVyKERPTVN0cmluZyB0eXBlLCBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBvcHRpb25hbCBib29s
ZWFuIHVzZUNhcHR1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAppbmRleCBiOTA0MDRjLi44ZmQ2OTM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmNwcApAQCAtNjUxLDcgKzY1MSw2IEBAIHZvaWQgUlRDUGVlckNvbm5lY3Rp
b246OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbVByaXZhdGUqIHByaXZhdGVTdHJl
YW0pCiAKICAgICAvLyBGSVhNRTogdGhpcyBjbGFzcyBzaG91bGRuJ3Qga25vdyB0aGF0IHRoZSBw
cml2YXRlIHN0cmVhbSBjbGllbnQgaXMgYSBNZWRpYVN0cmVhbSEKICAgICBSZWZQdHI8TWVkaWFT
dHJlYW0+IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4ocHJpdmF0ZVN0cmVhbS0+
Y2xpZW50KCkpOwotICAgIHN0cmVhbS0+c2V0QWN0aXZlKGZhbHNlKTsKIAogICAgIGlmIChtX3Np
Z25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlQ2xvc2VkKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAppbmRleCAyNzMxMjdlLi4yZGUyNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTE1
OCw5ICsxNTgsOSBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmRpZENyZWF0ZVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gcHJpdmF0ZVN0cgogICAgIC8vIDQgLSBDcmVhdGUg
dGhlIE1lZGlhU3RyZWFtIGFuZCBwYXNzIGl0IHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrLgogICAg
IFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBwcml2YXRlU3RyZWFtKTsKICAgICBmb3IgKGF1dG8mIHRyYWNr
IDogc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJh
aW50cyhtX2F1ZGlvQ29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50
cygqbV9hdWRpb0NvbnN0cmFpbnRzKTsKICAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5n
ZXRWaWRlb1RyYWNrcygpKQotICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cyhtX3ZpZGVv
Q29uc3RyYWludHMpOworICAgICAgICB0cmFjay0+YXBwbHlDb25zdHJhaW50cygqbV92aWRlb0Nv
bnN0cmFpbnRzKTsKIAogICAgIG1fcHJvbWlzZS5yZXNvbHZlKHN0cmVhbSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Q
cml2YXRlLmNwcAppbmRleCA5ZTI3MzUyLi4xMDQ1NTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKQEAgLTQyLDE2MCArNDIs
OTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJp
dmF0ZT4gTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFs
dGltZU1lZGlhU291cmNlPj4mIHZpZGVvU291cmNlcykKK1JlZlB0cjxNZWRpYVN0cmVhbVByaXZh
dGU+IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBNZWRpYVN0cmVhbVByaXZhdGUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1Nv
dXJjZXMsIHZpZGVvU291cmNlcykpOwotfQorICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU+PiB0cmFja3M7CisgICAgdHJhY2tzLnJlc2VydmVDYXBhY2l0eShhdWRpb1Nv
dXJjZXMuc2l6ZSgpICsgdmlkZW9Tb3VyY2VzLnNpemUoKSk7CiAKLVBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIGF1ZGlvUHJpdmF0ZVRyYWNrcywgY29uc3Qg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB2aWRlb1ByaXZhdGVUcmFj
a3MpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVByaXZhdGUoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpLCBhdWRpb1ByaXZhdGVUcmFja3MsIHZpZGVvUHJpdmF0ZVRy
YWNrcykpOwotfQorICAgIGZvciAoYXV0byBzb3VyY2UgOiBhdWRpb1NvdXJjZXMpCisgICAgICAg
IHRyYWNrcy5hcHBlbmQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEY6Om1vdmUo
c291cmNlKSkpOwogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6YWRkU291cmNlKFBhc3NSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gcHJwU291cmNlKQotewotICAgIFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPiBzb3VyY2UgPSBwcnBTb3VyY2U7Ci0gICAgc3dpdGNoIChzb3VyY2UtPnR5
cGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW86Ci0gICAgICAgIGlm
IChtX2F1ZGlvU3RyZWFtU291cmNlcy5maW5kKHNvdXJjZSkgPT0gbm90Rm91bmQpCi0gICAgICAg
ICAgICBtX2F1ZGlvU3RyZWFtU291cmNlcy5hcHBlbmQoc291cmNlKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoKLSAgICAgICAgaWYgKG1fdmlk
ZW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKSA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIG1f
dmlkZW9TdHJlYW1Tb3VyY2VzLmFwcGVuZChzb3VyY2UpOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19CisgICAgZm9yIChhdXRvIHNvdXJjZSA6IHZp
ZGVvU291cmNlcykKKyAgICAgICAgdHJhY2tzLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZTo6Y3JlYXRlKFdURjo6bW92ZShzb3VyY2UpKSk7CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRl
OjpyZW1vdmVTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2UpCi17
Ci0gICAgc2l6ZV90IHBvcyA9IG5vdEZvdW5kOwotICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkp
IHsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvOgotICAgICAgICBwb3MgPSBt
X2F1ZGlvU3RyZWFtU291cmNlcy5maW5kKHNvdXJjZSk7Ci0gICAgICAgIGlmIChwb3MgPT0gbm90
Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fYXVkaW9TdHJlYW1Tb3VyY2Vz
LnJlbW92ZShwb3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OlZpZGVvOgotICAgICAgICBwb3MgPSBtX3ZpZGVvU3RyZWFtU291cmNlcy5maW5kKHNvdXJj
ZSk7Ci0gICAgICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIG1fdmlkZW9TdHJlYW1Tb3VyY2VzLnJlbW92ZShwb3MpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgcmV0dXJuIE1lZGlhU3RyZWFt
UHJpdmF0ZTo6Y3JlYXRlKHRyYWNrcyk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjph
ZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKQorUmVmUHRyPE1lZGlh
U3RyZWFtUHJpdmF0ZT4gTWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB0cmFja3MpCiB7Ci0gICAgaWYgKG1fY2xp
ZW50KQotICAgICAgICBtX2NsaWVudC0+YWRkUmVtb3RlU291cmNlKHNvdXJjZSk7Ci0gICAgZWxz
ZQotICAgICAgICBhZGRTb3VyY2Uoc291cmNlKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhU3RyZWFtUHJpdmF0ZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIHRyYWNrcykpOwog
fQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlUmVtb3RlU291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2UqIHNvdXJjZSkKK1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6Y3JlYXRlKCkKIHsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5yZW1vdmVSZW1vdGVTb3VyY2Uoc291cmNlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlbW92
ZVNvdXJjZShzb3VyY2UpOworICAgIHJldHVybiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4oKSk7CiB9CiAKLXZvaWQgTWVk
aWFTdHJlYW1Qcml2YXRlOjphZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSog
dHJhY2spCi17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+YWRkUmVtb3Rl
VHJhY2sodHJhY2spOwotICAgIGVsc2UKLSAgICAgICAgYWRkVHJhY2sodHJhY2spOwotfQotCi12
b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUqIHRyYWNrKQotewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PnJlbW92ZVJlbW90ZVRyYWNrKHRyYWNrKTsKLSAgICBlbHNlCi0gICAgICAgIHJlbW92ZVRyYWNr
KHRyYWNrKTsKLX0KLQotTWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVByaXZhdGUoY29u
c3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4m
IGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4m
IHZpZGVvU291cmNlcykKK01lZGlhU3RyZWFtUHJpdmF0ZTo6TWVkaWFTdHJlYW1Qcml2YXRlKGNv
bnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+PiYgdHJhY2tzKQogICAgIDogbV9jbGllbnQoMCkKICAgICAsIG1faWQoaWQpCiAgICAgLCBt
X2lzQWN0aXZlKGZhbHNlKQogewogICAgIEFTU0VSVChtX2lkLmxlbmd0aCgpKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvU291cmNlcy5zaXplKCk7IGkrKykKLSAgICAgICAgYWRk
VHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShhdWRpb1NvdXJjZXNbaV0pKTsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmlkZW9Tb3VyY2VzLnNpemUoKTsgaSsrKQot
ICAgICAgICBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHZpZGVvU291
cmNlc1tpXSkpOwogCi0gICAgdW5zaWduZWQgcHJvdmlkZWRTb3VyY2VzU2l6ZSA9IGF1ZGlvU291
cmNlcy5zaXplKCkgKyB2aWRlb1NvdXJjZXMuc2l6ZSgpOwotICAgIHVuc2lnbmVkIHRyYWNrc1Np
emUgPSBtX2F1ZGlvUHJpdmF0ZVRyYWNrcy5zaXplKCkgKyBtX3ZpZGVvUHJpdmF0ZVRyYWNrcy5z
aXplKCk7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IHRyYWNrcykKKyAgICAgICAgbV90cmFja1Nl
dC5hZGQodHJhY2stPmlkKCksIHRyYWNrKTsKIAotICAgIGlmIChwcm92aWRlZFNvdXJjZXNTaXpl
ID4gMCAmJiB0cmFja3NTaXplID4gMCkKLSAgICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAg
dXBkYXRlQWN0aXZlU3RhdGUoTm90aWZ5Q2xpZW50T3B0aW9uOjpEb250Tm90aWZ5KTsKIH0KIAot
TWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVByaXZhdGUoY29uc3QgU3RyaW5nJiBpZCwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiBhdWRpb1ByaXZh
dGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYg
dmlkZW9Qcml2YXRlVHJhY2tzKQotICAgIDogbV9jbGllbnQoMCkKLSAgICAsIG1faWQoaWQpCi0g
ICAgLCBtX2lzQWN0aXZlKGZhbHNlKQorVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZT4+IE1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tzKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9pZC5sZW5ndGgoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1ByaXZhdGVU
cmFja3Muc2l6ZSgpOyBpKyspCi0gICAgICAgIGFkZFRyYWNrKGF1ZGlvUHJpdmF0ZVRyYWNrc1tp
XSk7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IHRyYWNrczsK
KyAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsKKyAgICBjb3B5
VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsKIAotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmlkZW9Qcml2YXRlVHJhY2tzLnNpemUoKTsgaSsrKQotICAgICAgICBhZGRUcmFj
ayh2aWRlb1ByaXZhdGVUcmFja3NbaV0pOwotCi0gICAgdW5zaWduZWQgcHJvdmlkZWRUcmFja3NT
aXplID0gYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUoKSArIHZpZGVvUHJpdmF0ZVRyYWNrcy5zaXpl
KCk7Ci0gICAgdW5zaWduZWQgdHJhY2tzU2l6ZSA9IG1fYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUo
KSArIG1fdmlkZW9Qcml2YXRlVHJhY2tzLnNpemUoKTsKLQotICAgIGlmIChwcm92aWRlZFRyYWNr
c1NpemUgPiAwICYmIHRyYWNrc1NpemUgPiAwKQotICAgICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsK
KyAgICByZXR1cm4gdHJhY2tzOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6c2V0QWN0
aXZlKGJvb2wgYWN0aXZlKQordm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnVwZGF0ZUFjdGl2ZVN0
YXRlKE5vdGlmeUNsaWVudE9wdGlvbiBub3RpZnlDbGllbnRPcHRpb24pCiB7Ci0gICAgaWYgKG1f
aXNBY3RpdmUgPT0gYWN0aXZlKQotICAgICAgICByZXR1cm47CisgICAgLy8gQSBzdHJlYW0gaXMg
YWN0aXZlIGlmIGl0IGhhcyBhdCBsZWFzdCBvbmUgdW4tZW5kZWQgdHJhY2suCisgICAgYm9vbCBu
ZXdBY3RpdmVTdGF0ZSA9IGZhbHNlOworICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX3RyYWNrU2V0
LnZhbHVlcygpKSB7CisgICAgICAgIGlmICghdHJhY2stPmVuZGVkKCkpIHsKKyAgICAgICAgICAg
IG5ld0FjdGl2ZVN0YXRlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQogCi0gICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKKyAgICBpZiAobmV3QWN0aXZlU3RhdGUg
PT0gbV9pc0FjdGl2ZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faXNBY3RpdmUgPSBuZXdBY3Rp
dmVTdGF0ZTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnNldFN0cmVh
bUlzQWN0aXZlKGFjdGl2ZSk7CisgICAgaWYgKG1fY2xpZW50ICYmIG5vdGlmeUNsaWVudE9wdGlv
biA9PSBOb3RpZnlDbGllbnRPcHRpb246Ok5vdGlmeSkKKyAgICAgICAgbV9jbGllbnQtPmFjdGl2
ZVN0YXR1c0NoYW5nZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IHBycFRyYWNrKQordm9pZCBNZWRp
YVN0cmVhbVByaXZhdGU6OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4m
JiB0cmFjaywgTm90aWZ5Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKIHsKLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB0cmFja3MgPSB0cmFjay0+dHlw
ZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvID8gbV9hdWRpb1ByaXZhdGVUcmFja3Mg
OiBtX3ZpZGVvUHJpdmF0ZVRyYWNrczsKLQotICAgIHNpemVfdCBwb3MgPSB0cmFja3MuZmluZCh0
cmFjayk7Ci0gICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICBpZiAobV90cmFja1NldC5jb250
YWlucyh0cmFjay0+aWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYWNrcy5hcHBlbmQo
dHJhY2spOwotICAgIGlmICh0cmFjay0+c291cmNlKCkpCi0gICAgICAgIGFkZFNvdXJjZSh0cmFj
ay0+c291cmNlKCkpOworICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNrLT5pZCgpLCB0cmFjayk7CisK
KyAgICBpZiAobV9jbGllbnQgJiYgbm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudE9w
dGlvbjo6Tm90aWZ5KQorICAgICAgICBtX2NsaWVudC0+ZGlkQWRkVHJhY2tUb1ByaXZhdGUoKnRy
YWNrLmdldCgpKTsKKworICAgIHVwZGF0ZUFjdGl2ZVN0YXRlKE5vdGlmeUNsaWVudE9wdGlvbjo6
Tm90aWZ5KTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZVRyYWNrKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IHRyYWNrKQordm9pZCBNZWRpYVN0cmVhbVBy
aXZhdGU6OnJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFjaywgTm90aWZ5
Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKIHsKLSAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHRyYWNrcyA9IHRyYWNrLT50eXBlKCkgPT0gUmVhbHRp
bWVNZWRpYVNvdXJjZTo6QXVkaW8gPyBtX2F1ZGlvUHJpdmF0ZVRyYWNrcyA6IG1fdmlkZW9Qcml2
YXRlVHJhY2tzOwotCi0gICAgc2l6ZV90IHBvcyA9IHRyYWNrcy5maW5kKHRyYWNrKTsKLSAgICBp
ZiAocG9zID09IG5vdEZvdW5kKQorICAgIGlmICghbV90cmFja1NldC5yZW1vdmUodHJhY2suaWQo
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRyYWNrcy5yZW1vdmUocG9zKTsKKyAgICBpZiAo
bV9jbGllbnQgJiYgbm90aWZ5Q2xpZW50T3B0aW9uID09IE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90
aWZ5KQorICAgICAgICBtX2NsaWVudC0+ZGlkUmVtb3ZlVHJhY2tGcm9tUHJpdmF0ZSh0cmFjayk7
CisKKyAgICB1cGRhdGVBY3RpdmVTdGF0ZShOb3RpZnlDbGllbnRPcHRpb246Ok5vdGlmeSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKaW5kZXggMzllYzZjMC4u
ZGE2N2Y4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKQEAgLTM3LDcgKzM3LDcgQEAKIAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2suaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIgotI2luY2x1ZGUgIlJl
YWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC00NSw2OCAr
NDUsNDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTsKIAotY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50IDogcHVibGljIE1lZGlhU3Ry
ZWFtVHJhY2s6Ok9ic2VydmVyIHsKK2NsYXNzIE1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50KCkgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U3RyZWFtSXNBY3RpdmUoYm9vbCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSopID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlU3RhdHVzQ2hhbmdlZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVHJhY2tUb1ByaXZhdGUoTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVRyYWNrRnJvbVByaXZh
dGUoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSA9IDA7CiB9OwogCiBjbGFzcyBNZWRpYVN0cmVh
bVByaXZhdGUgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVByaXZhdGU+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShjb25z
dCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKTsKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShjb25zdCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIGF1ZGlvUHJpdmF0ZVRyYWNrcywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB2aWRlb1ByaXZh
dGVUcmFja3MpOworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUo
Y29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywg
Y29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIHZpZGVvU291cmNlcyk7
CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShjb25zdCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mKTsKKyAgICBzdGF0aWMgUmVmUHRy
PE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKCk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVh
bVByaXZhdGUoKSB7IH0KIAorICAgIGVudW0gY2xhc3MgTm90aWZ5Q2xpZW50T3B0aW9uIHsgTm90
aWZ5LCBEb250Tm90aWZ5IH07CisKICAgICBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQqIGNsaWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAgICAgdm9pZCBzZXRDbGllbnQoTWVkaWFT
dHJlYW1Qcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAg
IFN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAotICAgIHVuc2lnbmVkIG51bWJl
ck9mQXVkaW9Tb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb1N0cmVhbVNvdXJjZXMuc2l6
ZSgpOyB9Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogYXVkaW9Tb3VyY2VzKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU3RyZWFtU291cmNlc1tpbmRleF0uZ2V0KCk7IH0K
LQotICAgIHVuc2lnbmVkIG51bWJlck9mVmlkZW9Tb3VyY2VzKCkgY29uc3QgeyByZXR1cm4gbV92
aWRlb1N0cmVhbVNvdXJjZXMuc2l6ZSgpOyB9Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogdmlk
ZW9Tb3VyY2VzKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZpZGVvU3RyZWFtU291
cmNlc1tpbmRleF0uZ2V0KCk7IH0KLQotICAgIHVuc2lnbmVkIG51bWJlck9mQXVkaW9UcmFja3Mo
KSBjb25zdCB7IHJldHVybiBtX2F1ZGlvUHJpdmF0ZVRyYWNrcy5zaXplKCk7IH0KLSAgICBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSogYXVkaW9UcmFja3ModW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fYXVkaW9Qcml2YXRlVHJhY2tzW2luZGV4XS5nZXQoKTsgfQotCi0gICAgdW5zaWdu
ZWQgbnVtYmVyT2ZWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Qcml2YXRlVHJh
Y2tzLnNpemUoKTsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB2aWRlb1RyYWNrcyh1
bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1ByaXZhdGVUcmFja3NbaW5kZXhd
LmdldCgpOyB9Ci0KLSAgICB2b2lkIGFkZFNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+KTsKLSAgICB2b2lkIHJlbW92ZVNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2U+KTsKLQotICAgIHZvaWQgYWRkUmVtb3RlU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2Uq
KTsKLSAgICB2b2lkIHJlbW92ZVJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKik7Cisg
ICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IHRyYWNrcygpIGNvbnN0
OwogCiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWN0aXZlOyB9Ci0gICAg
dm9pZCBzZXRBY3RpdmUoYm9vbCk7Ci0KLSAgICB2b2lkIGFkZFRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+KTsKLSAgICB2b2lkIHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+KTsKKyAgICB2b2lkIHVwZGF0ZUFjdGl2ZVN0YXRlKE5v
dGlmeUNsaWVudE9wdGlvbik7CiAKLSAgICB2b2lkIGFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlKik7Ci0gICAgdm9pZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSopOworICAgIHZvaWQgYWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiYmLCBOb3RpZnlDbGllbnRPcHRpb24pOworICAgIHZvaWQgcmVtb3ZlVHJhY2soTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUmLCBOb3RpZnlDbGllbnRPcHRpb24pOwogCiBwcml2YXRlOgot
ICAgIE1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKTsKLSAgICBNZWRpYVN0cmVh
bVByaXZhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4+JiBhdWRpb1ByaXZhdGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgdmlkZW9Qcml2YXRlVHJhY2tzKTsKKyAgICBNZWRp
YVN0cmVhbVByaXZhdGUoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4+Jik7CiAKICAgICBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQq
IG1fY2xpZW50OwogICAgIFN0cmluZyBtX2lkOwotICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVN
ZWRpYVNvdXJjZT4+IG1fYXVkaW9TdHJlYW1Tb3VyY2VzOwotICAgIFZlY3RvcjxSZWZQdHI8UmVh
bHRpbWVNZWRpYVNvdXJjZT4+IG1fdmlkZW9TdHJlYW1Tb3VyY2VzOwotCi0gICAgVmVjdG9yPFJl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IG1fYXVkaW9Qcml2YXRlVHJhY2tzOwotICAg
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBtX3ZpZGVvUHJpdmF0ZVRy
YWNrczsKICAgICBib29sIG1faXNBY3RpdmU7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gbV90cmFja1NldDsKIH07CiAKIHR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+PiBNZWRpYVN0cmVhbVByaXZhdGVWZWN0b3I7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHAKaW5kZXggMzFhMWI2ZC4uZDgxNzhkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiAgQ29w
eXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDE4NiArMzcsODgg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFBhc3NSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4gc291cmNlKQorUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNl
PiYmIHNvdXJjZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKHNvdXJjZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUoV1RGOjptb3ZlKHNvdXJjZSksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkp
OworfQorCitSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpjcmVhdGUoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBjb25z
dCBTdHJpbmcmIGlkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUoV1RGOjptb3ZlKHNvdXJjZSksIGlkKSk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShjb25zdCBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYgb3RoZXIpCiAgICAgOiBSZWZDb3VudGVkKCkKKyAgICAsIG1fc291cmNlKG90aGVyLnNv
dXJjZSgpKQogICAgICwgbV9jbGllbnQobnVsbHB0cikKKyAgICAsIG1faWQoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpKQorICAgICwgbV9pc0VuYWJsZWQob3RoZXIuZW5hYmxlZCgpKQorICAg
ICwgbV9pc0VuZGVkKG90aGVyLmVuZGVkKCkpCiB7Ci0gICAgbV9pZ25vcmVNdXRhdGlvbnMgPSB0
cnVlOwotICAgIG1faWQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgc2V0U291
cmNlKG90aGVyLnNvdXJjZSgpKTsKLSAgICBtX3JlYWR5U3RhdGUgPSBvdGhlci5yZWFkeVN0YXRl
KCk7Ci0gICAgbV9tdXRlZCA9IG90aGVyLm11dGVkKCk7Ci0gICAgbV9lbmFibGVkID0gb3RoZXIu
ZW5hYmxlZCgpOwotICAgIG1fc3RvcHBlZCA9IG90aGVyLnN0b3BwZWQoKTsKLSAgICBtX2lnbm9y
ZU11dGF0aW9ucyA9IGZhbHNlOworICAgIG1fc291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0K
IAotTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFBhc3NS
ZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291cmNlKQotICAgIDogbV9zb3VyY2UobnVsbHB0
cikKK01lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGNvbnN0IFN0cmluZyYgaWQpCisgICAg
OiBSZWZDb3VudGVkKCkKKyAgICAsIG1fc291cmNlKHNvdXJjZSkKICAgICAsIG1fY2xpZW50KG51
bGxwdHIpCi0gICAgLCBtX3JlYWR5U3RhdGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6TmV3KQotICAg
ICwgbV9tdXRlZChmYWxzZSkKLSAgICAsIG1fZW5hYmxlZCh0cnVlKQotICAgICwgbV9zdG9wcGVk
KGZhbHNlKQorICAgICwgbV9pZChpZCkKKyAgICAsIG1faXNFbmFibGVkKHRydWUpCisgICAgLCBt
X2lzRW5kZWQoZmFsc2UpCiB7Ci0gICAgbV9pZ25vcmVNdXRhdGlvbnMgPSB0cnVlOwotICAgIHNl
dFNvdXJjZShzb3VyY2UpOwotICAgIG1faWdub3JlTXV0YXRpb25zID0gZmFsc2U7CisgICAgbV9z
b3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOwogfQogCiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
fk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKCkKIHsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAg
IG1fc291cmNlLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZTo6c2V0U291cmNlKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gc291
cmNlKQotewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgbV9zb3VyY2UtPnJlbW92ZU9ic2Vy
dmVyKHRoaXMpOwotCi0gICAgbV9zb3VyY2UgPSBzb3VyY2U7Ci0KLSAgICBpZiAoIW1fc291cmNl
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzZXRNdXRlZChtX3NvdXJjZS0+bXV0ZWQoKSk7Ci0g
ICAgc2V0UmVhZHlTdGF0ZShtX3NvdXJjZS0+cmVhZHlTdGF0ZSgpKTsKLSAgICBpZiAobV9zb3Vy
Y2UpCi0gICAgICAgIG1fc291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKLX0KLQotY29uc3QgU3Ry
aW5nJiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6aWQoKSBjb25zdAotewotICAgIGlmICghbV9p
ZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX2lkOwotCi0gICAgLy8gVGhlIHNwZWMgc2F5
czoKLSAgICAvLyAgIFVubGVzcyBhIE1lZGlhU3RyZWFtVHJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQg
YXMgYSBwYXJ0IGEgb2Ygc3BlY2lhbCBwdXJwb3NlIGFsZ29yaXRobSB0aGF0Ci0gICAgLy8gICBz
cGVjaWZpZXMgaG93IHRoZSB0cmFjayBpZCBtdXN0IGJlIGluaXRpYWxpemVkLCB0aGUgdXNlciBh
Z2VudCBtdXN0IGdlbmVyYXRlIGEgZ2xvYmFsbHkKLSAgICAvLyAgIHVuaXF1ZSBpZGVudGlmaWVy
IHN0cmluZyBhbmQgaW5pdGlhbGl6ZSB0aGUgb2JqZWN0J3MgaWQgYXR0cmlidXRlIHRvIHRoYXQg
c3RyaW5nLgotICAgIGlmIChtX3NvdXJjZSAmJiBtX3NvdXJjZS0+dXNlSURGb3JUcmFja0lEKCkp
Ci0gICAgICAgIHJldHVybiBtX3NvdXJjZS0+aWQoKTsKLQotICAgIG1faWQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1faWQ7CisgICAgbV9zb3VyY2UtPnJlbW92
ZU9ic2VydmVyKHRoaXMpOwogfQogCiBjb25zdCBTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpsYWJlbCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc291cmNlKQotICAgICAgICByZXR1cm4g
bV9zb3VyY2UtPm5hbWUoKTsKLQotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotfQotCi1ib29s
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjplbmRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c3RvcHBlZCB8fCAobV9zb3VyY2UgJiYgbV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpFbmRlZCk7CisgICAgcmV0dXJuIG1fc291cmNlLT5uYW1lKCk7CiB9CiAK
IGJvb2wgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Om11dGVkKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zdG9wcGVkIHx8ICFtX3NvdXJjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgcmV0
dXJuIG1fc291cmNlLT5tdXRlZCgpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OjpzZXRNdXRlZChib29sIG11dGVkKQotewotICAgIGlmIChtX211dGVkID09IG11dGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX211dGVkID0gbXV0ZWQ7Ci0KLSAgICBpZiAoIW1fY2xpZW50
IHx8IG1faWdub3JlTXV0YXRpb25zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC0+
dHJhY2tNdXRlZENoYW5nZWQoKTsKLX0KLQogYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
cmVhZG9ubHkoKSBjb25zdAogewotICAgIGlmIChtX3N0b3BwZWQgfHwgIW1fc291cmNlKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIHJldHVybiBtX3NvdXJjZS0+cmVhZG9ubHkoKTsKIH0K
IAogYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVtb3RlKCkgY29uc3QKIHsKLSAgICBp
ZiAoIW1fc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gbV9zb3Vy
Y2UtPnJlbW90ZSgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzZXRFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBpZiAobV9zdG9wcGVkIHx8IG1fZW5hYmxlZCA9PSBl
bmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyA0LjMuMy4xCi0gICAgLy8gLi4uIGFm
dGVyIGEgTWVkaWFTdHJlYW1UcmFjayBpcyBkaXNhc3NvY2lhdGVkIGZyb20gaXRzIHRyYWNrLCBp
dHMgZW5hYmxlZCBhdHRyaWJ1dGUgc3RpbGwKLSAgICAvLyBjaGFuZ2VzIHZhbHVlIHdoZW4gc2V0
OyBpdCBqdXN0IGRvZXNuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGF0IG5ldyB2YWx1ZS4KLSAgICBt
X2VuYWJsZWQgPSBlbmFibGVkOwotCi0gICAgaWYgKG1fc291cmNlKQotICAgICAgICBtX3NvdXJj
ZS0+c2V0RW5hYmxlZChlbmFibGVkKTsKLQotICAgIGlmICghbV9jbGllbnQgfHwgbV9pZ25vcmVN
dXRhdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT50cmFja0VuYWJsZWRD
aGFuZ2VkKCk7CisgICAgLy8gQWx3YXlzIHVwZGF0ZSB0aGUgZW5hYmxlZCBzdGF0ZSByZWdhcmRs
ZXNzIG9mIHRoZSB0cmFjayBiZWluZyBlbmRlZC4KKyAgICBtX2lzRW5hYmxlZCA9IGVuYWJsZWQ7
CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0b3AoU3RvcEJlaGF2aW9yIHN0
b3BTb3VyY2UpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjplbmRUcmFjaygpCiB7Ci0g
ICAgaWYgKG1fc3RvcHBlZCkKKyAgICBpZiAoZW5kZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKHN0b3BTb3VyY2UgPT0gU3RvcFRyYWNrQW5kU3RvcFNvdXJjZSAmJiBtX3NvdXJjZSkK
LSAgICAgICAgbV9zb3VyY2UtPnN0b3AoKTsKLQotICAgIHNldFJlYWR5U3RhdGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6RW5kZWQpOwotICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9pc0VuZGVk
ID0gdHJ1ZTsKKyAgICBtX3NvdXJjZS0+cmVxdWVzdFN0b3AodGhpcyk7CiB9CiAKLVJlYWx0aW1l
TWVkaWFTb3VyY2U6OlJlYWR5U3RhdGUgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnJlYWR5U3Rh
dGUoKSBjb25zdAotewotICAgIGlmIChtX3N0b3BwZWQpCi0gICAgICAgIHJldHVybiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpFbmRlZDsKLQotICAgIHJldHVybiBtX3JlYWR5U3RhdGU7Ci19Ci0KLXZv
aWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldFJlYWR5U3RhdGUoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6UmVhZHlTdGF0ZSBzdGF0ZSkKK1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4g
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNsb25lKCkKIHsKLSAgICBpZiAobV9yZWFkeVN0YXRl
ID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkVuZGVkIHx8IG1fcmVhZHlTdGF0ZSA9PSBzdGF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhZHlTdGF0ZSBv
bGRTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKLSAgICBtX3JlYWR5U3RhdGUgPSBzdGF0ZTsKLQotICAg
IGlmICghbV9jbGllbnQgfHwgbV9pZ25vcmVNdXRhdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIGlmICgobV9yZWFkeVN0YXRlID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkxpdmUgJiYgb2xk
U3RhdGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6TmV3KSB8fCBtX3JlYWR5U3RhdGUgPT0gUmVh
bHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQpCi0gICAgICAgIG1fY2xpZW50LT50cmFja1JlYWR5U3Rh
dGVDaGFuZ2VkKCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSgqdGhpcykpOwogfQogCi1SZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpjbG9uZSgpCitSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjp0eXBlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKCp0aGlzKSk7CisgICAgcmV0dXJuIG1fc291
cmNlLT50eXBlKCk7CiB9CiAKLSAgICAKIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y29uc3RyYWludHMoKSBjb25zdAogewogICAgIHJldHVybiBtX2Nv
bnN0cmFpbnRzOwpAQCAtMjIzLDYzICsxMjYsNDAgQEAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjb25zdHJhaW50cygpIGNvbnN0CiAKIGNvbnN0IFJl
YWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzdGF0ZXMo
KSBjb25zdAogewotICAgIGlmICghbV9zb3VyY2UpIHsKLSAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMsIG5vU3RhdGUs
ICgpKTsKLSAgICAgICAgcmV0dXJuIG5vU3RhdGU7Ci0gICAgfQotICAgIAogICAgIHJldHVybiBt
X3NvdXJjZS0+c3RhdGVzKCk7CiB9CiAKLVJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OnR5cGUoKSBjb25zdAotewotICAgIGlmICghbV9zb3VyY2UpCi0g
ICAgICAgIHJldHVybiBSZWFsdGltZU1lZGlhU291cmNlOjpOb25lOwotCi0gICAgcmV0dXJuIG1f
c291cmNlLT50eXBlKCk7Ci19Ci0KIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0
aWVzPiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fc291cmNlKQotICAgICAgICByZXR1cm4gMDsKLQogICAgIHJldHVybiBtX3NvdXJj
ZS0+Y2FwYWJpbGl0aWVzKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmFw
cGx5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikKK3ZvaWQgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OmFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50
cyYpCiB7CiAgICAgLy8gRklYTUU6IGFwcGx5IHRoZSBuZXcgY29uc3RyYWludHMgdG8gdGhlIHRy
YWNrCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjQy
OAogfQogCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VSZWFkeVN0YXRlQ2hh
bmdlZCgpCit2b2lkIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VTdG9wcGVkKCkKIHsK
LSAgICBpZiAoc3RvcHBlZCgpKQorICAgIGlmIChlbmRlZCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgc2V0UmVhZHlTdGF0ZShtX3NvdXJjZS0+cmVhZHlTdGF0ZSgpKTsKLX0KIAotdm9p
ZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKLXsKLSAgICBp
ZiAoc3RvcHBlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2V0TXV0ZWQobV9zb3Vy
Y2UtPm11dGVkKCkpOworICAgIG1faXNFbmRlZCA9IHRydWU7CisKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT50cmFja0VuZGVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGU6OnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OnNvdXJjZU11dGVkQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldEVuYWJsZWQobV9zb3VyY2UtPmVuYWJsZWQoKSk7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+dHJhY2tNdXRlZENoYW5nZWQo
KTsKIH0KIAotYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6b2JzZXJ2ZXJJc0VuYWJsZWQo
KQorYm9vbCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cHJldmVudFNvdXJjZUZyb21TdG9wcGlu
ZygpCiB7Ci0gICAgcmV0dXJuIGVuYWJsZWQoKTsKKyAgICByZXR1cm4gIW1faXNFbmRlZDsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKaW5kZXgg
NTQzMzNmYi4uMmFiMDFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBB
Qi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNyArMzAsNiBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKICNpbmNsdWRlICJS
ZWFsdGltZU1lZGlhU291cmNlLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgogCkBAIC00Miw3OCArNDIsNjUgQEAgY2xhc3MgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVDbGll
bnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tSZWFkeVN0YXRlQ2hhbmdlZCgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tFbmRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdHJh
Y2tNdXRlZENoYW5nZWQoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrRW5hYmxlZENoYW5n
ZWQoKSA9IDA7CiB9OwogCiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiwgcHVibGljIFJlYWx0aW1lTWVkaWFT
b3VyY2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4gY3JlYXRlKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4p
OworICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IGNyZWF0ZShSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJik7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZT4gY3JlYXRlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBjb25z
dCBTdHJpbmcmIGlkKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKCk7
CiAKLSAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3Q7CisgICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBjb25zdCBTdHJpbmcmIGxhYmVsKCkgY29uc3Q7
CiAKLSAgICBib29sIGVuZGVkKCkgY29uc3Q7CisgICAgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNFbmRlZDsgfQogCiAgICAgYm9vbCBtdXRlZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0
TXV0ZWQoYm9vbCk7CiAKICAgICBib29sIHJlYWRvbmx5KCkgY29uc3Q7CiAgICAgYm9vbCByZW1v
dGUoKSBjb25zdDsKIAotICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxl
ZDsgfQorICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmFibGVkOyB9CiAg
ICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpOwogCi0gICAgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlJlYWR5U3RhdGUpOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiBjbG9uZSgpOwogCiAgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNvdXJjZShQYXNz
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KTsKKyAgICBSZWFsdGltZU1lZGlhU291cmNlOjpU
eXBlIHR5cGUoKSBjb25zdDsKIAotICAgIGVudW0gU3RvcEJlaGF2aW9yIHsgU3RvcFRyYWNrQW5k
U3RvcFNvdXJjZSwgU3RvcFRyYWNrT25seSB9OwotICAgIHZvaWQgc3RvcChTdG9wQmVoYXZpb3Ip
OwotICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHBlZDsgfQotICAgIAot
ICAgIHZvaWQgc2V0Q2xpZW50KE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQp
IHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICB2b2lkIGVuZFRyYWNrKCk7CiAKLSAgICBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlIHR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldENsaWVudChN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
OyB9CiAKICAgICBjb25zdCBSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSBjb25z
dDsKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gY2FwYWJpbGl0
aWVzKCkgY29uc3Q7CiAKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMo
KSBjb25zdDsKLSAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPik7CisgICAgdm9pZCBhcHBseUNvbnN0cmFpbnRzKGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMmKTsKIAogICAgIHZvaWQgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKIAotcHJvdGVjdGVk
OgorcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZShjb25zdCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOwotICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFBh
c3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4pOworICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlKFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBjb25zdCBTdHJpbmcmIGlkKTsKIAot
cHJpdmF0ZToKICAgICBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAogICAgIC8vIFJlYWx0aW1lTWVkaWFTb3VyY2VPYnNl
cnZlcgotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VSZWFkeVN0YXRlQ2hhbmdlZCgpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VTdG9wcGVkKCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZU11dGVkQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmFibGVkQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgYm9vbCBvYnNlcnZlcklzRW5hYmxlZCgpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZpcnR1YWwgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgCiAgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IG1fc291cmNlOwogICAgIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50KiBtX2NsaWVudDsKICAgICBSZWZQdHI8TWVkaWFD
b25zdHJhaW50cz4gbV9jb25zdHJhaW50czsKLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFk
eVN0YXRlIG1fcmVhZHlTdGF0ZTsKLSAgICBtdXRhYmxlIFN0cmluZyBtX2lkOwogCi0gICAgYm9v
bCBtX211dGVkOwotICAgIGJvb2wgbV9lbmFibGVkOwotICAgIGJvb2wgbV9zdG9wcGVkOwotICAg
IGJvb2wgbV9pZ25vcmVNdXRhdGlvbnM7CisgICAgU3RyaW5nIG1faWQ7CisgICAgYm9vbCBtX2lz
RW5hYmxlZDsKKyAgICBib29sIG1faXNFbmRlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0
aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggYjIzNmQ5MS4uMGM0NTYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NCw4ICs0NSw3IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJl
YWx0aW1lTWVkaWFTb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJp
CiAgICAgOiBtX2lkKGlkKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX25hbWUobmFtZSkK
LSAgICAsIG1fcmVhZHlTdGF0ZShOZXcpCi0gICAgLCBtX2VuYWJsZWQodHJ1ZSkKKyAgICAsIG1f
c3RvcHBlZChmYWxzZSkKICAgICAsIG1fbXV0ZWQoZmFsc2UpCiAgICAgLCBtX3JlYWRvbmx5KGZh
bHNlKQogICAgICwgbV9yZW1vdGUoZmFsc2UpCkBAIC01NCwzNiArNTQsMTggQEAgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5
cGUsIGNvbnN0IFN0cmkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIG1faWQgPSBjcmVhdGVD
YW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKIH0KIAog
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZXNldCgpCiB7Ci0gICAgbV9yZWFkeVN0YXRlID0g
TmV3OwotICAgIG1fZW5hYmxlZCA9IHRydWU7CisgICAgbV9zdG9wcGVkID0gZmFsc2U7CiAgICAg
bV9tdXRlZCA9IGZhbHNlOwogICAgIG1fcmVhZG9ubHkgPSBmYWxzZTsKICAgICBtX3JlbW90ZSA9
IGZhbHNlOwogfQogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKQotewotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRW5kZWQgfHwg
bV9yZWFkeVN0YXRlID09IHJlYWR5U3RhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVh
ZHlTdGF0ZSA9IHJlYWR5U3RhdGU7Ci0gICAgZm9yIChhdXRvIG9ic2VydmVyID0gbV9vYnNlcnZl
cnMuYmVnaW4oKTsgb2JzZXJ2ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsrb2JzZXJ2ZXIpCi0g
ICAgICAgICgqb2JzZXJ2ZXIpLT5zb3VyY2VSZWFkeVN0YXRlQ2hhbmdlZCgpOwotCi0gICAgaWYg
KG1fcmVhZHlTdGF0ZSA9PSBMaXZlKSB7Ci0gICAgICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIC8vIFRoZXJlIGFyZSBubyBtb3JlIGNv
bnN1bWVycyBvZiB0aGlzIHNvdXJjZSdzIGRhdGEsIHNodXQgaXQgZG93biBhcyBhcHByb3ByaWF0
ZS4KLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEVuZGVkKQotICAgICAgICBzdG9wUHJvZHVjaW5n
RGF0YSgpOwotfQotCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZE9ic2VydmVyKFJlYWx0
aW1lTWVkaWFTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKIHsKICAgICBtX29ic2VydmVycy5h
cHBlbmQob2JzZXJ2ZXIpOwpAQCAtMTA2LDUxICs4OCw0MyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OnNldE11dGVkKGJvb2wgbXV0ZWQpCiAKICAgICBtX211dGVkID0gbXV0ZWQ7CiAKLSAg
ICBpZiAobV9yZWFkeVN0YXRlID09IEVuZGVkKQorICAgIGlmIChzdG9wcGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGZvciAoYXV0byBvYnNlcnZlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7
IG9ic2VydmVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK29ic2VydmVyKQotICAgICAgICAoKm9i
c2VydmVyKS0+c291cmNlTXV0ZWRDaGFuZ2VkKCk7CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6
IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci0+c291cmNlTXV0ZWRDaGFuZ2VkKCk7CiB9
CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiti
b29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KCkgY29uc3QKIHsKLSAgICBpZiAoIWVu
YWJsZWQpIHsKLSAgICAgICAgLy8gRG9uJ3QgZGlzYWJsZSB0aGUgc291cmNlIHVubGVzcyBhbGwg
b2JzZXJ2ZXJzIGFyZSBkaXNhYmxlZC4KLSAgICAgICAgZm9yIChhdXRvIG9ic2VydmVyID0gbV9v
YnNlcnZlcnMuYmVnaW4oKTsgb2JzZXJ2ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsrb2JzZXJ2
ZXIpIHsKLSAgICAgICAgICAgIGlmICgoKm9ic2VydmVyKS0+b2JzZXJ2ZXJJc0VuYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJuIG1f
cmVhZG9ubHk7Cit9CiAKLSAgICBpZiAobV9lbmFibGVkID09IGVuYWJsZWQpCit2b2lkIFJlYWx0
aW1lTWVkaWFTb3VyY2U6OnN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlcikKK3sKKyAgICBp
ZiAoc3RvcHBlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2VuYWJsZWQgPSBlbmFibGVk
OworICAgIG1fc3RvcHBlZCA9IHRydWU7CiAKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IEVuZGVk
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgIHN0b3BQcm9k
dWNpbmdEYXRhKCk7Ci0gICAgZWxzZQotICAgICAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAg
ICBmb3IgKGF1dG8gb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAob2JzZXJ2
ZXIgIT0gY2FsbGluZ09ic2VydmVyKQorICAgICAgICAgICAgb2JzZXJ2ZXItPnNvdXJjZVN0b3Bw
ZWQoKTsKKyAgICB9CiAKLSAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2VydmVycy5iZWdp
bigpOyBvYnNlcnZlciAhPSBtX29ic2VydmVycy5lbmQoKTsgKytvYnNlcnZlcikKLSAgICAgICAg
KCpvYnNlcnZlciktPnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCk7CisgICAgc3RvcFByb2R1Y2luZ0Rh
dGEoKTsKIH0KIAotYm9vbCBSZWFsdGltZU1lZGlhU291cmNlOjpyZWFkb25seSgpIGNvbnN0Cit2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2Jz
ZXJ2ZXIpCiB7Ci0gICAgcmV0dXJuIG1fcmVhZG9ubHk7Ci19CisgICAgaWYgKHN0b3BwZWQoKSkK
KyAgICAgICAgcmV0dXJuOwogCi12b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3AoKQotewot
ICAgIC8vIFRoaXMgaXMgY2FsbGVkIGZyb20gdGhlIHRyYWNrLnN0b3AoKSBtZXRob2QsIHdoaWNo
IHNob3VsZCAiUGVybWFuZW50bHkgc3RvcCB0aGUgZ2VuZXJhdGlvbiBvZiBkYXRhCi0gICAgLy8g
Zm9yIHRyYWNrJ3Mgc291cmNlIiwgc28gZ28gc3RyYWlnaHQgdG8gZW5kZWQuIFRoaXMgd2lsbCBu
b3RpZnkgYW55IG90aGVyIHRyYWNrcyB1c2luZyB0aGlzIHNvdXJjZQotICAgIC8vIHRoYXQgaXQg
aXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KLSAgICBzZXRSZWFkeVN0YXRlKEVuZGVkKTsKKyAgICBm
b3IgKGF1dG8gb2JzZXJ2ZXIgOiBtX29ic2VydmVycykgeworICAgICAgICBpZiAob2JzZXJ2ZXIt
PnByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgc3RvcChjYWxsaW5nT2JzZXJ2ZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU1lZGlhU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmgKaW5kZXggNGY5NjAxZi4uNzAwZjc1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3Vy
Y2UuaApAQCAtNTYsMTggKzU2LDE2IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+T2JzZXJ2
ZXIoKSB7IH0KICAgICAgICAgCiAgICAgICAgIC8vIFNvdXJjZSBzdGF0ZSBjaGFuZ2VzLgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUmVhZHlTdGF0ZUNoYW5nZWQoKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VTdG9wcGVkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
c291cmNlTXV0ZWRDaGFuZ2VkKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlRW5h
YmxlZENoYW5nZWQoKSA9IDA7CiAKICAgICAgICAgLy8gT2JzZXJ2ZXIgc3RhdGUgcXVlcmllcy4K
LSAgICAgICAgdmlydHVhbCBib29sIG9ic2VydmVySXNFbmFibGVkKCkgPSAwOworICAgICAgICB2
aXJ0dWFsIGJvb2wgcHJldmVudFNvdXJjZUZyb21TdG9wcGluZygpID0gMDsKICAgICB9OwogCiAg
ICAgdmlydHVhbCB+UmVhbHRpbWVNZWRpYVNvdXJjZSgpIHsgfQogCiAgICAgYm9vbCBpc0F1ZGlv
U3RyZWFtU291cmNlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEF1ZGlvOyB9Ci0gICAgdmly
dHVhbCBib29sIHVzZUlERm9yVHJhY2tJRCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCkBAIC04MCwxMiAr
NzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcz4gY2FwYWJpbGl0aWVzKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgY29uc3Qg
UmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcyYgc3RhdGVzKCkgPSAwOwogICAgIAotICAgIGVudW0g
UmVhZHlTdGF0ZSB7IE5ldyA9IDAsIExpdmUgPSAxLCBFbmRlZCA9IDIgfTsKLSAgICB2aXJ0dWFs
IFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOwotCi0gICAgdmlydHVh
bCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5hYmxlZChib29sKTsKKyAgICBib29sIHN0b3BwZWQoKSBjb25zdCB7IHJldHVy
biBtX3N0b3BwZWQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbXV0ZWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQoYm9vbCk7CkBAIC0xMDIsNyAr
OTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UHJvZHVjaW5nRGF0YSgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIHsgfQogCi0gICAgdm9pZCBz
dG9wKCk7CisgICAgdm9pZCBzdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxscHRy
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9wKE9ic2VydmVyKiBjYWxsaW5nT2JzZXJ2ZXIgPSBudWxs
cHRyKTsKIAogICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtMTEzLDEwICsxMDcsOSBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgUmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAg
VmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAKLSAgICBib29sIG1fZW5hYmxlZDsKICAg
ICBib29sIG1fbXV0ZWQ7CiAgICAgYm9vbCBtX3JlYWRvbmx5OwogICAgIGJvb2wgbV9yZW1vdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2Vi
cnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dy
LmNwcAppbmRleCA4ZWJkNDI5Li5hM2I1ODRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJy
dGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAKQEAgLTExNSw3ICsxMTUsNiBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdAogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gYXVkaW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7
CiAgICAgICAgIGlmIChhdWRpb1NvdXJjZSkgewogICAgICAgICAgICAgYXVkaW9Tb3VyY2UtPnJl
c2V0KCk7Ci0gICAgICAgICAgICBhdWRpb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShSZWFsdGltZU1l
ZGlhU291cmNlOjpMaXZlKTsKICAgICAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBlbmQoYXVkaW9T
b3VyY2UucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEyNiw3ICsxMjUsNiBAQCB2
b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3I6OmNyZWF0ZU1lZGlhU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1DcmVhdAogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4gdmlkZW9Tb3VyY2UgPSBmaXJzdFNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbyk7
CiAgICAgICAgIGlmICh2aWRlb1NvdXJjZSkgewogICAgICAgICAgICAgdmlkZW9Tb3VyY2UtPnJl
c2V0KCk7Ci0gICAgICAgICAgICB2aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShSZWFsdGltZU1l
ZGlhU291cmNlOjpMaXZlKTsKICAgICAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQodmlkZW9T
b3VyY2UucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRl
ci5jcHAKaW5kZXggYzM4NmQ4MS4uODNlODcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5j
cHAKQEAgLTE3NCw3ICsxNzQsNiBAQCB2b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
OjpjcmVhdGVNZWRpYVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogCiAgICAgICAg
IFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBhdWRpb1NvdXJjZSA9IGl0LT52YWx1ZTsKICAg
ICAgICAgYXVkaW9Tb3VyY2UtPnJlc2V0KCk7Ci0gICAgICAgIGF1ZGlvU291cmNlLT5zZXRSZWFk
eVN0YXRlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkxpdmUpOwogICAgICAgICBhdWRpb1NvdXJjZXMu
YXBwZW5kKGF1ZGlvU291cmNlLnJlbGVhc2UoKSk7CiAgICAgfQogCkBAIC0xOTAsNyArMTg5LDYg
QEAgdm9pZCBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlcjo6Y3JlYXRlTWVkaWFTdHJlYW0o
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNyZWEKIAogICAgICAgICBSZWZQdHI8UmVhbHRpbWVNZWRp
YVNvdXJjZT4gdmlkZW9Tb3VyY2UgPSBpdC0+dmFsdWU7CiAgICAgICAgIHZpZGVvU291cmNlLT5y
ZXNldCgpOwotICAgICAgICB2aWRlb1NvdXJjZS0+c2V0UmVhZHlTdGF0ZShSZWFsdGltZU1lZGlh
U291cmNlOjpMaXZlKTsKICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJjZS5y
ZWxlYXNlKCkpOwogICAgIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255764</attachid>
            <date>2015-06-29 11:39:10 -0700</date>
            <delta_ts>2015-06-29 12:54:46 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>update-mediastream-api_2.patch</filename>
            <type>text/plain</type>
            <size>131804</size>
            <attacher name="Adam Bergkvist">adam.bergkvist</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MTUzZWVmLi43NThmNjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTUtMDYt
MjggIEFkYW0gQmVyZ2t2aXN0ICA8YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgorCisgICAg
ICAgIFdlYlJUQzogVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjMxMworCisgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBUZXN0IHN0YXR1czogMyBhZGRlZCwgOCBleGlz
dGluZyBlbmFibGVkIChzb21lIHVwZGF0ZWQpIGFuZCAxIHJlbW92ZWQuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
YWRkLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1s
OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1p
bmFjdGl2ZS1zdHJlYW0uaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLWNsb25lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1l
bmRlZC10cmFja3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWdldFRyYWNrcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS1nZXRUcmFja3MuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2stY2xvbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1n
ZXRTb3VyY2VzLmh0bWw6IFJlbW92ZWQuIFRlc3RlZCBtZXRob2QgcmVtb3ZlZCBmcm9tIHNwZWMu
CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2sta2luZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2stc3RvcC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25z
dHJ1Y3Rvci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vcmVzb3VyY2VzL2dldFVz
ZXJNZWRpYS1oZWxwZXIuanM6IEFkZGVkLgorICAgICAgICAoLnJlamVjdCk6CisgICAgICAgIChn
ZXRVc2VyTWVkaWEpOgorICAgICAgICAoZGVmYXVsdFJlamVjdE9yQ2F0Y2gpOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE1LTA2LTI0ICBEb3VnIFJ1c3Nl
bGwgIDxkX3J1c3NlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1ZyAxNDYxNzcgLSBBWDogQVhP
YmplY3RDYWNoZSBzaG91bGQgdHJ5IHRvIHVzZSBhbiB1bmlnbm9yZWQgYWNjZXNzaWJpbGl0eU9i
amVjdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTczYWMxZi4uZjcwNDQzYiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC00NCwxMCArNDQsNiBAQCB3ZWJraXQub3JnL2IvNzI2OTggbWVkaWEvYXVkaW8t
Z2FyYmFnZS1jb2xsZWN0Lmh0bWwgWyBTa2lwIF0KIAogd2Via2l0Lm9yZy9iLzUzOTkwIGZhc3Qv
Zm9ybXMvc2VhcmNoLWV2ZW50LWRlbGF5Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jIE5vIHBv
cnQgaW4gV2ViS2l0IGFscmVhZHkgc3VwcG9ydCBnZXRNZWRpYVN0cmVhbSwgc28gd2UgYXJlIHNr
aXBwaW5nIHRob3NlIGZvciBub3cuCi1mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0
cnVjdC13aXRoLWVuZGVkLXRyYWNrcy5odG1sIFsgU2tpcCBdCi1mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLWNsb25lLmh0bWwgWyBTa2lwIF0KLQogd2Via2l0Lm9yZy9iLzEyNjE0MiBjc3Mz
L2NhbGMvdHJhbnNpdGlvbnMtZGVwZW5kZW50Lmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCiB3ZWJr
aXQub3JnL2IvMTI0OTMyIG1lZGlhL3ZpZGVvLXNpemUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1l
bmRlZC10cmFja3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLWV4cGVjdGVkLnR4dAppbmRleCBkNjI0NzEwLi5m
Zjc2ZmY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLWFkZC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLWVuZGVkLXRyYWNrcy1leHBlY3RlZC50eHQKQEAg
LTQsOSArNCwyMCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1Mgc3RyZWFtMS5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIHN0cmVhbTIuZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEK
KyoqKiBleHRyYWN0IGF1ZGlvVHJhY2sKKyoqKiBzdG9wIGF1ZGlvVHJhY2sKIFBBU1MgYXVkaW9U
cmFjay5yZWFkeVN0YXRlIGlzICJlbmRlZCIKLVBBU1Mgc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCBpcyAyCisqKiogY29uc3RydWN0IG5ldyAnZW1wdHknIHN0cmVhbTIKK1BBU1Mgc3Ry
ZWFtMi5nZXRUcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyBmYWxz
ZQorKioqIGFkZCBlbmRlZCBhdWRpb1RyYWNrIHRvIHN0cmVhbTIKKyoqKiBzY2hlZHVsZSBjb250
aW51YXRpb24gb2YgdGVzdAorKioqIGV4dHJhY3QgdmlkZW9UcmFjayAoYW5kIHZlcmlmeSBsaXZl
bmVzcykKK1BBU1MgdmlkZW9UcmFjay5yZWFkeVN0YXRlIGlzICJsaXZlIgorKioqIGFkZCBsaXZl
IHZpZGVvVHJhY2sgdG8gc3RyZWFtMgorKioqIHN0cmVhbTIgaXMgYWN0aXZlIGFnYWluCitQQVNT
IHN0cmVhbTIuYWN0aXZlIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbAppbmRleCAxY2Q0OWQ2
Li40ZjhjYmYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLWFkZC1lbmRlZC10cmFja3MuaHRtbApAQCAtMiwyNyArMiwxMyBA
QAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+
CiAKICAgICAgICAgICAgIHZhciBzdHJlYW0xOwogICAgICAgICAgICAgdmFyIHN0cmVhbTI7CiAg
ICAgICAgICAgICB2YXIgYXVkaW9UcmFjazsKLQotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3Io
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5l
cmF0aW9uIGZhaWxlZC4nKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnks
IGNhbGxiYWNrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2Fs
bGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24g
OicgKyBlKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHRyeUFkZFRyYWNrKHN0cmVhbSwgdHJhY2spCiAgICAgICAgICAg
ICB7CkBAIC0zNCwzNSArMjAsNjIgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNob3VsZE5vdEZpcmVBY3RpdmUoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoInN0cmVhbTIgc2hvdWxkIG5vdCBiZWNv
bWUgYWN0aXZlIGlmIGFuIGVuZGVkIHRyYWNrIGlzIGFkZGVkIik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHNob3VsZEZpcmVBY3RpdmUoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGRlYnVnKCIqKiogc3RyZWFtMiBpcyBhY3RpdmUgYWdhaW4iKTsKKyAg
ICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5hY3RpdmUnLCAndHJ1ZScpOworICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBjb250aW51ZVRlc3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRl
YnVnKCIqKiogZXh0cmFjdCB2aWRlb1RyYWNrIChhbmQgdmVyaWZ5IGxpdmVuZXNzKSIpOworICAg
ICAgICAgICAgICAgIHZpZGVvVHJhY2sgPSBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKClbMF07Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd2aWRlb1RyYWNrLnJlYWR5U3Rh
dGUnLCAnbGl2ZScpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBhZGQgbGl2ZSB2aWRl
b1RyYWNrIHRvIHN0cmVhbTIiKTsKKyAgICAgICAgICAgICAgICBzdHJlYW0yLm9uYWN0aXZlID0g
c2hvdWxkRmlyZUFjdGl2ZTsKKyAgICAgICAgICAgICAgICB0cnlBZGRUcmFjayhzdHJlYW0yLCB2
aWRlb1RyYWNrKTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRl
U3RyZWFtQW5kQWRkVHJhY2tzKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaG91
bGRCZSgnc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAg
ICAgICAgZGVidWcoIioqKiBleHRyYWN0IGF1ZGlvVHJhY2siKTsKICAgICAgICAgICAgICAgICBh
dWRpb1RyYWNrID0gc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAgICAgICAgICAg
IGRlYnVnKCIqKiogc3RvcCBhdWRpb1RyYWNrIik7CiAgICAgICAgICAgICAgICAgYXVkaW9UcmFj
ay5zdG9wKCk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdhdWRpb1Ry
YWNrLnJlYWR5U3RhdGUnLCAnZW5kZWQnKTsKLSAgICAgICAgICAgICAgICB0cnlBZGRUcmFjayhz
dHJlYW0yLCBhdWRpb1RyYWNrKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7CiAKLSAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGNvbnN0
cnVjdCBuZXcgJ2VtcHR5JyBzdHJlYW0yIikKKyAgICAgICAgICAgICAgICBzdHJlYW0yID0gbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIu
Z2V0VHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtMi5hY3RpdmUnLCAnZmFsc2UnKTsKIAotICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
MihzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0cmVhbTIgPSBzOwotICAgICAg
ICAgICAgICAgIGNyZWF0ZVN0cmVhbUFuZEFkZFRyYWNrcygpOworICAgICAgICAgICAgICAgIGRl
YnVnKCIqKiogYWRkIGVuZGVkIGF1ZGlvVHJhY2sgdG8gc3RyZWFtMiIpOworICAgICAgICAgICAg
ICAgIHN0cmVhbTIub25hY3RpdmUgPSBzaG91bGROb3RGaXJlQWN0aXZlOworICAgICAgICAgICAg
ICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIsIGF1ZGlvVHJhY2spOworCisgICAgICAgICAgICAgICAg
ZGVidWcoIioqKiBzY2hlZHVsZSBjb250aW51YXRpb24gb2YgdGVzdCIpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoY29udGludWVUZXN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgZnVuY3Rpb24gZ290U3RyZWFtMShzKQorICAgICAgICAgICAgZnVuY3Rpb24gZ290U3RyZWFt
KHMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3RyZWFtMSA9IHM7CiAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScp
OwotICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTIpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgICAgICAgICBjcmVhdGVTdHJlYW1BbmRB
ZGRUcmFja3MoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRN
ZWRpYSgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24oIlRlc3Qg
YWRkaW5nIHRyYWNrcyB0byBpbmFjdGl2ZSBNZWRpYVN0cmVhbS4iKTsKLSAgICAgICAgICAgICAg
ICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0xKTsgCisg
ICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKICAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dAppbmRl
eCBiMmUxZDA1Li5lODhjMmU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLWV4
cGVjdGVkLnR4dApAQCAtNDQsMTMgKzQ0LDI0IEBAIFBBU1Mgc3RyZWFtMS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCBpcyAxCiBQQVNTIHN0cmVhbTEuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMg
MgogUEFTUyBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDIKIAotKioqIHJlbW92
ZSBhbGwgdHJhY2tzLCBzdHJlYW0uZW5kZWQgc2hvdWxkIHJldHVybiB0cnVlCisqKiogcmVtb3Zl
IGFsbCB0cmFja3MsIHN0cmVhbSB3aWxsIGJlY29tZSBpbmFjdGl2ZQogUEFTUyBzdHJlYW0yLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBBU1Mgc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygp
Lmxlbmd0aCBpcyAwCiAKLSoqKiBpdCBzaG91bGQgYmUgaW1wb3NzaWJsZSB0byByZW1vdmUgYSB0
cmFjayBhZnRlciB0aGUgc3RyZWFtIGhhcyBlbmRlZAotUEFTUyBzdHJlYW0yLnJlbW92ZVRyYWNr
KGF1ZGlvVHJhY2spIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERP
TSBFeGNlcHRpb24gMTEuCisqKiogYWN0aXZlIGF0dHJpYnV0ZSBpcyBzdGlsbCB0cnVlICh1bnRp
bCBldmVudCBpcyBmaXJlZCkKK1BBU1Mgc3RyZWFtMi5hY3RpdmUgaXMgdHJ1ZQorCiBTdHJlYW0y
IGlzIGluYWN0aXZlLgorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyBmYWxzZQorCisqKiogYWRkIG5v
bi1lbmRlZCB0cmFjaworUEFTUyBhdWRpb1RyYWNrLnJlYWR5U3RhdGUgaXMgbm90ICJlbmRlZCIK
KworKioqIGFjdGl2ZSBhdHRyaWJ1dGUgaXMgc3RpbGwgZmFsc2UgKHVudGlsIGV2ZW50IGlzIGZp
cmVkKQorUEFTUyBzdHJlYW0yLmFjdGl2ZSBpcyBmYWxzZQorCitTdHJlYW0yIGlzIGFjdGl2ZS4K
K1BBU1Mgc3RyZWFtMi5hY3RpdmUgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1yZW1vdmUtdHJhY2tzLmh0bWwKaW5kZXgg
ZWRlOGU5Zi4uZWM2YzBiYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS1hZGQtcmVtb3ZlLXRyYWNrcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXJlbW92ZS10cmFja3MuaHRtbApAQCAtMiw2
ICsyLDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgogICAgIDwvaGVh
ZD4KICAgICA8Ym9keT4KICAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CkBAIC0xNCwy
MCArMTUsNiBAQAogICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2s7CiAgICAgICAgICAgICB2YXIg
dmlkZW9UcmFjazsKIAotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKSB7Ci0gICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5j
dGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsKLSAgICAgICAgICAgICAg
ICB0cnkgewotICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KGRpY3Rpb25hcnksIGNhbGxiYWNrLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAo
ZSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEg
dGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgZnVu
Y3Rpb24gdHJ5QWRkVHJhY2soc3RyZWFtLCB0cmFjaykgewogICAgICAgICAgICAgICAgIHRyeSB7
CiAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5hZGRUcmFjayh0cmFjayk7CkBAIC01MSwxMyAr
MzgsMjEgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc2hvdWxkRmly
ZUFjdGl2ZSgpIHsKLSAgICAgICAgICAgICAgICBkZWJ1ZygiU3RyZWFtMiBpcyBhY3RpdmUuIik7
CisgICAgICAgICAgICAgICAgZGVidWcoIjxicj5TdHJlYW0yIGlzIGFjdGl2ZS4iKTsKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5hY3RpdmUnLCAndHJ1ZScpOwogICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5j
dGlvbiBzaG91bGRGaXJlSW5BY3RpdmUoKSB7Ci0gICAgICAgICAgICAgICAgZGVidWcoIlN0cmVh
bTIgaXMgaW5hY3RpdmUuIik7Ci0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgICAgICAgICAgZGVidWcoIjxicj5TdHJlYW0yIGlzIGluYWN0aXZlLiIpOworICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCdzdHJlYW0yLmFjdGl2ZScsICdmYWxzZScpOworCisgICAgICAgICAg
ICAgICAgZGVidWcoIjxicj4qKiogYWRkIG5vbi1lbmRlZCB0cmFjayIpOworICAgICAgICAgICAg
ICAgIHNob3VsZE5vdEJlKCdhdWRpb1RyYWNrLnJlYWR5U3RhdGUnLCAnImVuZGVkIicpOworICAg
ICAgICAgICAgICAgIHRyeUFkZFRyYWNrKHN0cmVhbTIsIGF1ZGlvVHJhY2spOworCisgICAgICAg
ICAgICAgICAgZGVidWcoIjxicj4qKiogYWN0aXZlIGF0dHJpYnV0ZSBpcyBzdGlsbCBmYWxzZSAo
dW50aWwgZXZlbnQgaXMgZmlyZWQpIik7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVh
bTIuYWN0aXZlJywgJ2ZhbHNlJyk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0
aW9uIGdvdFN0cmVhbTIocykgewpAQCAtMTI0LDIyICsxMTksMjIgQEAKICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgnc3RyZWFtMS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcyJyk7CiAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAn
MicpOwogCi0gICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogcmVtb3ZlIGFsbCB0cmFja3Ms
IHN0cmVhbS5lbmRlZCBzaG91bGQgcmV0dXJuIHRydWUiKTsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygiPGJyPioqKiByZW1vdmUgYWxsIHRyYWNrcywgc3RyZWFtIHdpbGwgYmVjb21lIGluYWN0aXZl
Iik7CiAgICAgICAgICAgICAgICAgdHJ5UmVtb3ZlVHJhY2soc3RyZWFtMiwgc3RyZWFtMi5nZXRB
dWRpb1RyYWNrcygpWzBdKTsKICAgICAgICAgICAgICAgICB0cnlSZW1vdmVUcmFjayhzdHJlYW0y
LCBzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pOwogICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgnc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CiAKLSAg
ICAgICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBpdCBzaG91bGQgYmUgaW1wb3NzaWJsZSB0byBy
ZW1vdmUgYSB0cmFjayBhZnRlciB0aGUgc3RyZWFtIGhhcyBlbmRlZCIpOwotICAgICAgICAgICAg
ICAgIHNob3VsZFRocm93KCdzdHJlYW0yLnJlbW92ZVRyYWNrKGF1ZGlvVHJhY2spJywgJyJFcnJv
cjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEiJyk7CisgICAgICAgICAgICAg
ICAgZGVidWcoIjxicj4qKiogYWN0aXZlIGF0dHJpYnV0ZSBpcyBzdGlsbCB0cnVlICh1bnRpbCBl
dmVudCBpcyBmaXJlZCkiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5hY3Rp
dmUnLCAndHJ1ZScpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RT
dHJlYW0xKHMpIHsKICAgICAgICAgICAgICAgICBzdHJlYW0xID0gczsKLSAgICAgICAgICAgICAg
ICBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0yKTsKKyAg
ICAgICAgICAgICAgICBnZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW0yKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ2V0VXNlck1l
ZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMSk7CisgICAgICAgICAgICBn
ZXRVc2VyTWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0x
KTsKIAogICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgICAgICAg
ICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC10cmFja3MtdG8taW5hY3RpdmUt
c3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFk
ZC10cmFja3MtdG8taW5hY3RpdmUtc3RyZWFtLmh0bWwKaW5kZXggYmU5YmE1ZS4uNjIwYmIzMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQt
dHJhY2tzLXRvLWluYWN0aXZlLXN0cmVhbS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0tYWRkLXRyYWNrcy10by1pbmFjdGl2ZS1zdHJlYW0uaHRtbApA
QCAtMiwyOCArMiwxMyBAQAogPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1lZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgICAgIDxzY3JpcHQ+CiAKIAogICAgICAgICAgICAgdmFyIHN0cmVhbTE7CiAgICAgICAgICAg
ICB2YXIgYXVkaW9UcmFjazsKIAotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZh
aWxlZC4nKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNr
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVy
cm9yKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsK
LSAgICAgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBmdW5jdGlvbiB0cnlBZGRUcmFjayhzdHJlYW0s
IHRyYWNrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRyeSB7CkBAIC01NSw3ICs0
MCw3IEBACiAgICAgICAgICAgICBmdW5jdGlvbiBzdGFydE1lZGlhKCkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCBhZGRpbmcgdHJhY2tzIHRvIGluYWN0
aXZlIE1lZGlhU3RyZWFtLiIpOwotICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTEpOyAKKyAgICAgICAgICAgICAgICBnZXRVc2Vy
TWVkaWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0xKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAg
ICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jbG9uZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2ZmZTQzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1j
bG9uZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNSBAQAorCitQQVNTIG1lZGlhU3RyZWFtLmdl
dEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQorbmV3TWVkaWFTdHJlYW0gPSBtZWRpYVN0cmVhbS5jbG9uZSgpCitQ
QVNTIG1lZGlhU3RyZWFtLmlkIGlzIG5vdCBuZXdNZWRpYVN0cmVhbS5pZAorY2hlY2sgdHJhY2tz
CitQQVNTIHRyYWNrLmlkIGlzIG5vdCBuZXdUcmFjay5pZAorUEFTUyB0cmFjay5raW5kIGlzIG5l
d1RyYWNrLmtpbmQKK1BBU1MgdHJhY2subGFiZWwgaXMgbmV3VHJhY2subGFiZWwKK1BBU1MgdHJh
Y2sucmVhZHlTdGF0ZSBpcyBuZXdUcmFjay5yZWFkeVN0YXRlCitQQVNTIHRyYWNrLmVuYWJsZWQg
aXMgbmV3VHJhY2suZW5hYmxlZAorUEFTUyB0cmFjay5tdXRlZCBpcyBuZXdUcmFjay5tdXRlZAor
ZG9uZQorY2hlY2sgdHJhY2tzCitQQVNTIHRyYWNrLmlkIGlzIG5vdCBuZXdUcmFjay5pZAorUEFT
UyB0cmFjay5raW5kIGlzIG5ld1RyYWNrLmtpbmQKK1BBU1MgdHJhY2subGFiZWwgaXMgbmV3VHJh
Y2subGFiZWwKK1BBU1MgdHJhY2sucmVhZHlTdGF0ZSBpcyBuZXdUcmFjay5yZWFkeVN0YXRlCitQ
QVNTIHRyYWNrLmVuYWJsZWQgaXMgbmV3VHJhY2suZW5hYmxlZAorUEFTUyB0cmFjay5tdXRlZCBp
cyBuZXdUcmFjay5tdXRlZAorZG9uZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW0tY2xvbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0tY2xvbmUuaHRtbAppbmRleCA1ZDY3YzhkLi4yOGUxMzg0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNsb25lLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jbG9uZS5odG1sCkBA
IC0yLDUxICsyLDQ3IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAg
ICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgIHZhciBtZWRpYVN0cmVhbTsKICAgICAgICAgICAg
IHZhciBuZXdNZWRpYVN0cmVhbTsKLSAgICAgICAgICAgIHZhciBhdWRpb1RyYWNrczsKLSAgICAg
ICAgICAgIHZhciB2aWRlb1RyYWNrczsKLSAgICAgICAgICAgIHZhciBuZXdBdWRpb1RyYWNrczsK
LSAgICAgICAgICAgIHZhciBuZXdWaWRlb1RyYWNrczsKLQotICAgICAgICAgICAgZnVuY3Rpb24g
Y2hlY2tUcmFja3ModHJhY2tTZXQxLCB0cmFja1NldDIpIHsKLSAgICAgICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRyYWNrU2V0MS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAg
ICAgICBzaG91bGRCZSgndHJhY2tTZXQxW2ldLnJlYWR5U3RhdGUnLCAndHJhY2tTZXQyW2ldLnJl
YWR5U3RhdGUnKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrU2V0MVtpXS5l
bmFibGVkJywgJ3RyYWNrU2V0MltpXS5lbmFibGVkJyk7Ci0gICAgICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCd0cmFja1NldDFbaV0ubXV0ZWQnLCAndHJhY2tTZXQyW2ldLm11dGVkJyk7Ci0gICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHRyYWNrOworICAgICAgICAgICAgdmFyIG5l
d1RyYWNrOworCisgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1RyYWNrcyh0cmFjazEsIHRyYWNr
MikgeworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2sxOworICAgICAgICAgICAgICAgIG5l
d1RyYWNrID0gdHJhY2syOworICAgICAgICAgICAgICAgIGRlYnVnKCJjaGVjayB0cmFja3MiKTsK
KyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndHJhY2suaWQnLCAnbmV3VHJhY2suaWQnKTsK
KyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sua2luZCcsICduZXdUcmFjay5raW5kJyk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmxhYmVsJywgJ25ld1RyYWNrLmxhYmVs
Jyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnbmV3VHJh
Y2sucmVhZHlTdGF0ZScpOworICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5lbmFibGVk
JywgJ25ld1RyYWNrLmVuYWJsZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2su
bXV0ZWQnLCAnbmV3VHJhY2subXV0ZWQnKTsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiZG9uZSIp
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFt
KSB7CiAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSBzdHJlYW07CiAgICAgICAgICAgICAg
ICAgZGVidWcoIiIpOwogCisgICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgZG9uJ3QgaGF2ZSBh
bnkgZ3VhcmFudGVlcyBvbiB0aGUgb3JkZXIgZnJvbSBnZXRBdWRpby9WaWRlb1RyYWNrcygpLCB3
ZQorICAgICAgICAgICAgICAgIC8vIGNhbid0IGhhdmUgYSBzdHJlYW0gd2l0aCBtb3JlIHRoYW4g
b25lIHRyYWNrIG9mIGVhY2gga2luZC4KKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbWVkaWFT
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCdtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisKICAg
ICAgICAgICAgICAgICBldmFsQW5kTG9nKCJuZXdNZWRpYVN0cmVhbSA9IG1lZGlhU3RyZWFtLmNs
b25lKCkiKTsKIAogICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCdtZWRpYVN0cmVhbS5pZCcs
ICduZXdNZWRpYVN0cmVhbS5pZCcpOwogCi0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygiYXVk
aW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpIik7Ci0gICAgICAgICAgICAg
ICAgZXZhbEFuZExvZygidmlkZW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
Iik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygibmV3QXVkaW9UcmFja3MgPSBuZXdNZWRp
YVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpIik7Ci0gICAgICAgICAgICAgICAgZXZhbEFuZExvZygi
bmV3VmlkZW9UcmFja3MgPSBuZXdNZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpIik7Ci0KLSAg
ICAgICAgICAgICAgICBjaGVja1RyYWNrcyhhdWRpb1RyYWNrcywgbmV3QXVkaW9UcmFja3MpOwot
ICAgICAgICAgICAgICAgIGNoZWNrVHJhY2tzKHZpZGVvVHJhY2tzLCBuZXdWaWRlb1RyYWNrcyk7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hlY2tUcmFja3MobWVkaWFTdHJlYW0u
Z2V0QXVkaW9UcmFja3MoKVswXSwgbmV3TWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSk7
CisgICAgICAgICAgICAgICAgY2hlY2tUcmFja3MobWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KVswXSwgbmV3TWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSk7CiAKLSAgICAgICAgICAg
IGZ1bmN0aW9uIGdldFVzZXJNZWRpYUVycm9yKCkgewotICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoJ0NvdWxkIG5vdCBnZXQgTWVkaWFTdHJlYW0nKTsKICAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7
Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSwgZ2V0
VXNlck1lZGlhRXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3IGV4Y2VwdGlv
biA6JyArIGUpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0
cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3Mt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1j
b25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmZkNWViMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNr
cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorCitQQVNTIHR5cGVvZiBtZWRpYVN0cmVh
bS5hY3RpdmUgaXMgJ2Jvb2xlYW4nCitQQVNTIG1lZGlhU3RyZWFtLmFjdGl2ZSBpcyB0cnVlCit2
aWRlb1RyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXQorYXVkaW9UcmFjayA9
IG1lZGlhU3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0KK1BBU1MgdmlkZW9UcmFjay5yZWFkeVN0
YXRlIGlzIG5vdCAiZW5kZWQiCitQQVNTIGF1ZGlvVHJhY2sucmVhZHlTdGF0ZSBpcyBub3QgImVu
ZGVkIgorUEFTUyB2aWRlb1RyYWNrLnJlYWR5U3RhdGUgaXMgImVuZGVkIgorUEFTUyBhdWRpb1Ry
YWNrLnJlYWR5U3RhdGUgaXMgImVuZGVkIgorUEFTUyB0eXBlb2YgbmV3TWVkaWFTdHJlYW0uYWN0
aXZlIGlzICdib29sZWFuJworUEFTUyBuZXdNZWRpYVN0cmVhbS5hY3RpdmUgaXMgZmFsc2UKK1BB
U1MgbWVkaWFTdHJlYW0uaWQgaXMgbm90IG5ld01lZGlhU3RyZWFtLmlkCitQQVNTIHR5cGVvZiBt
ZWRpYVN0cmVhbUNvcHkuYWN0aXZlIGlzICdib29sZWFuJworUEFTUyBtZWRpYVN0cmVhbUNvcHku
YWN0aXZlIGlzIGZhbHNlCitQQVNTIG1lZGlhU3RyZWFtQ29weS5pZCBpcyBub3QgbmV3TWVkaWFT
dHJlYW0uaWQKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS1jb25zdHJ1Y3Qtd2l0aC1lbmRlZC10cmFja3MuaHRtbAppbmRl
eCBkNzQyNDQ1Li4wNGQ4ZWFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLWNvbnN0cnVjdC13aXRoLWVuZGVkLXRyYWNrcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5k
ZWQtdHJhY2tzLmh0bWwKQEAgLTIsMTYgKzIsMTggQEAKIDxodG1sPgogICAgIDxoZWFkPgogICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgdmFyIG1lZGlhU3Ry
ZWFtOwogICAgICAgICAgICAgdmFyIHZpZGVvVHJhY2s7CiAgICAgICAgICAgICB2YXIgYXVkaW9U
cmFjazsKICAgICAgICAgICAgIHZhciBuZXdNZWRpYVN0cmVhbTsKKyAgICAgICAgICAgIHZhciBt
ZWRpYVN0cmVhbUNvcHk7CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0p
IHsKICAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbSA9IHN0cmVhbTsKICAgICAgICAgICAgICAg
ICBkZWJ1ZygiIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnbWVkaWFTdHJl
YW0uZW5kZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnbWVk
aWFTdHJlYW0uYWN0aXZlJywgdHJ1ZSk7CiAKICAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2
aWRlb1RyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSIpOwogICAgICAgICAg
ICAgICAgIGV2YWxBbmRMb2coImF1ZGlvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNr
cygpWzBdIik7CkBAIC0yOSwyNiArMzEsMTggQEAKICAgICAgICAgICAgICAgICB0cmFja3NBcnJh
eS5wdXNoKGF1ZGlvVHJhY2spOwogICAgICAgICAgICAgICAgIG5ld01lZGlhU3RyZWFtID0gbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKHRyYWNrc0FycmF5KTsKIAotICAgICAgICAgICAgICAgIHNob3Vs
ZEV2YWx1YXRlVG8oJ25ld01lZGlhU3RyZWFtLmVuZGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkTm90QmVFcXVhbFRvU3RyaW5nKG1lZGlhU3RyZWFtLmlkLCBuZXdNZWRpYVN0cmVh
bS5pZCk7CisgICAgICAgICAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnbmV3TWVkaWFTdHJlYW0u
YWN0aXZlJywgZmFsc2UpOworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCdtZWRpYVN0cmVh
bS5pZCcsICduZXdNZWRpYVN0cmVhbS5pZCcpOwogCi0gICAgICAgICAgICAgICAgdmFyIG1lZGlh
U3RyZWFtQ29weSA9IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShuZXdNZWRpYVN0cmVhbSk7Ci0gICAg
ICAgICAgICAgICAgc2hvdWxkRXZhbHVhdGVUbygnbWVkaWFTdHJlYW1Db3B5LmVuZGVkJywgdHJ1
ZSk7CisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Db3B5ID0gbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKG5ld01lZGlhU3RyZWFtKTsKKyAgICAgICAgICAgICAgICBzaG91bGRFdmFsdWF0ZVRvKCdt
ZWRpYVN0cmVhbUNvcHkuYWN0aXZlJywgZmFsc2UpOwogICAgICAgICAgICAgICAgIHNob3VsZE5v
dEJlKCdtZWRpYVN0cmVhbUNvcHkuaWQnLCAnbmV3TWVkaWFTdHJlYW0uaWQnKTsKLSAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZ2V0VXNlck1lZGlhRXJyb3IoKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgnQ291bGQgbm90IGdldCBNZWRpYVN0cmVhbScpOwogICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBzdGFydCgpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0
cnVlfSwgZ290U3RyZWFtLCBnZXRVc2VyTWVkaWFFcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBj
YXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2Vy
TWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnZXRVc2VyTWVk
aWEoImFsbG93Iiwge2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWdldFRyYWNr
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LWdldFRyYWNrcy1leHBlY3RlZC50eHQKaW5kZXggNTA5NGIyZS4uNzZlYTJhNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1nZXRUcmFja3MtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0t
Z2V0VHJhY2tzLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSwxNCBAQAotVGVzdCBhZGRpbmcgdHJh
Y2tzIHRvIGluYWN0aXZlIE1lZGlhU3RyZWFtLgorVGVzdCB0aGUgZGlmZmVyZW50IG1ldGhvZHMg
dG8gZ2V0IHRyYWNrcyBmcm9tIGEgTWVkaWFTdHJlYW0uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAogCiBQQVNTIHN0cmVhbTEuZ2V0VHJhY2tzKCkubGVuZ3RoIGlzIDIKIFBBU1Mgc3Ry
ZWFtMi5nZXRUcmFja3MoKS5sZW5ndGggaXMgMgorZ2V0QXVkaW9UcmFja3MoKSwgZ2V0VmlkZW9U
cmFja3MoKSBhbmQgZ2V0VHJhY2tzKCkgbXVzdCByZXR1cm4gYSBuZXcgc2VxdWVuY2UgYXQgZXZl
cnkgaW52b2NhdGlvbgorUEFTUyBzdHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkgIT0gc3RyZWFtMi5n
ZXRBdWRpb1RyYWNrcygpIGlzIHRydWUKK1BBU1Mgc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpICE9
IHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKSBpcyB0cnVlCitQQVNTIHN0cmVhbTIuZ2V0VHJhY2tz
KCkgIT0gc3RyZWFtMi5nZXRUcmFja3MoKSBpcyB0cnVlCiBQQVNTIHRyYWNrIGFkZGVkIHRvIHN0
cmVhbS4KIFBBU1Mgc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAyCiBQQVNTIHN0
cmVhbTIuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQpAQCAtMTIsNyArMTYsMTIgQEAgUEFT
UyBzdHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCBpcyAzCiBQQVNTIHRyYWNrIGFkZGVkIHRvIHN0
cmVhbS4KIFBBU1Mgc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAyCiBQQVNTIHN0
cmVhbTIuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMgotUEFTUyBzdHJlYW0yLmdldFRyYWNr
cygpLmxlbmd0aCBpcyA0CitQQVNTIGFsbFRyYWNrcy5sZW5ndGggaXMgNAorUEFTUyBzdHJlYW0y
LmdldFRyYWNrQnlJZChpZCkgaXMgbm9uLW51bGwuCitQQVNTIHN0cmVhbTIuZ2V0VHJhY2tCeUlk
KGlkKSBpcyBub24tbnVsbC4KK1BBU1Mgc3RyZWFtMi5nZXRUcmFja0J5SWQoaWQpIGlzIG5vbi1u
dWxsLgorUEFTUyBzdHJlYW0yLmdldFRyYWNrQnlJZChpZCkgaXMgbm9uLW51bGwuCitQQVNTIHN0
cmVhbTIuZ2V0VHJhY2tCeUlkKCJmb28taWQiKSBpcyBudWxsCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tZ2V0VHJhY2tzLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWdldFRyYWNrcy5odG1sCmluZGV4IDgxY2EwYzYu
Ljc5YmYwNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW0tZ2V0VHJhY2tzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbS1nZXRUcmFja3MuaHRtbApAQCAtMiwyOCArMiwxNSBAQAogPGh0bWw+CiAgICAg
PGhlYWQ+CiAgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvZ2V0VXNlck1l
ZGlhLWhlbHBlci5qcyI+PC9zY3JpcHQ+CiAgICAgICAgIDxzY3JpcHQ+CiAKICAgICAgICAgICAg
IHZhciBzdHJlYW0xOwogICAgICAgICAgICAgdmFyIHN0cmVhbTI7CiAgICAgICAgICAgICB2YXIg
YXVkaW9UcmFjazsKICAgICAgICAgICAgIHZhciB2aWRlb1RyYWNrOwotCi0gICAgICAgICAgICBm
dW5jdGlvbiBlcnJvcigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRVc2VyTWVk
aWEoZGljdGlvbmFyeSwgY2FsbGJhY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShk
aWN0aW9uYXJ5LCBjYWxsYmFjaywgZXJyb3IpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRo
cmV3IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgYWxs
VHJhY2tzOworICAgICAgICAgICAgdmFyIGlkOwogCiAgICAgICAgICAgICBmdW5jdGlvbiB0cnlB
ZGRUcmFjayhzdHJlYW0sIHRyYWNrKQogICAgICAgICAgICAgewpAQCAtMzksNiArMjYsMTIgQEAK
ICAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbUFuZEFkZFRyYWNrcygpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIuZ2V0VHJhY2tzKCkubGVu
Z3RoJywgJzInKTsKKworICAgICAgICAgICAgICAgIGRlYnVnKCdnZXRBdWRpb1RyYWNrcygpLCBn
ZXRWaWRlb1RyYWNrcygpIGFuZCBnZXRUcmFja3MoKSBtdXN0IHJldHVybiBhIG5ldyBzZXF1ZW5j
ZSBhdCBldmVyeSBpbnZvY2F0aW9uJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdz
dHJlYW0yLmdldEF1ZGlvVHJhY2tzKCkgIT0gc3RyZWFtMi5nZXRBdWRpb1RyYWNrcygpJyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdzdHJlYW0yLmdldFZpZGVvVHJhY2tzKCkgIT0g
c3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCdzdHJlYW0yLmdldFRyYWNrcygpICE9IHN0cmVhbTIuZ2V0VHJhY2tzKCknKTsKKwogICAgICAg
ICAgICAgICAgIGF1ZGlvVHJhY2sgPSBzdHJlYW0xLmdldEF1ZGlvVHJhY2tzKClbMF07CiAgICAg
ICAgICAgICAgICAgdHJ5QWRkVHJhY2soc3RyZWFtMiwgYXVkaW9UcmFjayk7CiAgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMicpOwpA
QCAtNDgsNyArNDEsMTMgQEAKICAgICAgICAgICAgICAgICB0cnlBZGRUcmFjayhzdHJlYW0yLCB2
aWRlb1RyYWNrKTsKICAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtMi5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCcsICcyJyk7CiAgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbTIu
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMicpOwotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCdzdHJlYW0yLmdldFRyYWNrcygpLmxlbmd0aCcsICc0Jyk7CisgICAgICAgICAgICAgICAgYWxs
VHJhY2tzID0gc3RyZWFtMi5nZXRUcmFja3MoKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgn
YWxsVHJhY2tzLmxlbmd0aCcsICc0Jyk7CisgICAgICAgICAgICAgICAgYWxsVHJhY2tzLmZvckVh
Y2goZnVuY3Rpb24gKHRyYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIGlkID0gdHJhY2suaWQ7
CisgICAgICAgICAgICAgICAgICAgIHNob3VsZEJlTm9uTnVsbCgnc3RyZWFtMi5nZXRUcmFja0J5
SWQoaWQpJyk7CisgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICBzaG91bGRCZU51
bGwoJ3N0cmVhbTIuZ2V0VHJhY2tCeUlkKCJmb28taWQiKScpOwogCiAgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CiAgICAgICAgICAgICB9CkBAIC02MywxMyArNjIsMTMgQEAKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHJlYW0xID0gczsKICAgICAgICAgICAgICAgICBz
aG91bGRCZSgnc3RyZWFtMS5nZXRUcmFja3MoKS5sZW5ndGgnLCAnMicpOwotICAgICAgICAgICAg
ICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIpOwor
ICAgICAgICAgICAgICAgIGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmdW5jdGlv
biBzdGFydE1lZGlhKCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bigiVGVzdCBhZGRpbmcgdHJhY2tzIHRvIGluYWN0aXZlIE1lZGlhU3RyZWFtLiIpOwotICAgICAg
ICAgICAgICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTEpOyAKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGUgZGlmZmVyZW50IG1l
dGhvZHMgdG8gZ2V0IHRyYWNrcyBmcm9tIGEgTWVkaWFTdHJlYW0uIik7CisgICAgICAgICAgICAg
ICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CiAgICAgICAgICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLmh0bWwKaW5kZXggNzFiYTgxMS4uMTc2ZTQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwKQEAg
LTIsNiArMiw3IEBACiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuL3Jlc291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KICAgICA8
L2hlYWQ+CiAgICAgPGJvZHk+CiAgICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgpAQCAt
NDAsMjAgKzQxLDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKSB7Ci0gICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOwotICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiBnZXRV
c2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsKLSAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKGRpY3Rpb25h
cnksIGNhbGxiYWNrLCBlcnJvcik7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhj
ZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgZnVuY3Rpb24gZ290
U3RyZWFtKHMpIHsKICAgICAgICAgICAgICAgICBsb2NhbFN0cmVhbSA9IHM7CiAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgnR290IGxvY2FsIHN0cmVhbS4nKTsKQEAgLTEwNCw3ICs5MSw3IEBA
CiAgICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdjaGVja0lkQXR0cmlidXRlKG5ld1N0cmVh
bS5pZCknKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZ2V0VXNlck1lZGlhKHt2aWRl
bzp0cnVlLCBhdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAgICAgICAgIGdldFVzZXJNZWRp
YSgiYWxsb3ciLCB7dmlkZW86dHJ1ZSwgYXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7CiAKICAgICAg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAgICAgICAgICAgIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWNsb25lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVmNjhkZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9u
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNiBAQAorVGVzdHMgTWVkaWFTdHJlYW1UcmFjay5j
bG9uZSgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGdldFVzZXJNZWRp
YSBzdWNjZWVkZWQuCisKK3ZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygp
WzBdCitJbml0aWFsaXplIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcyBvbiB2aWRlb1RyYWNrCisK
K3ZpZGVvVHJhY2syID0gdmlkZW9UcmFjay5jbG9uZSgpCitQQVNTIHZpZGVvVHJhY2suaWQgaXMg
bm90IHZpZGVvVHJhY2syLmlkCitQQVNTIHZpZGVvVHJhY2sua2luZCBpcyB2aWRlb1RyYWNrMi5r
aW5kCitQQVNTIHZpZGVvVHJhY2subGFiZWwgaXMgdmlkZW9UcmFjazIubGFiZWwKK1BBU1Mgdmlk
ZW9UcmFjay5tdXRlZCBpcyB2aWRlb1RyYWNrMi5tdXRlZAorUEFTUyB2aWRlb1RyYWNrLmVuYWJs
ZWQgaXMgdmlkZW9UcmFjazIuZW5hYmxlZAorUEFTUyB2aWRlb1RyYWNrLnJlYWR5U3RhdGUgaXMg
dmlkZW9UcmFjazIucmVhZHlTdGF0ZQorUEFTUyB2aWRlb1RyYWNrLm9ubXV0ZSBpcyBub3Qgdmlk
ZW9UcmFjazIub25tdXRlCitQQVNTIHZpZGVvVHJhY2sub251bm11dGUgaXMgbm90IHZpZGVvVHJh
Y2syLm9udW5tdXRlCitQQVNTIHZpZGVvVHJhY2sub25lbmRlZCBpcyBub3QgdmlkZW9UcmFjazIu
b25lbmRlZAorUEFTUyB2aWRlb1RyYWNrLm9ub3ZlcmNvbnN0cmFpbmVkIGlzIG5vdCB2aWRlb1Ry
YWNrMi5vbm92ZXJjb25zdHJhaW5lZAorUEFTUyB2aWRlb1RyYWNrLnJlYWR5U3RhdGUgaXMgbm90
IHZpZGVvVHJhY2syLnJlYWR5U3RhdGUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjE3YzZmMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stY2xvbmUuaHRtbApAQCAtMCwwICsxLDYwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy9nZXRV
c2VyTWVkaWEtaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgIHZhciBtZWRpYVN0cmVhbTsKKyAgICAgICAgICAgIHZhciB2aWRlb1RyYWNrOworICAgICAg
ICAgICAgdmFyIHZpZGVvVHJhY2syOworICAgICAgICAgICAgdmFyIGF1ZGlvVHJhY2s7CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pIHsKKyAgICAgICAgICAgICAgICBt
ZWRpYVN0cmVhbSA9IHN0cmVhbTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCdnZXRVc2Vy
TWVkaWEgc3VjY2VlZGVkLicpOworCisgICAgICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coInZpZGVvVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpWzBdIik7CisKKyAgICAgICAgICAgICAgICBkZWJ1ZygiSW5pdGlhbGl6ZSBldmVudCBo
YW5kbGVyIGF0dHJpYnV0ZXMgb24gdmlkZW9UcmFjayIpOworICAgICAgICAgICAgICAgIHZpZGVv
VHJhY2sub25tdXRlID0gZnVuY3Rpb24gKCkge307CisgICAgICAgICAgICAgICAgdmlkZW9UcmFj
ay5vbnVubXV0ZSA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2su
b25lbmRlZCA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICAgICAgICAgIHZpZGVvVHJhY2sub25v
dmVyY29uc3RyYWluZWQgPSBmdW5jdGlvbiAoKSB7fTsKKworICAgICAgICAgICAgICAgIGRlYnVn
KCIiKTsKKyAgICAgICAgICAgICAgICBldmFsQW5kTG9nKCJ2aWRlb1RyYWNrMiA9IHZpZGVvVHJh
Y2suY2xvbmUoKSIpOworCisgICAgICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3ZpZGVvVHJhY2su
aWQnLCAndmlkZW9UcmFjazIuaWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndmlkZW9U
cmFjay5raW5kJywgJ3ZpZGVvVHJhY2syLmtpbmQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRC
ZSgndmlkZW9UcmFjay5sYWJlbCcsICd2aWRlb1RyYWNrMi5sYWJlbCcpOworICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCd2aWRlb1RyYWNrLm11dGVkJywgJ3ZpZGVvVHJhY2syLm11dGVkJyk7Cisg
ICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2suZW5hYmxlZCcsICd2aWRlb1RyYWNr
Mi5lbmFibGVkJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3ZpZGVvVHJhY2sucmVhZHlT
dGF0ZScsICd2aWRlb1RyYWNrMi5yZWFkeVN0YXRlJyk7CisKKyAgICAgICAgICAgICAgICBzaG91
bGROb3RCZSgndmlkZW9UcmFjay5vbm11dGUnLCAndmlkZW9UcmFjazIub25tdXRlJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3ZpZGVvVHJhY2sub251bm11dGUnLCAndmlkZW9UcmFj
azIub251bm11dGUnKTsKKyAgICAgICAgICAgICAgICBzaG91bGROb3RCZSgndmlkZW9UcmFjay5v
bmVuZGVkJywgJ3ZpZGVvVHJhY2syLm9uZW5kZWQnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRO
b3RCZSgndmlkZW9UcmFjay5vbm92ZXJjb25zdHJhaW5lZCcsICd2aWRlb1RyYWNrMi5vbm92ZXJj
b25zdHJhaW5lZCcpOworCisgICAgICAgICAgICAgICAgdmlkZW9UcmFjay5zdG9wKCk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkTm90QmUoJ3ZpZGVvVHJhY2sucmVhZHlTdGF0ZScsICd2aWRlb1Ry
YWNrMi5yZWFkeVN0YXRlJyk7CisKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAg
ICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2suY2xvbmUoKSIpOworICAg
ICAgICAgICAgICAgIGdldFVzZXJNZWRpYSgiYWxsb3ciLCB7dmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKyAgICAgICAgICAgIHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4K
KyAgICAgICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LWdldFNvdXJjZXMtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
ZDBhNDNiLi4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay1nZXRTb3VyY2VzLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDM0
ICswLDAgQEAKLVRlc3RzIE1lZGlhU3RyZWFtVHJhY2s6OmdldFNvdXJjZXMuCi0KLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KLQotCi0KLSoqKiBjYWxsaW5nIE1lZGlhU3RyZWFtVHJhY2suZ2V0
U291cmNlcygpICoqKgotUEFTUyBNZWRpYVN0cmVhbVRyYWNrLmdldFNvdXJjZXMoZ290U291cmNl
czEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgY2FsbGJhY2sgY2FsbGVkLgotc291
cmNlczFbMF0uc291cmNlSWQgPSAiMjM5YzI0YjEtMmIxNS0xMWUzLTgyMjQtMDgwMDIwMGM5YTY2
Igotc291cmNlczFbMF0ubGFiZWwgPSAiTW9jayBhdWRpbyBkZXZpY2UiCi1zb3VyY2VzMVswXS5r
aW5kID0gImF1ZGlvIgotc291cmNlczFbMV0uc291cmNlSWQgPSAiMjM5YzI0YjAtMmIxNS0xMWUz
LTgyMjQtMDgwMDIwMGM5YTY2Igotc291cmNlczFbMV0ubGFiZWwgPSAiTW9jayB2aWRlbyBkZXZp
Y2UiCi1zb3VyY2VzMVsxXS5raW5kID0gInZpZGVvIgotCi0qKiogY2FsbGluZyBuYXZpZ2F0b3Iu
d2Via2l0R2V0VXNlck1lZGlhKCkgKioqCi1QQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
Ci1QQVNTIGNhbGxiYWNrIGNhbGxlZC4KLQotKioqIGNhbGxpbmcgTWVkaWFTdHJlYW1UcmFjay5n
ZXRTb3VyY2VzKCkgKioqCi1QQVNTIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3Vy
Y2VzMik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBjYWxsYmFjayBjYWxsZWQuCi1Q
QVNTIHNvdXJjZXMyLmxlbmd0aCA9PSBzb3VyY2VzMS5sZW5ndGggaXMgdHJ1ZQotUEFTUyBzb3Vy
Y2VzMlswXS5zb3VyY2VJZCA9PT0gc291cmNlczFbMF0uc291cmNlSWQgaXMgdHJ1ZQotUEFTUyBz
b3VyY2VzMlswXS5sYWJlbCA9PT0gc291cmNlczFbMF0ubGFiZWwgaXMgdHJ1ZQotUEFTUyBzb3Vy
Y2VzMlswXS5raW5kID09PSBzb3VyY2VzMVswXS5raW5kIGlzIHRydWUKLVBBU1Mgc291cmNlczJb
MV0uc291cmNlSWQgPT09IHNvdXJjZXMxWzFdLnNvdXJjZUlkIGlzIHRydWUKLVBBU1Mgc291cmNl
czJbMV0ubGFiZWwgPT09IHNvdXJjZXMxWzFdLmxhYmVsIGlzIHRydWUKLVBBU1Mgc291cmNlczJb
MV0ua2luZCA9PT0gc291cmNlczFbMV0ua2luZCBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1nZXRTb3VyY2VzLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Y2QzYzguLjAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotICAgIDxoZWFkPgotICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLSAgICA8
L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLSAgICAgICAgPHNjcmlwdD4KLSAgICAgICAg
ICAgIGRlc2NyaXB0aW9uKCJUZXN0cyBNZWRpYVN0cmVhbVRyYWNrOjpnZXRTb3VyY2VzLiIpOwot
Ci0gICAgICAgICAgICB2YXIgc291cmNlczEgPSBudWxsOwotICAgICAgICAgICAgdmFyIHNvdXJj
ZXMyID0gbnVsbDsKLSAgICAgICAgICAgIHZhciB0aW1lciA9IG51bGw7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGZpbmlzaFRlc3QoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNs
ZWFyVGltZW91dCh0aW1lcik7Ci0gICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGVycm9yKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7
Ci0gICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoX2NvbnN0cmFpbnRzLCBfY2FsbGJhY2spCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcHJp
bWVUaW1lb3V0KCJUaW1lb3V0IHdhaXRpbmcgZm9yIHdlYmtpdEdldFVzZXJNZWRpYSgpIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0cmFpbnRzID0gX2NvbnN0cmFpbnRzOwotICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayA9IF9jYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgZGVi
dWcoIjxicj4qKiogY2FsbGluZyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKCkgKioqIik7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaywgZXJyb3IpIik7Ci0gICAgICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRH
ZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGZpbmlzaFRlc3QoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGZ1bmN0aW9uIGdvdFNvdXJjZXMyKHNvdXJjZXMpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgnY2FsbGJhY2sgY2FsbGVkLicpOwotICAgICAgICAgICAg
ICAgIHNvdXJjZXMyID0gc291cmNlczsKLSAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoJ3Nv
dXJjZXMyLmxlbmd0aCA9PSBzb3VyY2VzMS5sZW5ndGgnKTsKLSAgICAgICAgICAgICAgICBmb3Ig
KGkgPSAwOyBpIDwgc291cmNlczIubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2hvdWxkQmVUcnVlKCJzb3VyY2VzMlsiICsgaSArICJdLnNvdXJjZUlkID09PSBzb3VyY2VzMVsi
ICsgaSArICJdLnNvdXJjZUlkIik7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
c291cmNlczJbIiArIGkgKyAiXS5sYWJlbCA9PT0gc291cmNlczFbIiArIGkgKyAiXS5sYWJlbCIp
OwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZVRydWUoInNvdXJjZXMyWyIgKyBpICsgIl0u
a2luZCA9PT0gc291cmNlczFbIiArIGkgKyAiXS5raW5kIik7Ci0gICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgZmluaXNoVGVzdCgpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoJ2NhbGxiYWNrIGNhbGxlZC4nKTsKLSAgICAgICAgICAgICAgICBw
cmltZVRpbWVvdXQoIlRpbWVvdXQgd2FpdGluZyBmb3IgTWVkaWFTdHJlYW1UcmFjay5nZXRTb3Vy
Y2VzKCkiKTsKLQotICAgICAgICAgICAgICAgIGRlYnVnKCI8YnI+KioqIGNhbGxpbmcgTWVkaWFT
dHJlYW1UcmFjay5nZXRTb3VyY2VzKCkgKioqIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90
VGhyb3coJ01lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3VyY2VzMik7Jyk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFNvdXJjZXMxKHNvdXJjZXMpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgnY2FsbGJhY2sgY2FsbGVk
LicpOwotICAgICAgICAgICAgICAgIHNvdXJjZXMxID0gc291cmNlczsKLSAgICAgICAgICAgICAg
ICBmb3IgKGkgPSAwOyBpIDwgc291cmNlczEubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICAgICAgZGVidWcoInNvdXJjZXMxWyIgKyBpICsgIl0uc291cmNlSWQgPSBcIiIgKyBzb3VyY2Vz
MVtpXS5zb3VyY2VJZCArICJcIiIpOwotICAgICAgICAgICAgICAgICAgICBkZWJ1Zygic291cmNl
czFbIiArIGkgKyAiXS5sYWJlbCA9IFwiIiArIHNvdXJjZXMxW2ldLmxhYmVsICsgIlwiIik7Ci0g
ICAgICAgICAgICAgICAgICAgIGRlYnVnKCJzb3VyY2VzMVsiICsgaSArICJdLmtpbmQgPSBcIiIg
KyBzb3VyY2VzMVtpXS5raW5kICsgIlwiIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gcHJpbWVUaW1lb3V0KG1z
ZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpOwot
ICAgICAgICAgICAgICAgIHRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGVzdEZhaWxl
ZChtc2cpOyBmaW5pc2hKU1Rlc3QoKSB9LCA0MDAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcHJpbWVUaW1lb3V0KCJUaW1lb3V0IHdhaXRpbmcgZm9yIE1lZGlhU3RyZWFtVHJhY2su
Z2V0U291cmNlcygpIik7Ci0gICAgICAgICAgICBkZWJ1ZygiPGJyPioqKiBjYWxsaW5nIE1lZGlh
U3RyZWFtVHJhY2suZ2V0U291cmNlcygpICoqKiIpOwotICAgICAgICAgICAgc2hvdWxkTm90VGhy
b3coJ01lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNlcyhnb3RTb3VyY2VzMSk7Jyk7Ci0KLSAgICAg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLSAgICAgICAgICAgIHdpbmRvdy5z
dWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwotICAgICAgICA8L3NjcmlwdD4KLSAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotICAg
IDwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay1raW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1raW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM2YjQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWtpbmQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgTWVkaWFTdHJlYW1UcmFjayBraW5kCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG1lZGlhU3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKK1BBU1MgbWVkaWFTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgMQorUEFTUyBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLmtpbmQgaXMgImF1ZGlv
IgorUEFTUyBtZWRpYVN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdLmtpbmQgaXMgInZpZGVvIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1raW5k
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2sta2lu
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4OTYwNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2sta2luZC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgdmFyIG1lZGlhU3RyZWFtOworCisgICAg
ICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKSB7CisgICAgICAgICAgICAgICAgbWVk
aWFTdHJlYW0gPSBzdHJlYW07CisKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnbWVkaWFTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCdtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisKKyAgICAg
ICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ21lZGlhU3RyZWFtLmdldEF1ZGlvVHJh
Y2tzKClbMF0ua2luZCcsICdhdWRpbycpOworICAgICAgICAgICAgICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygnbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXS5raW5kJywgJ3ZpZGVvJyk7
CisKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKSB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24o
IlRlc3QgTWVkaWFTdHJlYW1UcmFjayBraW5kIik7CisgICAgICAgICAgICAgICAgZ2V0VXNlck1l
ZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAg
ICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stc3RvcC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stc3RvcC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdmMzZlYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1z
dG9wLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACitUZXN0IE1lZGlhU3RyZWFtVHJhY2sg
c3RvcCgpCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisqKiogZXh0cmFjdCB0cmFj
aworUEFTUyB0cmFjay5yZWFkeVN0YXRlIGlzICJsaXZlIgorKioqIHN0b3JlIHRyYWNrIGF0dHJp
YnV0ZXMgdGhhdCBzaG91bGQgYmUgcHJlc2VydmVkCitraW5kID0gdHJhY2sua2luZAoraWQgPSB0
cmFjay5pZAorbGFiZWwgPSB0cmFjay5sYWJlbAorZW5hYmxlZCA9IHRyYWNrLmVuYWJsZWQKK3Jl
YWRvbmx5ID0gdHJhY2sucmVhZG9ubHkKK3JlbW90ZSA9IHRyYWNrLnJlbW90ZQorbXV0ZWQgPSB0
cmFjay5tdXRlZAorKioqIHN0b3AgdHJhY2sKK1BBU1MgdHJhY2sucmVhZHlTdGF0ZSBpcyAiZW5k
ZWQiCisqKiogY29tcGFyZSBhZ2FpbnN0IHN0b3JlZCBhdHRyaWJ1dGUgdmFsdWVzCitQQVNTIHRy
YWNrLmtpbmQgaXMga2luZAorUEFTUyB0cmFjay5pZCBpcyBpZAorUEFTUyB0cmFjay5sYWJlbCBp
cyBsYWJlbAorUEFTUyB0cmFjay5lbmFibGVkIGlzIGVuYWJsZWQKK1BBU1MgdHJhY2sucmVhZG9u
bHkgaXMgcmVhZG9ubHkKK1BBU1MgdHJhY2sucmVtb3RlIGlzIHJlbW90ZQorUEFTUyB0cmFjay5t
dXRlZCBpcyBtdXRlZAorKioqIHRvZ2dsZSBlbmFibGUgKHNob3VsZCBub3cgdGhyb3cpCitQQVNT
IHRyYWNrLmVuYWJsZWQgPSAhdHJhY2suZW5hYmxlZCBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgdHJhY2suZW5hYmxlZCBpcyBub3QgZW5hYmxlZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1zdG9wLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stc3RvcC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNzUwZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stc3RvcC5odG1sCkBAIC0wLDAg
KzEsNjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3Vy
Y2VzL2dldFVzZXJNZWRpYS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIHRyYWNrOworICAgICAgICAgICAgdmFyIGtpbmQ7CisgICAgICAgICAg
ICB2YXIgaWQ7CisgICAgICAgICAgICB2YXIgbGFiZWw7CisgICAgICAgICAgICB2YXIgZW5hYmxl
ZDsKKyAgICAgICAgICAgIHZhciByZWFkb25seTsKKyAgICAgICAgICAgIHZhciByZW1vdGU7Cisg
ICAgICAgICAgICB2YXIgbXV0ZWQ7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShz
dHJlYW0pIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiKioqIGV4dHJhY3QgdHJhY2siKTsKKyAg
ICAgICAgICAgICAgICB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5yZWFkeVN0YXRlJywgJyJsaXZlIicpOworCisgICAg
ICAgICAgICAgICAgZGVidWcoIioqKiBzdG9yZSB0cmFjayBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxk
IGJlIHByZXNlcnZlZCIpOworICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coJ2tpbmQgPSB0cmFj
ay5raW5kJyk7CisgICAgICAgICAgICAgICAgZXZhbEFuZExvZygnaWQgPSB0cmFjay5pZCcpOwor
ICAgICAgICAgICAgICAgIGV2YWxBbmRMb2coJ2xhYmVsID0gdHJhY2subGFiZWwnKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCdlbmFibGVkID0gdHJhY2suZW5hYmxlZCcpOworICAgICAg
ICAgICAgICAgIGV2YWxBbmRMb2coJ3JlYWRvbmx5ID0gdHJhY2sucmVhZG9ubHknKTsKKyAgICAg
ICAgICAgICAgICBldmFsQW5kTG9nKCdyZW1vdGUgPSB0cmFjay5yZW1vdGUnKTsKKyAgICAgICAg
ICAgICAgICBldmFsQW5kTG9nKCdtdXRlZCA9IHRyYWNrLm11dGVkJyk7CisKKyAgICAgICAgICAg
ICAgICBkZWJ1ZygiKioqIHN0b3AgdHJhY2siKTsKKyAgICAgICAgICAgICAgICB0cmFjay5zdG9w
KCk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLnJlYWR5U3RhdGUnLCAnImVuZGVk
IicpOworCisgICAgICAgICAgICAgICAgZGVidWcoIioqKiBjb21wYXJlIGFnYWluc3Qgc3RvcmVk
IGF0dHJpYnV0ZSB2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgndHJhY2sua2lu
ZCcsICdraW5kJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmlkJywgJ2lkJyk7
CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmxhYmVsJywgJ2xhYmVsJyk7CisgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ3RyYWNrLmVuYWJsZWQnLCAnZW5hYmxlZCcpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5yZWFkb25seScsICdyZWFkb25seScpOworICAgICAg
ICAgICAgICAgIHNob3VsZEJlKCd0cmFjay5yZW1vdGUnLCAncmVtb3RlJyk7CisgICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3RyYWNrLm11dGVkJywgJ211dGVkJyk7CisKKyAgICAgICAgICAgICAg
ICBkZWJ1ZygiKioqIHRvZ2dsZSBlbmFibGUgKHNob3VsZCBub3cgdGhyb3cpIik7CisgICAgICAg
ICAgICAgICAgc2hvdWxkTm90VGhyb3coJ3RyYWNrLmVuYWJsZWQgPSAhdHJhY2suZW5hYmxlZCcp
OworICAgICAgICAgICAgICAgIHNob3VsZE5vdEJlKCd0cmFjay5lbmFibGVkJywgJ2VuYWJsZWQn
KTsKKworICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpIHsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlv
bigiVGVzdCBNZWRpYVN0cmVhbVRyYWNrIHN0b3AoKSIpOworICAgICAgICAgICAgICAgIGdldFVz
ZXJNZWRpYSgiYWxsb3ciLCB7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgICAg
IHdpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+CisgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDhhNTk5NGEuLmJiZmI0YTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tFdmVudC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw2IEBA
IFRoaXMgdGVzdHMgdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgTWVkaWFTdHJlYW1UcmFja0V2ZW50
IERPTSBjbGFzcy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIGdldFVzZXJN
ZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiAKICoqKiBnZXRVc2VyTWVkaWEoKSBzdWNjZWVkZWQsIHRlc3Qgc3RyZWFtICoq
KgogUEFTUyBtZWRpYVN0cmVhbSBpcyBub24tbnVsbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC1jb25z
dHJ1Y3Rvci5odG1sCmluZGV4IDA2Nzc5NWMuLjU2MWM0NmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LWNvbnN0cnVjdG9yLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZl
bnQtY29uc3RydWN0b3IuaHRtbApAQCAtMiw2ICsyLDcgQEAKIDxodG1sPgogICAgIDxoZWFkPgog
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2dldFVzZXJNZWRpYS1oZWxw
ZXIuanMiPjwvc2NyaXB0PgogICAgIDwvaGVhZD4KICAgICAgICAgPHNjcmlwdD4KIApAQCAtMTks
MjIgKzIwLDYgQEAKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gZXJyb3IoKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKLSAgICAg
ICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZ1bmN0
aW9uIGdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2spCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLndlYmtp
dEdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9yKTsKLSAgICAgICAgICAg
ICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtp
dEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgICAgICAgICAg
ICAgZW5kVGVzdCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQogICAgICAg
ICAgICAgZnVuY3Rpb24gdGVzdE1lZGlhU3RyZWFtVHJhY2tFdmVudCgpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgZGVidWcoIjxicj4qKiogTm8gaW5pdGlhbGl6ZXIgcGFzc2VkICoq
KiIpOwpAQCAtOTIsNyArNzcsNyBAQAogICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgcHJpbWVUaW1lb3V0KCJUaW1lb3V0IHdhaXRpbmcg
Zm9yIGdldFVzZXJNZWRpYSgpIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkTm90VGhyb3coJ2dl
dFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSknKTsKKyAgICAg
ICAgICAgICAgICAgZ2V0VXNlck1lZGlhKCJhbGxvdyIsIHthdWRpbzp0cnVlLCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcmVzb3VyY2VzL2dldFVzZXJNZWRp
YS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Jlc291cmNlcy9nZXRV
c2VyTWVkaWEtaGVscGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYy
MjVhYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Jl
c291cmNlcy9nZXRVc2VyTWVkaWEtaGVscGVyLmpzCkBAIC0wLDAgKzEsMjIgQEAKK2Z1bmN0aW9u
IGdldFVzZXJNZWRpYShwZXJtaXNzaW9uLCBjb25zdHJhaW50cywgc3VjY2Vzc0NhbGxiYWNrLCBl
cnJvckNhbGxiYWNrKSB7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24ocGVybWlzc2lvbiA9PSAiYWxsb3ciKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gbm90IGJlIHJ1biB3aXRob3V0
IHRoZSB0ZXN0UnVubmVyIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAg
IG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzKS50aGVuKHN1
Y2Nlc3NDYWxsYmFjaywgcmVqZWN0KS5jYXRjaChkZWZhdWx0UmVqZWN0T3JDYXRjaCk7CisKKyAg
ICBmdW5jdGlvbiByZWplY3QoZSkgeworICAgICAgICBpZiAoZXJyb3JDYWxsYmFjaykKKyAgICAg
ICAgICAgIGVycm9yQ2FsbGJhY2soZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlZmF1
bHRSZWplY3RPckNhdGNoKGUpOworICAgIH0KK30KKworZnVuY3Rpb24gZGVmYXVsdFJlamVjdE9y
Q2F0Y2goZSkgeworICAgIHRlc3RGYWlsZWQoJ2dldFVzZXJNZWRpYSBmYWlsZWQ6JyArIGUpOwor
ICAgIGZpbmlzaEpTVGVzdCgpOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAwZjRmNmRhLi5jODAzYWJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzE1LDE2ICszMTUsNyBAQCB3ZWJraXQub3JnL2IvODUy
MTEgaWV0ZXN0Y2VudGVyL2NzczMvZmxleGJveC9mbGV4Ym94LWFsaWduLXN0cmV0Y2gtMDAxLmh0
bSBbIEltYQogd2Via2l0Lm9yZy9iLzg1MjEyIGlldGVzdGNlbnRlci9jc3MzL2ZsZXhib3gvZmxl
eGJveC1sYXlvdXQtMDAyLmh0bSBbIEltYWdlT25seUZhaWx1cmUgXQogCiAjIE1lZGlhc3RyZWFt
IGltcGxlbWVudGF0aW9uIGlzIG5vdCBjb21wbGV0ZSB5ZXQuCi13ZWJraXQub3JnL2IvNzkyMDMg
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS1hZGQtZW5kZWQtdHJhY2tzLmh0bWwgWyBTa2lw
IF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWFkZC1y
ZW1vdmUtdHJhY2tzLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLWFkZC10cmFja3MtdG8taW5hY3RpdmUtc3RyZWFtLmh0bWwgWyBT
a2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLWNs
b25lLmh0bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbCBbIFNraXAgXQotd2Via2l0Lm9yZy9iLzc5MjAzIGZh
c3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0tY29uc3RydWN0LXdpdGgtZW5kZWQtdHJhY2tzLmh0
bWwgWyBTa2lwIF0KLXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLWdldFRyYWNrcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS1NZWRpYUVsZW1lbnQtc3JjT2JqZWN0Lmh0bWwgWyBTa2lwIF0K
LXdlYmtpdC5vcmcvYi83OTIwMyBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVu
dC1jb25zdHJ1Y3Rvci5odG1sIFsgU2tpcCBdCi13ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWdldFNvdXJjZXMuaHRtbCBbIFNraXAgXQogd2Via2l0
Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sIFsgU2tp
cCBdCiB3ZWJraXQub3JnL2IvNzkyMDMgZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
LW9uZW5kZWQuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzc5MjAzIGZhc3QvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmh0bWwgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZjE5MTU1Li4w
YWU0Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTU5IEBACisyMDE1LTA2LTI4ICBBZGFtIEJl
cmdrdmlzdCAgPGFkYW0uYmVyZ2t2aXN0QGVyaWNzc29uLmNvbT4KKworICAgICAgICBXZWJSVEM6
IFVwZGF0ZSB0aGUgTWVkaWFTdHJlYW0gQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYzMTMKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgVXBkYXRlIHRoZSBNZWRpYVN0cmVhbSBBUEkgKE1lZGlhU3RyZWFt
LCBNZWRpYVN0cmVhbVRyYWNrIGFuZAorICAgICAgICBSZWFsdGltZU1lZGlhU291cmNlKSB0byBt
YXRjaCB0aGUgTWVkaWEgQ2FwdHVyZSBhbmQgU3RyZWFtCisgICAgICAgIHNwZWNpZmljYXRpb24g
WzFdLiBOb3RhYmxlIGNoYW5nZXM6CisKKyAgICAgICAgVXBkYXRlZCBldmVudCBoYW5kbGluZyB0
byBzeW5jaHJvbm91c2x5IHVwZGF0ZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHN0YXRlL2F0dHJp
YnV0ZXMgYXMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkLgorCisgICAgICAgIFJlbW92ZWQgJ25ldycg
c3RhdGUgZnJvbSBNZWRpYVN0cmVhbVRyYWNrLiBBIHRyYWNrIGlzIGVpdGhlciAnbGl2ZScgb3IK
KyAgICAgICAgJ2VuZGVkJy4gQXMgYSBjb25zZXF1ZW5jZSAnc3RhcnRlZCcgZXZlbnQgaXMgYWxz
byByZW1vdmVkLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2sgYWx3YXlzIGhhcyBhIHNvdXJj
ZSAoZGlzY29ubmVjdGVkIHNvdXJjZSBjb25jZXB0IHdhcworICAgICAgICByZW1vdmVkIGZyb20g
dGhlIHNwZWMpLiBUaGVyZWZvcmUsIG1vcmUgc3RhdGUgY2FuIGJlIGtlcHQgYXQgdGhlIHNvdXJj
ZQorICAgICAgICB3aXRob3V0IGdvaW5nIGF3YXkuCisKKyAgICAgICAgQ2FsY3VsYXRlIE1lZGlh
U3RyZWFtLmFjdGl2ZSBpbnRlcm5hbGx5LCBmcm9tIHRoZSB0cmFjayBzZXQsIGluc3RlYWQgb2YK
KyAgICAgICAgc2V0dGluZyBpdCBleHRlcm5hbGx5LgorCisgICAgICAgIFVwZGF0ZWQgUmVhbHRp
bWVNZWRpYVNvdXJjZSBPYnNlcnZlciBpbnRlcmZhY2UuCisKKyAgICAgICAgUmVwbGFjZWQgTWVk
aWFTdHJlYW0ncyBzZXBhcmF0ZSBhdWRpbyBhbmQgdmlkZW8gdHJhY2sgbGlzdHMgd2l0aCBhCisg
ICAgICAgIHNpbmdsZSB0cmFjayBzZXQgKG1vcmUgYWxpZ25lZCB3aXRoIHNwZWMpLgorCisgICAg
ICAgIFVwZGF0ZWQgTWVkaWFTdHJlYW0gY29uc3RydWN0b3IgdG8gYWRvcHQgaW5zdGVhZCBvZiBj
bG9uZSB0cmFjaworICAgICAgICBhcmd1bWVudHMgKG9yIHRyYWNrcyBmcm9tIE1lZGlhU3RyZWFt
IGFyZ3VtZW50KS4KKworICAgICAgICBSZW1vdmVkIE1lZGlhU3RyZWFtVHJhY2suZ2V0U291cmNl
cygpIGFuZCBjb3JyZXNwb25kaW5nIHRlc3QgKHJlbW92ZWQKKyAgICAgICAgZnJvbSBzcGVjKS4K
KworICAgICAgICBUZXN0IHN0YXR1czogMyBhZGRlZCwgOCBleGlzdGluZyBlbmFibGVkIChzb21l
IHVwZGF0ZWQpIGFuZCAxIHJlbW92ZWQuCisKKyAgICAgICAgWzFdIGh0dHA6Ly93M2MuZ2l0aHVi
LmlvL21lZGlhY2FwdHVyZS1tYWluL2FyY2hpdmVzLzIwMTUwNTIzL2dldHVzZXJtZWRpYS5odG1s
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1jbG9u
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2st
a2luZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2stc3RvcC5odG1sCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6YWRkVHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW06OmdldEF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjpnZXRWaWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6
Z2V0VHJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJv
eWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjp0cmFja0RpZEVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6YWN0aXZlU3RhdHVzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6ZGlkQWRkVHJhY2tUb1ByaXZhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06OmRpZFJlbW92ZVRyYWNrRnJvbVByaXZhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsQWRkVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06OmludGVybmFsUmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW06OnNjaGVkdWxlQWN0aXZlU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtOjp0cmFja1ZlY3RvckZvclR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6cmVnaXN0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW06OmFkZE9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjpyZW1vdmVPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVh
bVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6On5NZWRpYVN0cmVh
bVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmtpbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6bGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzZXRF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6Om11dGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnJlYWRvbmx5KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnJlbW90ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6OmVuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNsb25l
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnN0YXRlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpnZXRDYXBhYmlsaXRpZXMpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjp0cmFja0VuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtVHJhY2s6OnRyYWNrTXV0ZWRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtVHJhY2s6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6Z2V0Q29uc3RyYWludHMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6YWRkT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW1UcmFjazo6cmVtb3ZlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1UcmFjazo6Y29uZmlndXJlVHJhY2tSZW5kZXJpbmcpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6YWN0aXZlRE9NT2JqZWN0TmFtZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjYW5TdXNwZW5k
Rm9yUGFnZUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2suaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmRpZFJlbW92
ZVJlbW90ZVN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6
OmRpZENyZWF0ZVN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Qcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6TWVkaWFTdHJl
YW1Qcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dHJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6dXBkYXRlQWN0aXZlU3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Qcml2YXRlOjphZGRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVByaXZhdGU6OnJlbW92ZVRyYWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtUHJpdmF0ZTo6YWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6fk1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlOjpsYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6
ZW5kVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNs
b25lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjp0eXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjphcHBseUNvbnN0cmFp
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VT
dG9wcGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3Vy
Y2VNdXRlZENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OnByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6Om11dGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpyZWFkb25seSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVtb3RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjb25zdHJhaW50cyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c3RhdGVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjYXBhYmls
aXRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmVu
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjplbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzZXRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0
aW1lTWVkaWFTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6
cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0TXV0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVhZG9ubHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcCk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpyZXF1ZXN0U3RvcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVPYnNlcnZlcik6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcHBlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjppZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjptdXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpzZXRSZWFkb25seSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9SZWFsdGltZU1lZGlhU291cmNlQ2Vu
dGVyT3dyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJP
d3I6OmNyZWF0ZU1lZGlhU3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbSk6IERlbGV0ZWQu
CisKIDIwMTUtMDYtMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIFBsdWdpbk1haW5UaHJlYWRTY2hlZHVsZXIgdG8gV2ViS2l0L3dpbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApp
bmRleCBhZmI1MjNhLi43YWFjNWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKQEAgLTQxLDY4ICs0MSw1OSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQogewotICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRl
KGNvbnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8UmVhbHRp
bWVNZWRpYVNvdXJjZT4+KCksIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+KCkp
KTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbVBy
aXZhdGU6OmNyZWF0ZSgpKTsKIH0KIAotUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IHN0cmVhbSkKK1JlZjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbSogc3RyZWFtKQogewogICAgIEFT
U0VSVChzdHJlYW0pOwogCi0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZT4+IGF1ZGlvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+PiB2aWRlb1RyYWNrczsKLQotICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPm1fYXVk
aW9UcmFja3MpCi0gICAgICAgIGF1ZGlvVHJhY2tzLmFwcGVuZCgmdHJhY2stPnByaXZhdGVUcmFj
aygpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBzdHJl
YW0tPmdldFRyYWNrcygpKSk7Cit9CiAKLSAgICBmb3IgKGF1dG8mIHRyYWNrIDogc3RyZWFtLT5t
X3ZpZGVvVHJhY2tzKQotICAgICAgICB2aWRlb1RyYWNrcy5hcHBlbmQoJnRyYWNrLT5wcml2YXRl
VHJhY2soKSk7CitSZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPj4mIHRyYWNrcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbShj
b250ZXh0LCB0cmFja3MpKTsKK30KIAotICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNv
bnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNr
cykpOworUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYgc3RyZWFtUHJp
dmF0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYVN0cmVhbShjb250ZXh0LCBX
VEY6Om1vdmUoc3RyZWFtUHJpdmF0ZSkpKTsKIH0KIAotUmVmPE1lZGlhU3RyZWFtPiBNZWRpYVN0
cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiB0cmFja3MpCitNZWRpYVN0cmVhbTo6TWVkaWFT
dHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPj4mIHRyYWNrcykKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyKCZjb250ZXh0KQorICAgICwgbV9hY3Rpdml0eUV2ZW50VGltZXIoKnRoaXMsICZNZWRp
YVN0cmVhbTo6YWN0aXZpdHlFdmVudFRpbWVyRmlyZWQpCiB7Ci0gICAgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IGF1ZGlvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiB2aWRlb1RyYWNrczsKKyAgICAvLyBUaGlzIGNvbnN0
cnVjdG9yIHByZXNlcnZlcyBNZWRpYVN0cmVhbVRyYWNrIGluc3RhbmNlcyBhbmQgbXVzdCBiZSB1
c2VkIGJ5IGNhbGxzIG9yaWdpbmF0aW5nCisgICAgLy8gZnJvbSB0aGUgSmF2YVNjcmlwdCBNZWRp
YVN0cmVhbSBjb25zdHJ1Y3Rvci4KKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlPj4gdHJhY2tQcml2YXRlczsKKyAgICB0cmFja1ByaXZhdGVzLnJlc2VydmVDYXBhY2l0
eSh0cmFja3Muc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byYgdHJhY2sgOiB0cmFja3MpIHsKLSAg
ICAgICAgaWYgKHRyYWNrLT5raW5kKCkgPT0gImF1ZGlvIikKLSAgICAgICAgICAgIGF1ZGlvVHJh
Y2tzLmFwcGVuZCgmdHJhY2stPnByaXZhdGVUcmFjaygpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdmlkZW9UcmFja3MuYXBwZW5kKCZ0cmFjay0+cHJpdmF0ZVRyYWNrKCkpOworICAgICAg
ICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CisgICAgICAgIG1fdHJhY2tTZXQuYWRkKHRyYWNr
LT5pZCgpLCB0cmFjayk7CisgICAgICAgIHRyYWNrUHJpdmF0ZXMuYXBwZW5kKCZ0cmFjay0+cHJp
dmF0ZVRyYWNrKCkpOwogICAgIH0KIAotICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNv
bnRleHQsIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNr
cykpOwotfQotCi1SZWY8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IHBy
aXZhdGVTdHJlYW0pCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW0oY29u
dGV4dCwgcHJpdmF0ZVN0cmVhbSkpOworICAgIG1fcHJpdmF0ZSA9IE1lZGlhU3RyZWFtUHJpdmF0
ZTo6Y3JlYXRlKHRyYWNrUHJpdmF0ZXMpOworICAgIG1faXNBY3RpdmUgPSBtX3ByaXZhdGUtPmFj
dGl2ZSgpOworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwogfQogCi1NZWRpYVN0cmVh
bTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVByaXZhdGU+IHByaXZhdGVTdHJlYW0pCitNZWRpYVN0cmVhbTo6TWVkaWFT
dHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPE1lZGlhU3RyZWFt
UHJpdmF0ZT4mJiBzdHJlYW1Qcml2YXRlKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoJmNvbnRleHQpCi0gICAgLCBtX3ByaXZhdGUocHJpdmF0ZVN0cmVhbSkKLSAgICAsIG1fc2No
ZWR1bGVkRXZlbnRUaW1lcigqdGhpcywgJk1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVy
RmlyZWQpCisgICAgLCBtX3ByaXZhdGUoc3RyZWFtUHJpdmF0ZSkKKyAgICAsIG1faXNBY3RpdmUo
bV9wcml2YXRlLT5hY3RpdmUoKSkKKyAgICAsIG1fYWN0aXZpdHlFdmVudFRpbWVyKCp0aGlzLCAm
TWVkaWFTdHJlYW06OmFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKQogewogICAgIEFTU0VSVChtX3By
aXZhdGUpOwogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwogCi0gICAgUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHRyYWNrOwotICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0g
bV9wcml2YXRlLT5udW1iZXJPZkF1ZGlvVHJhY2tzKCk7Ci0gICAgbV9hdWRpb1RyYWNrcy5yZXNl
cnZlQ2FwYWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBudW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspIHsKLSAgICAgICAgdHJhY2sgPSBNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgKm1fcHJpdmF0ZS0+YXVkaW9UcmFja3MoaSkpOwor
ICAgIGZvciAoYXV0byYgdHJhY2tQcml2YXRlIDogbV9wcml2YXRlLT50cmFja3MoKSkgeworICAg
ICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpj
cmVhdGUoY29udGV4dCwgKnRyYWNrUHJpdmF0ZSk7CiAgICAgICAgIHRyYWNrLT5hZGRPYnNlcnZl
cih0aGlzKTsKLSAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBlbmQodHJhY2sucmVsZWFzZSgpKTsK
LSAgICB9Ci0KLSAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1RyYWNrcyA9IG1fcHJpdmF0ZS0+bnVt
YmVyT2ZWaWRlb1RyYWNrcygpOwotICAgIG1fdmlkZW9UcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG51
bWJlck9mVmlkZW9UcmFja3MpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZW
aWRlb1RyYWNrczsgaSsrKSB7Ci0gICAgICAgIHRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6Y3Jl
YXRlKGNvbnRleHQsICptX3ByaXZhdGUtPnZpZGVvVHJhY2tzKGkpKTsKLSAgICAgICAgdHJhY2st
PmFkZE9ic2VydmVyKHRoaXMpOwotICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZCh0cmFjay5y
ZWxlYXNlKCkpOworICAgICAgICBtX3RyYWNrU2V0LmFkZCh0cmFjay0+aWQoKSwgV1RGOjptb3Zl
KHRyYWNrKSk7CiAgICAgfQogfQogCkBAIC0xMTEsMjU4ICsxMDIsMTQ0IEBAIE1lZGlhU3RyZWFt
Ojp+TWVkaWFTdHJlYW0oKQogICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQog
Ci1ib29sIE1lZGlhU3RyZWFtOjphY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZh
dGUtPmFjdGl2ZSgpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtOjpzZXRBY3RpdmUoYm9vbCBpc0Fj
dGl2ZSkKK1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNsb25lKCkKIHsKLSAgICBp
ZiAoYWN0aXZlKCkgPT0gaXNBY3RpdmUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX3ByaXZhdGUt
PnNldEFjdGl2ZShpc0FjdGl2ZSk7Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlh
U3RyZWFtOjpjbG9uZSgpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4g
dHJhY2tTZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gY2xvbmVkVHJh
Y2tzOworICAgIGNsb25lZFRyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobV90cmFja1NldC5zaXplKCkp
OwogCi0gICAgY2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKHRyYWNrU2V0LCBnZXRBdWRpb1Ry
YWNrcygpKTsKLSAgICBjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0b3IodHJhY2tTZXQsIGdldFZp
ZGVvVHJhY2tzKCkpOwotICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHRyYWNrU2V0KTsKLX0KKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogbV90
cmFja1NldC52YWx1ZXMoKSkKKyAgICAgICAgY2xvbmVkVHJhY2tzLmFwcGVuZCh0cmFjay0+Y2xv
bmUoKSk7CiAKLXZvaWQgTWVkaWFTdHJlYW06OmNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3RvcihW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYgZGVzdGluYXRpb24sIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiBzb3VyY2UpCi17Ci0gICAgZm9yIChhdXRvJiB0
cmFjayA6IHNvdXJjZSkKLSAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKHRyYWNrLT5jbG9uZSgp
KTsKKyAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBjbG9uZWRUcmFja3MpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3Zv
aWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
KQogewotICAgIGlmICghcHJwVHJhY2spIHsKLSAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VS
UjsKKyAgICBpZiAoIWludGVybmFsQWRkVHJhY2soV1RGOjptb3ZlKHRyYWNrKSwgU3RyZWFtTW9k
aWZpZXI6OkRvbUFQSSkpCiAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYWRkVHJh
Y2socHJwVHJhY2spKSB7Ci0gICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVy
cykKLSAgICAgICAgICAgIG9ic2VydmVyLT5kaWRBZGRPclJlbW92ZVRyYWNrKCk7Ci0gICAgfQot
fQotCi1ib29sIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+IHBycFRyYWNrKQotewotICAgIC8vIFRoaXMgaXMgYSBjb21tb24gcGFydCB1c2VkIGJ5IGFk
ZFRyYWNrIGNhbGxlZCBieSBKYXZhU2NyaXB0Ci0gICAgLy8gYW5kIGFkZFJlbW90ZVRyYWNrIGFu
ZCBvbmx5IGFkZFJlbW90ZVRyYWNrIG11c3QgZmlyZSBhZGR0cmFjayBldmVudAotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwotICAgIGlmIChnZXRUcmFja0J5
SWQodHJhY2stPmlkKCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JUeXBlKHRyYWNr
LT5zb3VyY2UoKS0+dHlwZSgpKTsKIAotICAgIHRyYWNrcy0+YXBwZW5kKHRyYWNrKTsKLSAgICB0
cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7Ci0gICAgbV9wcml2YXRlLT5hZGRUcmFjaygmdHJhY2st
PnByaXZhdGVUcmFjaygpKTsKLSAgICBzZXRBY3RpdmUodHJ1ZSk7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZl
ci0+ZGlkQWRkT3JSZW1vdmVUcmFjaygpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVU
cmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2Rl
JiBlYykKK3ZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sqIHRy
YWNrKQogewotICAgIGlmICghYWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcHJwVHJhY2spIHsKLSAg
ICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICBpZiAoIWludGVybmFsUmVtb3ZlVHJh
Y2sodHJhY2ssIFN0cmVhbU1vZGlmaWVyOjpEb21BUEkpKQogICAgICAgICByZXR1cm47Ci0gICAg
fQogCi0gICAgaWYgKHJlbW92ZVRyYWNrKHBycFRyYWNrKSkgewotICAgICAgICBmb3IgKGF1dG8m
IG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgICAgICBvYnNlcnZlci0+ZGlkQWRkT3JS
ZW1vdmVUcmFjaygpOwotICAgIH0KKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZl
cnMpCisgICAgICAgIG9ic2VydmVyLT5kaWRBZGRPclJlbW92ZVRyYWNrKCk7CiB9CiAKLWJvb2wg
TWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJw
VHJhY2spCitNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmlu
ZyBpZCkKIHsKLSAgICAvLyBUaGlzIGlzIGEgY29tbW9uIHBhcnQgdXNlZCBieSByZW1vdmVUcmFj
ayBjYWxsZWQgYnkgSmF2YVNjcmlwdAotICAgIC8vIGFuZCByZW1vdmVSZW1vdGVUcmFjayBhbmQg
b25seSByZW1vdmVSZW1vdGVUcmFjayBtdXN0IGZpcmUgcmVtb3ZldHJhY2sgZXZlbnQKLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKLSAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JUeXBlKHRyYWNr
LT5zb3VyY2UoKS0+dHlwZSgpKTsKLQotICAgIHNpemVfdCBwb3MgPSB0cmFja3MtPmZpbmQodHJh
Y2spOwotICAgIGlmIChwb3MgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHRyYWNrcy0+cmVtb3ZlKHBvcyk7Ci0gICAgbV9wcml2YXRlLT5yZW1vdmVUcmFjaygmdHJh
Y2stPnByaXZhdGVUcmFjaygpKTsKLSAgICAvLyBUaGVyZSBjYW4gYmUgb3RoZXIgdHJhY2tzIHVz
aW5nIHRoZSBzYW1lIHNvdXJjZSBpbiB0aGUgc2FtZSBNZWRpYVN0cmVhbSwKLSAgICAvLyBsaWtl
IHdoZW4gTWVkaWFTdHJlYW1UcmFjazo6Y2xvbmUoKSBpcyBjYWxsZWQsIGZvciBpbnN0YW5jZS4K
LSAgICAvLyBTcGVjIHNheXMgdGhhdCBhIHNvdXJjZSBjYW4gYmUgc2hhcmVkLCBzbyB3ZSBtdXN0
IGFzc3VyZSB0aGF0IHRoZXJlIGlzIG5vCi0gICAgLy8gb3RoZXIgdHJhY2sgdXNpbmcgaXQuCi0g
ICAgaWYgKCFoYXZlVHJhY2tXaXRoU291cmNlKHRyYWNrLT5zb3VyY2UoKSkpCi0gICAgICAgIG1f
cHJpdmF0ZS0+cmVtb3ZlU291cmNlKHRyYWNrLT5zb3VyY2UoKSk7Ci0KLSAgICB0cmFjay0+cmVt
b3ZlT2JzZXJ2ZXIodGhpcyk7Ci0gICAgaWYgKCFtX2F1ZGlvVHJhY2tzLnNpemUoKSAmJiAhbV92
aWRlb1RyYWNrcy5zaXplKCkpCi0gICAgICAgIHNldEFjdGl2ZShmYWxzZSk7CisgICAgYXV0byBp
dCA9IG1fdHJhY2tTZXQuZmluZChpZCk7CisgICAgaWYgKGl0ICE9IG1fdHJhY2tTZXQuZW5kKCkp
CisgICAgICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBNZWRpYVN0cmVhbTo6aGF2ZVRyYWNrV2l0aFNv
dXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSkKK1ZlY3RvcjxSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtOjpnZXRBdWRpb1RyYWNrcygpIGNvbnN0
CiB7Ci0gICAgaWYgKHNvdXJjZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlv
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgdHJhY2sgOiBtX2F1ZGlvVHJhY2tzKSB7Ci0gICAgICAg
ICAgICBpZiAodHJhY2stPnNvdXJjZSgpID09IHNvdXJjZS5nZXQoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdmlkZW9UcmFja3MpIHsKLSAgICAgICAgaWYgKHRy
YWNrLT5zb3VyY2UoKSA9PSBzb3VyY2UuZ2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRyYWNrVmVjdG9yRm9yVHlw
ZShSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbyk7CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2sqIE1l
ZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQoU3RyaW5nIGlkKQorVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPj4gTWVkaWFTdHJlYW06OmdldFZpZGVvVHJhY2tzKCkgY29uc3QKIHsKLSAgICBm
b3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykgewotICAgICAgICBpZiAodHJhY2stPmlk
KCkgPT0gaWQpCi0gICAgICAgICAgICByZXR1cm4gdHJhY2suZ2V0KCk7Ci0gICAgfQotCi0gICAg
Zm9yIChhdXRvJiB0cmFjayA6ICBtX3ZpZGVvVHJhY2tzKSB7Ci0gICAgICAgIGlmICh0cmFjay0+
aWQoKSA9PSBpZCkKLSAgICAgICAgICAgIHJldHVybiB0cmFjay5nZXQoKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdHJhY2tWZWN0b3JGb3JUeXBlKFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlZpZGVvKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
Pj4gTWVkaWFTdHJlYW06OmdldFRyYWNrcygpCitWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+PiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+PiB0cmFja3M7Ci0gICAgZm9yIChhdXRvJiB0cmFjayA6IG1fYXVk
aW9UcmFja3MpCi0gICAgICAgIHRyYWNrcy5hcHBlbmQodHJhY2suZ2V0KCkpOwotICAgIGZvciAo
YXV0byYgdHJhY2sgOiBtX3ZpZGVvVHJhY2tzKQotICAgICAgICB0cmFja3MuYXBwZW5kKHRyYWNr
LmdldCgpKTsKKyAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KG1fdHJhY2tTZXQuc2l6ZSgpKTsK
KyAgICBjb3B5VmFsdWVzVG9WZWN0b3IobV90cmFja1NldCwgdHJhY2tzKTsKIAogICAgIHJldHVy
biB0cmFja3M7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW06OnRyYWNrRGlkRW5kKCkKLXsKLSAgICBm
b3IgKGF1dG8mIHRyYWNrIDogbV9hdWRpb1RyYWNrcykgewotICAgICAgICBpZiAoIXRyYWNrLT5l
bmRlZCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmb3IgKGF1dG8mIHRyYWNr
IDogbV92aWRlb1RyYWNrcykgewotICAgICAgICBpZiAoIXRyYWNrLT5lbmRlZCgpKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbV9hdWRpb1RyYWNrcy5zaXplKCkgJiYg
IW1fdmlkZW9UcmFja3Muc2l6ZSgpKQotICAgICAgICBzZXRBY3RpdmUoZmFsc2UpOwotfQotCi12
b2lkIE1lZGlhU3RyZWFtOjpzZXRTdHJlYW1Jc0FjdGl2ZShib29sIHN0cmVhbUFjdGl2ZSkKK3Zv
aWQgTWVkaWFTdHJlYW06OmNvbnRleHREZXN0cm95ZWQoKQogewotICAgIGlmIChzdHJlYW1BY3Rp
dmUpCi0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hY3RpdmVFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci0gICAgZWxzZQotICAgICAgICBzY2hl
ZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5hY3RpdmVFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OmNvbnRl
eHREZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6Y29udGV4dERlc3Ryb3llZCgp
Cit2b2lkIE1lZGlhU3RyZWFtOjp0cmFja0RpZEVuZCgpCiB7Ci0gICAgQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OmNvbnRleHREZXN0cm95ZWQoKTsKKyAgICBtX3ByaXZhdGUtPnVwZGF0ZUFj
dGl2ZVN0YXRlKE1lZGlhU3RyZWFtUHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpOb3RpZnkp
OwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjphZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNv
dXJjZSogc291cmNlKQordm9pZCBNZWRpYVN0cmVhbTo6YWN0aXZlU3RhdHVzQ2hhbmdlZCgpCiB7
Ci0gICAgQVNTRVJUKHNvdXJjZSk7Ci0gICAgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU6OmNyZWF0ZShzb3VyY2UpLmdldCgpKTsKKyAgICAvLyBTY2hlZHVsZSB0aGUgYWN0
aXZlIHN0YXRlIGNoYW5nZSBhbmQgZXZlbnQgZGlzcGF0Y2ggc2luY2UgdGhpcyBjYWxsYmFjayBt
YXkgYmUgY2FsbGVkCisgICAgLy8gc3luY2hyb25vdXNseSBmcm9tIHRoZSBET00gQVBJIChlLmcu
IGFzIGEgcmVzdWx0IG9mIGFkZFRyYWNrKCkpLgorICAgIHNjaGVkdWxlQWN0aXZlU3RhdGVDaGFu
Z2UoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlUmVtb3RlU291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2UqIHNvdXJjZSkKK3ZvaWQgTWVkaWFTdHJlYW06OmRpZEFkZFRyYWNrVG9Qcml2
YXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiB0cmFja1ByaXZhdGUpCiB7Ci0gICAgQVNTRVJU
KHNvdXJjZSk7Ci0gICAgaWYgKCFhY3RpdmUoKSkKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4q
IHRyYWNrcyA9IHRyYWNrVmVjdG9yRm9yVHlwZShzb3VyY2UtPnR5cGUoKSk7Ci0KLSAgICBmb3Ig
KGludCBpID0gdHJhY2tzLT5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBpZiAo
KCp0cmFja3MpW2ldLT5zb3VyY2UoKSAhPSBzb3VyY2UpCi0gICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAoKnRyYWNrcylbaV07
Ci0gICAgICAgIHRyYWNrLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgdHJhY2tzLT5y
ZW1vdmUoaSk7Ci0gICAgICAgIG1fcHJpdmF0ZS0+cmVtb3ZlVHJhY2soJnRyYWNrLT5wcml2YXRl
VHJhY2soKSk7Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNr
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNl
LCB0cmFjay5yZWxlYXNlKCkpKTsKLSAgICB9CisgICAgaW50ZXJuYWxBZGRUcmFjayhNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUoKmNvbnRleHQsIHRyYWNrUHJpdmF0ZSksIFN0cmVhbU1vZGlmaWVy
OjpQbGF0Zm9ybSk7Cit9CiAKLSAgICBtX3ByaXZhdGUtPnJlbW92ZVNvdXJjZShzb3VyY2UpOwor
dm9pZCBNZWRpYVN0cmVhbTo6ZGlkUmVtb3ZlVHJhY2tGcm9tUHJpdmF0ZShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYgdHJhY2tQcml2YXRlKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiB0cmFjayA9IGdldFRyYWNrQnlJZCh0cmFja1ByaXZhdGUuaWQoKSk7CisgICAgaW50ZXJuYWxS
ZW1vdmVUcmFjayhXVEY6Om1vdmUodHJhY2spLCBTdHJlYW1Nb2RpZmllcjo6UGxhdGZvcm0pOwog
fQogCi12b2lkIE1lZGlhU3RyZWFtOjphZGRSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogcHJpdmF0ZVRyYWNrKQorYm9vbCBNZWRpYVN0cmVhbTo6aW50ZXJuYWxBZGRUcmFjayhS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgU3RyZWFtTW9kaWZpZXIgc3RyZWFtTW9k
aWZpZXIpCiB7Ci0gICAgQVNTRVJUKHByaXZhdGVUcmFjayk7Ci0gICAgaWYgKCFhY3RpdmUoKSkK
LSAgICAgICAgcmV0dXJuOworICAgIGlmIChnZXRUcmFja0J5SWQodHJhY2stPmlkKCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2s7
Ci0gICAgc3dpdGNoIChwcml2YXRlVHJhY2stPnR5cGUoKSkgewotICAgIGNhc2UgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6QXVkaW86Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpWaWRlbzoK
LSAgICAgICAgdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgKnByaXZhdGVUcmFjayk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVh
bHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KKyAgICBtX3RyYWNrU2V0LmFkZCh0cmFjay0+aWQoKSwgdHJh
Y2spOworICAgIHRyYWNrLT5hZGRPYnNlcnZlcih0aGlzKTsKIAotICAgIGlmICghdHJhY2spCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoc3RyZWFtTW9kaWZpZXIgPT0gU3RyZWFtTW9kaWZpZXI6
OkRvbUFQSSkKKyAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFjaygmdHJhY2stPnByaXZhdGVUcmFj
aygpLCBNZWRpYVN0cmVhbVByaXZhdGU6Ok5vdGlmeUNsaWVudE9wdGlvbjo6RG9udE5vdGlmeSk7
CisgICAgZWxzZQorICAgICAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIFdURjo6bW92
ZSh0cmFjaykpKTsKIAotICAgIGlmIChhZGRUcmFjayh0cmFjaykpCi0gICAgICAgIHNjaGVkdWxl
RGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
YWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOworICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIE1lZGlhU3RyZWFtOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZSogcHJpdmF0ZVRyYWNrKQorYm9vbCBNZWRpYVN0cmVhbTo6aW50ZXJuYWxSZW1vdmVU
cmFjayhSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgU3RyZWFtTW9kaWZpZXIgc3Ry
ZWFtTW9kaWZpZXIpCiB7Ci0gICAgQVNTRVJUKHByaXZhdGVUcmFjayk7Ci0gICAgaWYgKCFhY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICghbV90cmFja1NldC5yZW1vdmUodHJhY2st
PmlkKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB0cmFjay0+cmVtb3ZlT2JzZXJ2
ZXIodGhpcyk7CisKKyAgICBpZiAoc3RyZWFtTW9kaWZpZXIgPT0gU3RyZWFtTW9kaWZpZXI6OkRv
bUFQSSkKKyAgICAgICAgbV9wcml2YXRlLT5yZW1vdmVUcmFjayh0cmFjay0+cHJpdmF0ZVRyYWNr
KCksIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Tm90aWZ5Q2xpZW50T3B0aW9uOjpEb250Tm90aWZ5KTsK
KyAgICBlbHNlCisgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgV1RGOjpt
b3ZlKHRyYWNrKSkpOwogCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gZ2V0
VHJhY2tCeUlkKHByaXZhdGVUcmFjay0+aWQoKSk7Ci0gICAgaWYgKHJlbW92ZVRyYWNrKHRyYWNr
KSkKLSAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNr
LnJlbGVhc2UoKSkpOworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit2b2lkIE1lZGlh
U3RyZWFtOjpzY2hlZHVsZUFjdGl2ZVN0YXRlQ2hhbmdlKCkKIHsKLSAgICBtX3NjaGVkdWxlZEV2
ZW50cy5hcHBlbmQoZXZlbnQpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnROYW1lID0g
bV9pc0FjdGl2ZSA/IGV2ZW50TmFtZXMoKS5pbmFjdGl2ZUV2ZW50IDogZXZlbnROYW1lcygpLmFj
dGl2ZUV2ZW50OworICAgIG1fc2NoZWR1bGVkQWN0aXZpdHlFdmVudHMuYXBwZW5kKEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIGlmICghbV9zY2hlZHVsZWRF
dmVudFRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fc2NoZWR1bGVkRXZlbnRUaW1lci5zdGFy
dE9uZVNob3QoMCk7CisgICAgaWYgKCFtX2FjdGl2aXR5RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX2FjdGl2aXR5RXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQg
TWVkaWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCgpCit2b2lkIE1lZGlhU3RyZWFt
OjphY3Rpdml0eUV2ZW50VGltZXJGaXJlZCgpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+
IGV2ZW50czsKLSAgICBldmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisgICAgZXZlbnRz
LnN3YXAobV9zY2hlZHVsZWRBY3Rpdml0eUV2ZW50cyk7CiAKLSAgICBmb3IgKGF1dG8mIGV2ZW50
IDogZXZlbnRzKQorICAgIGZvciAoYXV0byYgZXZlbnQgOiBldmVudHMpIHsKKyAgICAgICAgbV9p
c0FjdGl2ZSA9IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmFjdGl2ZUV2ZW50OwogICAg
ICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSk7CisgICAgfQogCiAgICAgZXZlbnRz
LmNsZWFyKCk7CiB9CkBAIC0zNzIsMTcgKzI0OSwxNSBAQCBVUkxSZWdpc3RyeSYgTWVkaWFTdHJl
YW06OnJlZ2lzdHJ5KCkgY29uc3QKICAgICByZXR1cm4gTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVn
aXN0cnkoKTsKIH0KIAotVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIE1lZGlhU3Ry
ZWFtOjp0cmFja1ZlY3RvckZvclR5cGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSB0eXBlKQor
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gTWVkaWFTdHJlYW06OnRyYWNrVmVjdG9y
Rm9yVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlIGZpbHRlclR5cGUpIGNvbnN0CiB7Ci0g
ICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoK
LSAgICAgICAgcmV0dXJuICZtX2F1ZGlvVHJhY2tzOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VmlkZW86Ci0gICAgICAgIHJldHVybiAmbV92aWRlb1RyYWNrczsKLSAgICBjYXNlIFJl
YWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IHRyYWNrczsKKyAgICBmb3IgKGF1
dG8mIHRyYWNrIDogbV90cmFja1NldC52YWx1ZXMoKSkgeworICAgICAgICBpZiAodHJhY2stPnNv
dXJjZSgpLT50eXBlKCkgPT0gZmlsdGVyVHlwZSkKKyAgICAgICAgICAgIHRyYWNrcy5hcHBlbmQo
dHJhY2spOwogICAgIH0KLSAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiB0cmFja3M7
CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OmFkZE9ic2VydmVyKE1lZGlhU3RyZWFtOjpPYnNlcnZl
ciogb2JzZXJ2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmgKaW5kZXggYmY2Mzg4NS4uZTQxNjk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpLgogICoKQEAgLTM4LDEyICszOCwxMyBAQAogI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVVJMUmVnaXN0cnku
aCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IE1lZGlhU3RyZWFtIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+LCBwdWJs
aWMgVVJMUmVnaXN0cmFibGUsIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBNZWRpYVN0
cmVhbVByaXZhdGVDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJs
aWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTdHJlYW0gZmluYWwg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwg
cHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCwg
cHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlciwgcHVibGljIE1lZGlhU3RyZWFtVHJhY2s6Ok9ic2VydmVyIHsKIHB1YmxpYzoK
ICAgICBjbGFzcyBPYnNlcnZlciB7CiAgICAgcHVibGljOgpAQCAtNTIsMjUgKzUzLDI0IEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICBz
dGF0aWMgUmVmPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1l
ZGlhU3RyZWFtKik7CiAgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYp
OwotICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+KTsKKyAgICBzdGF0aWMgUmVmPE1l
ZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZlB0cjxNZWRpYVN0
cmVhbVByaXZhdGU+JiYpOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKICAgICBTdHJp
bmcgaWQoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUtPmlkKCk7IH0KIAotICAgIHZvaWQgYWRk
VHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgcmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgYWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwogICAgIE1lZGlhU3RyZWFt
VHJhY2sqIGdldFRyYWNrQnlJZChTdHJpbmcpOwogCi0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPj4mIGdldEF1ZGlvVHJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9hdWRp
b1RyYWNrczsgfQotICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiBn
ZXRWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9UcmFja3M7IH0KLSAgICBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRUcmFja3MoKTsKKyAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRBdWRpb1RyYWNrcygpIGNvbnN0OworICAgIFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IGdldFZpZGVvVHJhY2tzKCkgY29uc3Q7CisgICAg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gZ2V0VHJhY2tzKCkgY29uc3Q7CiAKLSAg
ICBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjbG9uZSgpOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bT4gY2xvbmUoKTsKIAotICAgIGJvb2wgYWN0aXZlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBY3Rp
dmUoYm9vbCk7CisgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lzQWN0aXZlOyB9
CiAKICAgICBNZWRpYVN0cmVhbVByaXZhdGUqIHByaXZhdGVTdHJlYW0oKSBjb25zdCB7IHJldHVy
biBtX3ByaXZhdGUuZ2V0KCk7IH0KIApAQCAtODgsNDIgKzg4LDQyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CiAKIHByb3RlY3RlZDoKLSAgICBNZWRpYVN0
cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZh
dGU+KTsKKyAgICBNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mKTsKKyAgICBNZWRpYVN0cmVhbShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiwgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4mJik7CiAKICAgICAv
LyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6CisgICAgZW51bSBjbGFzcyBTdHJl
YW1Nb2RpZmllciB7IERvbUFQSSwgUGxhdGZvcm0gfTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0CiAg
ICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBk
ZXJlZigpOyB9CiAKLSAgICAvLyBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQKKyAgICAvLyBNZWRp
YVN0cmVhbVRyYWNrOjpPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdHJlYW1Jc0FjdGl2ZShib29sKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUmVtb3RlU291cmNlKFJlYWx0aW1l
TWVkaWFTb3VyY2UqKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVt
b3RlU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UqKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1U
cmFja1ByaXZhdGUqKSBvdmVycmlkZSBmaW5hbDsKLQotICAgIGJvb2wgcmVtb3ZlVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7Ci0gICAgYm9vbCBhZGRUcmFjayhQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+KTsKIAotICAgIGJvb2wgaGF2ZVRyYWNrV2l0aFNvdXJjZShQYXNz
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KTsKKyAgICAvLyBNZWRpYVN0cmVhbVByaXZhdGVD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlU3RhdHVzQ2hhbmdlZCgpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUcmFja1RvUHJpdmF0ZShNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVU
cmFja0Zyb21Qcml2YXRlKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUgZmluYWw7
CiAKLSAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7Ci0g
ICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKKyAgICBib29sIGludGVybmFsQWRk
VHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFN0cmVhbU1vZGlmaWVyKTsKKyAgICBi
b29sIGludGVybmFsUmVtb3ZlVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFN0cmVh
bU1vZGlmaWVyKTsKIAotICAgIHZvaWQgY2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPj4mKTsKKyAgICB2b2lkIHNjaGVkdWxlQWN0aXZlU3RhdGVDaGFuZ2UoKTsKKyAg
ICB2b2lkIGFjdGl2aXR5RXZlbnRUaW1lckZpcmVkKCk7CiAKLSAgICBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tWZWN0b3JGb3JUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IHRyYWNrVmVjdG9y
Rm9yVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlKSBjb25zdDsKIAogICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbVByaXZhdGU+IG1fcHJpdmF0ZTsKLSAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiBtX2F1ZGlvVHJhY2tzOwotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4+IG1fdmlkZW9UcmFja3M7CiAKLSAgICBUaW1lciBtX3NjaGVkdWxlZEV2ZW50VGltZXI7
Ci0gICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOworICAgIGJvb2wg
bV9pc0FjdGl2ZTsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
PiBtX3RyYWNrU2V0OworCisgICAgVGltZXIgbV9hY3Rpdml0eUV2ZW50VGltZXI7CisgICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkQWN0aXZpdHlFdmVudHM7CiAKICAgICBWZWN0
b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCmluZGV4IDU1YTkwZTUuLjIxNTU3Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaWRsCkBAIC0zNywxMCArMzcsMTEgQEAKICAgICBzZXF1ZW5jZTxNZWRpYVN0cmVhbVRyYWNr
PiBnZXRBdWRpb1RyYWNrcygpOwogICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldFZp
ZGVvVHJhY2tzKCk7CiAgICAgc2VxdWVuY2U8TWVkaWFTdHJlYW1UcmFjaz4gZ2V0VHJhY2tzKCk7
Ci0KLSAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sg
dHJhY2spOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgcmVtb3ZlVHJhY2soTWVkaWFTdHJl
YW1UcmFjayB0cmFjayk7CiAgICAgTWVkaWFTdHJlYW1UcmFjayBnZXRUcmFja0J5SWQoRE9NU3Ry
aW5nIHRyYWNrSWQpOworCisgICAgdm9pZCBhZGRUcmFjayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNr
KTsKKyAgICB2b2lkIHJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spOworCiAgICAg
TWVkaWFTdHJlYW0gY2xvbmUoKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGFj
dGl2ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IDcxYzFkOGEuLjAwNmQ1MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNw
cApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNSBFcmljc3Nv
biBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgogICoKQEAgLTQwLDExICs0MCw5
IEBACiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VTdGF0ZXMuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bS5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtUHJpdmF0ZS5oIgotI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrU291
cmNlc1JlcXVlc3QuaCIKICNpbmNsdWRlICJNZWRpYVRyYWNrQ29uc3RyYWludHMuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlJlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw0MyArNTIsMTkgQEAgUmVm
PE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFt
VHJhY2soY29udGV4dCwgcHJpdmF0ZVRyYWNrKSk7CiB9CiAKLVJlZjxNZWRpYVN0cmVhbVRyYWNr
PiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVkaWFTdHJlYW1UcmFjayh0cmFjaykpOwotfQotCiBN
ZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2spCiAgICAgOiBS
ZWZDb3VudGVkKCkKICAgICAsIEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKLSAgICAsIG1fcHJp
dmF0ZVRyYWNrKHByaXZhdGVUcmFjaykKLSAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChm
YWxzZSkKLSAgICAsIG1fc3RvcHBpbmdUcmFjayhmYWxzZSkKLXsKLSAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKLQotICAgIG1fcHJpdmF0ZVRyYWNrLT5zZXRDbGllbnQodGhpcyk7Ci19Ci0KLU1lZGlh
U3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYgb3RoZXIpCi0g
ICAgOiBSZWZDb3VudGVkKCkKLSAgICAsIEFjdGl2ZURPTU9iamVjdChvdGhlci5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCi0gICAgLCBtX3ByaXZhdGVUcmFjaygqb3RoZXIucHJpdmF0ZVRyYWNr
KCkuY2xvbmUoKSkKLSAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKLSAgICAs
IG1fc3RvcHBpbmdUcmFjayhmYWxzZSkKKyAgICAsIG1fcHJpdmF0ZShwcml2YXRlVHJhY2spCiB7
CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CiAKLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0Q2xpZW50
KHRoaXMpOworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOwogfQogCiBNZWRpYVN0cmVh
bVRyYWNrOjp+TWVkaWFTdHJlYW1UcmFjaygpCiB7Ci0gICAgbV9wcml2YXRlVHJhY2stPnNldENs
aWVudChudWxscHRyKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRTb3VyY2UoUGFz
c1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBuZXdTb3VyY2UpCi17Ci0gICAgbV9wcml2YXRl
VHJhY2stPnNldFNvdXJjZShuZXdTb3VyY2UpOworICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51
bGxwdHIpOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OmtpbmQo
KSBjb25zdApAQCAtOTgsNzUgKzcyLDc0IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJl
YW1UcmFjazo6a2luZCgpIGNvbnN0CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gYXVkaW9LaW5kKCJhdWRpbyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNTdHJpbmc+IHZpZGVvS2luZCgi
dmlkZW8iLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKIAotICAgIGlmICht
X3ByaXZhdGVUcmFjay0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKQorICAg
IGlmIChtX3ByaXZhdGUtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbykKICAg
ICAgICAgcmV0dXJuIGF1ZGlvS2luZDsKICAgICByZXR1cm4gdmlkZW9LaW5kOwogfQogCiBjb25z
dCBTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6OmlkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlVHJhY2stPmlkKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+aWQoKTsKIH0KIAogY29u
c3QgU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjpsYWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZVRyYWNrLT5sYWJlbCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhYmVsKCk7
CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZVRyYWNrLT5lbmFibGVkKCk7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZW5h
YmxlZCgpOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewotICAgIG1fcHJpdmF0ZVRyYWNrLT5zZXRFbmFibGVkKGVuYWJsZWQpOwotfQotCi1i
b29sIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BwZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3By
aXZhdGVUcmFjay0+c3RvcHBlZCgpOworICAgIG1fcHJpdmF0ZS0+c2V0RW5hYmxlZChlbmFibGVk
KTsKIH0KIAogYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjptdXRlZCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZVRyYWNrLT5tdXRlZCgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPm11dGVk
KCk7CiB9CiAKIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6cmVhZG9ubHkoKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGVUcmFjay0+cmVhZG9ubHkoKTsKKyAgICByZXR1cm4gbV9wcml2YXRl
LT5yZWFkb25seSgpOwogfQogCiBib29sIE1lZGlhU3RyZWFtVHJhY2s6OnJlbW90ZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZVRyYWNrLT5yZW1vdGUoKTsKKyAgICByZXR1cm4gbV9w
cml2YXRlLT5yZW1vdGUoKTsKIH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRy
YWNrOjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRv
bWljU3RyaW5nPiBlbmRlZCgiZW5kZWQiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBsaXZlKCJsaXZl
IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEF0b21pY1N0cmluZz4gbmV3U3RhdGUoIm5ldyIsIEF0b21pY1N0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpOwotCi0gICAgc3dpdGNoIChtX3ByaXZhdGVUcmFjay0+cmVhZHlT
dGF0ZSgpKSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpMaXZlOgotICAgICAgICBy
ZXR1cm4gbGl2ZTsKLSAgICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5ldzoKLSAgICAgICAg
cmV0dXJuIG5ld1N0YXRlOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQ6Ci0g
ICAgICAgIHJldHVybiBlbmRlZDsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gZW1wdHlBdG9tOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxBdG9taWNT
dHJpbmc+IGVuZGVkU3RhdGUoImVuZGVkIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gbGl2ZVN0YXRl
KCJsaXZlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICByZXR1
cm4gZW5kZWQoKSA/IGVuZGVkU3RhdGUgOiBsaXZlU3RhdGU7CiB9CiAKLXZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6Z2V0U291cmNlcyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2s+IGNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKK2Jvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5kZWQoKSBjb25zdAogewotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrU291cmNlc1JlcXVlc3Q+IHJlcXVlc3QgPSBNZWRpYVN0
cmVhbVRyYWNrU291cmNlc1JlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjayk7Ci0gICAg
aWYgKCFSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpzaW5nbGV0b24oKS5nZXRNZWRpYVN0cmVh
bVRyYWNrU291cmNlcyhyZXF1ZXN0LnJlbGVhc2UoKSkpCi0gICAgICAgIGVjID0gTk9UX1NVUFBP
UlRFRF9FUlI7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+ZW5kZWQoKTsKK30KKworUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNsb25lKCkKK3sKKyAgICByZXR1cm4g
TWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICptX3By
aXZhdGUtPmNsb25lKCkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNp
bmdEYXRhKCkKK3sKKyAgICAvLyBOT1RFOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiB0aGUg
InN0b3AiIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSBKUywgdXNpbmcKKyAgICAvLyB0aGUgIkltcGxl
bWVudGVkQXMiIElETCBhdHRyaWJ1dGUuIFRoaXMgaXMgZG9uZSBiZWNhdXNlIEFjdGl2ZURPTU9i
amVjdCByZXF1aXJlcworICAgIC8vIGEgInN0b3AiIG1ldGhvZC4KKworICAgIGlmIChyZW1vdGUo
KSB8fCBlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3ByaXZhdGUtPmVuZFRyYWNr
KCk7CiB9CiAKIFJlZlB0cjxNZWRpYVRyYWNrQ29uc3RyYWludHM+IE1lZGlhU3RyZWFtVHJhY2s6
OmdldENvbnN0cmFpbnRzKCkgY29uc3QKQEAgLTE3OCwxNyArMTUxLDE2IEBAIFJlZlB0cjxNZWRp
YVRyYWNrQ29uc3RyYWludHM+IE1lZGlhU3RyZWFtVHJhY2s6OmdldENvbnN0cmFpbnRzKCkgY29u
c3QKIAogUmVmUHRyPE1lZGlhU291cmNlU3RhdGVzPiBNZWRpYVN0cmVhbVRyYWNrOjpzdGF0ZXMo
KSBjb25zdAogewotICAgIHJldHVybiBNZWRpYVNvdXJjZVN0YXRlczo6Y3JlYXRlKG1fcHJpdmF0
ZVRyYWNrLT5zdGF0ZXMoKSk7CisgICAgcmV0dXJuIE1lZGlhU291cmNlU3RhdGVzOjpjcmVhdGUo
bV9wcml2YXRlLT5zdGF0ZXMoKSk7CiB9CiAKIFJlZlB0cjxNZWRpYVN0cmVhbUNhcGFiaWxpdGll
cz4gTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29uc3QKIHsKICAgICAvLyBU
aGUgc291cmNlIG1heSBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgdHJhY2tzLCBzbyBpdHMgc3RhdGVz
IGlzIG5vdCBuZWNlc3NhcmlseQotICAgIC8vIGluIHN5bmMgd2l0aCB0aGUgdHJhY2sgc3RhdGUu
IEEgdHJhY2sgdGhhdCBpcyBuZXcgb3IgaGFzIGVuZGVkIGFsd2F5cyBoYXMgYSBzb3VyY2UKKyAg
ICAvLyBpbiBzeW5jIHdpdGggdGhlIHRyYWNrIHN0YXRlLiBBIHRyYWNrIHRoYXQgaGFzIGVuZGVk
IGFsd2F5cyBoYXMgYSBzb3VyY2UKICAgICAvLyB0eXBlIG9mICJub25lIi4KLSAgICBSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcz4gc291cmNlQ2FwYWJpbGl0aWVzID0gbV9w
cml2YXRlVHJhY2stPmNhcGFiaWxpdGllcygpOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSA9IG1fcHJpdmF0ZVRyYWNrLT5yZWFkeVN0YXRlKCk7Ci0gICAg
aWYgKHJlYWR5U3RhdGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6TmV3IHx8IHJlYWR5U3RhdGUg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQpCisgICAgUmVmUHRyPFJlYWx0aW1lTWVkaWFT
b3VyY2VDYXBhYmlsaXRpZXM+IHNvdXJjZUNhcGFiaWxpdGllcyA9IG1fcHJpdmF0ZS0+Y2FwYWJp
bGl0aWVzKCk7CisgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHNvdXJjZUNhcGFiaWxpdGllcy0+
c2V0U291cmNlVHlwZShSZWFsdGltZU1lZGlhU291cmNlU3RhdGVzOjpOb25lKTsKICAgICAKICAg
ICByZXR1cm4gTWVkaWFTdHJlYW1DYXBhYmlsaXRpZXM6OmNyZWF0ZShzb3VyY2VDYXBhYmlsaXRp
ZXMucmVsZWFzZSgpKTsKQEAgLTE5NywzOCArMTY5LDE1IEBAIFJlZlB0cjxNZWRpYVN0cmVhbUNh
cGFiaWxpdGllcz4gTWVkaWFTdHJlYW1UcmFjazo6Z2V0Q2FwYWJpbGl0aWVzKCkgY29uc3QKIHZv
aWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBEaWN0aW9uYXJ5JiBj
b25zdHJhaW50cykKIHsKICAgICBtX2NvbnN0cmFpbnRzLT5pbml0aWFsaXplKGNvbnN0cmFpbnRz
KTsKLSAgICBtX3ByaXZhdGVUcmFjay0+YXBwbHlDb25zdHJhaW50cyhtX2NvbnN0cmFpbnRzKTsK
KyAgICBtX3ByaXZhdGUtPmFwcGx5Q29uc3RyYWludHMoKm1fY29uc3RyYWludHMpOwogfQogCi12
b2lkIE1lZGlhU3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoUGFzc1JlZlB0cjxNZWRpYUNv
bnN0cmFpbnRzPikKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6YXBwbHlDb25zdHJhaW50cyhjb25z
dCBNZWRpYUNvbnN0cmFpbnRzJikKIHsKICAgICAvLyBGSVhNRTogYXBwbHkgdGhlIG5ldyBjb25z
dHJhaW50cyB0byB0aGUgdHJhY2sKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIyNDI4CiB9CiAKLVJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0
cmVhbVRyYWNrOjpjbG9uZSgpCi17Ci0gICAgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0
ZSgqdGhpcyk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c3RvcFByb2R1Y2luZ0RhdGEo
KQotewotICAgIC8vIE5PVEU6IHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSAic3RvcCIg
bWV0aG9kIGlzIGNhbGxlZCBmcm9tIEpTLCB1c2luZwotICAgIC8vIHRoZSAiSW1wbGVtZW50ZWRB
cyIgSURMIGF0dHJpYnV0ZS4gVGhpcyBpcyBkb25lIGJlY2F1c2UgQWN0aXZlRE9NT2JqZWN0IHJl
cXVpcmVzCi0gICAgLy8gYSAic3RvcCIgbWV0aG9kLgotICAgIAotICAgIC8vIFRoZSBzdG9wIG1l
dGhvZCBzaG91bGQgIlBlcm1hbmVudGx5IHN0b3AgdGhlIGdlbmVyYXRpb24gb2YgZGF0YSBmb3Ig
dHJhY2sncyBzb3VyY2UiLCBidXQgaXQKLSAgICAvLyBzaG91bGQgbm90IHBvc3QgYW4gJ2VuZGVk
JyBldmVudC4gCi0gICAgbV9zdG9wcGluZ1RyYWNrID0gdHJ1ZTsKLSAgICBtX3ByaXZhdGVUcmFj
ay0+c3RvcChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6U3RvcFRyYWNrQW5kU3RvcFNvdXJjZSk7
Ci0gICAgbV9zdG9wcGluZ1RyYWNrID0gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFTdHJlYW1UcmFj
azo6ZW5kZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGVUcmFjay0+ZW5kZWQoKTsK
LX0KLQogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbVRyYWNr
OjpPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgbV9vYnNlcnZlcnMuYXBwZW5kKG9ic2VydmVy
KTsKQEAgLTI0MSw2MiArMTkwLDMzIEBAIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6cmVtb3ZlT2Jz
ZXJ2ZXIoTWVkaWFTdHJlYW1UcmFjazo6T2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgICAgICBtX29i
c2VydmVycy5yZW1vdmUocG9zKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjp0cmFja1Jl
YWR5U3RhdGVDaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tFbmRlZCgpCiB7
Ci0gICAgaWYgKHN0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAK
LSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUgPSBtX3ByaXZh
dGVUcmFjay0+cmVhZHlTdGF0ZSgpOwotICAgIGlmIChyZWFkeVN0YXRlID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkxpdmUpCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNwYXRjaChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5zdGFydGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwotICAgIGVsc2Ug
aWYgKHJlYWR5U3RhdGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQgJiYgIW1fc3RvcHBp
bmdUcmFjaykKLSAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIGZvciAoYXV0byYgb2Jz
ZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnRyYWNrRGlkRW5kKCk7CiAK
ICAgICBjb25maWd1cmVUcmFja1JlbmRlcmluZygpOwogfQogICAgIAogdm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjp0cmFja011dGVkQ2hhbmdlZCgpCiB7Ci0gICAgaWYgKHN0b3BwZWQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG11dGVkKCkpCi0gICAgICAgIHNjaGVkdWxlRXZlbnREaXNw
YXRjaChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwotICAgIGVsc2UKLSAgICAgICAgc2NoZWR1bGVFdmVudERpc3BhdGNoKEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLQotICAgIGNvbmZpZ3Vy
ZVRyYWNrUmVuZGVyaW5nKCk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6dHJhY2tFbmFi
bGVkQ2hhbmdlZCgpCi17Ci0gICAgaWYgKHN0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAg
IEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBtdXRlZCgpID8gZXZlbnROYW1lcygpLm11dGVFdmVu
dCA6IGV2ZW50TmFtZXMoKS51bm11dGVFdmVudDsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpKTsKIAotICAgIHNldEVuYWJsZWQobV9wcml2
YXRlVHJhY2stPmVuYWJsZWQoKSk7CiAgICAgY29uZmlndXJlVHJhY2tSZW5kZXJpbmcoKTsKIH0K
IAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpjb25maWd1cmVUcmFja1JlbmRlcmluZygpCiB7Ci0g
ICAgaWYgKHN0b3BwZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gNC4zLjEKICAgICAv
LyAuLi4gbWVkaWEgZnJvbSB0aGUgc291cmNlIG9ubHkgZmxvd3Mgd2hlbiBhIE1lZGlhU3RyZWFt
VHJhY2sgb2JqZWN0IGlzIGJvdGggdW5tdXRlZCBhbmQgZW5hYmxlZAogfQogCi12b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OnRyYWNrRGlkRW5kKCkKLXsKLSAgICBtX3ByaXZhdGVUcmFjay0+c2V0UmVh
ZHlTdGF0ZShSZWFsdGltZU1lZGlhU291cmNlOjpFbmRlZCk7Ci0KLSAgICBmb3IgKGF1dG8mIG9i
c2VydmVyIDogbV9vYnNlcnZlcnMpCi0gICAgICAgIG9ic2VydmVyLT50cmFja0RpZEVuZCgpOwot
fQotCiB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3AoKQogewotICAgIG1fcHJpdmF0ZVRyYWNr
LT5zdG9wKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpTdG9wVHJhY2tPbmx5KTsKKyAgICBzdG9w
UHJvZHVjaW5nRGF0YSgpOwogfQogCiBjb25zdCBjaGFyKiBNZWRpYVN0cmVhbVRyYWNrOjphY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTMxMCwzMyArMjMwLDYgQEAgYm9vbCBNZWRpYVN0
cmVhbVRyYWNrOjpjYW5TdXNwZW5kRm9yUGFnZUNhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2NoZWR1bGVFdmVudERpc3BhdGNoKFBh
c3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQotewotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fbXV0ZXgpOwotICAgICAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOwot
ICAgICAgICBpZiAobV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQgPSB0cnVlOwotICAgIH0KLQotICAg
IFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwotICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4+IGV2ZW50czsKLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKHBy
b3RlY3RlZFRoaXMtPm1fbXV0ZXgpOwotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9ldmVu
dERpc3BhdGNoU2NoZWR1bGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBldmVudHMgPSBXVEY6Om1v
dmUocHJvdGVjdGVkVGhpcy0+bV9zY2hlZHVsZWRFdmVudHMpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChhdXRvJiBldmVudCA6IGV2ZW50cykKLSAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpKTsKLSAg
ICB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1F
RElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggMWQwOWNjNC4uYTM2Yjg0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24g
QUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KICAqCkBAIC00NSw3ICs0NSw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBNZWRpYUNvbnN0
cmFpbnRzSW1wbDsKIGNsYXNzIE1lZGlhU291cmNlU3RhdGVzOwotY2xhc3MgTWVkaWFTdHJlYW1U
cmFja1NvdXJjZXNDYWxsYmFjazsKIGNsYXNzIE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzOwogY2xh
c3MgTWVkaWFUcmFja0NvbnN0cmFpbnRzOwogCkBAIC01OCw3ICs1Nyw2IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgc3RhdGljIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJik7Ci0gICAgc3RhdGljIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoTWVkaWFTdHJlYW1UcmFjayYpOwogICAgIHZpcnR1
YWwgfk1lZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYga2luZCgp
IGNvbnN0OwpAQCAtNzEsMjUgKzY5LDIyIEBAIHB1YmxpYzoKICAgICBib29sIG11dGVkKCkgY29u
c3Q7CiAgICAgYm9vbCByZWFkb25seSgpIGNvbnN0OwogICAgIGJvb2wgcmVtb3RlKCkgY29uc3Q7
Ci0gICAgYm9vbCBzdG9wcGVkKCkgY29uc3Q7CiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJl
YWR5U3RhdGUoKSBjb25zdDsKIAotICAgIHN0YXRpYyB2b2lkIGdldFNvdXJjZXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1NvdXJjZXNDYWxsYmFj
az4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIGVuZGVkKCkgY29uc3Q7CisKKyAgICBSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4gY2xvbmUoKTsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRh
KCk7CiAKICAgICBSZWZQdHI8TWVkaWFUcmFja0NvbnN0cmFpbnRzPiBnZXRDb25zdHJhaW50cygp
IGNvbnN0OwogICAgIFJlZlB0cjxNZWRpYVNvdXJjZVN0YXRlcz4gc3RhdGVzKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtQ2FwYWJpbGl0aWVzPiBnZXRDYXBhYmlsaXRpZXMoKSBjb25z
dDsKICAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgRGljdGlvbmFyeSYpOwotICAgIHZv
aWQgYXBwbHlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KTsKKyAgICB2
b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYpOwogCi0gICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNsb25lKCk7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0
YSgpOwotCi0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlVHJhY2stPnNvdXJjZSgpOyB9Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUm
IHByaXZhdGVUcmFjaygpIHsgcmV0dXJuIG1fcHJpdmF0ZVRyYWNrLmdldCgpOyB9Ci0KLSAgICBi
b29sIGVuZGVkKCkgY29uc3Q7CisgICAgUmVhbHRpbWVNZWRpYVNvdXJjZSogc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9wcml2YXRlLT5zb3VyY2UoKTsgfQorICAgIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlJiBwcml2YXRlVHJhY2soKSB7IHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7IH0KIAogICAg
IHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9i
c2VydmVyKik7CkBAIC0xMDUsMTEgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgTWVkaWFTdHJlYW1U
cmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKTsK
ICAgICBleHBsaWNpdCBNZWRpYVN0cmVhbVRyYWNrKE1lZGlhU3RyZWFtVHJhY2smKTsKIAotICAg
IHZvaWQgc2V0U291cmNlKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4pOwotCiAgICAg
dm9pZCBjb25maWd1cmVUcmFja1JlbmRlcmluZygpOwotICAgIHZvaWQgdHJhY2tEaWRFbmQoKTsK
LSAgICB2b2lkIHNjaGVkdWxlRXZlbnREaXNwYXRjaChQYXNzUmVmUHRyPEV2ZW50Pik7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIGZpbmFs
OwpAQCAtMTIxLDIxICsxMTIsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGVDbGllbnQKLSAgICB2b2lkIHRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQo
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAg
dm9pZCB0cmFja0VuYWJsZWRDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0KLSAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50Pj4gbV9zY2hlZHVsZWRFdmVudHM7Ci0KLSAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50
c0ltcGw+IG1fY29uc3RyYWludHM7Ci0gICAgTXV0ZXggbV9tdXRleDsKKyAgICB2b2lkIHRyYWNr
RW5kZWQoKTsKKyAgICB2b2lkIHRyYWNrTXV0ZWRDaGFuZ2VkKCk7CiAKICAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBtX29ic2VydmVyczsKKyAgICBSZWY8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IG1f
cHJpdmF0ZTsKIAotICAgIFJlZjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gbV9wcml2YXRlVHJh
Y2s7Ci0gICAgYm9vbCBtX2V2ZW50RGlzcGF0Y2hTY2hlZHVsZWQ7Ci0KLSAgICBib29sIG1fc3Rv
cHBpbmdUcmFjazsKKyAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50c0ltcGw+IG1fY29uc3RyYWlu
dHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAppbmRleCBlODIx
ZjM1Li5kZmIyZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKQEAgLTQxLDIyICs0MSwxNyBAQCBlbnVtIE1l
ZGlhU3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBfcmVhZG9ubHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gcmVtb3RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNr
U3RhdGUgcmVhZHlTdGF0ZTsKLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc3RhcnRlZDsK
ICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZW5kZWQ7CiAKLSAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgdm9pZCBnZXRTb3Vy
Y2VzKE1lZGlhU3RyZWFtVHJhY2tTb3VyY2VzQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIE1lZGlh
U3RyZWFtVHJhY2sgY2xvbmUoKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zdG9wUHJvZHVjaW5nRGF0
YV0gdm9pZCBzdG9wKCk7CiAKICAgICBNZWRpYVRyYWNrQ29uc3RyYWludHMgZ2V0Q29uc3RyYWlu
dHMoKTsKLQogICAgIE1lZGlhU291cmNlU3RhdGVzIHN0YXRlcygpOwotCiAgICAgTWVkaWFTdHJl
YW1DYXBhYmlsaXRpZXMgZ2V0Q2FwYWJpbGl0aWVzKCk7IC8vIHJldHVybnMgZWl0aGVyIEFsbFZp
ZGVvQ2FwYWJpbGl0aWVzIG9yIEFsbEF1ZGlvQ2FwYWJpbGl0aWVzCi0KICAgICB2b2lkIGFwcGx5
Q29uc3RyYWludHMoRGljdGlvbmFyeSBjb25zdHJhaW50cyk7CiAKICAgICBhdHRyaWJ1dGUgRXZl
bnRIYW5kbGVyIG9ub3ZlcmNvbnN0cmFpbmVkOwotICAgIE1lZGlhU3RyZWFtVHJhY2sgY2xvbmUo
KTsKLSAgICBbSW1wbGVtZW50ZWRBcz1zdG9wUHJvZHVjaW5nRGF0YV0gdm9pZCBzdG9wKCk7CiAK
ICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIo
RE9NU3RyaW5nIHR5cGUsIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIG9wdGlvbmFsIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGI5MDQwNGMuLjhmZDY5MzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uY3BwCkBAIC02NTEsNyArNjUxLDYgQEAgdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6
ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3RyZWFtUHJpdmF0ZSogcHJpdmF0ZVN0cmVhbSkK
IAogICAgIC8vIEZJWE1FOiB0aGlzIGNsYXNzIHNob3VsZG4ndCBrbm93IHRoYXQgdGhlIHByaXZh
dGUgc3RyZWFtIGNsaWVudCBpcyBhIE1lZGlhU3RyZWFtIQogICAgIFJlZlB0cjxNZWRpYVN0cmVh
bT4gc3RyZWFtID0gc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW0qPihwcml2YXRlU3RyZWFtLT5jbGll
bnQoKSk7Ci0gICAgc3RyZWFtLT5zZXRBY3RpdmUoZmFsc2UpOwogCiAgICAgaWYgKG1fc2lnbmFs
aW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVl
c3QuY3BwCmluZGV4IDI3MzEyN2UuLjJkZTI1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMTU4LDkg
KzE1OCw5IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Qcml2YXRlPiBwcml2YXRlU3RyCiAgICAgLy8gNCAtIENyZWF0ZSB0aGUg
TWVkaWFTdHJlYW0gYW5kIHBhc3MgaXQgdG8gdGhlIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIHByaXZhdGVTdHJlYW0pOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBz
dHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRz
KG1fYXVkaW9Db25zdHJhaW50cyk7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCpt
X2F1ZGlvQ29uc3RyYWludHMpOwogICAgIGZvciAoYXV0byYgdHJhY2sgOiBzdHJlYW0tPmdldFZp
ZGVvVHJhY2tzKCkpCi0gICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKG1fdmlkZW9Db25z
dHJhaW50cyk7CisgICAgICAgIHRyYWNrLT5hcHBseUNvbnN0cmFpbnRzKCptX3ZpZGVvQ29uc3Ry
YWludHMpOwogCiAgICAgbV9wcm9taXNlLnJlc29sdmUoc3RyZWFtKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZh
dGUuY3BwCmluZGV4IDllMjczNTIuLjEwNDU1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtUHJpdmF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24gQUIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgpAQCAtNDIsMTYwICs0Miw5MyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRl
PiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1l
TWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKQorUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4g
TWVkaWFTdHJlYW1Qcml2YXRlOjpjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPj4mIHZpZGVvU291cmNlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhU3RyZWFtUHJpdmF0ZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzKSk7Ci19CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4+IHRyYWNrczsKKyAgICB0cmFja3MucmVzZXJ2ZUNhcGFjaXR5KGF1ZGlvU291cmNl
cy5zaXplKCkgKyB2aWRlb1NvdXJjZXMuc2l6ZSgpKTsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVByaXZhdGU+IE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgYXVkaW9Qcml2YXRlVHJhY2tzLCBjb25zdCBWZWN0
b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHZpZGVvUHJpdmF0ZVRyYWNrcykK
LXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtUHJpdmF0ZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCksIGF1ZGlvUHJpdmF0ZVRyYWNrcywgdmlkZW9Qcml2YXRlVHJhY2tz
KSk7Ci19CisgICAgZm9yIChhdXRvIHNvdXJjZSA6IGF1ZGlvU291cmNlcykKKyAgICAgICAgdHJh
Y2tzLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURjo6bW92ZShzb3Vy
Y2UpKSk7CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjphZGRTb3VyY2UoUGFzc1JlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiBwcnBTb3VyY2UpCi17Ci0gICAgUmVmUHRyPFJlYWx0aW1lTWVk
aWFTb3VyY2U+IHNvdXJjZSA9IHBycFNvdXJjZTsKLSAgICBzd2l0Y2ggKHNvdXJjZS0+dHlwZSgp
KSB7Ci0gICAgY2FzZSBSZWFsdGltZU1lZGlhU291cmNlOjpBdWRpbzoKLSAgICAgICAgaWYgKG1f
YXVkaW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKSA9PSBub3RGb3VuZCkKLSAgICAgICAgICAg
IG1fYXVkaW9TdHJlYW1Tb3VyY2VzLmFwcGVuZChzb3VyY2UpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvOgotICAgICAgICBpZiAobV92aWRlb1N0
cmVhbVNvdXJjZXMuZmluZChzb3VyY2UpID09IG5vdEZvdW5kKQotICAgICAgICAgICAgbV92aWRl
b1N0cmVhbVNvdXJjZXMuYXBwZW5kKHNvdXJjZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KKyAgICBmb3IgKGF1dG8gc291cmNlIDogdmlkZW9T
b3VyY2VzKQorICAgICAgICB0cmFja3MuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpj
cmVhdGUoV1RGOjptb3ZlKHNvdXJjZSkpKTsKIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OnJl
bW92ZVNvdXJjZShQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZSkKLXsKLSAg
ICBzaXplX3QgcG9zID0gbm90Rm91bmQ7Ci0gICAgc3dpdGNoIChzb3VyY2UtPnR5cGUoKSkgewot
ICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW86Ci0gICAgICAgIHBvcyA9IG1fYXVk
aW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKTsKLSAgICAgICAgaWYgKHBvcyA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9hdWRpb1N0cmVhbVNvdXJjZXMucmVt
b3ZlKHBvcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
VmlkZW86Ci0gICAgICAgIHBvcyA9IG1fdmlkZW9TdHJlYW1Tb3VyY2VzLmZpbmQoc291cmNlKTsK
LSAgICAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgbV92aWRlb1N0cmVhbVNvdXJjZXMucmVtb3ZlKHBvcyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUmVhbHRpbWVNZWRpYVNvdXJjZTo6Tm9uZToKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KKyAgICByZXR1cm4gTWVkaWFTdHJlYW1Qcml2
YXRlOjpjcmVhdGUodHJhY2tzKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVByaXZhdGU6OmFkZFJl
bW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKiBzb3VyY2UpCitSZWZQdHI8TWVkaWFTdHJl
YW1Qcml2YXRlPiBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHRyYWNrcykKIHsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVTb3VyY2Uoc291cmNlKTsKLSAgICBlbHNlCi0g
ICAgICAgIGFkZFNvdXJjZShzb3VyY2UpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW1Qcml2YXRlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgdHJhY2tzKSk7CiB9CiAK
LXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1vdmVSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRp
YVNvdXJjZSogc291cmNlKQorUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gTWVkaWFTdHJlYW1Q
cml2YXRlOjpjcmVhdGUoKQogewotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQt
PnJlbW92ZVJlbW90ZVNvdXJjZShzb3VyY2UpOwotICAgIGVsc2UKLSAgICAgICAgcmVtb3ZlU291
cmNlKHNvdXJjZSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtUHJpdmF0ZTo6Y3JlYXRlKFZlY3Rv
cjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PigpKTsKIH0KIAotdm9pZCBNZWRpYVN0
cmVhbVByaXZhdGU6OmFkZFJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKiB0cmFj
aykKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hZGRSZW1vdGVUcmFj
ayh0cmFjayk7Ci0gICAgZWxzZQotICAgICAgICBhZGRUcmFjayh0cmFjayk7Ci19Ci0KLXZvaWQg
TWVkaWFTdHJlYW1Qcml2YXRlOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSogdHJhY2spCi17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+cmVt
b3ZlUmVtb3RlVHJhY2sodHJhY2spOwotICAgIGVsc2UKLSAgICAgICAgcmVtb3ZlVHJhY2sodHJh
Y2spOwotfQotCi1NZWRpYVN0cmVhbVByaXZhdGU6Ok1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBT
dHJpbmcmIGlkLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVk
aW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlk
ZW9Tb3VyY2VzKQorTWVkaWFTdHJlYW1Qcml2YXRlOjpNZWRpYVN0cmVhbVByaXZhdGUoY29uc3Qg
U3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+
JiB0cmFja3MpCiAgICAgOiBtX2NsaWVudCgwKQogICAgICwgbV9pZChpZCkKICAgICAsIG1faXNB
Y3RpdmUoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1faWQubGVuZ3RoKCkpOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXVkaW9Tb3VyY2VzLnNpemUoKTsgaSsrKQotICAgICAgICBhZGRUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKGF1ZGlvU291cmNlc1tpXSkpOwotCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aWRlb1NvdXJjZXMuc2l6ZSgpOyBpKyspCi0gICAg
ICAgIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUodmlkZW9Tb3VyY2Vz
W2ldKSk7CiAKLSAgICB1bnNpZ25lZCBwcm92aWRlZFNvdXJjZXNTaXplID0gYXVkaW9Tb3VyY2Vz
LnNpemUoKSArIHZpZGVvU291cmNlcy5zaXplKCk7Ci0gICAgdW5zaWduZWQgdHJhY2tzU2l6ZSA9
IG1fYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUoKSArIG1fdmlkZW9Qcml2YXRlVHJhY2tzLnNpemUo
KTsKKyAgICBmb3IgKGF1dG8mIHRyYWNrIDogdHJhY2tzKQorICAgICAgICBtX3RyYWNrU2V0LmFk
ZCh0cmFjay0+aWQoKSwgdHJhY2spOwogCi0gICAgaWYgKHByb3ZpZGVkU291cmNlc1NpemUgPiAw
ICYmIHRyYWNrc1NpemUgPiAwKQotICAgICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKKyAgICB1cGRh
dGVBY3RpdmVTdGF0ZShOb3RpZnlDbGllbnRPcHRpb246OkRvbnROb3RpZnkpOwogfQogCi1NZWRp
YVN0cmVhbVByaXZhdGU6Ok1lZGlhU3RyZWFtUHJpdmF0ZShjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIGF1ZGlvUHJpdmF0ZVRy
YWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB2aWRl
b1ByaXZhdGVUcmFja3MpCi0gICAgOiBtX2NsaWVudCgwKQotICAgICwgbV9pZChpZCkKLSAgICAs
IG1faXNBY3RpdmUoZmFsc2UpCitWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
Pj4gTWVkaWFTdHJlYW1Qcml2YXRlOjp0cmFja3MoKSBjb25zdAogewotICAgIEFTU0VSVChtX2lk
Lmxlbmd0aCgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvUHJpdmF0ZVRyYWNr
cy5zaXplKCk7IGkrKykKLSAgICAgICAgYWRkVHJhY2soYXVkaW9Qcml2YXRlVHJhY2tzW2ldKTsK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdHJhY2tzOworICAg
IHRyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobV90cmFja1NldC5zaXplKCkpOworICAgIGNvcHlWYWx1
ZXNUb1ZlY3RvcihtX3RyYWNrU2V0LCB0cmFja3MpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2aWRlb1ByaXZhdGVUcmFja3Muc2l6ZSgpOyBpKyspCi0gICAgICAgIGFkZFRyYWNrKHZp
ZGVvUHJpdmF0ZVRyYWNrc1tpXSk7Ci0KLSAgICB1bnNpZ25lZCBwcm92aWRlZFRyYWNrc1NpemUg
PSBhdWRpb1ByaXZhdGVUcmFja3Muc2l6ZSgpICsgdmlkZW9Qcml2YXRlVHJhY2tzLnNpemUoKTsK
LSAgICB1bnNpZ25lZCB0cmFja3NTaXplID0gbV9hdWRpb1ByaXZhdGVUcmFja3Muc2l6ZSgpICsg
bV92aWRlb1ByaXZhdGVUcmFja3Muc2l6ZSgpOwotCi0gICAgaWYgKHByb3ZpZGVkVHJhY2tzU2l6
ZSA+IDAgJiYgdHJhY2tzU2l6ZSA+IDApCi0gICAgICAgIG1faXNBY3RpdmUgPSB0cnVlOworICAg
IHJldHVybiB0cmFja3M7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1Qcml2YXRlOjpzZXRBY3RpdmUo
Ym9vbCBhY3RpdmUpCit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6dXBkYXRlQWN0aXZlU3RhdGUo
Tm90aWZ5Q2xpZW50T3B0aW9uIG5vdGlmeUNsaWVudE9wdGlvbikKIHsKLSAgICBpZiAobV9pc0Fj
dGl2ZSA9PSBhY3RpdmUpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyBBIHN0cmVhbSBpcyBhY3Rp
dmUgaWYgaXQgaGFzIGF0IGxlYXN0IG9uZSB1bi1lbmRlZCB0cmFjay4KKyAgICBib29sIG5ld0Fj
dGl2ZVN0YXRlID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiB0cmFjayA6IG1fdHJhY2tTZXQudmFs
dWVzKCkpIHsKKyAgICAgICAgaWYgKCF0cmFjay0+ZW5kZWQoKSkgeworICAgICAgICAgICAgbmV3
QWN0aXZlU3RhdGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
CiAKLSAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworICAgIGlmIChuZXdBY3RpdmVTdGF0ZSA9PSBt
X2lzQWN0aXZlKQorICAgICAgICByZXR1cm47CisgICAgbV9pc0FjdGl2ZSA9IG5ld0FjdGl2ZVN0
YXRlOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+c2V0U3RyZWFtSXNB
Y3RpdmUoYWN0aXZlKTsKKyAgICBpZiAobV9jbGllbnQgJiYgbm90aWZ5Q2xpZW50T3B0aW9uID09
IE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KQorICAgICAgICBtX2NsaWVudC0+YWN0aXZlU3Rh
dHVzQ2hhbmdlZCgpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6YWRkVHJhY2soUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCit2b2lkIE1lZGlhU3Ry
ZWFtUHJpdmF0ZTo6YWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiYmIHRy
YWNrLCBOb3RpZnlDbGllbnRPcHRpb24gbm90aWZ5Q2xpZW50T3B0aW9uKQogewotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gdHJhY2sgPSBwcnBUcmFjazsKLSAgICBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHRyYWNrcyA9IHRyYWNrLT50eXBlKCkg
PT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8gPyBtX2F1ZGlvUHJpdmF0ZVRyYWNrcyA6IG1f
dmlkZW9Qcml2YXRlVHJhY2tzOwotCi0gICAgc2l6ZV90IHBvcyA9IHRyYWNrcy5maW5kKHRyYWNr
KTsKLSAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgIGlmIChtX3RyYWNrU2V0LmNvbnRhaW5z
KHRyYWNrLT5pZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJhY2tzLmFwcGVuZCh0cmFj
ayk7Ci0gICAgaWYgKHRyYWNrLT5zb3VyY2UoKSkKLSAgICAgICAgYWRkU291cmNlKHRyYWNrLT5z
b3VyY2UoKSk7CisgICAgbV90cmFja1NldC5hZGQodHJhY2stPmlkKCksIHRyYWNrKTsKKworICAg
IGlmIChtX2NsaWVudCAmJiBub3RpZnlDbGllbnRPcHRpb24gPT0gTm90aWZ5Q2xpZW50T3B0aW9u
OjpOb3RpZnkpCisgICAgICAgIG1fY2xpZW50LT5kaWRBZGRUcmFja1RvUHJpdmF0ZSgqdHJhY2su
Z2V0KCkpOworCisgICAgdXBkYXRlQWN0aXZlU3RhdGUoTm90aWZ5Q2xpZW50T3B0aW9uOjpOb3Rp
ZnkpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtUHJpdmF0ZTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gdHJhY2spCit2b2lkIE1lZGlhU3RyZWFtUHJpdmF0
ZTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHRyYWNrLCBOb3RpZnlDbGll
bnRPcHRpb24gbm90aWZ5Q2xpZW50T3B0aW9uKQogewotICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+PiYgdHJhY2tzID0gdHJhY2stPnR5cGUoKSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbyA/IG1fYXVkaW9Qcml2YXRlVHJhY2tzIDogbV92aWRlb1ByaXZhdGVU
cmFja3M7Ci0KLSAgICBzaXplX3QgcG9zID0gdHJhY2tzLmZpbmQodHJhY2spOwotICAgIGlmIChw
b3MgPT0gbm90Rm91bmQpCisgICAgaWYgKCFtX3RyYWNrU2V0LnJlbW92ZSh0cmFjay5pZCgpKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdHJhY2tzLnJlbW92ZShwb3MpOworICAgIGlmIChtX2Ns
aWVudCAmJiBub3RpZnlDbGllbnRPcHRpb24gPT0gTm90aWZ5Q2xpZW50T3B0aW9uOjpOb3RpZnkp
CisgICAgICAgIG1fY2xpZW50LT5kaWRSZW1vdmVUcmFja0Zyb21Qcml2YXRlKHRyYWNrKTsKKwor
ICAgIHVwZGF0ZUFjdGl2ZVN0YXRlKE5vdGlmeUNsaWVudE9wdGlvbjo6Tm90aWZ5KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Qcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVByaXZhdGUuaAppbmRleCAzOWVjNmMwLi5kYTY3
Zjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVByaXZhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCiAgKgpAQCAtMzcsNyArMzcsNyBAQAogCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFjay5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgiCi0jaW5jbHVkZSAiUmVhbHRp
bWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ1LDY4ICs0NSw0
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
OwogCi1jbGFzcyBNZWRpYVN0cmVhbVByaXZhdGVDbGllbnQgOiBwdWJsaWMgTWVkaWFTdHJlYW1U
cmFjazo6T2JzZXJ2ZXIgeworY2xhc3MgTWVkaWFTdHJlYW1Qcml2YXRlQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbVByaXZhdGVDbGllbnQoKSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRTdHJlYW1Jc0FjdGl2ZShib29sKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFJlbW90ZVNvdXJjZShSZWFsdGltZU1lZGlhU291cmNlKikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSopID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhY3RpdmVTdGF0dXNDaGFuZ2VkKCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUcmFja1RvUHJpdmF0ZShNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVHJhY2tGcm9tUHJpdmF0ZShN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU3RyZWFtUHJp
dmF0ZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtUHJpdmF0ZT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpOwotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYgYXVkaW9Qcml2YXRlVHJhY2tzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIHZpZGVvUHJpdmF0ZVRy
YWNrcyk7CisgICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+IGNyZWF0ZShjb25z
dCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25z
dCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4gY3JlYXRlKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiYpOworICAgIHN0YXRpYyBSZWZQdHI8TWVk
aWFTdHJlYW1Qcml2YXRlPiBjcmVhdGUoKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtUHJp
dmF0ZSgpIHsgfQogCisgICAgZW51bSBjbGFzcyBOb3RpZnlDbGllbnRPcHRpb24geyBOb3RpZnks
IERvbnROb3RpZnkgfTsKKwogICAgIE1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCogY2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnQ7IH0KICAgICB2b2lkIHNldENsaWVudChNZWRpYVN0cmVh
bVByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgU3Ry
aW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZB
dWRpb1NvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvU3RyZWFtU291cmNlcy5zaXplKCk7
IH0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlKiBhdWRpb1NvdXJjZXModW5zaWduZWQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9TdHJlYW1Tb3VyY2VzW2luZGV4XS5nZXQoKTsgfQotCi0g
ICAgdW5zaWduZWQgbnVtYmVyT2ZWaWRlb1NvdXJjZXMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
U3RyZWFtU291cmNlcy5zaXplKCk7IH0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlKiB2aWRlb1Nv
dXJjZXModW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9TdHJlYW1Tb3VyY2Vz
W2luZGV4XS5nZXQoKTsgfQotCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZBdWRpb1RyYWNrcygpIGNv
bnN0IHsgcmV0dXJuIG1fYXVkaW9Qcml2YXRlVHJhY2tzLnNpemUoKTsgfQotICAgIE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlKiBhdWRpb1RyYWNrcyh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9hdWRpb1ByaXZhdGVUcmFja3NbaW5kZXhdLmdldCgpOyB9Ci0KLSAgICB1bnNpZ25lZCBu
dW1iZXJPZlZpZGVvVHJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb1ByaXZhdGVUcmFja3Mu
c2l6ZSgpOyB9Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUqIHZpZGVvVHJhY2tzKHVuc2ln
bmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZpZGVvUHJpdmF0ZVRyYWNrc1tpbmRleF0uZ2V0
KCk7IH0KLQotICAgIHZvaWQgYWRkU291cmNlKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4pOwotICAgIHZvaWQgcmVtb3ZlU291cmNlKFBhc3NSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJj
ZT4pOwotCi0gICAgdm9pZCBhZGRSZW1vdGVTb3VyY2UoUmVhbHRpbWVNZWRpYVNvdXJjZSopOwot
ICAgIHZvaWQgcmVtb3ZlUmVtb3RlU291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2UqKTsKKyAgICBW
ZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdHJhY2tzKCkgY29uc3Q7CiAK
ICAgICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KLSAgICB2b2lk
IHNldEFjdGl2ZShib29sKTsKLQotICAgIHZvaWQgYWRkVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZT4pOwotICAgIHZvaWQgcmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4pOworICAgIHZvaWQgdXBkYXRlQWN0aXZlU3RhdGUoTm90aWZ5
Q2xpZW50T3B0aW9uKTsKIAotICAgIHZvaWQgYWRkUmVtb3RlVHJhY2soTWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGUqKTsKLSAgICB2b2lkIHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlKik7CisgICAgdm9pZCBhZGRUcmFjayhSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+JiYsIE5vdGlmeUNsaWVudE9wdGlvbik7CisgICAgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZSYsIE5vdGlmeUNsaWVudE9wdGlvbik7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFTdHJlYW1Qcml2YXRlKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpOwotICAgIE1lZGlhU3RyZWFtUHJp
dmF0ZShjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPj4mIGF1ZGlvUHJpdmF0ZVRyYWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB2aWRlb1ByaXZhdGVUcmFja3MpOworICAgIE1lZGlhU3Ry
ZWFtUHJpdmF0ZShjb25zdCBTdHJpbmcmIGlkLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPj4mKTsKIAogICAgIE1lZGlhU3RyZWFtUHJpdmF0ZUNsaWVudCogbV9j
bGllbnQ7CiAgICAgU3RyaW5nIG1faWQ7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPj4gbV9hdWRpb1N0cmVhbVNvdXJjZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxSZWFsdGlt
ZU1lZGlhU291cmNlPj4gbV92aWRlb1N0cmVhbVNvdXJjZXM7Ci0KLSAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gbV9hdWRpb1ByaXZhdGVUcmFja3M7Ci0gICAgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IG1fdmlkZW9Qcml2YXRlVHJhY2tz
OwogICAgIGJvb2wgbV9pc0FjdGl2ZTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU+PiBtX3RyYWNrU2V0OwogfTsKIAogdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4+IE1lZGlhU3RyZWFtUHJpdmF0ZVZlY3RvcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlLmNwcAppbmRleCAzMWExYjZkLi5kODE3OGRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqICBDb3B5cmln
aHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
LgorICogIENvcHlyaWdodCAoQykgMjAxNSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsMTg2ICszNyw4OCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU+IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUGFzc1JlZlB0cjxSZWFsdGltZU1l
ZGlhU291cmNlPiBzb3VyY2UpCitSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYg
c291cmNlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGUoc291cmNlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZShXVEY6Om1vdmUoc291cmNlKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSk7Cit9
CisKK1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6OmNyZWF0ZShSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiBzb3VyY2UsIGNvbnN0IFN0
cmluZyYgaWQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZShXVEY6Om1vdmUoc291cmNlKSwgaWQpKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFja1ByaXZh
dGU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
JiBvdGhlcikKICAgICA6IFJlZkNvdW50ZWQoKQorICAgICwgbV9zb3VyY2Uob3RoZXIuc291cmNl
KCkpCiAgICAgLCBtX2NsaWVudChudWxscHRyKQorICAgICwgbV9pZChjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCkpCisgICAgLCBtX2lzRW5hYmxlZChvdGhlci5lbmFibGVkKCkpCisgICAgLCBt
X2lzRW5kZWQob3RoZXIuZW5kZWQoKSkKIHsKLSAgICBtX2lnbm9yZU11dGF0aW9ucyA9IHRydWU7
Ci0gICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKLSAgICBzZXRTb3VyY2Uo
b3RoZXIuc291cmNlKCkpOwotICAgIG1fcmVhZHlTdGF0ZSA9IG90aGVyLnJlYWR5U3RhdGUoKTsK
LSAgICBtX211dGVkID0gb3RoZXIubXV0ZWQoKTsKLSAgICBtX2VuYWJsZWQgPSBvdGhlci5lbmFi
bGVkKCk7Ci0gICAgbV9zdG9wcGVkID0gb3RoZXIuc3RvcHBlZCgpOwotICAgIG1faWdub3JlTXV0
YXRpb25zID0gZmFsc2U7CisgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOwogfQogCi1N
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoUGFzc1JlZlB0
cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2UpCi0gICAgOiBtX3NvdXJjZShudWxscHRyKQor
TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6Ok1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgY29uc3QgU3RyaW5nJiBpZCkKKyAgICA6IFJl
ZkNvdW50ZWQoKQorICAgICwgbV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9jbGllbnQobnVsbHB0
cikKLSAgICAsIG1fcmVhZHlTdGF0ZShSZWFsdGltZU1lZGlhU291cmNlOjpOZXcpCi0gICAgLCBt
X211dGVkKGZhbHNlKQotICAgICwgbV9lbmFibGVkKHRydWUpCi0gICAgLCBtX3N0b3BwZWQoZmFs
c2UpCisgICAgLCBtX2lkKGlkKQorICAgICwgbV9pc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNF
bmRlZChmYWxzZSkKIHsKLSAgICBtX2lnbm9yZU11dGF0aW9ucyA9IHRydWU7Ci0gICAgc2V0U291
cmNlKHNvdXJjZSk7Ci0gICAgbV9pZ25vcmVNdXRhdGlvbnMgPSBmYWxzZTsKKyAgICBtX3NvdXJj
ZS0+YWRkT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjp+TWVk
aWFTdHJlYW1UcmFja1ByaXZhdGUoKQogewotICAgIGlmIChtX3NvdXJjZSkKLSAgICAgICAgbV9z
b3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOwotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tQ
cml2YXRlOjpzZXRTb3VyY2UoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBzb3VyY2Up
Ci17Ci0gICAgaWYgKG1fc291cmNlKQotICAgICAgICBtX3NvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIo
dGhpcyk7Ci0KLSAgICBtX3NvdXJjZSA9IHNvdXJjZTsKLQotICAgIGlmICghbV9zb3VyY2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIHNldE11dGVkKG1fc291cmNlLT5tdXRlZCgpKTsKLSAgICBz
ZXRSZWFkeVN0YXRlKG1fc291cmNlLT5yZWFkeVN0YXRlKCkpOwotICAgIGlmIChtX3NvdXJjZSkK
LSAgICAgICAgbV9zb3VyY2UtPmFkZE9ic2VydmVyKHRoaXMpOwotfQotCi1jb25zdCBTdHJpbmcm
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjppZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX2lkLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1faWQ7Ci0KLSAgICAvLyBUaGUgc3BlYyBzYXlzOgot
ICAgIC8vICAgVW5sZXNzIGEgTWVkaWFTdHJlYW1UcmFjayBvYmplY3QgaXMgY3JlYXRlZCBhcyBh
IHBhcnQgYSBvZiBzcGVjaWFsIHB1cnBvc2UgYWxnb3JpdGhtIHRoYXQKLSAgICAvLyAgIHNwZWNp
ZmllcyBob3cgdGhlIHRyYWNrIGlkIG11c3QgYmUgaW5pdGlhbGl6ZWQsIHRoZSB1c2VyIGFnZW50
IG11c3QgZ2VuZXJhdGUgYSBnbG9iYWxseQotICAgIC8vICAgdW5pcXVlIGlkZW50aWZpZXIgc3Ry
aW5nIGFuZCBpbml0aWFsaXplIHRoZSBvYmplY3QncyBpZCBhdHRyaWJ1dGUgdG8gdGhhdCBzdHJp
bmcuCi0gICAgaWYgKG1fc291cmNlICYmIG1fc291cmNlLT51c2VJREZvclRyYWNrSUQoKSkKLSAg
ICAgICAgcmV0dXJuIG1fc291cmNlLT5pZCgpOwotCi0gICAgbV9pZCA9IGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKTsKLSAgICByZXR1cm4gbV9pZDsKKyAgICBtX3NvdXJjZS0+cmVtb3ZlT2Jz
ZXJ2ZXIodGhpcyk7CiB9CiAKIGNvbnN0IFN0cmluZyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6
OmxhYmVsKCkgY29uc3QKIHsKLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBtX3Nv
dXJjZS0+bmFtZSgpOwotCi0gICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci19Ci0KLWJvb2wgTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmVuZGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdG9w
cGVkIHx8IChtX3NvdXJjZSAmJiBtX3NvdXJjZS0+cmVhZHlTdGF0ZSgpID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkVuZGVkKTsKKyAgICByZXR1cm4gbV9zb3VyY2UtPm5hbWUoKTsKIH0KIAogYm9v
bCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6bXV0ZWQoKSBjb25zdAogewotICAgIGlmIChtX3N0
b3BwZWQgfHwgIW1fc291cmNlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4g
bV9zb3VyY2UtPm11dGVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNl
dE11dGVkKGJvb2wgbXV0ZWQpCi17Ci0gICAgaWYgKG1fbXV0ZWQgPT0gbXV0ZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fbXV0ZWQgPSBtdXRlZDsKLQotICAgIGlmICghbV9jbGllbnQgfHwg
bV9pZ25vcmVNdXRhdGlvbnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LT50cmFj
a011dGVkQ2hhbmdlZCgpOwotfQotCiBib29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpyZWFk
b25seSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3RvcHBlZCB8fCAhbV9zb3VyY2UpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCiAgICAgcmV0dXJuIG1fc291cmNlLT5yZWFkb25seSgpOwogfQogCiBi
b29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpyZW1vdGUoKSBjb25zdAogewotICAgIGlmICgh
bV9zb3VyY2UpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQogICAgIHJldHVybiBtX3NvdXJjZS0+
cmVtb3RlKCk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogewotICAgIGlmIChtX3N0b3BwZWQgfHwgbV9lbmFibGVkID09IGVuYWJs
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIDQuMy4zLjEKLSAgICAvLyAuLi4gYWZ0ZXIg
YSBNZWRpYVN0cmVhbVRyYWNrIGlzIGRpc2Fzc29jaWF0ZWQgZnJvbSBpdHMgdHJhY2ssIGl0cyBl
bmFibGVkIGF0dHJpYnV0ZSBzdGlsbAotICAgIC8vIGNoYW5nZXMgdmFsdWUgd2hlbiBzZXQ7IGl0
IGp1c3QgZG9lc24ndCBkbyBhbnl0aGluZyB3aXRoIHRoYXQgbmV3IHZhbHVlLgotICAgIG1fZW5h
YmxlZCA9IGVuYWJsZWQ7Ci0KLSAgICBpZiAobV9zb3VyY2UpCi0gICAgICAgIG1fc291cmNlLT5z
ZXRFbmFibGVkKGVuYWJsZWQpOwotCi0gICAgaWYgKCFtX2NsaWVudCB8fCBtX2lnbm9yZU11dGF0
aW9ucykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQtPnRyYWNrRW5hYmxlZENoYW5n
ZWQoKTsKKyAgICAvLyBBbHdheXMgdXBkYXRlIHRoZSBlbmFibGVkIHN0YXRlIHJlZ2FyZGxlc3Mg
b2YgdGhlIHRyYWNrIGJlaW5nIGVuZGVkLgorICAgIG1faXNFbmFibGVkID0gZW5hYmxlZDsKIH0K
IAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c3RvcChTdG9wQmVoYXZpb3Igc3RvcFNv
dXJjZSkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmVuZFRyYWNrKCkKIHsKLSAgICBp
ZiAobV9zdG9wcGVkKQorICAgIGlmIChlbmRlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoc3RvcFNvdXJjZSA9PSBTdG9wVHJhY2tBbmRTdG9wU291cmNlICYmIG1fc291cmNlKQotICAg
ICAgICBtX3NvdXJjZS0+c3RvcCgpOwotCi0gICAgc2V0UmVhZHlTdGF0ZShSZWFsdGltZU1lZGlh
U291cmNlOjpFbmRlZCk7Ci0gICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICBtX2lzRW5kZWQgPSB0
cnVlOworICAgIG1fc291cmNlLT5yZXF1ZXN0U3RvcCh0aGlzKTsKIH0KIAotUmVhbHRpbWVNZWRp
YVNvdXJjZTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6cmVhZHlTdGF0ZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKG1fc3RvcHBlZCkKLSAgICAgICAgcmV0dXJuIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OkVuZGVkOwotCi0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKLX0KLQotdm9pZCBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6c2V0UmVhZHlTdGF0ZShSZWFsdGltZU1lZGlhU291cmNl
OjpSZWFkeVN0YXRlIHN0YXRlKQorUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPiBNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y2xvbmUoKQogewotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0g
UmVhbHRpbWVNZWRpYVNvdXJjZTo6RW5kZWQgfHwgbV9yZWFkeVN0YXRlID09IHN0YXRlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFkeVN0YXRlIG9sZFN0
YXRlID0gbV9yZWFkeVN0YXRlOwotICAgIG1fcmVhZHlTdGF0ZSA9IHN0YXRlOwotCi0gICAgaWYg
KCFtX2NsaWVudCB8fCBtX2lnbm9yZU11dGF0aW9ucykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKChtX3JlYWR5U3RhdGUgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6TGl2ZSAmJiBvbGRTdGF0
ZSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpOZXcpIHx8IG1fcmVhZHlTdGF0ZSA9PSBSZWFsdGlt
ZU1lZGlhU291cmNlOjpFbmRlZCkKLSAgICAgICAgbV9jbGllbnQtPnRyYWNrUmVhZHlTdGF0ZUNo
YW5nZWQoKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRl
KCp0aGlzKSk7CiB9CiAKLVJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmNsb25lKCkKK1JlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU6OnR5cGUoKSBjb25zdAogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoKnRoaXMpKTsKKyAgICByZXR1cm4gbV9zb3VyY2Ut
PnR5cGUoKTsKIH0KIAotICAgIAogUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlOjpjb25zdHJhaW50cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fY29uc3Ry
YWludHM7CkBAIC0yMjMsNjMgKzEyNiw0MCBAQCBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmNvbnN0cmFpbnRzKCkgY29uc3QKIAogY29uc3QgUmVhbHRp
bWVNZWRpYVNvdXJjZVN0YXRlcyYgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnN0YXRlcygpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3NvdXJjZSkgewotICAgICAgICBERVBSRUNBVEVEX0RFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgUmVhbHRpbWVNZWRpYVNvdXJjZVN0YXRlcywgbm9TdGF0ZSwgKCkp
OwotICAgICAgICByZXR1cm4gbm9TdGF0ZTsKLSAgICB9Ci0gICAgCiAgICAgcmV0dXJuIG1fc291
cmNlLT5zdGF0ZXMoKTsKIH0KIAotUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NvdXJjZSkKLSAgICAg
ICAgcmV0dXJuIFJlYWx0aW1lTWVkaWFTb3VyY2U6Ok5vbmU7Ci0KLSAgICByZXR1cm4gbV9zb3Vy
Y2UtPnR5cGUoKTsKLX0KLQogUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2VDYXBhYmlsaXRpZXM+
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjYXBhYmlsaXRpZXMoKSBjb25zdAogewotICAgIGlm
ICghbV9zb3VyY2UpCi0gICAgICAgIHJldHVybiAwOwotCiAgICAgcmV0dXJuIG1fc291cmNlLT5j
YXBhYmlsaXRpZXMoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6YXBwbHlD
b25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KQordm9pZCBNZWRpYVN0cmVh
bVRyYWNrUHJpdmF0ZTo6YXBwbHlDb25zdHJhaW50cyhjb25zdCBNZWRpYUNvbnN0cmFpbnRzJikK
IHsKICAgICAvLyBGSVhNRTogYXBwbHkgdGhlIG5ldyBjb25zdHJhaW50cyB0byB0aGUgdHJhY2sK
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyNDI4CiB9
CiAKLXZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVJlYWR5U3RhdGVDaGFuZ2Vk
KCkKK3ZvaWQgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OnNvdXJjZVN0b3BwZWQoKQogewotICAg
IGlmIChzdG9wcGVkKCkpCisgICAgaWYgKGVuZGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBzZXRSZWFkeVN0YXRlKG1fc291cmNlLT5yZWFkeVN0YXRlKCkpOwotfQogCi12b2lkIE1l
ZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpzb3VyY2VNdXRlZENoYW5nZWQoKQotewotICAgIGlmIChz
dG9wcGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzZXRNdXRlZChtX3NvdXJjZS0+
bXV0ZWQoKSk7CisgICAgbV9pc0VuZGVkID0gdHJ1ZTsKKworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnRyYWNrRW5kZWQoKTsKIH0KIAotdm9pZCBNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQordm9pZCBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZTo6c291cmNlTXV0ZWRDaGFuZ2VkKCkKIHsKLSAgICBpZiAoc3RvcHBlZCgpKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgc2V0RW5hYmxlZChtX3NvdXJjZS0+ZW5hYmxlZCgpKTsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT50cmFja011dGVkQ2hhbmdlZCgpOwog
fQogCi1ib29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpvYnNlcnZlcklzRW5hYmxlZCgpCiti
b29sIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkK
IHsKLSAgICByZXR1cm4gZW5hYmxlZCgpOworICAgIHJldHVybiAhbV9pc0VuZGVkOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUuaAppbmRleCA1NDMz
M2ZiLi4yYWIwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tQcml2YXRlLmgKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykuCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEVyaWNzc29uIEFCLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw3ICszMCw2IEBACiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAogI2luY2x1ZGUgIlJlYWx0
aW1lTWVkaWFTb3VyY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAK
QEAgLTQyLDc4ICs0Miw2NSBAQCBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZUNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja1ByaXZhdGVDbGllbnQoKSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCB0cmFja1JlYWR5U3RhdGVDaGFuZ2VkKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCB0cmFja0VuZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0cmFja011
dGVkQ2hhbmdlZCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tFbmFibGVkQ2hhbmdlZCgp
ID0gMDsKIH07CiAKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+LCBwdWJsaWMgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6T2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlPiBjcmVhdGUoUGFzc1JlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPik7Cisg
ICAgc3RhdGljIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4gY3JlYXRlKFJlZlB0cjxS
ZWFsdGltZU1lZGlhU291cmNlPiYmKTsKKyAgICBzdGF0aWMgUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlPiBjcmVhdGUoUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGNvbnN0IFN0
cmluZyYgaWQpOwogCiAgICAgdmlydHVhbCB+TWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoKTsKIAot
ICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQogICAgIGNvbnN0IFN0cmluZyYgbGFiZWwoKSBjb25zdDsKIAot
ICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKKyAgICBib29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0VuZGVkOyB9CiAKICAgICBib29sIG11dGVkKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRNdXRl
ZChib29sKTsKIAogICAgIGJvb2wgcmVhZG9ubHkoKSBjb25zdDsKICAgICBib29sIHJlbW90ZSgp
IGNvbnN0OwogCi0gICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9
CisgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuYWJsZWQ7IH0KICAgICB2
b2lkIHNldEVuYWJsZWQoYm9vbCk7CiAKLSAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6UmVhZHlTdGF0ZSk7Ci0gICAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhZHlT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7Ci0KICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+IGNsb25lKCk7CiAKICAgICBSZWFsdGltZU1lZGlhU291cmNlKiBzb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0U291cmNlKFBhc3NSZWZQ
dHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4pOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUg
dHlwZSgpIGNvbnN0OwogCi0gICAgZW51bSBTdG9wQmVoYXZpb3IgeyBTdG9wVHJhY2tBbmRTdG9w
U291cmNlLCBTdG9wVHJhY2tPbmx5IH07Ci0gICAgdm9pZCBzdG9wKFN0b3BCZWhhdmlvcik7Ci0g
ICAgYm9vbCBzdG9wcGVkKCkgY29uc3QgeyByZXR1cm4gbV9zdG9wcGVkOyB9Ci0gICAgCi0gICAg
dm9pZCBzZXRDbGllbnQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGVDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQorICAgIHZvaWQgZW5kVHJhY2soKTsKIAotICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OlR5cGUgdHlwZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q2xpZW50KE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0K
IAogICAgIGNvbnN0IFJlYWx0aW1lTWVkaWFTb3VyY2VTdGF0ZXMmIHN0YXRlcygpIGNvbnN0Owog
ICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzPiBjYXBhYmlsaXRpZXMo
KSBjb25zdDsKIAogICAgIFJlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiBjb25zdHJhaW50cygpIGNv
bnN0OwotICAgIHZvaWQgYXBwbHlDb25zdHJhaW50cyhQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWlu
dHM+KTsKKyAgICB2b2lkIGFwcGx5Q29uc3RyYWludHMoY29uc3QgTWVkaWFDb25zdHJhaW50cyYp
OwogCiAgICAgdm9pZCBjb25maWd1cmVUcmFja1JlbmRlcmluZygpOwogCi1wcm90ZWN0ZWQ6Citw
cml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKGNvbnN0IE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJik7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUoUGFzc1Jl
ZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPik7CisgICAgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUo
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIGNvbnN0IFN0cmluZyYgaWQpOwogCi1wcml2
YXRlOgogICAgIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7
IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgLy8gUmVhbHRpbWVNZWRpYVNvdXJjZU9ic2VydmVy
Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVJlYWR5U3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZVN0b3BwZWQoKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlTXV0ZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCB2b2lkIHNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCBib29sIG9ic2VydmVySXNFbmFibGVkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmly
dHVhbCBib29sIHByZXZlbnRTb3VyY2VGcm9tU3RvcHBpbmcoKSBvdmVycmlkZSBmaW5hbDsKICAg
ICAKICAgICBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4gbV9zb3VyY2U7CiAgICAgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGVDbGllbnQqIG1fY2xpZW50OwogICAgIFJlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPiBtX2NvbnN0cmFpbnRzOwotICAgIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWR5U3Rh
dGUgbV9yZWFkeVN0YXRlOwotICAgIG11dGFibGUgU3RyaW5nIG1faWQ7CiAKLSAgICBib29sIG1f
bXV0ZWQ7Ci0gICAgYm9vbCBtX2VuYWJsZWQ7Ci0gICAgYm9vbCBtX3N0b3BwZWQ7Ci0gICAgYm9v
bCBtX2lnbm9yZU11dGF0aW9uczsKKyAgICBTdHJpbmcgbV9pZDsKKyAgICBib29sIG1faXNFbmFi
bGVkOworICAgIGJvb2wgbV9pc0VuZGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU1lZGlhU291cmNlLmNwcAppbmRleCBiMjM2ZDkxLi4wYzQ1NjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlh
U291cmNlLmNwcApAQCAtMiw2ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDggKzQ1LDcgQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRp
bWVNZWRpYVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmkKICAg
ICA6IG1faWQoaWQpCiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbmFtZShuYW1lKQotICAg
ICwgbV9yZWFkeVN0YXRlKE5ldykKLSAgICAsIG1fZW5hYmxlZCh0cnVlKQorICAgICwgbV9zdG9w
cGVkKGZhbHNlKQogICAgICwgbV9tdXRlZChmYWxzZSkKICAgICAsIG1fcmVhZG9ubHkoZmFsc2Up
CiAgICAgLCBtX3JlbW90ZShmYWxzZSkKQEAgLTU0LDM2ICs1NCwxOCBAQCBSZWFsdGltZU1lZGlh
U291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwg
Y29uc3QgU3RyaQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9pZCA9IGNyZWF0ZUNhbm9u
aWNhbFVVSURTdHJpbmcoKTsKKworICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogfQogCiB2b2lk
IFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlc2V0KCkKIHsKLSAgICBtX3JlYWR5U3RhdGUgPSBOZXc7
Ci0gICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX3N0b3BwZWQgPSBmYWxzZTsKICAgICBtX211
dGVkID0gZmFsc2U7CiAgICAgbV9yZWFkb25seSA9IGZhbHNlOwogICAgIG1fcmVtb3RlID0gZmFs
c2U7CiB9CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0
YXRlIHJlYWR5U3RhdGUpCi17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBFbmRlZCB8fCBtX3Jl
YWR5U3RhdGUgPT0gcmVhZHlTdGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZWFkeVN0
YXRlID0gcmVhZHlTdGF0ZTsKLSAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2VydmVycy5i
ZWdpbigpOyBvYnNlcnZlciAhPSBtX29ic2VydmVycy5lbmQoKTsgKytvYnNlcnZlcikKLSAgICAg
ICAgKCpvYnNlcnZlciktPnNvdXJjZVJlYWR5U3RhdGVDaGFuZ2VkKCk7Ci0KLSAgICBpZiAobV9y
ZWFkeVN0YXRlID09IExpdmUpIHsKLSAgICAgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgLy8gVGhlcmUgYXJlIG5vIG1vcmUgY29uc3Vt
ZXJzIG9mIHRoaXMgc291cmNlJ3MgZGF0YSwgc2h1dCBpdCBkb3duIGFzIGFwcHJvcHJpYXRlLgot
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCi0gICAgICAgIHN0b3BQcm9kdWNpbmdEYXRh
KCk7Ci19Ci0KIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkT2JzZXJ2ZXIoUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFwcGVu
ZChvYnNlcnZlcik7CkBAIC0xMDYsNTEgKzg4LDQzIEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6c2V0TXV0ZWQoYm9vbCBtdXRlZCkKIAogICAgIG1fbXV0ZWQgPSBtdXRlZDsKIAotICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCisgICAgaWYgKHN0b3BwZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgZm9yIChhdXRvIG9ic2VydmVyID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgb2Jz
ZXJ2ZXIgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsrb2JzZXJ2ZXIpCi0gICAgICAgICgqb2JzZXJ2
ZXIpLT5zb3VyY2VNdXRlZENoYW5nZWQoKTsKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9v
YnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5zb3VyY2VNdXRlZENoYW5nZWQoKTsKIH0KIAot
dm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK2Jvb2wg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVhZG9ubHkoKSBjb25zdAogewotICAgIGlmICghZW5hYmxl
ZCkgewotICAgICAgICAvLyBEb24ndCBkaXNhYmxlIHRoZSBzb3VyY2UgdW5sZXNzIGFsbCBvYnNl
cnZlcnMgYXJlIGRpc2FibGVkLgotICAgICAgICBmb3IgKGF1dG8gb2JzZXJ2ZXIgPSBtX29ic2Vy
dmVycy5iZWdpbigpOyBvYnNlcnZlciAhPSBtX29ic2VydmVycy5lbmQoKTsgKytvYnNlcnZlcikg
ewotICAgICAgICAgICAgaWYgKCgqb2JzZXJ2ZXIpLT5vYnNlcnZlcklzRW5hYmxlZCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KKyAgICByZXR1cm4gbV9yZWFk
b25seTsKK30KIAotICAgIGlmIChtX2VuYWJsZWQgPT0gZW5hYmxlZCkKK3ZvaWQgUmVhbHRpbWVN
ZWRpYVNvdXJjZTo6c3RvcChPYnNlcnZlciogY2FsbGluZ09ic2VydmVyKQoreworICAgIGlmIChz
dG9wcGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZW5hYmxlZCA9IGVuYWJsZWQ7Cisg
ICAgbV9zdG9wcGVkID0gdHJ1ZTsKIAotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gRW5kZWQpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghZW5hYmxlZCkKLSAgICAgICAgc3RvcFByb2R1Y2lu
Z0RhdGEoKTsKLSAgICBlbHNlCi0gICAgICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAgIGZv
ciAoYXV0byBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7CisgICAgICAgIGlmIChvYnNlcnZlciAh
PSBjYWxsaW5nT2JzZXJ2ZXIpCisgICAgICAgICAgICBvYnNlcnZlci0+c291cmNlU3RvcHBlZCgp
OworICAgIH0KIAotICAgIGZvciAoYXV0byBvYnNlcnZlciA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7
IG9ic2VydmVyICE9IG1fb2JzZXJ2ZXJzLmVuZCgpOyArK29ic2VydmVyKQotICAgICAgICAoKm9i
c2VydmVyKS0+c291cmNlRW5hYmxlZENoYW5nZWQoKTsKKyAgICBzdG9wUHJvZHVjaW5nRGF0YSgp
OwogfQogCi1ib29sIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlYWRvbmx5KCkgY29uc3QKK3ZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVxdWVzdFN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZl
cikKIHsKLSAgICByZXR1cm4gbV9yZWFkb25seTsKLX0KKyAgICBpZiAoc3RvcHBlZCgpKQorICAg
ICAgICByZXR1cm47CiAKLXZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcCgpCi17Ci0gICAg
Ly8gVGhpcyBpcyBjYWxsZWQgZnJvbSB0aGUgdHJhY2suc3RvcCgpIG1ldGhvZCwgd2hpY2ggc2hv
dWxkICJQZXJtYW5lbnRseSBzdG9wIHRoZSBnZW5lcmF0aW9uIG9mIGRhdGEKLSAgICAvLyBmb3Ig
dHJhY2sncyBzb3VyY2UiLCBzbyBnbyBzdHJhaWdodCB0byBlbmRlZC4gVGhpcyB3aWxsIG5vdGlm
eSBhbnkgb3RoZXIgdHJhY2tzIHVzaW5nIHRoaXMgc291cmNlCi0gICAgLy8gdGhhdCBpdCBpcyBu
byBsb25nZXIgYXZhaWxhYmxlLgotICAgIHNldFJlYWR5U3RhdGUoRW5kZWQpOworICAgIGZvciAo
YXV0byBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKSB7CisgICAgICAgIGlmIChvYnNlcnZlci0+cHJl
dmVudFNvdXJjZUZyb21TdG9wcGluZygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBzdG9wKGNhbGxpbmdPYnNlcnZlcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVk
aWFTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
TWVkaWFTb3VyY2UuaAppbmRleCA0Zjk2MDFmLi43MDBmNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5o
CkBAIC01NiwxOCArNTYsMTYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigp
IHsgfQogICAgICAgICAKICAgICAgICAgLy8gU291cmNlIHN0YXRlIGNoYW5nZXMuCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VSZWFkeVN0YXRlQ2hhbmdlZCgpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHNvdXJjZVN0b3BwZWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzb3Vy
Y2VNdXRlZENoYW5nZWQoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VFbmFibGVk
Q2hhbmdlZCgpID0gMDsKIAogICAgICAgICAvLyBPYnNlcnZlciBzdGF0ZSBxdWVyaWVzLgotICAg
ICAgICB2aXJ0dWFsIGJvb2wgb2JzZXJ2ZXJJc0VuYWJsZWQoKSA9IDA7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBwcmV2ZW50U291cmNlRnJvbVN0b3BwaW5nKCkgPSAwOwogICAgIH07CiAKICAgICB2
aXJ0dWFsIH5SZWFsdGltZU1lZGlhU291cmNlKCkgeyB9CiAKICAgICBib29sIGlzQXVkaW9TdHJl
YW1Tb3VyY2UoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gQXVkaW87IH0KLSAgICB2aXJ0dWFs
IGJvb2wgdXNlSURGb3JUcmFja0lEKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIGNv
bnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKQEAgLTgwLDEyICs3OCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJp
bGl0aWVzPiBjYXBhYmlsaXRpZXMoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBSZWFs
dGltZU1lZGlhU291cmNlU3RhdGVzJiBzdGF0ZXMoKSA9IDA7CiAgICAgCi0gICAgZW51bSBSZWFk
eVN0YXRlIHsgTmV3ID0gMCwgTGl2ZSA9IDEsIEVuZGVkID0gMiB9OwotICAgIHZpcnR1YWwgUmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmFibGVkKGJvb2wpOworICAgIGJvb2wgc3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RvcHBlZDsgfQogCiAgICAgdmlydHVhbCBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9t
dXRlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKTsKQEAgLTEwMiw3ICs5NSw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRhKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgeyB9CiAKLSAgICB2b2lkIHN0b3Ao
KTsKKyAgICB2b2lkIHN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51bGxwdHIpOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3AoT2JzZXJ2ZXIqIGNhbGxpbmdPYnNlcnZlciA9IG51bGxwdHIp
OwogCiAgICAgdm9pZCByZXNldCgpOwogCkBAIC0xMTMsMTAgKzEwNyw5IEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIG1faWQ7CiAgICAgVHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAg
ICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBib29sIG1fc3RvcHBlZDsKICAgICBWZWN0
b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIAotICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJv
b2wgbV9tdXRlZDsKICAgICBib29sIG1fcmVhZG9ubHk7CiAgICAgYm9vbCBtX3JlbW90ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMv
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9vcGVud2VicnRjL1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJPd3IuY3Bw
CmluZGV4IDhlYmQ0MjkuLmEzYjU4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL29wZW53ZWJydGMvUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93ci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vb3BlbndlYnJ0Yy9S
ZWFsdGltZU1lZGlhU291cmNlQ2VudGVyT3dyLmNwcApAQCAtMTE1LDcgKzExNSw2IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0CiAgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiBh
dWRpb1NvdXJjZSA9IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OkF1ZGlvKTsKICAg
ICAgICAgaWYgKGF1ZGlvU291cmNlKSB7CiAgICAgICAgICAgICBhdWRpb1NvdXJjZS0+cmVzZXQo
KTsKLSAgICAgICAgICAgIGF1ZGlvU291cmNlLT5zZXRSZWFkeVN0YXRlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChhdWRpb1NvdXJj
ZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTI2LDcgKzEyNSw2IEBAIHZvaWQg
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlck93cjo6Y3JlYXRlTWVkaWFTdHJlYW0oUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbUNyZWF0CiAgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPiB2
aWRlb1NvdXJjZSA9IGZpcnN0U291cmNlKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlZpZGVvKTsKICAg
ICAgICAgaWYgKHZpZGVvU291cmNlKSB7CiAgICAgICAgICAgICB2aWRlb1NvdXJjZS0+cmVzZXQo
KTsKLSAgICAgICAgICAgIHZpZGVvU291cmNlLT5zZXRSZWFkeVN0YXRlKFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkxpdmUpOwogICAgICAgICAgICAgdmlkZW9Tb3VyY2VzLmFwcGVuZCh2aWRlb1NvdXJj
ZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNw
cAppbmRleCBjMzg2ZDgxLi44M2U4NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyLmNwcApA
QCAtMTc0LDcgKzE3NCw2IEBAIHZvaWQgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXI6OmNy
ZWF0ZU1lZGlhU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1DcmVhCiAKICAgICAgICAgUmVm
UHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IGF1ZGlvU291cmNlID0gaXQtPnZhbHVlOwogICAgICAg
ICBhdWRpb1NvdXJjZS0+cmVzZXQoKTsKLSAgICAgICAgYXVkaW9Tb3VyY2UtPnNldFJlYWR5U3Rh
dGUoUmVhbHRpbWVNZWRpYVNvdXJjZTo6TGl2ZSk7CiAgICAgICAgIGF1ZGlvU291cmNlcy5hcHBl
bmQoYXVkaW9Tb3VyY2UucmVsZWFzZSgpKTsKICAgICB9CiAKQEAgLTE5MCw3ICsxODksNiBAQCB2
b2lkIE1vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyOjpjcmVhdGVNZWRpYVN0cmVhbShQYXNz
UmVmUHRyPE1lZGlhU3RyZWFtQ3JlYQogCiAgICAgICAgIFJlZlB0cjxSZWFsdGltZU1lZGlhU291
cmNlPiB2aWRlb1NvdXJjZSA9IGl0LT52YWx1ZTsKICAgICAgICAgdmlkZW9Tb3VyY2UtPnJlc2V0
KCk7Ci0gICAgICAgIHZpZGVvU291cmNlLT5zZXRSZWFkeVN0YXRlKFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OkxpdmUpOwogICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHZpZGVvU291cmNlLnJlbGVh
c2UoKSk7CiAgICAgfQogICAgIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>