<?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>71123</bug_id>
          
          <creation_ts>2011-10-28 09:56:50 -0700</creation_ts>
          <short_desc>Implement TextTrackList and the textTracks attribute of HTMLMediaElement</short_desc>
          <delta_ts>2011-11-11 09:36:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>492502</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-10-28 09:56:50 -0700</bug_when>
    <thetext>http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#dom-media-texttracks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498372</commentid>
    <comment_count>1</comment_count>
      <attachid>114140</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 12:51:32 -0800</bug_when>
    <thetext>Created attachment 114140
Proposed patch

Uploaded so the EWS bots can point out problems in ports I can&apos;t build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498376</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2011-11-08 12:59:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/10414455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498461</commentid>
    <comment_count>3</comment_count>
      <attachid>114140</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-08 15:11:24 -0800</bug_when>
    <thetext>Comment on attachment 114140
Proposed patch

Patch doesn’t seem to apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498465</commentid>
    <comment_count>4</comment_count>
      <attachid>114164</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 15:24:38 -0800</bug_when>
    <thetext>Created attachment 114164
Updated to apply to TOT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498473</commentid>
    <comment_count>5</comment_count>
      <attachid>114164</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-08 15:38:01 -0800</bug_when>
    <thetext>Comment on attachment 114164
Updated to apply to TOT

Attachment 114164 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10374217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498522</commentid>
    <comment_count>6</comment_count>
      <attachid>114175</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 16:50:34 -0800</bug_when>
    <thetext>Created attachment 114175
Updated to compile when ENABLE_VIDEO_TRACK is not defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498587</commentid>
    <comment_count>7</comment_count>
      <attachid>114175</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 18:29:45 -0800</bug_when>
    <thetext>Comment on attachment 114175
Updated to compile when ENABLE_VIDEO_TRACK is not defined

Attachment 114175 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10376246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498597</commentid>
    <comment_count>8</comment_count>
      <attachid>114196</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 18:45:55 -0800</bug_when>
    <thetext>Created attachment 114196
One more time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498602</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 18:59:59 -0800</bug_when>
    <thetext>Attachment 114196 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/medi...&quot; exit_code: 1

Source/WebCore/bindings/js/JSTextTrackListCustom.cpp:47:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
Total errors found: 1 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498612</commentid>
    <comment_count>10</comment_count>
      <attachid>114196</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 19:34:02 -0800</bug_when>
    <thetext>Comment on attachment 114196
One more time.

Attachment 114196 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10375317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498620</commentid>
    <comment_count>11</comment_count>
      <attachid>114201</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 20:07:26 -0800</bug_when>
    <thetext>Created attachment 114201
YAP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498624</commentid>
    <comment_count>12</comment_count>
      <attachid>114201</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 20:34:45 -0800</bug_when>
    <thetext>Comment on attachment 114201
YAP

Attachment 114201 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10382104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498642</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-08 21:39:38 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 114201 [details])
&gt; Attachment 114201 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10382104

out/Release/obj/gen/webcore/bindings/V8HTMLTrackElement.cpp: In function &apos;v8::Handle&lt;v8::Value&gt; WebCore::HTMLTrackElementInternal::trackAttrGetter(v8::Local&lt;v8::String&gt;, const v8::AccessorInfo&amp;)&apos;:
out/Release/obj/gen/webcore/bindings/V8HTMLTrackElement.cpp:130: error: call of overloaded &apos;toV8(WTF::PassRefPtr&lt;WebCore::LoadableTextTrack&gt;)&apos; is ambiguous
out/Release/obj/gen/webkit/bindings/V8Event.h:72: note: candidates are: ...

HTMLTrackElement.idl didn&apos;t change, why does V8HTMLTrackElement.cpp no longer compile?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498653</commentid>
    <comment_count>14</comment_count>
      <attachid>114201</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 22:29:56 -0800</bug_when>
    <thetext>Comment on attachment 114201
YAP

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

&gt; Source/WebCore/html/HTMLTrackElement.cpp:154
&gt; +    return m_track;

Do you mean return m_track.release() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498955</commentid>
    <comment_count>15</comment_count>
      <attachid>114278</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-09 07:47:48 -0800</bug_when>
    <thetext>Created attachment 114278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499098</commentid>
    <comment_count>16</comment_count>
      <attachid>114278</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-09 10:05:15 -0800</bug_when>
    <thetext>Comment on attachment 114278
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2046
&gt; +PassRefPtr&lt;TextTrackList&gt; HTMLMediaElement::textTracks() const 

This probably wants to be a raw pointer return type.

&gt; Source/WebCore/html/HTMLMediaElement.h:249
&gt; +    enum InvalidUrlAction { DoNothing, Complain };

Url should be spelled URL.

&gt; Source/WebCore/html/HTMLTrackElement.cpp:157
&gt; +PassRefPtr&lt;TextTrack&gt; HTMLTrackElement::track()

This should probably return a raw pointer.

&gt; Source/WebCore/html/HTMLTrackElement.cpp:160
&gt; +    RefPtr&lt;TextTrack&gt; track = loadableTrack();
&gt; +    return track.release();

This can just be return loadableTrack();

&gt; Source/WebCore/html/HTMLTrackElement.h:77
&gt; +    // TextTrackLoadingClient

I think this is just a TextTrackClient now.

&gt; Source/WebCore/html/HTMLTrackElement.h:88
&gt; +    RefPtr&lt;ScriptExecutionContext&gt; m_context;

I am not sure you need to store this.  The Document associate with the element should be the ScriptExecutionContext to use.

&gt; Source/WebCore/html/LoadableTextTrack.h:47
&gt; +    virtual void loadingCompleted(LoadableTextTrack*, bool /* loadingFailed */) { }

Maybe didCompleteLoad()?

&gt; Source/WebCore/html/LoadableTextTrack.h:75
&gt; +    RefPtr&lt;ScriptExecutionContext&gt; m_context;

You should probably be able to get to this through the m_trackElement.

&gt; Source/WebCore/html/track/TextTrackList.h:31
&gt; +#include &quot;ActiveDOMObject.h&quot;

I don&apos;t think you use this anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499310</commentid>
    <comment_count>17</comment_count>
      <attachid>114355</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-09 13:32:23 -0800</bug_when>
    <thetext>Created attachment 114355
Updated to address Sam&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500072</commentid>
    <comment_count>18</comment_count>
      <attachid>114355</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-10 11:30:41 -0800</bug_when>
    <thetext>Comment on attachment 114355
Updated to address Sam&apos;s feedback.

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

r- because the JS marking stuff is not quite right. I&apos;m sorry this API turned out to be so complicated. Sam and I are working on making it better.

&gt; Source/WebCore/bindings/js/JSTextTrackListCustom.cpp:45
&gt; +    if (textTrackList-&gt;hasEventListeners())
&gt; +        return true;
&gt; +    if (jsTextTrackList-&gt;hasCustomProperties())
&gt; +        return true;

This is a memory leak. 

It is valid to say &quot;if (!x) return false&quot; here to optimize away a wrapper. But saying &quot;if (x) return true&quot; will cause a wrapper with custom properties or event listeners to be immortal.

&gt; Source/WebCore/bindings/js/JSTextTrackListCustom.cpp:47
&gt; +    return visitor.containsOpaqueRoot(root(textTrackList-&gt;owner()));

You also need a custom mark function that calls visitor.addOpaqueRoot(root(...)), so that, if this list is marked, it keeps the rest of the DOM alive, since the list has accessors to the rest of the DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500262</commentid>
    <comment_count>19</comment_count>
      <attachid>114565</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-10 14:08:07 -0800</bug_when>
    <thetext>Created attachment 114565
Addressing Geoff&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500363</commentid>
    <comment_count>20</comment_count>
      <attachid>114565</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-10 15:50:07 -0800</bug_when>
    <thetext>Comment on attachment 114565
Addressing Geoff&apos;s comments.

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

&gt; Source/WebCore/html/HTMLTrackElement.cpp:46
&gt; +    , m_track(0)

You don&apos;t have to initialize this since it is in a RefPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500848</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2011-11-11 09:36:02 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/99984</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114140</attachid>
            <date>2011-11-08 12:51:32 -0800</date>
            <delta_ts>2011-11-08 15:24:38 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_tracks_array_9.txt</filename>
            <type>text/plain</type>
            <size>77279</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTU3NikK
KysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
NiBAQAorMjAxMS0xMS0wOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgVGV4dFRyYWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0
cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTcxMTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLmh0bWwK
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgbmV3IGZpbGVzIGZvciBUZXh0VHJhY2tM
aXN0LgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDogRGl0dG8uCisgICAgICAgICogRGVy
aXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOiBE
aXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBU
YXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICog
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTVGV4dFRyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6
CisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOiBBZGQgVGV4dFRyYWNrTGlz
dCwgY29uZGl0aW9uYWwgb24gVklERU9fVFJBQ0suCisKKyAgICAgICAgKiBodG1sL0hUTUxBdWRp
b0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRl
Rm9ySlNDb25zdHJ1Y3Rvcik6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCk6IFVwZGF0ZSBmb3IgbV90ZXh0VHJhY2tz
IGNoYW5nZSBmcm9tCisgICAgICAgICAgICBnZW5lcmljIFZlY3RvciB0byBUZXh0VHJhY2tMaXN0
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
RG9jdW1lbnQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBjaGFuZ2UuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQpOiBBZGQgYSBwYXJhbWV0ZXIgc28g
Y2FsbGVyIGNhbiBzcGVjaWZ5IGlmCisgICAgICAgICAgICB0aGUgbWFpbiByZXNvdXJjZSBvciBh
IHRleHQgdHJhY2sgc2hvdWxkIGJlIGxvYWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKTogVXBkYXRlIHRvIGFsbG93IHRleHQgdHJhY2sgbG9h
ZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6
IERvbid0IGNhbGwgbG9hZFRleHRUcmFja3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwpOiBMb2cgd2hlbiBDU1AgZGVuaWVzIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5SW50ZXJuYWwpOiBVcGRhdGUgZm9y
IHNjaGVkdWxlTG9hZCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpwYXVzZUludGVybmFsKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjphZGRUcmFjayk6IFVwZGF0ZSBmb3IgbV90ZXh0VHJhY2tzIGNoYW5nZSBmcm9tCisgICAg
ICAgICAgICBnZW5lcmljIFZlY3RvciB0byBUZXh0VHJhY2tMaXN0LgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKTogTmV3LCBhZGQgdHJhY2sgdG8gbV90
ZXh0VHJhY2tzIGFuZCBjb25maWd1cmUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKTogTmV3LCBhZGQgY29tbWVudHMgYWJvdXQgd2hhdCB0
aGlzIHNob3VsZAorICAgICAgICAgICAgZG8gZXZlbnR1YWxseS4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MpOiBOZXcsIHJldHVybiBUZXh0VHJhY2tMaXN0
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCk6IEJh
aWwgaWYgcnVudGltZSBmZWF0dXJlIGlzIG5vdCBlbmFibGVkLCBzY2hlZHVsZQorICAgICAgICAg
ICAgYXN5bmNocm9ub3VzIHRleHQgdHJhY2sgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZCk6IE1pbm9yIGNsZWFudXAuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKTog
VXBkYXRlIGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGw6IEFkZCB0ZXh0
VHJhY2tzIGF0dHJpYnV0ZS4KKworICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6
IAorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6
IFVzZSBuZXcgbWVkaWFFbGVtZW50KCkgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
YWNrRWxlbWVudDo6d2lsbFJlbW92ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
YWNrRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IFdoZW4gJ3NyYycgaXMgY2hhbmdlZCwgY2Fs
bCBzY2hlZHVsZUxvYWQKKyAgICAgICAgICAgIGluc3RlYWQgb2YgSFRNTE1lZGlhRWxlbWVudAor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6aXNEZWZhdWx0KTogaGFzQXR0cmli
dXRlIC0+IGZhc3RIYXNBdHRyaWJ1dGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVt
ZW50Ojp0cmFjayk6IEFsbG9jYXRlIHRyYWNrIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6IE5ldywgdGVsbCB0aGUgdHJhY2sg
dG8gc2NoZWR1bGUgYSBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6
Y2FuTG9hZFVybCk6IE5ldywgY2hlY2sgc2VjdXJpdHkgcG9saWN5IHRvIHNlZSBpZiBpdCBpcyBP
SworICAgICAgICAgICAgdG8gbG9hZCBhIHRleHQgdHJhY2suIElmIHNvLCBkaXNwYXRjaCAnYmVm
b3JlbG9hZCcgZXZlbnQgdG8gZ2l2ZSBpdCBhIGNoYW5jZSB0byBkaXNhbGxvdworICAgICAgICAg
ICAgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OmxvYWRpbmdDb21w
bGV0ZWQpOiBSZW5hbWVkIGZyb20gdGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKTog
TmV3LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50IGludGVyZmFjZQorICAgICAgICAgICAgdXNlZCB0
byBpbmZvcm0gcGFyZW50IG9mIFRleHRUcmFjayBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1
ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4
dFRyYWNrUmVtb3ZlQ3VlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVt
ZW50OjptZWRpYUVsZW1lbnQpOiBOZXcsIHJldHVybiBwYXJlbnQgZWxlbWVudC4KKyAgICAgICAg
KiBodG1sL0hUTUxUcmFja0VsZW1lbnQuaDoKKworICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0
VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxl
VGV4dFRyYWNrKTogSW5pdGlhbGl6ZSBuZXcgaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAo
V2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZCk6IE5ldywgcHJpbWUgYSB0
aW1lciB0byBraWNrIG9mZiBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0
VHJhY2s6OmxvYWRUaW1lckZpcmVkKTogQ2FuY2VsIGN1cnJlbnQgbG9hZCwgaWYgYW55LCBjaGVj
ayB0byBzZWUgaWYKKyAgICAgICAgICAgIG5ldyB1cmwgaXMgYWxsb3dlZCB0byBsb2FkLCBhbmQg
c3RhcnQgbmV3IGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3Vl
TG9hZGluZ0NvbXBsZXRlZCk6IAorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50Ojp+TG9hZGFibGVUZXh0
VHJhY2tDbGllbnQpOiBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50IC0+IExvYWRhYmxlVGV4dFRyYWNr
Q2xpZW50CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6Y2FuTG9h
ZFVybCk6IAorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tDbGllbnQ6OmxvYWRp
bmdDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0
ZSk6CisKKyAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2s6OlRleHRUcmFjayk6CisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xpZW50KToKKworICAgICAgICAqIGh0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjphZGQp
OiBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IGJyZWFrcyB0aGUgT1MgWCBidWls
ZC4KKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHA6IEFkZGVkLiBJbXBs
ZW1lbnQgdGhlIFRleHRUcmFja0xpc3Qgb2JqZWN0LgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
VGV4dFRyYWNrTGlzdCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojp+VGV4dFRyYWNrTGlzdCk6
CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpsZW5ndGgpOgorICAgICAgICAoVGV4dFRyYWNrTGlz
dDo6aXRlbSk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjphcHBlbmQpOgorICAgICAgICAoVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5h
bWUpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6c2NoZWR1bGVBZGRUcmFja0V2ZW50KToKKyAg
ICAgICAgKFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Ojpj
bGVhck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6Om93bmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmRlcmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrTGlzdDo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0xpc3Q6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgICogaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmlkbDogQWRkZWQuCisKKyAgICAgICAgKiBsb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6Y2FuY2Vs
TG9hZCk6IE5ldywgY2FuY2VsIHBlbmRpbmcgb3IgaW4gcHJvZ3Jlc3MgbG9hZCBhbmQgZGVsZXRl
IGxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bm90aWZ5RmluaXNo
ZWQpOiBDYWxsIGNhbmNlbExvYWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6
OmxvYWQpOiBEaXR0by4KKyAgICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmg6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBBZGQgVGV4dFRyYWNrTGlzdC4KKwogMjAxMS0xMS0w
OCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFtFeHRlbnNpb24gQVBJXVtDaHJvbWl1bV0gaW5qZWN0ZWQgZXh0ZW5zaW9uIEFQ
SSBuZWVkcyB0byByZXR1cm4gYW4gb2JqZWN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gOTk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMzAxLDYgKzMwMSw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwv
Y2FudmFzL1VpbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAK
KyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgaHRtbC90cmFjay9UcmFja0V2
ZW50LmlkbAogCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTIwNTcs
NiArMjA1OCw3IEBAIElGIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwvVGV4dFRy
YWNrQ3VlLmNwcAogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUluZGV4LmNwcAogICAgICAgICBo
dG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAgICAgICAgIGh0bWwvdHJh
Y2svVHJhY2tFdmVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA5OTU3NikKKysrIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0
MSw3IEBACiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNr
Q3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3QuY3BwIgorI2luY2x1ZGUgIkpT
VGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50LmNwcCIKICNlbmRpZgog
I2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIERPTV9DTEFTU0VTID0gXAog
ICAgIFRleHRUcmFjayBcCiAgICAgVGV4dFRyYWNrQ3VlIFwKICAgICBUZXh0VHJhY2tDdWVMaXN0
IFwKKyAgICBUZXh0VHJhY2tMaXN0IFwKICAgICBUaW1lUmFuZ2VzIFwKICAgICBUb3VjaCBcCiAg
ICAgVG91Y2hFdmVudCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lv
biA5OTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBj
b3B5KQpAQCAtNTkwLDYgKzU5MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19U
UkFDSz0xKSAKICAgICBodG1sL1RleHRUcmFjay5pZGwgXAogICAgIGh0bWwvVGV4dFRyYWNrQ3Vl
LmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCisgICAgaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTk1NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01MDQs
NiArNTA0LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTVGV4dFRyYWNrQ3VlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0
VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1
ZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0xpc3QuY3BwIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNUaW1lUmFuZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUb3VjaC5jcHAgXApA
QCAtODUwLDYgKzg1Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNo
TGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0
b20uY3BwIFwKQEAgLTE5ODAsNiArMTk4Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZVJhbmdlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gOTk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC0xODk1LDYgKzE4OTUsNyBAQCBIRUFERVJTICs9IFwKICAgICBo
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmggXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmggXAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggXAorICAg
IGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIFwKICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5o
IFwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRQ
YXJzZXIuaCBcCkBAIC0zNTYyLDYgKzM1NjMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
VklERU9fVFJBQ0s9MSkgCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNw
cCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogICAgICAgICAg
ICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAorICAgICAgICAgICAgYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgIH0KIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQkocmV2aXNpb24gOTk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNzIsNiArMTM3Miw3IEBACiAgICAgICAgICAgICAnaHRtbC9j
YW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZh
cy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52
YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLApAQCAtMTkzNiw2ICsx
OTM3LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUcmFj
a0N1c3RvbS5jcHAnLApAQCAtNTc4Niw2ICs1Nzg4LDcgQEAKICAgICAgICAgICAgICdodG1sL3No
YWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmgnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk5NTc2KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDEsMTIgKzEwMSwxNyBAQAogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyog
TWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzUzODYw
MjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwogCQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmgg
Ki87IH07Ci0JCTA3Njg5RDZFMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2ODlE
NkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CisJCTA3
Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJD
RiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi87
IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaCAqLzsgfTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0
MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJh
Y2tFdmVudC5oICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1
c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4
NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKIAkJMDdCMDEx
M0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0IwMTEzRTEwMzIyNDIy
MDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLzsgfTsKKwkJMDdCNUEy
REIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0Ug
LyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNF
IC8qIEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5o
ICovOyB9OworCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovOyB9
OworCQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2
ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQkwODA2RTU3
QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0
cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjIx
MjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oICovOyB9Owog
CQkwODBFNDkyODEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MEU0OTI0
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oICovOyB9OwpA
QCAtNzExMyw3ICs3MTE4LDggQEAKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlh
UGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5
ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Njg5RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNr
RXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNU
cmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2OTcw
ODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tFdmVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTIyLDYgKzcxMjgsMTEgQEAKIAkJMDc5RjVFNEIw
RjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRdWlj
a1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZWRpYUNvbnRyb2xzUXVpY2tU
aW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCMDExM0UxMDMyMjQyMjAw
RkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJh
Y2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEyREExNDY0MzIw
QTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1RleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8qIFRleHRUcmFja0xpc3QuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tFdmVudEN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVD
RSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2Vs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdp
bmVCYXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4MDEsNiArMTc4
MTIsOCBAQAogCQkJCTA3MDc1NkQ4MTQyMzlCNEIwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZS5o
ICovLAogCQkJCTA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwICovLAogCQkJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxp
c3QuaCAqLywKKwkJCQkwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0
LmNwcCAqLywKKwkJCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0
LmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAg
Ki8sCiAJCQkJRTQ0NjE0MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5oICovLAog
CQkJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovLApAQCAt
MTg0ODksNiArMTg1MDIsOSBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3Njk3MDg0
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLywKKwkJCQkwNzY5NzA4NTE0
NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovLAorCQkJCTA3QjVBMzA2MTQ2ODUz
NzEwMEE4MUVDRSAvKiBUZXh0VHJhY2tMaXN0LmlkbCAqLywKIAkJCQkwNzAzMzREODE0NUEwMDZG
MDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLywKIAkJCQkwNzAzMzRENjE0NTlGRkQ1MDA4RDhE
NDUgLyogVHJhY2tCYXNlLmggKi8sCiAJCQkJMDcwMzM0RDAxNDU5RkZBQzAwOEQ4RDQ1IC8qIFRy
YWNrRXZlbnQuY3BwICovLApAQCAtMTk1NjMsNyArMTk1NzksNiBAQAogCQlCQzRFREVGNzBDMDhG
NDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQlBODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzI3NUNCMjExQzVFODVDMDBDOTIwNkMgLyogSlNBcnJheUJ1
ZmZlckN1c3RvbS5jcHAgKi8sCiAJCQkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJy
YXlCdWZmZXJWaWV3SGVscGVyLmggKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8q
IEpTQXR0ckN1c3RvbS5jcHAgKi8sCkBAIC0xOTY1OSw2ICsxOTY3NCw3IEBACiAJCQkJQkNCNzcz
NjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3
NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJ
CQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCisJ
CQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAg
Ki8sCiAJCQkJRTFBRDEyRDUxMjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0
aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcy
RkNGMDAwQzRDRDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICovLApAQCAtMTk2
NzIsOSArMTk2ODgsMTAgQEAKIAkJCQkwOEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdM
ZW5ndGhDdXN0b20uY3BwICovLAogCQkJCUIyQzk2RDhDMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwICovLAogCQkJCTFBMkM0MEFBMERFQjU1QUEwMDVBRjE5RSAvKiBK
U1RleHRDdXN0b20uY3BwICovLAorCQkJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJCTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAv
KiBKU1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyog
SlNUcmFja0N1c3RvbS5oICovLAotCQkJCTA3Njg5RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1Ry
YWNrRXZlbnRDdXN0b20uY3BwICovLAorCQkJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBK
U1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3OSAv
KiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc3MTA1MDhEOUMwMDA5OUZB
QiAvKiBKU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAw
OTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCkBAIC0yNDYzMyw2ICsyNDY1MCw4
IEBACiAJCQkJMzE2OTM3OUMxNDYwOUM2QzAwQzAxMzYyIC8qIERyYWdTZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIxNDY4NjIyNTAwNUU5M0I0IC8qIFNl
Y3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc2OTcwODcxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QjVBMkRDMTQ2NDMy
MEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0
OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI3
NDg0LDcgKzI3NTAzLDYgQEAKIAkJCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tC
YXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDMzNEU5MTQ1QTFGMzYwMDhEOEQ0NSAvKiBK
U1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3ODQ2MzQyMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc2ODlENkUxNDVC
NTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkyRDhGRUJEQzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMDhGODU5RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0Fz
cGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ5Miw3ICsyNzUxMCwxMSBA
QAogCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRl
eHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgx
RUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0I1QTMwRDE0
Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTA3QkRENkVDMTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZl
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpA
QCAtNDA5LDEyICs0MDksMTUgQEAgZW5kaWYKIGlmIEVOQUJMRV9WSURFT19UUkFDSwogd2Via2l0
Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0L1dlYktpdERPTVRleHRUcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWUuaCBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0Lmgg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVHJhY2tF
dmVudC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNl
cy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTVRleHRUcmFja1ByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dl
YktpdERPTVRleHRUcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0
RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktp
dERPTVRleHRUcmFja0N1ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01U
ZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01U
ZXh0VHJhY2tDdWVMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFj
dG9yeS5jcHAJKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDYgKzE2MSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtp
dC9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktp
dERPTVRleHRUcmFja0xpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRl
eHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVHJhY2tFdmVudFBy
aXZhdGUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA5OTU3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzOCw2ICsxMzgsNyBAQAogI2luY2x1ZGUgIkpTU3R5bGVTaGVldEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0Q3VzdG9t
LmNwcCIKKyNpbmNsdWRlICJKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
VG91Y2hDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0Q3VzdG9tLmNwcCIKICNpbmNs
dWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9v
bCBKU1RleHRUcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU1RleHRUcmFja0xpc3QqIGpzVGV4dFRyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEpT
VGV4dFRyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgaWYgKCFqc1RleHRU
cmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PFRl
eHRUcmFja0xpc3QqPihqc1RleHRUcmFja0xpc3QtPmltcGwoKSktPm93bmVyKCkpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluCShyZXZpc2lvbiA5OTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAgUGVlckNv
bm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVE
X1dPUktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1RleHRUcmFja0xp
c3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25kaXRpb25hbD1XRUJfU09D
S0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBSZXF1ZXN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NTc2KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRp
b0VsCiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBpZiAoIXNyYy5pc051bGwo
KSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAgIGF1ZGlvLT5zY2hlZHVs
ZUxvYWQoKTsKKyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1MTWVkaWFFbGVtZW50OjpN
ZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJlbGVhc2UoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gOTk1
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJU
ZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgogI2luY2x1ZGUgIlVVSUQu
aCIKICNpbmNsdWRlICJVaW50OEFycmF5LmgiCkBAIC0yMjQsOSArMjI1LDEzIEBAIEhUTUxNZWRp
YUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVy
Rm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnVu
cmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKICAgICBkb2N1bWVudCgpLT51
bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwor
ICAgIGlmIChtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigp
OwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENs
aWVudCgwKTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3Rl
eHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAg
LTI2OCw3ICsyNzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQo
CiAgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgLy8gVHJpZ2dlciBhIHJl
bG9hZCwgYXMgbG9uZyBhcyB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIHByZXNlbnQuCiAgICAgICAg
IGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNjaGVk
dWxlTG9hZCgpOworICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogICAg
IH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29udHJvbHNBdHRyKQogICAgICAgICBjb25maWd1cmVN
ZWRpYUNvbnRyb2xzKCk7CiB9CkBAIC0zODEsMTAgKzM4NiwxMCBAQCBSZW5kZXJPYmplY3QqIEhU
TUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlCiAgCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVkRnJvbURvY3VtZW50Iik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9j
dW1lbnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbV9u
ZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7Cisg
ICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTQyMywxNyArNDI4LDI2IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKICAgICAgICAgcmVuZGVyZXIoKS0+
dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZUxvYWQoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoTG9hZFR5cGUgbG9h
ZFR5cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2Fk
Iik7CisKKyAgICBpZiAoKGxvYWRUeXBlICYgTWVkaWFSZXNvdXJjZSkgJiYgIShtX3BlbmRpbmdM
b2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSkgewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9S
X1ZJREVPKQotICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKKyAgICAgICAgY3JlYXRlTWVk
aWFQbGF5ZXJQcm94eSgpOwogI2VuZGlmCisgICAgICAgIAorICAgICAgICBwcmVwYXJlRm9yTG9h
ZCgpOworICAgICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKKyAgICB9
CiAKLSAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IHByZXBhcmVGb3JMb2FkKCk7Ci0gICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobG9hZFR5cGUgJiBUZXh0VHJhY2tSZXNvdXJj
ZSkKKyAgICAgICAgbV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRUcmFja1Jlc291cmNlOworI2Vu
ZGlmCisKKyAgICBpZiAoIW1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbG9hZFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZU5leHRTb3VyY2VDaGlsZCgpCkBAIC00NzQsMTAgKzQ4OCwxOSBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmFzeW5jRXZlbnRUaW1lckZpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRp
bWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewotICAgIGlmIChtX2xvYWRTdGF0
ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCi0gICAgICAgIGxvYWROZXh0U291cmNlQ2hp
bGQoKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRJbnRlcm5hbCgpOworICAgIGlmIChtX3BlbmRp
bmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSB7CisgICAgICAgIGlmIChtX2xvYWRTdGF0ZSA9
PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCisgICAgICAgICAgICBsb2FkTmV4dFNvdXJjZUNo
aWxkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvYWRJbnRlcm5hbCgpOworICAgIH0K
KworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9wZW5kaW5nTG9hZEZsYWdzICYg
VGV4dFRyYWNrUmVzb3VyY2UpCisgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKKyNlbmRp
ZgorCisgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKIH0KIAogUGFzc1JlZlB0cjxNZWRpYUVy
cm9yPiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApAQCAtNjMzLDkgKzY1Niw2IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKICAgICByZW1vdmVCZWhhdmlv
clJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pOwog
CiAgICAgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBsb2FkVGV4dFRyYWNrcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2VsZWN0TWVkaWFSZXNvdXJjZSgpCkBAIC04MzcsMjggKzg1Nyw2IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnMKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRleHRUcmFja3MoKQotewotICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0
cmFja1RhZykpCi0gICAgICAgICAgICBsb2FkTmV4dFRleHRUcmFjayhzdGF0aWNfY2FzdDxIVE1M
VHJhY2tFbGVtZW50Kj4obm9kZSkpOwotICAgIH0KLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkTmV4dFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKLXsKLSAgICAvLyBG
SVhNRSg3MTEyNCk6IFRoaXMgc2hvdWxkIHNjaGVkdWxlIGFuICphc3luY2hyb25vdXMqIGxvYWQu
Ci0gICAgdHJhY2stPmxvYWQoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHRoaXMpOwotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrLT50cmFj
aygpOwotICAgIGlmICh0ZXh0VHJhY2spCi0gICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQodGV4
dFRyYWNrLnJlbGVhc2UoKSk7Ci0gICAgCi0gICAgLy8gRklYTUUoNzExMjMpOiBTZXQgdGhlIHRl
eHQgdHJhY2sgbW9kZSBhY2NvcmRpbmdseS4KLX0KLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0
ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKQogewogICAgIC8vIEZJWE1FKDYy
ODg1KTogSW1wbGVtZW50LgpAQCAtODY5LDExICs4NjcsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja01vZGVDaGFuCiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKQot
ewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotfQotCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCopIAogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODk2LDcgKzg4OSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3UKIAogI2VuZGlmCiAK
LWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwg
SW52YWxpZFNvdXJjZUFjdGlvbiBhY3Rpb25JZkludmFsaWQpCitib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRVcmxBY3Rpb24gYWN0
aW9uSWZJbnZhbGlkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJl
Y2F1c2UgdXJsIGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7
CkBAIC05MTEsOCArOTA0LDEwIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2Fk
VVJMKGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZG9jdW1lbnQo
KS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCisg
ICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZy
b21Tb3VyY2UodXJsKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojpp
c1NhZmVUb0xvYWRVUkwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
IiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjcwLDcgKzE2NjUsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAvLyA0LjguMTAuOS4g
UGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29y
a1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAg
ICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAKICAgICBpZiAoZW5kZWRQbGF5YmFjaygp
KSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwpAQCAtMTcwOSw3ICsxNzA0LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45
LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAg
ICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAgIG1fYXV0b3BsYXlpbmcgPSBm
YWxzZTsKICAgICAKQEAgLTE5OTAsNDAgKzE5ODUsMTA2IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1l
bnQ6OnBlcmNlbnRMb2FkZWQoKSAKIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVt
ZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNv
bnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNr
ID0gVGV4dFRyYWNrOjpjcmVhdGUodGhpcywga2luZCwgbGFiZWwsIGxhbmd1YWdlKTsKLSAgICBt
X3RleHRUcmFja3MuYXBwZW5kKHRleHRUcmFjayk7CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFj
ayk7CiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykK
K3sKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykKKyAgICAgICAgbV90ZXh0VHJhY2tzID0gVGV4dFRy
YWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKKyAgICBtX3RleHRUcmFja3MtPmFwcGVuZCh0cmFjayk7CisKKyAgICBjb25maWd1
cmVUZXh0VHJhY2tzKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4
dFRyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0LjguMTAuMTIuMyBT
b3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIAorICAgIC8vIFdoZW4gYSB0ZXh0
IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gYSB0cmFjayBlbGVtZW50IGlzIGFkZGVkIHRvIGEgbWVk
aWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MsCisgICAgLy8gdGhlIHVzZXIgYWdlbnQg
bXVzdCBzZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBhcHByb3ByaWF0ZWx5LCBhcyBkZXRlcm1pbmVk
IGJ5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgICAKKyAgICAvLyAqIElmIHRoZSB0ZXh0
IHRyYWNrIGtpbmQgaXMgc3VidGl0bGVzIG9yIGNhcHRpb25zIGFuZCB0aGUgdXNlciBoYXMgaW5k
aWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmluZyBhCisgICAgLy8gdHJhY2sgd2l0aCB0aGlzIHRl
eHQgdHJhY2sga2luZCwgdGV4dCB0cmFjayBsYW5ndWFnZSwgYW5kIHRleHQgdHJhY2sgbGFiZWwg
ZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vCisgICAgLy8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUg
bWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2lu
ZCBvZiBlaXRoZXIgc3VidGl0bGVzCisgICAgLy8gb3IgY2FwdGlvbnMgd2hvc2UgdGV4dCB0cmFj
ayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAqIElmIHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgZGVz
Y3JpcHRpb25zIGFuZCB0aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmlu
ZyB0ZXh0IAorICAgIC8vIGRlc2NyaXB0aW9ucyB3aXRoIHRoaXMgdGV4dCB0cmFjayBsYW5ndWFn
ZSBhbmQgdGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4
dCAKKyAgICAvLyB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFj
a3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBkZXNjcmlwdGlvbnMgd2hvc2UgdGV4dCAKKyAg
ICAvLyB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sg
bW9kZSBiZSBzaG93aW5nLgorICAgIC8vICAgIElmIHRoZXJlIGlzIGEgdGV4dCB0cmFjayBpbiB0
aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hvc2UgdGV4dCB0cmFjayBt
b2RlIGlzIHNob3dpbmcgCisgICAgLy8gICAgYnkgZGVmYXVsdCwgdGhlIHVzZXIgYWdlbnQgbXVz
dCBmdXJ0aGVybW9yZSBjaGFuZ2UgdGhhdCB0ZXh0IHRyYWNrJ3MgdGV4dCB0cmFjayBtb2RlIHRv
IGhpZGRlbi4KKyAgICAKKyAgICAvLyAqIElmIHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgY2hhcHRl
cnMgYW5kIHRoZSB0ZXh0IHRyYWNrIGxhbmd1YWdlIGlzIG9uZSB0aGF0IHRoZSB1c2VyIGFnZW50
IGhhcyByZWFzb24KKyAgICAvLyB0byBiZWxpZXZlIGlzIGFwcHJvcHJpYXRlIGZvciB0aGUgdXNl
ciwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQn
cyBsaXN0IG9mCisgICAgLy8gdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBj
aGFwdGVycyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAgIC8vICAgIExldCB0
aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCisgICAgCisgICAgLy8gKiBJZiB0aGUgdHJh
Y2sgZWxlbWVudCBoYXMgYSBkZWZhdWx0IGF0dHJpYnV0ZSBzcGVjaWZpZWQsIGFuZCB0aGVyZSBp
cyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYQorICAgIC8vIGVsZW1lbnQncyBsaXN0
IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nIG9yIHNob3dp
bmcgYnkgZGVmYXVsdAorICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dp
bmcgYnkgZGVmYXVsdC4KKyAgICAKKyAgICAvLyBPdGhlcndpc2UKKyAgICAvLyAgICBMZXQgdGhl
IHRleHQgdHJhY2sgbW9kZSBiZSBkaXNhYmxlZC4KKyAgICAKKyAgICAvLyBGSVhNRSg3MTEyMyk6
IFVudGlsIHRoZSBhYm92ZSBsb2dpYyBoYXMgYmVlbiBpbXBsZW1lbnRlZCwganVzdCB0ZWxsIGFs
bCB0ZXh0IHRyYWNrcyB0byBsb2FkLgorICAgIGZvciAoTm9kZSogbm9kZSA9IGZpcnN0Q2hpbGQo
KTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKG5vZGUt
Pmhhc1RhZ05hbWUodHJhY2tUYWcpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFRyYWNr
RWxlbWVudCo+KG5vZGUpLT5zY2hlZHVsZUxvYWQoKTsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8
VGV4dFRyYWNrTGlzdD4gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIGNvbnN0IAogewor
ICAgIHJldHVybiBtX3RleHRUcmFja3M7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJh
Y2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit7CisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm47CisKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1l
KHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0
dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNr
VGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6
OnRyYWNrV2FzQWRkZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCku
ZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKLSAgICBsb2FkTmV4dFRleHRUcmFjayh0cmFjayk7CisK
KyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAg
IC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhl
IG5ldyBwYXJlbnQgaXMgYSBtZWRpYSBlbGVtZW50LCAKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFn
ZW50IG11c3QgYWRkIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0IHRyYWNr
IHRvIHRoZSAKKyAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyAuLi4g
W2NvbnRpbnVlcyBpbiBUZXh0VHJhY2tMaXN0OjphcHBlbmRdCisgICAgUmVmUHRyPFRleHRUcmFj
az4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOworICAgIGlmICghdGV4dFRyYWNr
KQorICAgICAgICByZXR1cm47CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjayk7ICAgIAorICAg
IHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJjZSk7CiB9CiAgCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKK3ZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFja0VsZW1lbnQqIHRy
YWNrRWxlbWVudCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdO
YW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRy
YWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgotfQogCi12b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRyYWNrU291cmNlQ2hhbmdlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKLXsKLSNpZiAh
TE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAg
ICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsK
LSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tTb3VyY2VDaGFuZ2Vk
IC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
fQotI2VuZGlmCi0gICAgbG9hZE5leHRUZXh0VHJhY2sodHJhY2spOworICAgIFJlZlB0cjxUZXh0
VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKKyAgICBpZiAoIXRleHRU
cmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0
LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyBXaGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVu
dCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdhcyBhIG1lZGlhIGVsZW1lbnQs
IAorICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1vdmUgdGhlIHRyYWNrIGVsZW1l
bnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUgCisgICAgLy8gbWVkaWEgZWxl
bWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCisgICAgbV90ZXh0VHJhY2tzLT5yZW1vdmUodGV4
dFRyYWNrKTsKIH0KICNlbmRpZgogCkBAIC0yMDQyLDcgKzIxMDMsNyBAQCBib29sIEhUTUxNZWRp
YUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyCiAgICAgcmV0dXJuIG5leHRVUkwuaXNWYWxpZCgp
OwogfQogCi1LVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250
ZW50VHlwZSAqY29udGVudFR5cGUsIEludmFsaWRTb3VyY2VBY3Rpb24gYWN0aW9uSWZJbnZhbGlk
KQorS1VSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5
cGUgKmNvbnRlbnRUeXBlLCBJbnZhbGlkVXJsQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNp
ZiAhTE9HX0RJU0FCTEVECiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVk
IHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBA
IC0yMTU0LDcgKzIyMTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVk
KEhUCiAgICAgLy8gYXR0cmlidXRlIGFuZCB3aG9zZSBuZXR3b3JrU3RhdGUgaGFzIHRoZSB2YWx1
ZSBORVRXT1JLX0VNUFRZLCB0aGUgdXNlciBhZ2VudCBtdXN0IGludm9rZSAKICAgICAvLyB0aGUg
bWVkaWEgZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0uCiAgICAgaWYgKG5l
dHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpIHsKLSAgICAg
ICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgSFRN
TFRyYWNrRWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwog
Y2xhc3MgS1VSTDsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xh
c3MgVWludDhBcnJheTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTg5
LDcgKzkwLDExIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7CisgICAgZW51bSBMb2Fk
VHlwZSB7CisgICAgICAgIE1lZGlhUmVzb3VyY2UgPSAxIDw8IDAsCisgICAgICAgIFRleHRUcmFj
a1Jlc291cmNlID0gMSA8PCAxCisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChMb2FkVHlw
ZSk7CiAgICAgCiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgp
IGNvbnN0OwogICAgIApAQCAtMTgxLDkgKzE4NiwyMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRyYWNrKGNvbnN0IFN0
cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCA9ICIiLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlID0gIiIpOworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gdGV4dFRyYWNrcygpIGNv
bnN0OworCisgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKKwog
ICAgIHZpcnR1YWwgdm9pZCB0cmFja1dhc0FkZGVkKEhUTUxUcmFja0VsZW1lbnQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgdHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdHJhY2tTb3VyY2VDaGFuZ2VkKEhUTUxUcmFja0VsZW1lbnQqKTsKKworICAg
IC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRl
Q2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5n
ZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRy
YWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sq
LCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKQEAgLTIzMCw2ICsyNDYsOSBAQCBwdWJsaWM6CiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2VuZGlmCiAKKyAgICBlbnVt
IEludmFsaWRVcmxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07CisgICAgYm9vbCBpc1Nh
ZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVcmxBY3Rpb24pOworCiBwcm90ZWN0ZWQ6
CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
ICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0zNDksMjMgKzM2OCwxMSBAQCBw
cml2YXRlOgogICAgIHZvaWQgd2FpdEZvclNvdXJjZUNoYW5nZSgpOwogICAgIHZvaWQgcHJlcGFy
ZVRvUGxheSgpOwogCi0gICAgZW51bSBJbnZhbGlkU291cmNlQWN0aW9uIHsgRG9Ob3RoaW5nLCBD
b21wbGFpbiB9OwotICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmLCBJbnZhbGlk
U291cmNlQWN0aW9uKTsKLSAgICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlw
ZSosIEludmFsaWRTb3VyY2VBY3Rpb24pOworICAgIEtVUkwgc2VsZWN0TmV4dFNvdXJjZUNoaWxk
KENvbnRlbnRUeXBlKiwgSW52YWxpZFVybEFjdGlvbik7CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdG
YWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0gICAgdm9pZCBsb2FkVGV4dFRyYWNrcygpOwotICAgIHZvaWQgbG9hZE5leHRUZXh0VHJh
Y2soSFRNTFRyYWNrRWxlbWVudCopOwotCi0gICAgLy8gVGV4dFRyYWNrQ2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7Ci0gICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
KiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
UmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdm9p
ZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlICJpbnRlcm5h
bCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgpAQCAt
NDcxLDYgKzQ3OCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7
CiAgICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lV2FsbENsb2NrVXBkYXRlVGltZTsKICAg
ICBtdXRhYmxlIGRvdWJsZSBtX21pbmltdW1XYWxsQ2xvY2tUaW1lVG9DYWNoZU1lZGlhVGltZTsK
KyAgICAKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRpbmdMb2FkRmxhZ3M7CisgICAgUGVuZGlu
Z0xvYWRGbGFncyBtX3BlbmRpbmdMb2FkRmxhZ3M7CiAKICAgICBib29sIG1fcGxheWluZyA6IDE7
CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA6IDE7CkBAIC01MTQsNyAr
NTI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrczsKKyAgICBSZWZQdHI8VGV4
dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTEz
LDYgKzExMyw3IEBAIG1vZHVsZSBodG1sIHsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1ZJREVPX1RS
QUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRW
aWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3RyaW5nIGtpbmQsIGluIFtPcHRp
b25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYW5ndWFnZSk7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJh
Y2tdIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKICNlbmRpZgogfTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gOTk1NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw2ICs0OSw4IEBAIGlubGluZSBIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tFbGVtZW4K
IAogSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQogeworICAgIGlmIChtX3Ry
YWNrKQorICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgpOwogfQogCiBQYXNzUmVmUHRyPEhU
TUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01OSwxNiArNjEsMTYgQEAgUGFz
c1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbAogdm9pZCBIVE1MVHJhY2tFbGVt
ZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKIHsKICAgICBIVE1MRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvVHJlZShkZWVwKTsKLSAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50
KCk7Ci0gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFFbGVtZW50KCkpCi0gICAgICAg
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpLT50cmFja1dhc0Fk
ZGVkKHRoaXMpOworCisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxl
bWVudCgpKQorICAgICAgICBwYXJlbnQtPnRyYWNrV2FzQWRkZWQodGhpcyk7CiB9CiAKIHZvaWQg
SFRNTFRyYWNrRWxlbWVudDo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgRWxlbWVudCogcGFyZW50ID0g
cGFyZW50RWxlbWVudCgpOwotICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc01lZGlhRWxlbWVu
dCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgp
KS0+dHJhY2tXaWxsQmVSZW1vdmVkKHRoaXMpOworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBw
YXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcGFyZW50LT50cmFja1dpbGxCZVJlbW92
ZWQodGhpcyk7CisKICAgICBIVE1MRWxlbWVudDo6d2lsbFJlbW92ZSgpOwogfQogCkBAIC05MCw4
ICs5Miw4IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgKIAogICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFtZSgpOwogICAgIGlmIChh
dHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIp
LmlzRW1wdHkoKSAmJiBwYXJlbnROb2RlKCkpCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1M
TWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tTb3VyY2VDaGFuZ2VkKHRoaXMpOwor
ICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbWVkaWFFbGVt
ZW50KCkpCisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICB9CiB9CiAKQEAgLTEzNyw3
ICsxMzksNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldExhYmVsKGNvbnN0IFN0CiAKIGJv
b2wgSFRNTFRyYWNrRWxlbWVudDo6aXNEZWZhdWx0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFz
QXR0cmlidXRlKGRlZmF1bHRBdHRyKTsKKyAgICByZXR1cm4gZmFzdEhhc0F0dHJpYnV0ZShkZWZh
dWx0QXR0cik7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0SXNEZWZhdWx0KGJvb2wg
aXNEZWZhdWx0KQpAQCAtMTQ1LDExICsxNDcsMTEgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpz
ZXRJc0RlZmF1bHQoYm9vbAogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUoZGVmYXVsdEF0dHIsIGlz
RGVmYXVsdCk7CiB9CiAKLVRleHRUcmFjayogSFRNTFRyYWNrRWxlbWVudDo6dHJhY2soKSBjb25z
dAorUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gSFRNTFRyYWNrRWxlbWVudDo6dHJhY2so
KQogewotICAgIGlmIChtX3RyYWNrKQotICAgICAgICByZXR1cm4gbV90cmFjay5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZiAoIW1fdHJhY2spCisgICAgICAgIG1fdHJhY2sgPSBMb2FkYWJs
ZVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqPihkb2N1bWVudCgpKSwga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5nKCksIGlzRGVmYXVsdCgp
KTsKKyAgICByZXR1cm4gbV90cmFjazsKIH0KIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc1VS
TEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKQEAgLTE1NywxOSArMTU5LDc5
IEBAIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXQKICAgICByZXR1cm4g
YXR0cmlidXRlLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50
Ojpsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCog
dHJhY2tDbGllbnQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiB7Ci0g
ICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUodHJhY2tDbGllbnQsIHRoaXMs
IGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgaWYgKCFtZWRp
YUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhhc0F0dHJpYnV0ZShzcmNB
dHRyKSkKLSAgICAgICAgbV90cmFjay0+bG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNB
dHRyKSwgY29udGV4dCk7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB0cmFjaygpLT5zY2hlZHVsZUxvYWQoZ2V0Tm9uRW1wdHlVUkxB
dHRyaWJ1dGUoc3JjQXR0cikpOworfQorCitib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRV
cmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgSFRNTE1lZGlh
RWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcGFyZW50LT5pc1NhZmVUb0xvYWRVUkwodXJs
LCBIVE1MTWVkaWFFbGVtZW50OjpDb21wbGFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJsLnN0cmluZygpKTsKIH0K
IAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRh
YmxlVGV4dFRyYWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVkKQordm9pZCBIVE1MVHJhY2tFbGVtZW50
Ojpsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVk
KQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShsb2FkaW5nRmFpbGVkID8gZXZlbnROYW1lcygpLmVycm9yRXZlbnQgOiBldmVudE5h
bWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiB9CisgICAgCit2b2lkIEhUTUxU
cmFja0VsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2sp
Cit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQor
ICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZCh0cmFjayk7
Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1l
ZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tNb2RlQ2hhbmdl
ZCh0cmFjayk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0FkZEN1
ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcykKK3sKKyAg
ICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAg
IHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZXModHJhY2ssIGN1ZXMpOworfQorICAgIAor
dm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayogdHJh
Y2ssIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCit7CisgICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50
ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxl
bWVudDo6dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlh
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tBZGRDdWUodHJhY2ss
IGN1ZSk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1
ZShUZXh0VHJhY2sqIHRyYWNrLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQoreworICAg
IGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRyYWNrLCBjdWUpOworfQorCitIVE1M
TWVkaWFFbGVtZW50KiBIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVsZW1lbnQoKSBjb25zdAorewor
ICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAgICBpZiAocGFyZW50ICYm
IHBhcmVudC0+aXNNZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhU
TUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpOworCisgICAgcmV0dXJuIDA7Cit9CiAKICNp
ZiBFTkFCTEUoTUlDUk9EQVRBKQogU3RyaW5nIEhUTUxUcmFja0VsZW1lbnQ6Oml0ZW1WYWx1ZVRl
eHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJKHJl
dmlzaW9uIDk5NTc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIFRl
eHRUcmFja0xvYWRpbmdDbGllbnQgeworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKKworY2xhc3Mg
SFRNTFRyYWNrRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVibGljIFRleHRUcmFja0Ns
aWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCkBAIC00OCwxOCArNTAs
MTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3JjbGFuZyhjb25zdCBTdHJpbmcmKTsKICAgICB2
b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wp
OwotICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPExvYWRhYmxl
VGV4dFRyYWNrPiB0cmFjaygpOwogICAgIAotICAgIHZvaWQgbG9hZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayos
IGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLyk7CiAKIHByaXZhdGU6Ci0KLSAgICAvLyBUZXh0VHJh
Y2tMb2FkaW5nQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xvYWRpbmdDb21wbGV0
ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sKTsKLQogICAgIEhUTUxUcmFja0VsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTFRyYWNrRWxl
bWVudCgpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSos
IGJvb2wgcHJlc2VydmVEZWNscyk7CiAKQEAgLTcyLDcgKzcyLDE4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQoKSBjb25zdDsKKworICAgIC8vIFRleHRUcmFja0xvYWRpbmdDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0
VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKwog
ICAgIFJlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gbV90cmFjazsKKyAgICBSZWZQdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHJldmlzaW9uIDk5NTc2KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDI2ICsyOSw1MyBAQAogCiAjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKIAorI2luY2x1
ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQqIHRy
YWNrQ2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBT
dHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2Us
IGJvb2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBraW5kLCBsYWJl
bCwgbGFuZ3VhZ2UpCi0gICAgLCBtX2xvYWRpbmdDbGllbnQobG9hZGluZ0NsaWVudCkKK0xvYWRh
YmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkK
KyAgICA6IFRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKQorICAgICwgbV90
cmFja0VsZW1lbnQodHJhY2spCisgICAgLCBtX2xvYWRUaW1lcih0aGlzLCAmTG9hZGFibGVUZXh0
VHJhY2s6OmxvYWRUaW1lckZpcmVkKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBt
X2lzRGVmYXVsdChpc0RlZmF1bHQpCiB7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CiB9CiAKIExvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQogewogfQog
Ci12b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IEtVUkwmIHVybCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmNsZWFyQ2xp
ZW50KCkKIHsKLSAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICBtX2xvYWRlciA9IFRleHRUcmFj
a0xvYWRlcjo6Y3JlYXRlKHRoaXMsIGNvbnRleHQpOwotICAgIG1fbG9hZGVyLT5sb2FkKHVybCk7
CisgICAgbV90cmFja0VsZW1lbnQgPSAwOworICAgIFRleHRUcmFjazo6Y2xlYXJDbGllbnQoKTsK
K30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKGNvbnN0IEtVUkwmIHVy
bCkKK3sKKyAgICBtX3VybCA9IHVybDsKKyAgICBpZiAoIW1fbG9hZFRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBMb2FkYWJs
ZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+KikKK3sK
KyAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TE9BRElORyk7CisgICAgCisgICAgaWYgKG1f
bG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+Y2FuY2VsTG9hZCgpOworCisgICAgaWYgKCFtX3Ry
YWNrRWxlbWVudCB8fCAhbV90cmFja0VsZW1lbnQtPmNhbkxvYWRVcmwodGhpcywgbV91cmwpKSB7
CisgICAgICAgIHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpIVE1MX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2xvYWRlciA9IFRleHRUcmFja0xvYWRlcjo6Y3Jl
YXRlKHRoaXMsIG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9sb2FkZXItPmxvYWQobV91cmwpOwog
fQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxhYmxlKFRleHRUcmFja0xv
YWRlciogbG9hZGVyKQpAQCAtODIsOCArMTA5LDggQEAgdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6
Y3VlTG9hZGluZ0NvbXBsZQogCiAgICAgbG9hZGluZ0ZhaWxlZCA/IHNldFJlYWR5U3RhdGUoVGV4
dFRyYWNrOjpIVE1MX0VSUk9SKSA6IHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpMT0FERUQpOwog
Ci0gICAgaWYgKG1fbG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9sb2FkaW5nQ2xpZW50LT50ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkKHRoaXMsIGxvYWRpbmdGYWlsZWQpOworICAgIGlmIChtX3Ry
YWNrRWxlbWVudCkKKyAgICAgICAgbV90cmFja0VsZW1lbnQtPmxvYWRpbmdDb21wbGV0ZWQodGhp
cywgbG9hZGluZ0ZhaWxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJldmlzaW9uIDk5NTc2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwyMyArMzksMjUgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKIGNsYXNzIExvYWRhYmxl
VGV4dFRyYWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAotY2xhc3MgVGV4dFRy
YWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBMb2FkYWJsZVRleHRUcmFja0NsaWVudCA6IHB1Ymxp
YyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRp
bmdDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCgpIHsg
fQogICAgIAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRh
YmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRl
eHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9OwogCiBjbGFzcyBMb2Fk
YWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgVGV4dFRyYWNrTG9hZGVy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFj
az4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIFRleHRUcmFja0xvYWRpbmdD
bGllbnQqIGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShIVE1MVHJhY2tFbGVtZW50KiB0
cmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVm
YXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJh
Y2sodHJhY2tDbGllbnQsIGxvYWRpbmdDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNE
ZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2so
dHJhY2ssIGNvbnRleHQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CiAKLSAgICB2b2lkIGxvYWQoY29u
c3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBib29sIHN1cHBvcnRzVHlw
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChjb25zdCBLVVJMJik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogcHJpdmF0ZToKICAgICAvLyBUZXh0
VHJhY2tMb2FkZXJDbGllbnQKQEAgLTY0LDEwICs2NiwxNSBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIqKTsKICAgICB2aXJ0dWFs
IHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqLCBib29sIGxvYWRpbmdG
YWlsZWQpOwogCi0gICAgTG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgVGV4dFRy
YWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworICAgIExvYWRhYmxl
VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCk7CisKKyAgICB2b2lkIGxvYWRUaW1lckZpcmVkKFRpbWVyPExv
YWRhYmxlVGV4dFRyYWNrPiopOwogCisgICAgSFRNTFRyYWNrRWxlbWVudCogbV90cmFja0VsZW1l
bnQ7CisgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRpbWVyOworICAgIFJlZlB0
cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPFRleHRUcmFj
a0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbV9sb2FkaW5n
Q2xpZW50OworICAgIEtVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lzRGVmYXVsdDsKIH07CiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJKHJldmlzaW9u
IDk5NTc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNyArNDUsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRU
cmFjayopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRy
YWNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25z
dCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4pID0gMDsKQEAgLTc3LDE0ICs3NiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkeVN0
YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgbW9kZUNoYW5nZWQoKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQgPSAwOyB9CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQotICAgIHZvaWQgc2V0Q2xpZW50KFRleHRUcmFj
a0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAKICAgICB2b2lkIGFkZEN1
ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJl
bW92ZUN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBmZXRj
aE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CisgICAgdm9pZCBuZXdDdWVzTG9h
ZGVkKCk7CisgICAgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7
CiAKIHByb3RlY3RlZDoKICAgICBUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAkocmV2aXNpb24g
OTk1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBAIHZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBh
c3NSZWZQdHI8VGUKIAogdm9pZCBUZXh0VHJhY2tDdWVMaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+IGN1ZSwgc2l6ZV90IHN0YXJ0LCBzaXplX3QgZW5kKQogewotICAgIEFTU0VSVChz
dGFydCA+PSAwICYmIHN0YXJ0IDw9IG1fbGlzdC5zaXplKCkpOwotICAgIEFTU0VSVChlbmQgPj0g
MCAmJiBlbmQgPD0gbV9saXN0LnNpemUoKSk7CisgICAgQVNTRVJUKHN0YXJ0IDw9IG1fbGlzdC5z
aXplKCkpOworICAgIEFTU0VSVChlbmQgPD0gbV9saXN0LnNpemUoKSk7CiAKICAgICAvLyBNYWlu
dGFpbiB0ZXh0IHRyYWNrIGN1ZSBvcmRlcjoKICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0ZXh0LXRyYWNrLWN1ZS1vcmRlcgpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgor
CisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1
ZGUgIlRyYWNrRXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1RleHRUcmFj
a0xpc3Q6OlRleHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1f
b3duZXIob3duZXIpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHRoaXMsICZUZXh0VHJhY2tM
aXN0Ojphc3luY0V2ZW50VGltZXJGaXJlZCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1
bWVudCgpKTsKK30KKworVGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QoKQoreworfQorCit1
bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3Ry
YWNrcy5zaXplKCk7Cit9CisKK1RleHRUcmFjayogVGV4dFRyYWNrTGlzdDo6aXRlbSh1bnNpZ25l
ZCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCBtX3RyYWNrcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiBtX3RyYWNrc1tpbmRleF0uZ2V0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4
dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICBS
ZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNrOworICAgIG1fdHJhY2tzLmFwcGVuZCh0
cmFja1JlZik7CisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50KHRyYWNrUmVmKTsKK30KKwordm9p
ZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQorewor
ICAgIHNpemVfdCBpbmRleCA9IG1fdHJhY2tzLmZpbmQodHJhY2spOworICAgIGlmIChpbmRleCA9
PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdHJhY2tzLnJlbW92ZShpbmRleCk7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JUZXh0VHJhY2tM
aXN0OworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNz
UmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcg
b3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQt
b2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sgQVBJCisg
ICAgLy8gLi4uIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYW4gZXZlbnQgd2l0aCB0aGUgbmFt
ZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCAKKyAgICAvLyBidWJibGUgYW5kIGlzIG5vdCBjYW5j
ZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVyZmFjZSwgd2l0aCAKKyAg
ICAvLyB0aGUgdHJhY2sgYXR0cmlidXRlIGluaXRpYWxpemVkIHRvIHRoZSB0ZXh0IHRyYWNrJ3Mg
VGV4dFRyYWNrIG9iamVjdCwgYXQgCisgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyB0ZXh0VHJh
Y2tzIGF0dHJpYnV0ZSdzIFRleHRUcmFja0xpc3Qgb2JqZWN0LgorCisgICAgUmVmUHRyPFRleHRU
cmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2ZW50SW5pdCBpbml0aWFsaXplcjsK
KyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOworICAgIGluaXRpYWxpemVyLmJ1YmJs
ZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxhYmxlID0gZmFsc2U7CisKKyAgICBt
X3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRk
dHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAoIW1fcGVuZGluZ0V2ZW50VGltZXIu
aXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4
dFRyYWNrTGlzdD4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gcGVuZGluZ0V2ZW50
czsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAKKyAgICBtX3BlbmRpbmdFdmVudHMu
c3dhcChwZW5kaW5nRXZlbnRzKTsKKyAgICBzaXplX3QgY291bnQgPSBwZW5kaW5nRXZlbnRzLnNp
emUoKTsKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsraW5kZXgp
CisgICAgICAgIGRpc3BhdGNoRXZlbnQocGVuZGluZ0V2ZW50c1tpbmRleF0ucmVsZWFzZSgpLCBl
Yyk7Cit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIFRleHRUcmFja0xpc3RfaAorI2RlZmluZSBUZXh0VHJhY2tMaXN0X2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKK2NsYXNzIFRl
eHRUcmFjazsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CisKK2NsYXNzIFRleHRUcmFja0xpc3QgOiBw
dWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tMaXN0PiBjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0xpc3Qob3duZXIsIGNvbnRl
eHQpKTsKKyAgICB9CisgICAgflRleHRUcmFja0xpc3QoKTsKKworICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0OworICAgIFRleHRUcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisgICAgdm9p
ZCBhcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKKyAgICB2b2lkIHJlbW92ZShQYXNzUmVm
UHRyPFRleHRUcmFjaz4pOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8VGV4dFRyYWNrTGlzdD46OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFja0xp
c3Q+OjpkZXJlZjsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KKworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJhY2spOworCisgICAgdm9pZCBjbGVhck93
bmVyKCkgeyBtX293bmVyID0gMDsgfQorICAgIEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyKCkgeyBy
ZXR1cm4gbV9vd25lcjsgfQorCitwcml2YXRlOgorICAgIFRleHRUcmFja0xpc3QoSFRNTE1lZGlh
RWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0
CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0
YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEo
KSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAgIHZvaWQgc2NoZWR1bGVBZGRU
cmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisgICAgdm9pZCBhc3luY0V2ZW50VGlt
ZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopOworCisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3duZXI7CisKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxUZXh0VHJh
Y2tMaXN0PiBtX3BlbmRpbmdFdmVudFRpbWVyOworCisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdHJhY2tzOwor
ICAgIAorICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRzOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1WSURFT19UUkFDSywKKyAgICAgICAgRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRl
b1RyYWNrLAorICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICAgICAgRXZlbnRUYXJnZXQsCisg
ICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlCisgICAgXSBUZXh0VHJhY2tMaXN0IHsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBUZXh0VHJh
Y2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmFkZHRyYWNrOworCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNl
cHRpb24pOworICAgIH07CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNCBAQCB2b2lk
IFRleHRUcmFja0xvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoCiAgICAgICAgIG1fY2xpZW50LT5j
dWVMb2FkaW5nQ29tcGxldGVkKHRoaXMsIG1fc3RhdGUgPT0gRmFpbGVkKTsKIH0KIAordm9pZCBU
ZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQoKQoreworICAgIGlmIChtX2NhY2hlZEN1ZURhdGEp
IHsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAg
IG1fY2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgfQorfQorCiB2b2lkIFRleHRUcmFja0xvYWRlcjo6
cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAgIEFTU0VS
VChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3VyY2UpOwpAQCAtMTQyLDggKzE1MCw3IEBAIHZvaWQg
VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWMKICAgICBpZiAoIW1fY3VlTG9hZFRp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
ICAgICAKLSAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICBtX2Nh
Y2hlZEN1ZURhdGEgPSAwOworICAgIGNhbmNlbExvYWQoKTsKIH0KIAogYm9vbCBUZXh0VHJhY2tM
b2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQpAQCAtMTUxLDEwICsxNTgsNyBAQCBib29sIFRl
eHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1CiAgICAgaWYgKCFtX2NsaWVudC0+c2hv
dWxkTG9hZEN1ZXModGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBpZiAo
bV9jYWNoZWRDdWVEYXRhKSB7Ci0gICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50
KHRoaXMpOwotICAgICAgICBtX2NhY2hlZEN1ZURhdGEgPSAwOwotICAgIH0KKyAgICBjYW5jZWxM
b2FkKCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1
bWVudCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Rl
eHRUcmFja0xvYWRlci5oCShyZXZpc2lvbiA5OTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrTG9hZGVyKCk7CiAgICAgCiAgICAgYm9vbCBsb2Fk
KGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGNhbmNlbExvYWQoKTsKICAgICB2b2lkIGdldE5ld0N1
ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpOwogICAgIAogcHJp
dmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDk5NTc2KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02
MTMsNiArNjEzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tDb25zdHJ1Y3RvciBUZXh0VHJh
Y2s7CiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNr
XSBUZXh0VHJhY2tDdWVDb25zdHJ1Y3RvciBUZXh0VHJhY2tDdWU7IC8vIFVzYWJsZSB3aXRoIHRo
ZSBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtp
dFZpZGVvVHJhY2tdIFRleHRUcmFja0N1ZUxpc3RDb25zdHJ1Y3RvciBUZXh0VHJhY2tDdWVMaXN0
OworICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10g
VGV4dFRyYWNrTGlzdENvbnN0cnVjdG9yIFRleHRUcmFja0xpc3Q7CiAgICAgICAgIGF0dHJpYnV0
ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUcmFja0V2ZW50Q29uc3RydWN0
b3IgVHJhY2tFdmVudDsKICNlbmRpZgogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTU3NikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEx
LTExLTA4ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBUZXh0VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2Yg
SFRNTE1lZGlhRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sOiBBZGRlZC4KKwog
MjAxMS0xMS0wOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gZmFzdC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhl
ZC13aWR0aC1hbmQtaGVpZ2h0LW5vLXNjcm9sbGluZy5odG1sIGlzIGZsYWt5CkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJh
Y2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGUg
bG9hZCBldmVudCBvbiBIVE1MVHJhY2tFbGVtZW50IGFuZCBMT0FERUQgcmVhZHlTdGF0ZSBvbiBU
ZXh0VHJhY2sgd2hlbiBzcmMgaXMgc2V0IGZyb20gSmF2YVNjcmlwdC4KKworKiogVGVzdCBhIFRl
eHRUcmFjayBjcmVhdGVkIGZvciBhIDx0cmFjaz4gZWxlbWVudC4KK1JVTih0cmFja0VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpKQorUlVOKHZpZGVvLmFwcGVuZENoaWxk
KHRyYWNrRWxlbWVudCkpCitSVU4odHJhY2tFbGVtZW50LnNyYyA9ICdjYXB0aW9ucy13ZWJ2dHQv
dGMwMDQtd2VidnR0LWZpbGUudnR0JykKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0
aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzBdLnJlYWR5U3RhdGUgPT0gJzAnKSBPSwor
RVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRleHRU
cmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2
ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29iamVjdCBUZXh0
VHJhY2tdJykgT0sKKworKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIHdpdGggdmlkZW8uYWRk
VHJhY2soKS4KK1JVTih0cmFja3MucHVzaCh2aWRlby5hZGRUcmFjaygnY2FwdGlvbnMnLCAnQ2Fw
dGlvbiBUcmFjaycsICdlbicpKSkKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9
PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzFdLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworRVZF
TlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRleHRUcmFj
a0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50
ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29iamVjdCBUZXh0VHJh
Y2tdJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCisKK0VO
RCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10
cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
YWRkLXRyYWNrLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAg
IDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAg
ICAgICAgIHZhciB0cmFja3MgPSBbXTsKKyAgICAgICAgICAgIHZhciB0cmFja0VsZW1lbnQ7Cisg
ICAgICAgICAgICBmdW5jdGlvbiB0cmFja0FkZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudC50eXBlICsgIikiKTsKKworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0IiwgdmlkZW8udGV4dFRyYWNr
cyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudCBpbnN0YW5jZW9mIHdpbmRv
dy5UcmFja0V2ZW50IiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVu
dC50cmFjayIsIHRyYWNrc1t2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCAtIDFdKTsKKworICAgICAg
ICAgICAgICAgIGlmICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCB3
aXRoIHZpZGVvLmFkZFRyYWNrKCkuIik7CisgICAgICAgICAgICAgICAgICAgIHJ1bigidHJhY2tz
LnB1c2godmlkZW8uYWRkVHJhY2soJ2NhcHRpb25zJywgJ0NhcHRpb24gVHJhY2snLCAnZW4nKSki
KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxl
bmd0aCIsIDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrc1sxXS5y
ZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5PTkUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzFdLnJlYWR5U3RhdGUiLCBU
ZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7Cisg
ICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBjb25z
b2xlV3JpdGUoIioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCBmb3IgYSAmbHQ7dHJhY2smZ3Q7
IGVsZW1lbnQuIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFja0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5h
cHBlbmRDaGlsZCh0cmFja0VsZW1lbnQpIik7CisgICAgICAgICAgICAgICAgdHJhY2tzLnB1c2go
dHJhY2tFbGVtZW50LnRyYWNrKTsKKworICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSAn
YWRkdHJhY2snIGxpc3RlbmVyIGFmdGVyIGNyZWF0aW5nIHRoZSBlbGVtZW50IHRvIG1ha2Ugc3Vy
ZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBldmVudCBpcyBkaXNwYXRjaCBhc3luY2hyb25vdXNs
eS4KKyAgICAgICAgICAgICAgICB2aWRlby50ZXh0VHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoImFk
ZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisKKyAgICAgICAgICAgICAgICBydW4oInRyYWNrRWxlbWVu
dC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCciKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVuZ3RoIiwgMSk7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMF0ucmVhZHlTdGF0ZSIsIFRleHRU
cmFjay5OT05FKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMgdGhlIGxv
YWQgZXZlbnQgb24gSFRNTFRyYWNrRWxlbWVudCBhbmQgTE9BREVEIHJlYWR5U3RhdGUgb24gVGV4
dFRyYWNrIHdoZW4gc3JjIGlzIHNldCBmcm9tIEphdmFTY3JpcHQuPC9wPgorICAgICAgICA8dmlk
ZW8+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114164</attachid>
            <date>2011-11-08 15:24:38 -0800</date>
            <delta_ts>2011-11-08 16:50:34 -0800</delta_ts>
            <desc>Updated to apply to TOT</desc>
            <filename>patch_tracks_array_10.txt</filename>
            <type>text/plain</type>
            <size>78028</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisgMjAxMS0xMS0wOCAgRXJpYyBD
YXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKyAKKyAgICAgICAgIEltcGxlbWVudCBU
ZXh0VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxl
bWVudAorICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
MTIzCisgCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAKKyAgICAgICAg
IFRlc3Q6IG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sCisgCisgICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgbmV3IGZpbGVzIGZvciBUZXh0VHJhY2tMaXN0LgorICAgICAgICAg
KiBEZXJpdmVkU291cmNlcy5jcHA6IERpdHRvLgorICAgICAgICAgKiBEZXJpdmVkU291cmNlcy5t
YWtlOiBEaXR0by4KKyAgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOiBEaXR0by4KKyAgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8uCisgICAgICAgICAqIFRhcmdldC5wcmk6
IERpdHRvLgorICAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOiBEaXR0by4KKyAKKyAgICAgICAgICogYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgICAoV2ViQ29y
ZTo6SlNUZXh0VHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAK
KyAgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjogQWRkIFRleHRUcmFja0xpc3Qs
IGNvbmRpdGlvbmFsIG9uIFZJREVPX1RSQUNLLgorIAorICAgICAgICAgKiBodG1sL0hUTUxBdWRp
b0VsZW1lbnQuY3BwOgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxBdWRpb0VsZW1lbnQ6OmNyZWF0
ZUZvckpTQ29uc3RydWN0b3IpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBjaGFuZ2UuCisgCisg
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQpOiBVcGRhdGUgZm9yIG1fdGV4dFRy
YWNrcyBjaGFuZ2UgZnJvbQorICAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFj
a0xpc3QuCisgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hh
bmdlZCk6IERpdHRvLgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KTogVXBkYXRlIGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorICAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFt
ZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAgICAgICAgICAgICB0aGUgbWFpbiByZXNv
dXJjZSBvciBhIHRleHQgdHJhY2sgc2hvdWxkIGJlIGxvYWRlZC4KKyAgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZCk6IFVwZGF0ZSB0byBhbGxvdyB0ZXh0
IHRyYWNrIGxvYWRpbmcuCisgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9h
ZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNrcy4KKyAgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwpOiBMb2cgd2hlbiBDU1AgZGVuaWVz
IGxvYWQuCisgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFs
KTogVXBkYXRlIGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorICAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayk6IFVwZGF0ZSBmb3IgbV90ZXh0VHJhY2tzIGNo
YW5nZSBmcm9tCisgICAgICAgICAgICAgZ2VuZXJpYyBWZWN0b3IgdG8gVGV4dFRyYWNrTGlzdC4K
KyAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2spOiBOZXcs
IGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4KKyAgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKTogTmV3LCBhZGQgY29t
bWVudHMgYWJvdXQgd2hhdCB0aGlzIHNob3VsZAorICAgICAgICAgICAgIGRvIGV2ZW50dWFsbHku
CisgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcyk6IE5ldywg
cmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6dHJhY2tXYXNBZGRlZCk6IEJhaWwgaWYgcnVudGltZSBmZWF0dXJlIGlzIG5vdCBlbmFibGVk
LCBzY2hlZHVsZQorICAgICAgICAgICAgIGFzeW5jaHJvbm91cyB0ZXh0IHRyYWNrIGxvYWQuCisg
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKTog
TWlub3IgY2xlYW51cC4KKyAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxl
Y3ROZXh0U291cmNlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50Ojpzb3VyY2VXYXNBZGRlZCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4K
KyAgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5pZGw6IEFkZCB0ZXh0VHJhY2tzIGF0dHJpYnV0ZS4KKyAKKyAgICAgICAg
ICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
YWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IFVzZSBuZXcgbWVkaWFFbGVtZW50KCkgbWV0
aG9kLgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OndpbGxSZW1vdmUpOiBE
aXR0by4KKyAgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgIGluc3RlYWQgb2YgSFRNTE1lZGlhRWxlbWVudAorICAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmFja0VsZW1lbnQ6OmlzRGVmYXVsdCk6IGhhc0F0dHJpYnV0ZSAtPiBmYXN0SGFzQXR0cmlidXRl
LgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUg
dHJhY2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6
OnNjaGVkdWxlTG9hZCk6IE5ldywgdGVsbCB0aGUgdHJhY2sgdG8gc2NoZWR1bGUgYSBsb2FkLgor
ICAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwpOiBOZXcsIGNo
ZWNrIHNlY3VyaXR5IHBvbGljeSB0byBzZWUgaWYgaXQgaXMgT0sKKyAgICAgICAgICAgICB0byBs
b2FkIGEgdGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBn
aXZlIGl0IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICAgbG9hZC4KKyAgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojpsb2FkaW5nQ29tcGxldGVkKTogUmVuYW1lZCBm
cm9tIHRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQuCisgICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
YWNrRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xv
YWRpbmdDbGllbnQgaW50ZXJmYWNlCisgICAgICAgICAgICAgdXNlZCB0byBpbmZvcm0gcGFyZW50
IG9mIFRleHRUcmFjayBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFj
a0VsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOiBEaXR0by4K
KyAgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUpOiBE
aXR0by4KKyAgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1v
dmVDdWUpOiBEaXR0by4KKyAgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjptZWRp
YUVsZW1lbnQpOiBOZXcsIHJldHVybiBwYXJlbnQgZWxlbWVudC4KKyAgICAgICAgICogaHRtbC9I
VE1MVHJhY2tFbGVtZW50Lmg6CisgCisgICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwOgorICAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRU
cmFjayk6IEluaXRpYWxpemUgbmV3IGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVy
IHRvIGtpY2sgb2ZmIGxvYWRpbmcuCisgICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2s6OmxvYWRUaW1lckZpcmVkKTogQ2FuY2VsIGN1cnJlbnQgbG9hZCwgaWYgYW55LCBjaGVjayB0
byBzZWUgaWYKKyAgICAgICAgICAgICBuZXcgdXJsIGlzIGFsbG93ZWQgdG8gbG9hZCwgYW5kIHN0
YXJ0IG5ldyBsb2FkLgorICAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVM
b2FkaW5nQ29tcGxldGVkKTogCisgICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDoK
KyAgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6fkxvYWRhYmxlVGV4
dFRyYWNrQ2xpZW50KTogVGV4dFRyYWNrTG9hZGluZ0NsaWVudCAtPiBMb2FkYWJsZVRleHRUcmFj
a0NsaWVudAorICAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5M
b2FkVXJsKTogCisgICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tDbGllbnQ6Omxv
YWRpbmdDb21wbGV0ZWQpOgorICAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpj
cmVhdGUpOgorIAorICAgICAgICAgKiBodG1sL1RleHRUcmFjay5jcHA6CisgICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgorICAgICAgICAgKiBodG1sL1RleHRUcmFjay5o
OgorICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xpZW50KToKKyAKKyAgICAgICAgICog
aHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcDoKKyAgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tD
dWVMaXN0OjphZGQpOiBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IGJyZWFrcyB0
aGUgT1MgWCBidWlsZC4KKyAKKyAgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNw
cDogQWRkZWQuIEltcGxlbWVudCB0aGUgVGV4dFRyYWNrTGlzdCBvYmplY3QuCisgICAgICAgICAo
VGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlzdCk6CisgICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
flRleHRUcmFja0xpc3QpOgorICAgICAgICAgKFRleHRUcmFja0xpc3Q6Omxlbmd0aCk6CisgICAg
ICAgICAoVGV4dFRyYWNrTGlzdDo6aXRlbSk6CisgICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXBw
ZW5kKToKKyAgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOgorICAgICAgICAgKFRleHRU
cmFja0xpc3Q6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAgKFRleHRUcmFja0xpc3Q6OnNjaGVk
dWxlQWRkVHJhY2tFdmVudCk6CisgICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRp
bWVyRmlyZWQpOgorICAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaDogQWRkZWQu
CisgICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjpjbGVhck93bmVyKToKKyAgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMaXN0Ojpvd25lcik6CisgICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlz
dDo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmRl
cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6ZW5zdXJlRXZl
bnRUYXJnZXREYXRhKToKKyAgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbDog
QWRkZWQuCisgCisgICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6Y2FuY2VsTG9hZCk6IE5ldywgY2FuY2VsIHBl
bmRpbmcgb3IgaW4gcHJvZ3Jlc3MgbG9hZCBhbmQgZGVsZXRlIGxvYWRlci4KKyAgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQ2FsbCBjYW5jZWxMb2Fk
LgorICAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6IERpdHRvLgorICAg
ICAgICAgKiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmg6CisgICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmlkbDogQWRkIFRleHRUcmFja0xpc3QuCisgCiAyMDExLTExLTA4ICBNaWNoYWVsIFNhYm9m
ZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIFRvd2FyZHMgOCBCaXQgU3RyaW5nczog
VGVtcGxhdGl6ZSBKU0M6OlBhcnNlciBjbGFzcyBieSBMZXhlciB0eXBlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw3IEBAIFNFVChXZWJDb3JlX0lETF9G
SUxFUwogICAgIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL1Vp
bnQ4QXJyYXkuaWRsCiAKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgaHRt
bC90cmFjay9UcmFja0V2ZW50LmlkbAogCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9z
dC5pZGwKQEAgLTIwNTcsNiArMjA1OCw3IEBAIElGIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAg
ICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNwcAogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUluZGV4
LmNwcAogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCisgICAgICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAg
ICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA5
OTYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQxLDYgKzQ0MSw3IEBACiAjaW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2luY2x1
ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3QuY3Bw
IgorI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50
LmNwcCIKICNlbmRpZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIERP
TV9DTEFTU0VTID0gXAogICAgIFRleHRUcmFjayBcCiAgICAgVGV4dFRyYWNrQ3VlIFwKICAgICBU
ZXh0VHJhY2tDdWVMaXN0IFwKKyAgICBUZXh0VHJhY2tMaXN0IFwKICAgICBUaW1lUmFuZ2VzIFwK
ICAgICBUb3VjaCBcCiAgICAgVG91Y2hFdmVudCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCShyZXZpc2lvbiA5OTYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LnByaQkod29ya2luZyBjb3B5KQpAQCAtNTkwLDYgKzU5MCw3IEBAIGNvbnRhaW5zKERFRklORVMs
IEVOQUJMRV9WSURFT19UUkFDSz0xKSAKICAgICBodG1sL1RleHRUcmFjay5pZGwgXAogICAgIGh0
bWwvVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCisg
ICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgaHRtbC90cmFjay9UcmFja0V2
ZW50LmlkbCBcCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC01MDQsNiArNTA0LDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlLmggXAogCURlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1RleHRUcmFja0N1ZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRU
cmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5o
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNUaW1lUmFuZ2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNUb3VjaC5jcHAgXApAQCAtODUwLDYgKzg1Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKQEAgLTE5ODAsNiArMTk4Myw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGlt
ZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZl
bnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODk2LDYgKzE4OTYsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmggXAogICAgIGh0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJD
b250cm9sLmggXAorICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIFwKICAgICBodG1sL3Ry
YWNrL1RyYWNrQmFzZS5oIFwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCkBAIC0zNTY0LDYgKzM1NjUsNyBAQCBjb250YWlucyhE
RUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9t
LmggXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAorICAg
ICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEzNzIsNiArMTM3Miw3IEBACiAgICAg
ICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRsJywKICAgICAgICAg
ICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAg
ICAgICAnaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsJywKKyAgICAgICAgICAgICdo
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1Ry
YWNrRXZlbnQuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0
LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwn
LApAQCAtMTkzNiw2ICsxOTM3LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxl
U2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAnLApAQCAtNTc4Niw2ICs1Nzg4LDcgQEAKICAgICAg
ICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAn
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgnLAorICAgICAgICAgICAgJ2h0
bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJh
Y2tCYXNlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDk5NjE5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwxNyBAQAogCQkwNzM1RUU2QTBGNDBD
NUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlh
UGxheWVyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0
ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9OwogCQkwNzUzODYwMzE0
NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2Fj
aGVkVGV4dFRyYWNrLmggKi87IH07Ci0JCTA3Njg5RDZFMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1Ry
YWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5j
cHAgKi87IH07CisJCTA3Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0
MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDc2OTcwODcx
NDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0
VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8q
IEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsg
fTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAw
QTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThE
RjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAq
LzsgfTsKIAkJMDdCMDExM0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAq
LzsgfTsKKwkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEOTE0
NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDdCNUEyREMx
NDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpT
VGV4dFRyYWNrTGlzdC5oICovOyB9OworCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNU
ZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RD
dXN0b20uY3BwICovOyB9OworCQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUgLyogSlNUcmFja0V2
ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICov
OyB9OwogCQkwODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3
Q0VEMzIgLyogU1ZHTWF0cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDgwRTQ5MjIxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNl
bGluZS5oICovOyB9OwogCQkwODBFNDkyODEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91
dEVuZ2luZVNwYWNpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDA4MEU0OTI0MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5oICovOyB9OwpAQCAtNzExMyw3ICs3MTE4LDggQEAKIAkJMDczNUVFNjkwRjQwQzVFNDAw
NEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
NzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRy
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Njg5RDZEMTQ1QjUyQ0MwMDFD
RDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBU
ZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFj
a0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZB
QTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFj
a0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tF
dmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTIyLDYgKzcxMjgsMTEg
QEAKIAkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1l
ZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZWRp
YUNvbnRyb2xzUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdC
MDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVD
RSAvKiBKU1RleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8qIFRleHRUcmFja0xpc3Qu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2
ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJh
Y2tFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBD
MTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNW
R01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8q
IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExh
eW91dEVuZ2luZUJhc2VsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc4MDEsNiArMTc4MTIsOCBAQAogCQkJCTA3MDc1NkQ4MTQyMzlCNEIwMDQxNDE2MSAvKiBK
U1RleHRUcmFja0N1ZS5oICovLAogCQkJCTA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1Rl
eHRUcmFja0N1ZUxpc3QuY3BwICovLAogCQkJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBK
U1RleHRUcmFja0N1ZUxpc3QuaCAqLywKKwkJCQkwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0UgLyog
SlNUZXh0VHJhY2tMaXN0LmNwcCAqLywKKwkJCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyog
SlNUZXh0VHJhY2tMaXN0LmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpT
VGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJRTQ0NjE0MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGlt
ZVJhbmdlcy5oICovLAogCQkJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZl
bnQuY3BwICovLApAQCAtMTg0ODksNiArMTg1MDIsOSBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4
NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLywK
KwkJCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovLAorCQkJ
CTA3QjVBMzA2MTQ2ODUzNzEwMEE4MUVDRSAvKiBUZXh0VHJhY2tMaXN0LmlkbCAqLywKIAkJCQkw
NzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLywKIAkJCQkwNzAzMzRE
NjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi8sCiAJCQkJMDcwMzM0RDAxNDU5RkZB
QzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuY3BwICovLApAQCAtMTk1NjMsNyArMTk1NzksNiBAQAog
CQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyog
SlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzI3NUNCMjExQzVFODVDMDBDOTIw
NkMgLyogSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgKi8sCiAJCQkJODYyNDNEMDAxMUJDMzFGNzAw
Q0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8sCiAJCQkJQkMyRUQ2QkIwQzZC
RDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCkBAIC0xOTY1OSw2ICsxOTY3NCw3
IEBACiAJCQkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5j
cHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3Vz
dG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1
c3RvbS5jcHAgKi8sCisJCQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVF
dmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDEyRDUxMjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJv
Y2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5
MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgKi8sCiAJ
CQkJOUZBMzdFRTYxMTcyRkNGMDAwQzRDRDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20u
Y3BwICovLApAQCAtMTk2NzIsOSArMTk2ODgsMTAgQEAKIAkJCQkwOEU0RkU0NTBFMkJENDE0MDBG
NENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovLAogCQkJCUIyQzk2RDhDMEIzQUYyQjcw
MDVFODBFQyAvKiBKU1NWR1BhdGhTZWdDdXN0b20uY3BwICovLAogCQkJCTFBMkM0MEFBMERFQjU1
QUEwMDVBRjE5RSAvKiBKU1RleHRDdXN0b20uY3BwICovLAorCQkJCTA3QjVBMzBDMTQ2ODdENzEw
MEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJCTA3MDMzNEU4MTQ1
QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkwNzg0NjM4NDE0NUIx
QjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovLAotCQkJCTA3Njg5RDZEMTQ1QjUyQ0Mw
MDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAorCQkJCTA3QjVBMzBBMTQ2ODdC
ODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzkyMENF
OTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc3
MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVF
Q0Y3NjEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCkBAIC0y
NDYzMyw2ICsyNDY1MCw4IEBACiAJCQkJMzE2OTM3OUMxNDYwOUM2QzAwQzAxMzYyIC8qIERyYWdT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyog
Q1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIxNDY4NjIy
NTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc2OTcw
ODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKQEAgLTI3NDg0LDcgKzI3NTAzLDYgQEAKIAkJCQkwNzAzMzREOTE0NUEwMDZGMDA4
RDhENDUgLyogVHJhY2tCYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDMzNEU5MTQ1QTFG
MzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3ODQ2
MzQyMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJMDc2ODlENkUxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDhGRUJEQzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDhGODU5RDQxNDYzRjlDRDAwNjdEOTMzIC8q
IFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAw
QzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ5
Miw3ICsyNzUxMCwxMSBAQAogCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dl
bmVyaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8q
IENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAv
KiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDc2OTcwODYxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdCNUEy
REIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTcxMzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5n
dGhDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QkRENkVDMTQ2OUI0QzIwMDlDOUY4
NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk5
NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtNDA5LDEyICs0MDksMTUgQEAgZW5kaWYKIGlmIEVOQUJMRV9WSURF
T19UUkFDSwogd2Via2l0Z3RrX2J1aWx0X2hfYXBpICs9IFwKIAkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFjay5oIFwKKwkkKHRvcF9idWlsZGRp
cikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWUu
aCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0
VHJhY2tDdWVMaXN0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NVHJhY2tFdmVudC5oCiB3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja1ByaXZhdGUuaCBcCisJRGVyaXZlZFNv
dXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVs
ZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVQcml2YXRlLmgiCisjaW5jbHVk
ZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTVRleHRUcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0
RE9NVHJhY2tFdmVudFByaXZhdGUuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA5OTQyMSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQAogI2luY2x1ZGUgIkpTU3R5bGVTaGVldEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNUZXh0Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1RleHRUcmFja0xpc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTVG91Y2hDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0Q3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU1RyYWNrQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1
c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJI
VE1MTWVkaWFFbGVtZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworYm9vbCBKU1RleHRUcmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1RleHRUcmFja0xpc3QqIGpzVGV4dFRyYWNrTGlzdCA9
IHN0YXRpY19jYXN0PEpTVGV4dFRyYWNrTGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7Cisg
ICAgaWYgKCFqc1RleHRUcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290
KHN0YXRpY19jYXN0PFRleHRUcmFja0xpc3QqPihqc1RleHRUcmFja0xpc3QtPmltcGwoKSktPm93
bmVyKCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAgUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRX
b3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29u
ZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1T
VkcKK1RleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25k
aXRpb25hbD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBS
ZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0Vs
ZW1lbnQ+IEhUTUxBdWRpb0VsCiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBp
ZiAoIXNyYy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAg
IGF1ZGlvLT5zY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1M
TWVkaWFFbGVtZW50OjpNZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJl
bGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgog
I2luY2x1ZGUgIlVVSUQuaCIKICNpbmNsdWRlICJVaW50OEFycmF5LmgiCkBAIC0yMjQsOSArMjI1
LDEzIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFFbGVtZW50KCkKICAgICBkb2N1bWVu
dCgpLT51bnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKHRoaXMpOwogICAg
IGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKICAg
ICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKHRoaXMpOworICAgIGlmIChtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRyYWNr
cy0+Y2xlYXJPd25lcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RleHRU
cmFja3NbaV0tPnNldENsaWVudCgwKTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKSB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCisg
ICAgICAgICAgICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQog
I2VuZGlmCiB9CiAKQEAgLTI2OCw3ICsyNzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF0
dHJpYnV0ZUNoYW5nZWQoCiAgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAg
Ly8gVHJpZ2dlciBhIHJlbG9hZCwgYXMgbG9uZyBhcyB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIHBy
ZXNlbnQuCiAgICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlh
UmVzb3VyY2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29udHJvbHNBdHRyKQogICAg
ICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiB9CkBAIC0zODEsMTAgKzM4NiwxMCBAQCBS
ZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlCiAgCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50Iik7CisgICAgTE9HKE1lZGlhLCAiSFRN
TE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKICAgICBIVE1MRWxlbWVudDo6
aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5p
c0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2No
ZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTQyMywxNyAr
NDI4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKICAgICAg
ICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUxvYWQoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxv
YWQoTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6c2NoZWR1bGVMb2FkIik7CisKKyAgICBpZiAoKGxvYWRUeXBlICYgTWVkaWFSZXNvdXJjZSkg
JiYgIShtX3BlbmRpbmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSkgewogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKKyAg
ICAgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgpOwogI2VuZGlmCisgICAgICAgIAorICAgICAg
ICBwcmVwYXJlRm9yTG9hZCgpOworICAgICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVkaWFS
ZXNvdXJjZTsKKyAgICB9CiAKLSAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIHByZXBhcmVGb3JMb2FkKCk7Ci0gICAgbV9sb2FkVGltZXIuc3RhcnRP
bmVTaG90KDApOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobG9hZFR5cGUgJiBU
ZXh0VHJhY2tSZXNvdXJjZSkKKyAgICAgICAgbV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRUcmFj
a1Jlc291cmNlOworI2VuZGlmCisKKyAgICBpZiAoIW1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCkBAIC00NzQsMTAgKzQ4OCwxOSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFzeW5jRXZlbnRUaW1lckZpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewotICAg
IGlmIChtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCi0gICAgICAgIGxv
YWROZXh0U291cmNlQ2hpbGQoKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRJbnRlcm5hbCgpOwor
ICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSB7CisgICAgICAgIGlm
IChtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCisgICAgICAgICAgICBs
b2FkTmV4dFNvdXJjZUNoaWxkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvYWRJbnRl
cm5hbCgpOworICAgIH0KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9wZW5k
aW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpCisgICAgICAgIGNvbmZpZ3VyZVRleHRU
cmFja3MoKTsKKyNlbmRpZgorCisgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKIH0KIAogUGFz
c1JlZlB0cjxNZWRpYUVycm9yPiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApAQCAt
NjMzLDkgKzY1Niw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKICAg
ICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlh
UmVzdHJpY3Rpb24pOwogCiAgICAgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBsb2FkVGV4dFRyYWNrcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCkBAIC04MzcsMjggKzg1Nyw2IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnMKIH0KIAogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRleHRUcmFja3MoKQot
ewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCi0gICAgICAgICAgICBsb2FkTmV4dFRleHRUcmFjayhz
dGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSkpOwotICAgIH0KLX0KLQotdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFj
aykKLXsKLSAgICAvLyBGSVhNRSg3MTEyNCk6IFRoaXMgc2hvdWxkIHNjaGVkdWxlIGFuICphc3lu
Y2hyb25vdXMqIGxvYWQuCi0gICAgdHJhY2stPmxvYWQoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHRoaXMpOwotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFj
ayA9IHRyYWNrLT50cmFjaygpOwotICAgIGlmICh0ZXh0VHJhY2spCi0gICAgICAgIG1fdGV4dFRy
YWNrcy5hcHBlbmQodGV4dFRyYWNrLnJlbGVhc2UoKSk7Ci0gICAgCi0gICAgLy8gRklYTUUoNzEx
MjMpOiBTZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBhY2NvcmRpbmdseS4KLX0KLQogdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKQogewog
ICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODY5LDExICs4NjcsNiBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAgICAgLy8gRklYTUUoNjI4ODUp
OiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQ3JlYXRl
ZChUZXh0VHJhY2sqKQotewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotfQotCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopIAogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpA
QCAtODk2LDcgKzg4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3Zl
Q3UKIAogI2VuZGlmCiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNv
bnN0IEtVUkwmIHVybCwgSW52YWxpZFNvdXJjZUFjdGlvbiBhY3Rpb25JZkludmFsaWQpCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFs
aWRVcmxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkg
ewogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwo
JXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nKHVybCku
dXRmOCgpLmRhdGEoKSk7CkBAIC05MTEsOCArOTA0LDEwIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6aXNTYWZlVG9Mb2FkVVJMKGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IGlmICghZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9t
U291cmNlKHVybCkpCisgICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1M
TWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRlbnQg
U2VjdXJpdHkgUG9saWN5IiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjcw
LDcgKzE2NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAg
ICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1fcGxh
eWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVkdWxl
TG9hZCgpOworICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAKICAgICBpZiAo
ZW5kZWRQbGF5YmFjaygpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwpAQCAtMTcw
OSw3ICsxNzA0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIAog
ICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9w
bGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1
bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAgIG1f
YXV0b3BsYXlpbmcgPSBmYWxzZTsKICAgICAKQEAgLTE5OTAsNDAgKzE5ODUsMTA2IEBAIGZsb2F0
IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSAKIFBhc3NSZWZQdHI8VGV4dFRyYWNr
PiBIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgUmVmUHRyPFRleHRU
cmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUodGhpcywga2luZCwgbGFiZWwsIGxh
bmd1YWdlKTsKLSAgICBtX3RleHRUcmFja3MuYXBwZW5kKHRleHRUcmFjayk7CisgICAgYWRkVGV4
dFRyYWNrKHRleHRUcmFjayk7CiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50KiB0
cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4
dFRyYWNrPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykKKyAgICAgICAgbV90ZXh0
VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3RleHRUcmFja3MtPmFwcGVuZCh0cmFjayk7
CisKKyAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y29uZmlndXJlVGV4dFRyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIAorICAg
IC8vIFdoZW4gYSB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gYSB0cmFjayBlbGVtZW50IGlz
IGFkZGVkIHRvIGEgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MsCisgICAgLy8g
dGhlIHVzZXIgYWdlbnQgbXVzdCBzZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBhcHByb3ByaWF0ZWx5
LCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgICAKKyAgICAv
LyAqIElmIHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgc3VidGl0bGVzIG9yIGNhcHRpb25zIGFuZCB0
aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmluZyBhCisgICAgLy8gdHJh
Y2sgd2l0aCB0aGlzIHRleHQgdHJhY2sga2luZCwgdGV4dCB0cmFjayBsYW5ndWFnZSwgYW5kIHRl
eHQgdHJhY2sgbGFiZWwgZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vCisgICAgLy8gb3RoZXIgdGV4
dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBh
IHRleHQgdHJhY2sga2luZCBvZiBlaXRoZXIgc3VidGl0bGVzCisgICAgLy8gb3IgY2FwdGlvbnMg
d2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAqIElmIHRoZSB0ZXh0IHRy
YWNrIGtpbmQgaXMgZGVzY3JpcHRpb25zIGFuZCB0aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFuIGlu
dGVyZXN0IGluIGhhdmluZyB0ZXh0IAorICAgIC8vIGRlc2NyaXB0aW9ucyB3aXRoIHRoaXMgdGV4
dCB0cmFjayBsYW5ndWFnZSBhbmQgdGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUg
aXMgbm8gb3RoZXIgdGV4dCAKKyAgICAvLyB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxp
c3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBkZXNjcmlwdGlvbnMg
d2hvc2UgdGV4dCAKKyAgICAvLyB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAgICBMZXQg
dGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nLgorICAgIC8vICAgIElmIHRoZXJlIGlzIGEg
dGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hv
c2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcgCisgICAgLy8gICAgYnkgZGVmYXVsdCwgdGhl
IHVzZXIgYWdlbnQgbXVzdCBmdXJ0aGVybW9yZSBjaGFuZ2UgdGhhdCB0ZXh0IHRyYWNrJ3MgdGV4
dCB0cmFjayBtb2RlIHRvIGhpZGRlbi4KKyAgICAKKyAgICAvLyAqIElmIHRoZSB0ZXh0IHRyYWNr
IGtpbmQgaXMgY2hhcHRlcnMgYW5kIHRoZSB0ZXh0IHRyYWNrIGxhbmd1YWdlIGlzIG9uZSB0aGF0
IHRoZSB1c2VyIGFnZW50IGhhcyByZWFzb24KKyAgICAvLyB0byBiZWxpZXZlIGlzIGFwcHJvcHJp
YXRlIGZvciB0aGUgdXNlciwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhl
IG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mCisgICAgLy8gdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQg
dHJhY2sga2luZCBvZiBjaGFwdGVycyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZwor
ICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCisgICAgCisgICAg
Ly8gKiBJZiB0aGUgdHJhY2sgZWxlbWVudCBoYXMgYSBkZWZhdWx0IGF0dHJpYnV0ZSBzcGVjaWZp
ZWQsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYQorICAgIC8v
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBz
aG93aW5nIG9yIHNob3dpbmcgYnkgZGVmYXVsdAorICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFj
ayBtb2RlIGJlIHNob3dpbmcgYnkgZGVmYXVsdC4KKyAgICAKKyAgICAvLyBPdGhlcndpc2UKKyAg
ICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBkaXNhYmxlZC4KKyAgICAKKyAgICAv
LyBGSVhNRSg3MTEyMyk6IFVudGlsIHRoZSBhYm92ZSBsb2dpYyBoYXMgYmVlbiBpbXBsZW1lbnRl
ZCwganVzdCB0ZWxsIGFsbCB0ZXh0IHRyYWNrcyB0byBsb2FkLgorICAgIGZvciAoTm9kZSogbm9k
ZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodHJhY2tUYWcpKQorICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpLT5zY2hlZHVsZUxvYWQoKTsKKyAgICB9Cit9
CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
cygpIGNvbnN0IAogeworICAgIHJldHVybiBtX3RleHRUcmFja3M7Cit9CisKK3ZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQp
Cit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRy
YWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5n
ZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVtZW50LT5o
YXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVudC0+
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dp
bmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKLSAgICBsb2FkTmV4dFRleHRU
cmFjayh0cmFjayk7CisKKyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0
ZXh0IHRyYWNrcworICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQg
Y2hhbmdlcyBhbmQgdGhlIG5ldyBwYXJlbnQgaXMgYSBtZWRpYSBlbGVtZW50LCAKKyAgICAvLyB0
aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgYWRkIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9u
ZGluZyB0ZXh0IHRyYWNrIHRvIHRoZSAKKyAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcyAuLi4gW2NvbnRpbnVlcyBpbiBUZXh0VHJhY2tMaXN0OjphcHBlbmRdCisgICAg
UmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOworICAg
IGlmICghdGV4dFRyYWNrKQorICAgICAgICByZXR1cm47CisgICAgYWRkVGV4dFRyYWNrKHRleHRU
cmFjayk7ICAgIAorICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJjZSk7CiB9CiAgCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50
KiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxU
cmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYg
KHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNr
LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVtZW50
LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVu
dC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZCAtICdzcmMnIGlzICVzIiwgdXJs
Rm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgotfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrU291cmNlQ2hhbmdlZChIVE1MVHJhY2tFbGVtZW50KiB0
cmFjaykKLXsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRy
YWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0dHJp
YnV0ZShzcmNBdHRyKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dHJh
Y2tTb3VyY2VDaGFuZ2VkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgfQotI2VuZGlmCi0gICAgbG9hZE5leHRUZXh0VHJhY2sodHJhY2spOwor
ICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJhY2soKTsK
KyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC44LjEwLjEy
LjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyBXaGVuIGEgdHJhY2sg
ZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdhcyBh
IG1lZGlhIGVsZW1lbnQsIAorICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1vdmUg
dGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUgCisg
ICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCisgICAgbV90ZXh0VHJh
Y2tzLT5yZW1vdmUodGV4dFRyYWNrKTsKIH0KICNlbmRpZgogCkBAIC0yMDQyLDcgKzIxMDMsNyBA
QCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyCiAgICAgcmV0dXJuIG5l
eHRVUkwuaXNWYWxpZCgpOwogfQogCi1LVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5cGUsIEludmFsaWRTb3VyY2VBY3Rpb24g
YWN0aW9uSWZJbnZhbGlkKQorS1VSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291cmNl
Q2hpbGQoQ29udGVudFR5cGUgKmNvbnRlbnRUeXBlLCBJbnZhbGlkVXJsQWN0aW9uIGFjdGlvbklm
SW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMg
d2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJj
ZT4gZWxlbWVudHMuCkBAIC0yMTU0LDcgKzIyMTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAgLy8gYXR0cmlidXRlIGFuZCB3aG9zZSBuZXR3b3JrU3Rh
dGUgaGFzIHRoZSB2YWx1ZSBORVRXT1JLX0VNUFRZLCB0aGUgdXNlciBhZ2VudCBtdXN0IGludm9r
ZSAKICAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBhbGdvcml0
aG0uCiAgICAgaWYgKG5ldHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktf
RU1QVFkpIHsKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChN
ZWRpYVJlc291cmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUz
LDcgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBjbGFz
cyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBU
aW1lUmFuZ2VzOwogY2xhc3MgVWludDhBcnJheTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZP
Ul9WSURFTykKQEAgLTg5LDcgKzkwLDExIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7
CisgICAgZW51bSBMb2FkVHlwZSB7CisgICAgICAgIE1lZGlhUmVzb3VyY2UgPSAxIDw8IDAsCisg
ICAgICAgIFRleHRUcmFja1Jlc291cmNlID0gMSA8PCAxCisgICAgfTsKKyAgICB2b2lkIHNjaGVk
dWxlTG9hZChMb2FkVHlwZSk7CiAgICAgCiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUg
bW92aWVMb2FkVHlwZSgpIGNvbnN0OwogICAgIApAQCAtMTgxLDkgKzE4NiwyMCBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFk
ZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCA9ICIiLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlID0gIiIpOworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4g
dGV4dFRyYWNrcygpIGNvbnN0OworCisgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+KTsKKwogICAgIHZpcnR1YWwgdm9pZCB0cmFja1dhc0FkZGVkKEhUTUxUcmFja0Vs
ZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFja0Vs
ZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tTb3VyY2VDaGFuZ2VkKEhUTUxUcmFja0Vs
ZW1lbnQqKTsKKworICAgIC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92
ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTIzMCw2ICsyNDYsOSBAQCBwdWJs
aWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwogI2Vu
ZGlmCiAKKyAgICBlbnVtIEludmFsaWRVcmxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07
CisgICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVcmxBY3Rpb24p
OworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0zNDks
MjMgKzM2OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvclNvdXJjZUNoYW5nZSgpOwog
ICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpOwogCi0gICAgZW51bSBJbnZhbGlkU291cmNlQWN0aW9u
IHsgRG9Ob3RoaW5nLCBDb21wbGFpbiB9OwotICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0
IEtVUkwmLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKLSAgICBLVVJMIHNlbGVjdE5leHRTb3VyY2VD
aGlsZChDb250ZW50VHlwZSosIEludmFsaWRTb3VyY2VBY3Rpb24pOworICAgIEtVUkwgc2VsZWN0
TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgSW52YWxpZFVybEFjdGlvbik7CiAgICAgdm9p
ZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBsb2FkVGV4dFRyYWNrcygpOwotICAgIHZvaWQg
bG9hZE5leHRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwotCi0gICAgLy8gVGV4dFRyYWNr
Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRU
cmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tD
dWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
KiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKLSAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPik7CisgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYKIAogICAgIC8v
IFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVz
dHJpY3Rpb25zLgpAQCAtNDcxLDYgKzQ3OCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBmbG9h
dCBtX2NhY2hlZFRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lV2FsbENsb2Nr
VXBkYXRlVGltZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX21pbmltdW1XYWxsQ2xvY2tUaW1lVG9D
YWNoZU1lZGlhVGltZTsKKyAgICAKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRpbmdMb2FkRmxh
Z3M7CisgICAgUGVuZGluZ0xvYWRGbGFncyBtX3BlbmRpbmdMb2FkRmxhZ3M7CiAKICAgICBib29s
IG1fcGxheWluZyA6IDE7CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydCA6
IDE7CkBAIC01MTQsNyArNTI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNrczsK
KyAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogI2VuZGlmCiB9OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJldmlzaW9uIDk5
NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIG1vZHVsZSBodG1sIHsKIAogI2lmIGRlZmluZWQo
RU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxlZEF0
UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3RyaW5n
IGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERPTVN0
cmluZyBsYW5ndWFnZSk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1l
PXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKICNlbmRpZgogfTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNp
b24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIGlubGluZSBIVE1MVHJhY2tFbGVtZW50OjpI
VE1MVHJhY2tFbGVtZW4KIAogSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQog
eworICAgIGlmIChtX3RyYWNrKQorICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgpOwogfQog
CiBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01OSwx
NiArNjEsMTYgQEAgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbAogdm9p
ZCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKIHsKICAgICBI
VE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKLSAgICBFbGVtZW50KiBwYXJlbnQg
PSBwYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFFbGVt
ZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2Rl
KCkpLT50cmFja1dhc0FkZGVkKHRoaXMpOworCisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBh
cmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICBwYXJlbnQtPnRyYWNrV2FzQWRkZWQodGhp
cyk7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6d2lsbFJlbW92ZSgpCiB7Ci0gICAgRWxl
bWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlmIChwYXJlbnQgJiYgcGFyZW50
LT5pc01lZGlhRWxlbWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tXaWxsQmVSZW1vdmVkKHRoaXMpOworICAgIGlmIChIVE1M
TWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcGFyZW50LT50
cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CisKICAgICBIVE1MRWxlbWVudDo6d2lsbFJlbW92ZSgp
OwogfQogCkBAIC05MCw4ICs5Miw4IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+bmFt
ZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIGlmICghZ2V0QXR0
cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBwYXJlbnROb2RlKCkpCi0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tTb3VyY2VD
aGFuZ2VkKHRoaXMpOworICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5
KCkgJiYgbWVkaWFFbGVtZW50KCkpCisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAgICB9
CiB9CiAKQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldExhYmVs
KGNvbnN0IFN0CiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNEZWZhdWx0KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzQXR0cmlidXRlKGRlZmF1bHRBdHRyKTsKKyAgICByZXR1cm4gZmFzdEhh
c0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0
SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KQpAQCAtMTQ1LDExICsxNDcsMTEgQEAgdm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpzZXRJc0RlZmF1bHQoYm9vbAogICAgIHNldEJvb2xlYW5BdHRyaWJ1dGUo
ZGVmYXVsdEF0dHIsIGlzRGVmYXVsdCk7CiB9CiAKLVRleHRUcmFjayogSFRNTFRyYWNrRWxlbWVu
dDo6dHJhY2soKSBjb25zdAorUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gSFRNTFRyYWNr
RWxlbWVudDo6dHJhY2soKQogewotICAgIGlmIChtX3RyYWNrKQotICAgICAgICByZXR1cm4gbV90
cmFjay5nZXQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fdHJhY2spCisgICAgICAgIG1f
dHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqPihkb2N1bWVudCgpKSwga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5n
KCksIGlzRGVmYXVsdCgpKTsKKyAgICByZXR1cm4gbV90cmFjazsKIH0KIAogYm9vbCBIVE1MVHJh
Y2tFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKQEAg
LTE1NywxOSArMTU5LDc5IEBAIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUo
QXQKICAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotdm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojpsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRl
eHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVk
dWxlTG9hZCgpCiB7Ci0gICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUodHJh
Y2tDbGllbnQsIHRoaXMsIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7
CisgICAgaWYgKCFtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhh
c0F0dHJpYnV0ZShzcmNBdHRyKSkKLSAgICAgICAgbV90cmFjay0+bG9hZChnZXROb25FbXB0eVVS
TEF0dHJpYnV0ZShzcmNBdHRyKSwgY29udGV4dCk7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRl
KHNyY0F0dHIpKQorICAgICAgICByZXR1cm47CisKKyAgICB0cmFjaygpLT5zY2hlZHVsZUxvYWQo
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cikpOworfQorCitib29sIEhUTUxUcmFja0Vs
ZW1lbnQ6OmNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJiB1cmwpCit7
CisgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CisgICAgaWYg
KCFwYXJlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcGFyZW50LT5pc1Nh
ZmVUb0xvYWRVUkwodXJsLCBIVE1MTWVkaWFFbGVtZW50OjpDb21wbGFpbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJs
LnN0cmluZygpKTsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tMb2FkaW5n
Q29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVkKQordm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojpsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9v
bCBsb2FkaW5nRmFpbGVkKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShsb2FkaW5nRmFpbGVkID8gZXZlbnROYW1lcygpLmVycm9y
RXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiB9Cisg
ICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRl
eHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1l
ZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZWFkeVN0YXRl
Q2hhbmdlZCh0cmFjayk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFj
a01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1l
bnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0
VHJhY2tNb2RlQ2hhbmdlZCh0cmFjayk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6
OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlz
dCogY3VlcykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZXModHJhY2ssIGN1
ZXMpOworfQorICAgIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWVz
KFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCit7CisgICAg
aWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKK30KKyAgICAKK3Zv
aWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ssIFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQq
IHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJh
Y2tBZGRDdWUodHJhY2ssIGN1ZSk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRl
eHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqIHRyYWNrLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4gY3VlKQoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRyYWNrLCBj
dWUpOworfQorCitIVE1MTWVkaWFFbGVtZW50KiBIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVsZW1l
bnQoKSBjb25zdAoreworICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKKyAg
ICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpOworCisgICAgcmV0
dXJuIDA7Cit9CiAKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogU3RyaW5nIEhUTUxUcmFja0VsZW1l
bnQ6Oml0ZW1WYWx1ZVRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmgJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwcml2YXRlIFRleHRUcmFja0xvYWRpbmdDbGllbnQgeworY2xhc3MgSFRNTE1lZGlhRWxl
bWVudDsKKworY2xhc3MgSFRNTFRyYWNrRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHVi
bGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRN
TFRyYWNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
CkBAIC00OCwxOCArNTAsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3JjbGFuZyhjb25zdCBT
dHJpbmcmKTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
SXNEZWZhdWx0KGJvb2wpOwotICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiB0cmFjaygpOwogICAgIAotICAgIHZvaWQgbG9hZChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kik7CisgICAgdm9pZCBzY2hl
ZHVsZUxvYWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFj
ayosIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChMb2Fk
YWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLyk7CiAKIHByaXZhdGU6Ci0K
LSAgICAvLyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sKTsKLQogICAgIEhUTUxU
cmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVh
bCB+SFRNTFRyYWNrRWxlbWVudCgpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyk7CiAKQEAgLTcyLDcgKzcyLDE4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICBIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdDsKKworICAgIC8vIFRleHRUcmFja0xvYWRpbmdDbGll
bnQKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNr
Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0
VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KTsKKwogICAgIFJlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gbV90cmFjazsKKyAg
ICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHJldmlzaW9uIDk5
NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDI2ICsyOSw1MyBAQAogCiAjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJh
Y2suaCIKIAorI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRF
dmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhUZXh0
VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5n
Q2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0
cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKHRyYWNrQ2xp
ZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCi0gICAgLCBtX2xvYWRpbmdDbGllbnQobG9hZGlu
Z0NsaWVudCkKK0xvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tF
bGVtZW50KiB0cmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBi
b29sIGlzRGVmYXVsdCkKKyAgICA6IFRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1
YWdlKQorICAgICwgbV90cmFja0VsZW1lbnQodHJhY2spCisgICAgLCBtX2xvYWRUaW1lcih0aGlz
LCAmTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKQorICAgICwgbV9jb250ZXh0KGNv
bnRleHQpCiAgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCiB7CisgICAgQVNTRVJUKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7CiB9CiAKIExvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0
VHJhY2soKQogewogfQogCi12b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IEtVUkwm
IHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgTG9hZGFibGVUZXh0
VHJhY2s6OmNsZWFyQ2xpZW50KCkKIHsKLSAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICBtX2xv
YWRlciA9IFRleHRUcmFja0xvYWRlcjo6Y3JlYXRlKHRoaXMsIGNvbnRleHQpOwotICAgIG1fbG9h
ZGVyLT5sb2FkKHVybCk7CisgICAgbV90cmFja0VsZW1lbnQgPSAwOworICAgIFRleHRUcmFjazo6
Y2xlYXJDbGllbnQoKTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVMb2Fk
KGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVybDsKKyAgICBpZiAoIW1fbG9hZFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30K
Kwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoVGltZXI8TG9hZGFibGVU
ZXh0VHJhY2s+KikKK3sKKyAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TE9BRElORyk7Cisg
ICAgCisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+Y2FuY2VsTG9hZCgpOwor
CisgICAgaWYgKCFtX3RyYWNrRWxlbWVudCB8fCAhbV90cmFja0VsZW1lbnQtPmNhbkxvYWRVcmwo
dGhpcywgbV91cmwpKSB7CisgICAgICAgIHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpIVE1MX0VS
Uk9SKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2xvYWRlciA9IFRleHRU
cmFja0xvYWRlcjo6Y3JlYXRlKHRoaXMsIG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9sb2FkZXIt
PmxvYWQobV91cmwpOwogfQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZhaWxh
YmxlKFRleHRUcmFja0xvYWRlciogbG9hZGVyKQpAQCAtODIsOCArMTA5LDggQEAgdm9pZCBMb2Fk
YWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZQogCiAgICAgbG9hZGluZ0ZhaWxlZCA/IHNl
dFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpIVE1MX0VSUk9SKSA6IHNldFJlYWR5U3RhdGUoVGV4dFRy
YWNrOjpMT0FERUQpOwogCi0gICAgaWYgKG1fbG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9sb2Fk
aW5nQ2xpZW50LT50ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKHRoaXMsIGxvYWRpbmdGYWlsZWQp
OworICAgIGlmIChtX3RyYWNrRWxlbWVudCkKKyAgICAgICAgbV90cmFja0VsZW1lbnQtPmxvYWRp
bmdDb21wbGV0ZWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJldmlz
aW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSwyMyArMzksMjUgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsK
IGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAotY2xhc3MgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBMb2FkYWJsZVRleHRUcmFj
a0NsaWVudCA6IHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwg
flRleHRUcmFja0xvYWRpbmdDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRU
cmFja0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2FkaW5n
Q29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25z
dCBLVVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBs
ZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9
OwogCiBjbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUg
VGV4dFRyYWNrTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxM
b2FkYWJsZVRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIFRl
eHRUcmFja0xvYWRpbmdDbGllbnQqIGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1
bHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShIVE1M
VHJhY2tFbGVtZW50KiB0cmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TG9hZGFibGVUZXh0VHJhY2sodHJhY2tDbGllbnQsIGxvYWRpbmdDbGllbnQsIGtpbmQsIGxhYmVs
LCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTG9h
ZGFibGVUZXh0VHJhY2sodHJhY2ssIGNvbnRleHQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNE
ZWZhdWx0KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CiAKLSAg
ICB2b2lkIGxvYWQoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBi
b29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChj
b25zdCBLVVJMJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogcHJpdmF0
ZToKICAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQKQEAgLTY0LDEwICs2NiwxNSBAQCBwcml2
YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2FkZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIq
LCBib29sIGxvYWRpbmdGYWlsZWQpOwogCi0gICAgTG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNr
Q2xpZW50KiwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQp
OworICAgIExvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisKKyAgICB2b2lkIGxvYWRUaW1l
ckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopOwogCisgICAgSFRNTFRyYWNrRWxlbWVu
dCogbV90cmFja0VsZW1lbnQ7CisgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9hZFRp
bWVyOworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CiAgICAg
T3duUHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgVGV4dFRyYWNrTG9hZGluZ0Ns
aWVudCogbV9sb2FkaW5nQ2xpZW50OworICAgIEtVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lzRGVm
YXVsdDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
VHJhY2suY3BwCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTIgKzQxLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogVGV4dFRyYWNrOjpUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSkKICAgICA6IFRyYWNrQmFzZShUcmFja0Jhc2U6OlRleHRUcmFjaykKKyAgICAsIG1fY2xp
ZW50KGNsaWVudCkKICAgICAsIG1fa2luZChraW5kKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAg
ICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCiAgICAgLCBtX3JlYWR5U3RhdGUoVGV4dFRyYWNrOjpO
T05FKQogICAgICwgbV9tb2RlKFRleHRUcmFjazo6U0hPV0lORykKLSAgICAsIG1fY2xpZW50KGNs
aWVudCkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiA5OTQy
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4
dFRyYWNrQ3VlTGlzdCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
cyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
KSA9IDA7CkBAIC03NywxNCArNzYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQogICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lkIHNldENsaWVudChUZXh0VHJhY2tDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVD
dWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdl
c3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOworICAgIHZvaWQgbmV3Q3Vlc0xvYWRlZCgp
OworICAgIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAJKHJldmlzaW9uIDk5NDIx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksOCArNjksOCBAQCB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVm
UHRyPFRlCiAKIHZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPiBjdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKIHsKLSAgICBBU1NFUlQoc3RhcnQg
Pj0gMCAmJiBzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQoZW5kID49IDAgJiYg
ZW5kIDw9IG1fbGlzdC5zaXplKCkpOworICAgIEFTU0VSVChzdGFydCA8PSBtX2xpc3Quc2l6ZSgp
KTsKKyAgICBBU1NFUlQoZW5kIDw9IG1fbGlzdC5zaXplKCkpOwogCiAgICAgLy8gTWFpbnRhaW4g
dGV4dCB0cmFjayBjdWUgb3JkZXI6CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKworI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJU
cmFja0V2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUZXh0VHJhY2tMaXN0
OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVy
KG93bmVyKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6
YXN5bmNFdmVudFRpbWVyRmlyZWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7Cit9CisKK1RleHRUcmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkKK3sKK30KKwordW5zaWdu
ZWQgVGV4dFRyYWNrTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmFja3Mu
c2l6ZSgpOworfQorCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpCit7CisgICAgaWYgKGluZGV4IDwgbV90cmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bV90cmFja3NbaW5kZXhdLmdldCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFj
a0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgUmVmUHRy
PFRleHRUcmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBtX3RyYWNrcy5hcHBlbmQodHJhY2tS
ZWYpOworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZik7Cit9CisKK3ZvaWQgVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICBz
aXplX3QgaW5kZXggPSBtX3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYWNrcy5yZW1vdmUoaW5kZXgpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsK
K30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1v
Zi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJh
bmQgdGV4dCB0cmFja3MKKyAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQorICAgIC8v
IC4uLiB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRk
dHJhY2ssIHRoYXQgZG9lcyBub3QgCisgICAgLy8gYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJs
ZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggCisgICAgLy8g
dGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgdGV4dCB0cmFjaydzIFRleHRU
cmFjayBvYmplY3QsIGF0IAorICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50J3MgdGV4dFRyYWNrcyBh
dHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KKworICAgIFJlZlB0cjxUZXh0VHJhY2s+
IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAg
aW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0g
ZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9wZW5k
aW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNr
RXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQor
Cit2b2lkIFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFj
a0xpc3Q+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAo
cGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAg
ICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOwor
fQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBU
ZXh0VHJhY2tMaXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBUZXh0VHJh
Y2s7CitjbGFzcyBUZXh0VHJhY2tMaXN0OworCitjbGFzcyBUZXh0VHJhY2tMaXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5UZXh0VHJhY2tMaXN0KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKKyAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBw
ZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRl
eHRUcmFja0xpc3Q+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6
ZGVyZWY7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKKworICAgIHZvaWQgY2xlYXJPd25lcigp
IHsgbV9vd25lciA9IDA7IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBvd25lcigpIHsgcmV0dXJu
IG1fb3duZXI7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1l
bnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tF
dmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmly
ZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fY29udGV4dDsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX293bmVyOworCisgICAgVmVjdG9y
PFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8VGV4dFRyYWNrTGlz
dD4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX3RyYWNrczsKKyAgICAK
KyAgICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworbW9kdWxlIGh0bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9VklERU9fVFJBQ0ssCisgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFj
aywKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAg
ICBDdXN0b21Jc1JlYWNoYWJsZQorICAgIF0gVGV4dFRyYWNrTGlzdCB7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgVGV4dFRyYWNrIGl0
ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hZGR0cmFjazsKKworICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKKyAgICB9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTQgQEAgdm9pZCBUZXh0
VHJhY2tMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKAogICAgICAgICBtX2NsaWVudC0+Y3VlTG9h
ZGluZ0NvbXBsZXRlZCh0aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7CiB9CiAKK3ZvaWQgVGV4dFRy
YWNrTG9hZGVyOjpjYW5jZWxMb2FkKCkKK3sKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7Cisg
ICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX2Nh
Y2hlZEN1ZURhdGEgPSAwOworICAgIH0KK30KKwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9j
YWNoZWRDdWVEYXRhID09IHJlc291cmNlKTsKQEAgLTE0Miw4ICsxNTAsNyBAQCB2b2lkIFRleHRU
cmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjCiAgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAg
Ci0gICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9jYWNoZWRD
dWVEYXRhID0gMDsKKyAgICBjYW5jZWxMb2FkKCk7CiB9CiAKIGJvb2wgVGV4dFRyYWNrTG9hZGVy
Ojpsb2FkKGNvbnN0IEtVUkwmIHVybCkKQEAgLTE1MSwxMCArMTU4LDcgQEAgYm9vbCBUZXh0VHJh
Y2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdQogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExv
YWRDdWVzKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fY2Fj
aGVkQ3VlRGF0YSkgewotICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlz
KTsKLSAgICAgICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKLSAgICB9CisgICAgY2FuY2VsTG9hZCgp
OwogICAgIAogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuaAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRlcigpOwogICAgIAogICAgIGJvb2wgbG9hZChjb25z
dCBLVVJMJik7CisgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICAgICAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA5OTQyMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDYg
KzYxMyw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1
bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwog
ICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4
dFRyYWNrQ3VlQ29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3
IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRl
b1RyYWNrXSBUZXh0VHJhY2tDdWVMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlTGlzdDsKKyAg
ICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRU
cmFja0xpc3RDb25zdHJ1Y3RvciBUZXh0VHJhY2tMaXN0OwogICAgICAgICBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVHJhY2tFdmVudENvbnN0cnVjdG9yIFRy
YWNrRXZlbnQ7CiAjZW5kaWYKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk1MTQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0w
OCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgVGV4dFRyYWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxN
ZWRpYUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTEt
MTEtMDcgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHI5OTAyNS1yOTkwMzcpOiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxl
Y3QtZWxlbWVudC1zZWxlY3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBpcyBhc3NlcnRpbmcKSW5k
ZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LWFkZC10cmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rl
c3RzIHRoZSBsb2FkIGV2ZW50IG9uIEhUTUxUcmFja0VsZW1lbnQgYW5kIExPQURFRCByZWFkeVN0
YXRlIG9uIFRleHRUcmFjayB3aGVuIHNyYyBpcyBzZXQgZnJvbSBKYXZhU2NyaXB0LgorCisqKiBU
ZXN0IGEgVGV4dFRyYWNrIGNyZWF0ZWQgZm9yIGEgPHRyYWNrPiBlbGVtZW50LgorUlVOKHRyYWNr
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJykpCitSVU4odmlkZW8uYXBw
ZW5kQ2hpbGQodHJhY2tFbGVtZW50KSkKK1JVTih0cmFja0VsZW1lbnQuc3JjID0gJ2NhcHRpb25z
LXdlYnZ0dC90YzAwNC13ZWJ2dHQtZmlsZS52dHQnKQorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFj
a3MubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMF0ucmVhZHlTdGF0ZSA9PSAn
MCcpIE9LCitFVkVOVChhZGR0cmFjaykKK0VYUEVDVEVEIChldmVudC50YXJnZXQgPT0gJ1tvYmpl
Y3QgVGV4dFRyYWNrTGlzdF0nKSBPSworRVhQRUNURUQgKGV2ZW50IGluc3RhbmNlb2Ygd2luZG93
LlRyYWNrRXZlbnQgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKGV2ZW50LnRyYWNrID09ICdbb2Jq
ZWN0IFRleHRUcmFja10nKSBPSworCisqKiBUZXN0IGEgVGV4dFRyYWNrIGNyZWF0ZWQgd2l0aCB2
aWRlby5hZGRUcmFjaygpLgorUlVOKHRyYWNrcy5wdXNoKHZpZGVvLmFkZFRyYWNrKCdjYXB0aW9u
cycsICdDYXB0aW9uIFRyYWNrJywgJ2VuJykpKQorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3Mu
bGVuZ3RoID09ICcyJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAnMCcp
IE9LCitFVkVOVChhZGR0cmFjaykKK0VYUEVDVEVEIChldmVudC50YXJnZXQgPT0gJ1tvYmplY3Qg
VGV4dFRyYWNrTGlzdF0nKSBPSworRVhQRUNURUQgKGV2ZW50IGluc3RhbmNlb2Ygd2luZG93LlRy
YWNrRXZlbnQgPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKGV2ZW50LnRyYWNrID09ICdbb2JqZWN0
IFRleHRUcmFja10nKSBPSworRVhQRUNURUQgKHRyYWNrc1sxXS5yZWFkeVN0YXRlID09ICcwJykg
T0sKKworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
YWRkLXRyYWNrLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2stYWRkLXRyYWNrLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay90cmFjay1hZGQtdHJhY2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisK
KyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KworICAgICAgICAgICAgdmFyIHRyYWNrcyA9IFtdOworICAgICAgICAgICAgdmFyIHRyYWNrRWxl
bWVudDsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRyYWNrQWRkZWQoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50LnR5cGUgKyAiKSIp
OworCisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudC50YXJnZXQiLCB2aWRlby50
ZXh0VHJhY2tzKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50IGluc3RhbmNl
b2Ygd2luZG93LlRyYWNrRXZlbnQiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImV2ZW50LnRyYWNrIiwgdHJhY2tzW3ZpZGVvLnRleHRUcmFja3MubGVuZ3RoIC0gMV0pOwor
CisgICAgICAgICAgICAgICAgaWYgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGVzdCBhIFRleHRUcmFjayBj
cmVhdGVkIHdpdGggdmlkZW8uYWRkVHJhY2soKS4iKTsKKyAgICAgICAgICAgICAgICAgICAgcnVu
KCJ0cmFja3MucHVzaCh2aWRlby5hZGRUcmFjaygnY2FwdGlvbnMnLCAnQ2FwdGlvbiBUcmFjaycs
ICdlbicpKSIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRU
cmFja3MubGVuZ3RoIiwgMik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJh
Y2tzWzFdLnJlYWR5U3RhdGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMV0ucmVhZHlT
dGF0ZSIsIFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhICZsdDt0
cmFjayZndDsgZWxlbWVudC4iKTsKKyAgICAgICAgICAgICAgICBydW4oInRyYWNrRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJykiKTsKKyAgICAgICAgICAgICAgICBydW4o
InZpZGVvLmFwcGVuZENoaWxkKHRyYWNrRWxlbWVudCkiKTsKKyAgICAgICAgICAgICAgICB0cmFj
a3MucHVzaCh0cmFja0VsZW1lbnQudHJhY2spOworCisgICAgICAgICAgICAgICAgLy8gUmVnaXN0
ZXIgdGhlICdhZGR0cmFjaycgbGlzdGVuZXIgYWZ0ZXIgY3JlYXRpbmcgdGhlIGVsZW1lbnQgdG8g
bWFrZSBzdXJlIHRoZQorICAgICAgICAgICAgICAgIC8vIGV2ZW50IGlzIGRpc3BhdGNoIGFzeW5j
aHJvbm91c2x5LgorICAgICAgICAgICAgICAgIHZpZGVvLnRleHRUcmFja3MuYWRkRXZlbnRMaXN0
ZW5lcigiYWRkdHJhY2siLCB0cmFja0FkZGVkKTsKKworICAgICAgICAgICAgICAgIHJ1bigidHJh
Y2tFbGVtZW50LnNyYyA9ICdjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JyIp
OworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgi
LCAxKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrc1swXS5yZWFkeVN0YXRl
IiwgVGV4dFRyYWNrLk5PTkUpOworICAgICAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0
cyB0aGUgbG9hZCBldmVudCBvbiBIVE1MVHJhY2tFbGVtZW50IGFuZCBMT0FERUQgcmVhZHlTdGF0
ZSBvbiBUZXh0VHJhY2sgd2hlbiBzcmMgaXMgc2V0IGZyb20gSmF2YVNjcmlwdC48L3A+CisgICAg
ICAgIDx2aWRlbz4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="112741"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114175</attachid>
            <date>2011-11-08 16:50:34 -0800</date>
            <delta_ts>2011-11-08 18:45:55 -0800</delta_ts>
            <desc>Updated to compile when ENABLE_VIDEO_TRACK is not defined</desc>
            <filename>patch_tracks_array_11.txt</filename>
            <type>text/plain</type>
            <size>77255</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjMxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBACisyMDExLTExLTA4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBuZXcgZmlsZXMgZm9yIFRleHRUcmFja0xpc3QuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46IEFkZCBUZXh0VHJhY2tMaXN0LCBjb25kaXRpb25hbCBvbiBWSURFT19U
UkFDSy4KKworICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKTogVXBkYXRl
IGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KTogVXBkYXRlIGZvciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAg
IGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IFVwZGF0ZSBmb3Igc2No
ZWR1bGVMb2FkIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFtZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAg
ICAgICAgICAgIHRoZSBtYWluIHJlc291cmNlIG9yIGEgdGV4dCB0cmFjayBzaG91bGQgYmUgbG9h
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQp
OiBVcGRhdGUgdG8gYWxsb3cgdGV4dCB0cmFjayBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6
IExvZyB3aGVuIENTUCBkZW5pZXMgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogVXBkYXRlIGZv
ciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRv
IFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2spOiBOZXcsIGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcsIGFkZCBjb21tZW50cyBhYm91dCB3aGF0IHRoaXMgc2hvdWxkCisgICAgICAgICAgICBk
byBldmVudHVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcyk6IE5ldywgcmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKTogQmFpbCBpZiBydW50aW1lIGZlYXR1cmUgaXMg
bm90IGVuYWJsZWQsIHNjaGVkdWxlCisgICAgICAgICAgICBhc3luY2hyb25vdXMgdGV4dCB0cmFj
ayBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBj
aGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRleHRUcmFja3MgYXR0cmlidXRlLgorCisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogVXNlIG5ldyBtZWRpYUVsZW1lbnQoKSBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgaW5zdGVhZCBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJh
Y2tFbGVtZW50Ojppc0RlZmF1bHQpOiBoYXNBdHRyaWJ1dGUgLT4gZmFzdEhhc0F0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUgdHJh
Y2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2No
ZWR1bGVMb2FkKTogTmV3LCB0ZWxsIHRoZSB0cmFjayB0byBzY2hlZHVsZSBhIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKTogTmV3LCBjaGVjayBz
ZWN1cml0eSBwb2xpY3kgdG8gc2VlIGlmIGl0IGlzIE9LCisgICAgICAgICAgICB0byBsb2FkIGEg
dGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBnaXZlIGl0
IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICBsb2FkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6IFJlbmFtZWQgZnJvbSB0ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xvYWRpbmdDbGll
bnQgaW50ZXJmYWNlCisgICAgICAgICAgICB1c2VkIHRvIGluZm9ybSBwYXJlbnQgb2YgVGV4dFRy
YWNrIHN0YXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCk6IE5ldywg
cmV0dXJuIHBhcmVudCBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOiBJbml0aWFsaXplIG5l
dyBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVyIHRvIGtpY2sgb2ZmIGxvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOiBD
YW5jZWwgY3VycmVudCBsb2FkLCBpZiBhbnksIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAg
bmV3IHVybCBpcyBhbGxvd2VkIHRvIGxvYWQsIGFuZCBzdGFydCBuZXcgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTogCisgICAg
ICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQ6On5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCk6IFRleHRUcmFja0xv
YWRpbmdDbGllbnQgLT4gTG9hZGFibGVUZXh0VHJhY2tDbGllbnQKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5Mb2FkVXJsKTogCisgICAgICAgIChXZWJDb3Jl
OjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KTogUmVu
YW1lZCBmcm9tIHNldENsaWVudCwgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgdG8gY2xlYXIgdGhl
IGNsaWVudCBwb2ludGVyLgorCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFkZCk6IEdldCByaWQgb2YgYSBj
b21waWxlciB3YXJuaW5nIHRoYXQgYnJlYWtzIHRoZSBPUyBYIGJ1aWxkLgorCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcDogQWRkZWQuIEltcGxlbWVudCB0aGUgVGV4dFRy
YWNrTGlzdCBvYmplY3QuCisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KToK
KyAgICAgICAgKFRleHRUcmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KToKKyAgICAgICAgKFRleHRU
cmFja0xpc3Q6Omxlbmd0aCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjppdGVtKToKKyAgICAg
ICAgKFRleHRUcmFja0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1v
dmUpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChU
ZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAoVGV4dFRyYWNr
TGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRy
YWNrTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNsZWFyT3duZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6b3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrTGlzdDo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrTGlzdDo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tM
aXN0OjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuaWRsOiBBZGRlZC4KKworICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjYW5jZWxMb2FkKTogTmV3LCBjYW5j
ZWwgcGVuZGluZyBvciBpbiBwcm9ncmVzcyBsb2FkIGFuZCBkZWxldGUgbG9hZGVyLgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IENhbGwgY2FuY2Vs
TG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6IERpdHRvLgor
ICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5pZGw6IEFkZCBUZXh0VHJhY2tMaXN0LgorCiAyMDExLTExLTA4ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjk5NjEzKTogSW5jb21w
bGV0ZSBwYWludGluZyBvZiB0aGUgcm9vdCBlbGVtZW50IGJhY2tncm91bmQgaW4gZmxpcHBlZCBi
bG9ja3Mgd3JpdGluZyBtb2RlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTk2
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MzAxLDYgKzMwMSw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL1Vp
bnQzMkFycmF5LmlkbAogICAgIGh0bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAKKyAgICBodG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCiAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbAog
CiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTIwNTcsNiArMjA1OCw3
IEBAIElGIChFTkFCTEVfVklERU9fVFJBQ0spCiAgICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNw
cAogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUluZGV4LmNwcAogICAgICAgICBodG1sL1RleHRU
cmFja0N1ZUxpc3QuY3BwCisgICAgICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKICAg
ICAgICAgaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tF
dmVudC5jcHAKICAgICAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA5OTYxOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw3IEBACiAj
aW5jbHVkZSAiSlNUZXh0VHJhY2suY3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIK
ICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZUxpc3QuY3BwIgorI2luY2x1ZGUgIkpTVGV4dFRyYWNr
TGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0V2ZW50LmNwcCIKICNlbmRpZgogI2luY2x1ZGUg
IkpTVGltZVJhbmdlcy5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJl
dmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29y
a2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFRleHRU
cmFjayBcCiAgICAgVGV4dFRyYWNrQ3VlIFwKICAgICBUZXh0VHJhY2tDdWVMaXN0IFwKKyAgICBU
ZXh0VHJhY2tMaXN0IFwKICAgICBUaW1lUmFuZ2VzIFwKICAgICBUb3VjaCBcCiAgICAgVG91Y2hF
dmVudCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiA5OTYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAt
NTkwLDYgKzU5MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0xKSAK
ICAgICBodG1sL1RleHRUcmFjay5pZGwgXAogICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmlkbCBcCiAg
ICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCisgICAgaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmlkbCBcCiAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbCBcCiB9CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNiArNTA0LDgg
QEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
VGV4dFRyYWNrQ3VlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tDdWVM
aXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZUxpc3QuaCBc
CisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTVGltZVJhbmdlcy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUaW1lUmFu
Z2VzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUb3VjaC5jcHAgXApAQCAtODUwLDYg
Kzg1Miw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVGV4dEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwK
QEAgLTE5ODAsNiArMTk4Myw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdl
cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC0xODk2LDYgKzE4OTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmggXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgg
XAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggXAorICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oIFwKICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICBo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaCBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBc
CkBAIC0zNTY0LDYgKzM1NjUsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJB
Q0s9MSkgCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAg
ICAgICAgICBiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmggXAogICAgICAgICAgICAgYmluZGlu
Z3MvanMvSlNUcmFja0V2ZW50Q3VzdG9tLmNwcAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNzIsNiArMTM3Miw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2Vi
R0xVbmlmb3JtTG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFZl
cnRleEFycmF5T2JqZWN0T0VTLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViS2l0
TG9zZUNvbnRleHQuaWRsJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsJywKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5pZGwnLApAQCAtMTkzNiw2ICsxOTM3LDcgQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNUZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNUb3VjaEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hM
aXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5j
cHAnLApAQCAtNTc4Niw2ICs1Nzg4LDcgQEAKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlk
ZXJUaHVtYkVsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJ
bm5lckVsZW1lbnRzLmgnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9X
ZWJWVFRQYXJzZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDEsMTIgKzEwMSwxNyBAQAogCQkwNzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzUzODYwMjE0NDg5RTk4
MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwICovOyB9OwogCQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVk
VGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi87IH07Ci0J
CTA3Njg5RDZFMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2ODlENkQxNDVCNTJD
QzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CisJCTA3Njk3MDg2MTQ2
M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0
VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRU
cmFja0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3
NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBB
MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsg
fTsKIAkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFB
MDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAw
QTU4REYxIC8qIEpTVHJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc4NDYzNDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5o
ICovOyB9OwogCQkwNzg0NjM4NTE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVC
MUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLzsgfTsKIAkJMDdCMDExM0YxMDMyMjQy
MjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMg
LyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLzsgfTsKKwkJMDdCNUEyREIxNDY0MzIw
QTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0
VHJhY2tMaXN0LmNwcCAqLzsgfTsKKwkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4
dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovOyB9Owor
CQkwN0I1QTMwRDE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBDMTQ2
ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovOyB9OworCQkwN0JE
RDZFQzE0NjlCNEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4
MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovOyB9OwogCQkwODA2RTU3QTEyODkzMDQ1
MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDgwRTQ5MjYx
MjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjIxMjU1RjNCRDAw
RUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oICovOyB9OwogCQkwODBFNDky
ODEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MEU0OTI0MTI1NUYzQkQw
MEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oICovOyB9OwpAQCAtNzExMyw3
ICs3MTE4LDggQEAKIAkJMDczNUVFNjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZFRleHRUcmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3Njg5RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2OTcwODQxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
Nzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03MTIyLDYgKzcxMjgsMTEgQEAKIAkJMDc5RjVFNEIwRjNCRUJFQTAw
NUUwNzgyIC8qIE1lZGlhUGxheWVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDdBRkU1OTAwRjE0NDZCRDAwODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRdWlja1RpbWUuY3Nz
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8q
IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEyREExNDY0MzIwQTAwQTgxRUNF
IC8qIEpTVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1RleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMDYx
NDY4NTM3MTAwQTgxRUNFIC8qIFRleHRUcmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFRleHRUcmFja0xpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1
QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tFdmVudEN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDgwNkU1NzkxMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDgwRTQ5MjExMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNl
bGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5
b3V0RW5naW5lQmFzZWxpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBF
NDkyMjEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGlu
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc4MDEsNiArMTc4MTIsOCBAQAog
CQkJCTA3MDc1NkQ4MTQyMzlCNEIwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZS5oICovLAogCQkJ
CTA3MDc1NkQ5MTQyMzlCNEMwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovLAog
CQkJCTA3MDc1NkRBMTQyMzlCNEUwMDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLywK
KwkJCQkwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLywK
KwkJCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi8sCiAJ
CQkJRTQ0NjE0MTIwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJ
RTQ0NjE0MTMwQ0Q2ODI2OTAwRkFEQTc1IC8qIEpTVGltZVJhbmdlcy5oICovLAogCQkJCTA3ODQ2
MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovLApAQCAtMTg0ODksNiAr
MTg1MDIsOSBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTA3Njk3MDg0MTQ2M0FEODcw
MEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLywKKwkJCQkwNzY5NzA4NTE0NjNBRDg3MDBG
NTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovLAorCQkJCTA3QjVBMzA2MTQ2ODUzNzEwMEE4MUVD
RSAvKiBUZXh0VHJhY2tMaXN0LmlkbCAqLywKIAkJCQkwNzAzMzREODE0NUEwMDZGMDA4RDhENDUg
LyogVHJhY2tCYXNlLmNwcCAqLywKIAkJCQkwNzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJh
Y2tCYXNlLmggKi8sCiAJCQkJMDcwMzM0RDAxNDU5RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQu
Y3BwICovLApAQCAtMTk1NjMsNyArMTk1NzksNiBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURE
NDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQlBODVGMjIwODE0MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNw
cCAqLywKIAkJCQlCQzI3NUNCMjExQzVFODVDMDBDOTIwNkMgLyogSlNBcnJheUJ1ZmZlckN1c3Rv
bS5jcHAgKi8sCiAJCQkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJW
aWV3SGVscGVyLmggKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1
c3RvbS5jcHAgKi8sCkBAIC0xOTY1OSw2ICsxOTY3NCw3IEBACiAJCQkJQkNCNzczNjAwQzE3ODUz
RDAwMTMyQkE0IC8qIEpTTm9kZUZpbHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkw
RTcyOTAwMEZGMjE1IC8qIEpTTm9kZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2
MTBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJQTg1RjIy
MDgxNDMwMzc3RDAwN0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
RTFBRDEyRDUxMjk1RDBCRDAwQUNBOTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9t
LmNwcCAqLywKIAkJCQk0OTk4QUVEMzEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcyRkNGMDAwQzRD
RDU1IC8qIEpTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20uY3BwICovLApAQCAtMTk2NzIsOSArMTk2
ODgsMTAgQEAKIAkJCQkwOEU0RkU0NTBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdMZW5ndGhDdXN0
b20uY3BwICovLAogCQkJCUIyQzk2RDhDMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NWR1BhdGhTZWdD
dXN0b20uY3BwICovLAogCQkJCTFBMkM0MEFBMERFQjU1QUEwMDVBRjE5RSAvKiBKU1RleHRDdXN0
b20uY3BwICovLAorCQkJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xp
c3RDdXN0b20uY3BwICovLAogCQkJCTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNr
Q3VzdG9tLmNwcCAqLywKIAkJCQkwNzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1
c3RvbS5oICovLAotCQkJCTA3Njg5RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRD
dXN0b20uY3BwICovLAorCQkJCTA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZl
bnRDdXN0b20uY3BwICovLAogCQkJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVX
YWxrZXJDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc3MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1Vp
bnQxNkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlGQUIgLyog
SlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCkBAIC0yNDYzMyw2ICsyNDY1MCw4IEBACiAJCQkJ
MzE2OTM3OUMxNDYwOUM2QzAwQzAxMzYyIC8qIERyYWdTZXNzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIxNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRl
eHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVD
RSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQx
QjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTI3NDg0LDcgKzI3
NTAzLDYgQEAKIAkJCQkwNzAzMzREOTE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTA3MDMzNEU5MTQ1QTFGMzYwMDhEOEQ0NSAvKiBKU1RyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3ODQ2MzQyMTQ1QjE1MUEwMEE1OERGMSAvKiBK
U1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMDc2ODlENkUxNDVCNTJDQzAwMUNE
MTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDhGRUJE
QzE0M0UzRUY3MDA3MjUwMkIgLyogQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDhGODU5RDQxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0FFOUY5MEYxNDY0NDFGMDAwQzI0NUIwIC8qIENTU0FzcGVjdFJhdGlv
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ5Miw3ICsyNzUxMCwxMSBAQAogCQkJCUNE
RUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3NkYzNkVBMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpT
VGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0I1QTMwRDE0Njg3RDcxMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTcx
MzQ0OTZEMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTA3QkRENkVDMTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNDA5LDEy
ICs0MDksMTUgQEAgZW5kaWYKIGlmIEVOQUJMRV9WSURFT19UUkFDSwogd2Via2l0Z3RrX2J1aWx0
X2hfYXBpICs9IFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktp
dERPTVRleHRUcmFjay5oIFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTVRleHRUcmFja0xpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3Vy
Y2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWUuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWVMaXN0LmggXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVHJhY2tFdmVudC5oCiB3
ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NVGV4dFRyYWNrLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TVRleHRUcmFja1ByaXZhdGUuaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRl
eHRUcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRy
YWNrTGlzdFByaXZhdGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRU
cmFja0N1ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tD
dWVQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tD
dWVMaXN0LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAJ
KHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYg
KzE2MSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIndlYmtpdC9XZWJL
aXRET01UZXh0VHJhY2tDdWVMaXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRE
T01UZXh0VHJhY2tDdWVQcml2YXRlLmgiCisjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRU
cmFja0xpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja1By
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVHJhY2tFdmVudFByaXZhdGUuaCIK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsx
MzgsNyBAQAogI2luY2x1ZGUgIkpTU3R5bGVTaGVldEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0Q3VzdG9tLmNwcCIKKyNp
bmNsdWRlICJKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVG91Y2hDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1Ry
YWNrQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SlNUZXh0VHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBKU1RleHRU
cmFja0xpc3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBK
U1RleHRUcmFja0xpc3QqIGpzVGV4dFRyYWNrTGlzdCA9IHN0YXRpY19jYXN0PEpTVGV4dFRyYWNr
TGlzdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgaWYgKCFqc1RleHRUcmFja0xpc3Qt
Pmhhc0N1c3RvbVByb3BlcnRpZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHN0YXRpY19jYXN0PFRleHRUcmFja0xp
c3QqPihqc1RleHRUcmFja0xpc3QtPmltcGwoKSktPm93bmVyKCkpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9y
eS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5
LmluCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAgUGVlckNvbm5lY3Rpb24g
Y29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIgY29uZGl0aW9uYWw9U0hBUkVE
X1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMK
IFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1RleHRUcmFja0xpc3QgY29uZGl0
aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25kaXRpb25hbD1XRUJfU09DS0VUUwogV29y
a2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBSZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+IEhUTUxBdWRpb0VsCiAgICAg
YXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBpZiAoIXNyYy5pc051bGwoKSkgewogICAg
ICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAgIGF1ZGlvLT5zY2hlZHVsZUxvYWQoKTsK
KyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1MTWVkaWFFbGVtZW50OjpNZWRpYVJlc291
cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJlbGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gOTk0MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogI2luY2x1ZGUgIkhUTUxU
cmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5j
bHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX0FVRElPKQpA
QCAtMjI1LDggKzIyNiwxMiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgp
CiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKHRoaXMp
OwogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWRDYWxsYmFja3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fdGV4
dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOworICAgIGlmIChtX3RleHRUcmFja3MpCisgICAgICAg
IG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOworICAgIGlmIChtX3RleHRUcmFja3MpIHsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsr
aSkKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+Y2xlYXJDbGllbnQoKTsKKyAg
ICB9CiAjZW5kaWYKIH0KIApAQCAtMjY4LDcgKzI3Myw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YXR0cmlidXRlQ2hhbmdlZCgKICAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikgewogICAg
ICAgICAvLyBUcmlnZ2VyIGEgcmVsb2FkLCBhcyBsb25nIGFzIHRoZSAnc3JjJyBhdHRyaWJ1dGUg
aXMgcHJlc2VudC4KICAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgp
KQotICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgICAgICBzY2hlZHVsZUxvYWQo
TWVkaWFSZXNvdXJjZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9PSBjb250cm9sc0F0dHIp
CiAgICAgICAgIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKIH0KQEAgLTM4MSwxMCArMzg2LDEw
IEBAIFJlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlUmUKICAKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewotICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQiKTsKKyAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCIpOwogICAgIEhUTUxFbGVt
ZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0
dHIpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQotICAgICAg
ICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwog
fQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKQpAQCAtNDIz
LDE3ICs0MjgsMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdAog
ICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgpOwogfQogCi12b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlTG9hZChMb2FkVHlwZSBsb2FkVHlwZSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUxvYWQiKTsKKworICAgIGlmICgobG9hZFR5cGUgJiBNZWRpYVJlc291
cmNlKSAmJiAhKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlhUmVzb3VyY2UpKSB7CiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgp
OworICAgICAgICBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAjZW5kaWYKKyAgICAgICAgCisg
ICAgICAgIHByZXBhcmVGb3JMb2FkKCk7CisgICAgICAgIG1fcGVuZGluZ0xvYWRGbGFncyB8PSBN
ZWRpYVJlc291cmNlOworICAgIH0KIAotICAgIGlmIChtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgcHJlcGFyZUZvckxvYWQoKTsKLSAgICBtX2xvYWRUaW1lci5z
dGFydE9uZVNob3QoMCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChsb2FkVHlw
ZSAmIFRleHRUcmFja1Jlc291cmNlKQorICAgICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gVGV4
dFRyYWNrUmVzb3VyY2U7CisjZW5kaWYKKworICAgIGlmICghbV9sb2FkVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKCkKQEAgLTQ3NCwxMCArNDg4LDE5
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRpbWVyRmkKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7
Ci0gICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNlRWxlbWVudCkKLSAgICAg
ICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwotICAgIGVsc2UKLSAgICAgICAgbG9hZEludGVybmFs
KCk7CisgICAgaWYgKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlhUmVzb3VyY2UpIHsKKyAgICAg
ICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNlRWxlbWVudCkKKyAgICAgICAg
ICAgIGxvYWROZXh0U291cmNlQ2hpbGQoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9h
ZEludGVybmFsKCk7CisgICAgfQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICht
X3BlbmRpbmdMb2FkRmxhZ3MgJiBUZXh0VHJhY2tSZXNvdXJjZSkKKyAgICAgICAgY29uZmlndXJl
VGV4dFRyYWNrcygpOworI2VuZGlmCisKKyAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgPSAwOwogfQog
CiBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IEhUTUxNZWRpYUVsZW1lbnQ6OmVycm9yKCkgY29uc3Qg
CkBAIC02MzMsOSArNjU2LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwo
KQogICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2Fk
TWVkaWFSZXN0cmljdGlvbik7CiAKICAgICBzZWxlY3RNZWRpYVJlc291cmNlKCk7Ci0jaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGxvYWRUZXh0VHJhY2tzKCk7Ci0jZW5kaWYKIH0KIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKCkKQEAgLTgzNywyOCArODU3
LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3VyY2UoY29ucwogfQogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGV4dFRyYWNr
cygpCi17Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAgICAgIGxvYWROZXh0VGV4dFRy
YWNrKHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKSk7Ci0gICAgfQotfQotCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQq
IHRyYWNrKQotewotICAgIC8vIEZJWE1FKDcxMTI0KTogVGhpcyBzaG91bGQgc2NoZWR1bGUgYW4g
KmFzeW5jaHJvbm91cyogbG9hZC4KLSAgICB0cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7Ci0gICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4
dFRyYWNrID0gdHJhY2stPnRyYWNrKCk7Ci0gICAgaWYgKHRleHRUcmFjaykKLSAgICAgICAgbV90
ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2sucmVsZWFzZSgpKTsKLSAgICAKLSAgICAvLyBGSVhN
RSg3MTEyMyk6IFNldCB0aGUgdGV4dCB0cmFjayBtb2RlIGFjY29yZGluZ2x5LgotfQotCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayop
CiB7CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCkBAIC04NjksMTEgKzg2Nyw2IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW4KICAgICAvLyBGSVhNRSg2
Mjg4NSk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tD
cmVhdGVkKFRleHRUcmFjayopCi17Ci0gICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCi19
Ci0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0KikgCiB7CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1l
bnQuCkBAIC04OTYsNyArODg5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tS
ZW1vdmVDdQogCiAjZW5kaWYKIAotYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRV
UkwoY29uc3QgS1VSTCYgdXJsLCBJbnZhbGlkU291cmNlQWN0aW9uIGFjdGlvbklmSW52YWxpZCkK
K2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwg
SW52YWxpZFVybEFjdGlvbiBhY3Rpb25JZkludmFsaWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9h
ZFVSTCglcykgLT4gRkFMU0UgYmVjYXVzZSB1cmwgaXMgaW52YWxpZCIsIHVybEZvckxvZ2dpbmco
dXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTkxMSw4ICs5MDQsMTAgQEAgYm9vbCBIVE1MTWVkaWFF
bGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRp
YUZyb21Tb3VyY2UodXJsKSkKKyAgICBpZiAoIWRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBv
bGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwpKSB7CisgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gcmVqZWN0ZWQgYnkgQ29u
dGVudCBTZWN1cml0eSBQb2xpY3kiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTE2NzAsNyArMTY2NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkK
IAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2No
ZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAg
IGlmIChlbmRlZFBsYXliYWNrKCkpIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CkBA
IC0xNzA5LDcgKzE3MDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwo
KQogCiAgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCiAgICAgaWYg
KCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZKQotICAgICAgICBz
Y2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogCiAg
ICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwogICAgIApAQCAtMTk5MCw0MCArMTk4NSwxMDYgQEAg
ZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgpIAogUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBraW5kLCBsYWJl
bCwgbGFuZ3VhZ2UpOwotICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQodGV4dFRyYWNrKTsKKyAgICBh
ZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsKICAgICByZXR1cm4gdGV4dFRyYWNrLnJlbGVhc2UoKTsK
IH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhUTUxUcmFja0VsZW1l
bnQqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IHRyYWNrKQoreworICAgIGlmICghbV90ZXh0VHJhY2tzKQorICAgICAgICBt
X3RleHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fdGV4dFRyYWNrcy0+YXBwZW5kKHRy
YWNrKTsKKworICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKK30KKwordm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAg
CisgICAgLy8gV2hlbiBhIHRleHQgdHJhY2sgY29ycmVzcG9uZGluZyB0byBhIHRyYWNrIGVsZW1l
bnQgaXMgYWRkZWQgdG8gYSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcywKKyAg
ICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IHNldCB0aGUgdGV4dCB0cmFjayBtb2RlIGFwcHJvcHJp
YXRlbHksIGFzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICAgIAor
ICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBzdWJ0aXRsZXMgb3IgY2FwdGlvbnMg
YW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIGEKKyAgICAv
LyB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNrIGxhbmd1YWdlLCBh
bmQgdGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUgaXMgbm8KKyAgICAvLyBvdGhl
ciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3
aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGVpdGhlciBzdWJ0aXRsZXMKKyAgICAvLyBvciBjYXB0
aW9ucyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAgIC8vICogSWYgdGhlIHRl
eHQgdHJhY2sga2luZCBpcyBkZXNjcmlwdGlvbnMgYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQg
YW4gaW50ZXJlc3QgaW4gaGF2aW5nIHRleHQgCisgICAgLy8gZGVzY3JpcHRpb25zIHdpdGggdGhp
cyB0ZXh0IHRyYWNrIGxhbmd1YWdlIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0
aGVyZSBpcyBubyBvdGhlciB0ZXh0IAorICAgIC8vIHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50
J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGRlc2NyaXB0
aW9ucyB3aG9zZSB0ZXh0IAorICAgIC8vIHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAgIC8vICAg
IExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCisgICAgLy8gICAgSWYgdGhlcmUg
aXMgYSB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNr
cyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZyAKKyAgICAvLyAgICBieSBkZWZhdWx0
LCB0aGUgdXNlciBhZ2VudCBtdXN0IGZ1cnRoZXJtb3JlIGNoYW5nZSB0aGF0IHRleHQgdHJhY2sn
cyB0ZXh0IHRyYWNrIG1vZGUgdG8gaGlkZGVuLgorICAgIAorICAgIC8vICogSWYgdGhlIHRleHQg
dHJhY2sga2luZCBpcyBjaGFwdGVycyBhbmQgdGhlIHRleHQgdHJhY2sgbGFuZ3VhZ2UgaXMgb25l
IHRoYXQgdGhlIHVzZXIgYWdlbnQgaGFzIHJlYXNvbgorICAgIC8vIHRvIGJlbGlldmUgaXMgYXBw
cm9wcmlhdGUgZm9yIHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBp
biB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YKKyAgICAvLyB0ZXh0IHRyYWNrcyB3aXRoIGEg
dGV4dCB0cmFjayBraW5kIG9mIGNoYXB0ZXJzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93
aW5nCisgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KKyAgICAK
KyAgICAvLyAqIElmIHRoZSB0cmFjayBlbGVtZW50IGhhcyBhIGRlZmF1bHQgYXR0cmlidXRlIHNw
ZWNpZmllZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhCisg
ICAgLy8gZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hvc2UgdGV4dCB0cmFjayBtb2Rl
IGlzIHNob3dpbmcgb3Igc2hvd2luZyBieSBkZWZhdWx0CisgICAgLy8gICAgTGV0IHRoZSB0ZXh0
IHRyYWNrIG1vZGUgYmUgc2hvd2luZyBieSBkZWZhdWx0LgorICAgIAorICAgIC8vIE90aGVyd2lz
ZQorICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIGRpc2FibGVkLgorICAgIAor
ICAgIC8vIEZJWE1FKDcxMTIzKTogVW50aWwgdGhlIGFib3ZlIGxvZ2ljIGhhcyBiZWVuIGltcGxl
bWVudGVkLCBqdXN0IHRlbGwgYWxsIHRleHQgdHJhY2tzIHRvIGxvYWQuCisgICAgZm9yIChOb2Rl
KiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCisgICAgICAgICAgICBz
dGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSktPnNjaGVkdWxlTG9hZCgpOworICAg
IH0KK30KKworUGFzc1JlZlB0cjxUZXh0VHJhY2tMaXN0PiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tzKCkgY29uc3QgCiB7CisgICAgcmV0dXJuIG1fdGV4dFRyYWNrczsKK30KKwordm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxl
bWVudCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwogI2lmICFMT0dfRElTQUJMRUQKLSAgICBp
ZiAodHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gdHJh
Y2stPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgIGlmICh0cmFja0VsZW1l
bnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7CisgICAgICAgIEtVUkwgdXJsID0gdHJhY2tFbGVt
ZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9y
TG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgotICAgIGxvYWROZXh0
VGV4dFRyYWNrKHRyYWNrKTsKKworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1i
YW5kIHRleHQgdHJhY2tzCisgICAgLy8gV2hlbiBhIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgZWxl
bWVudCBjaGFuZ2VzIGFuZCB0aGUgbmV3IHBhcmVudCBpcyBhIG1lZGlhIGVsZW1lbnQsIAorICAg
IC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBhZGQgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3Jy
ZXNwb25kaW5nIHRleHQgdHJhY2sgdG8gdGhlIAorICAgIC8vIG1lZGlhIGVsZW1lbnQncyBsaXN0
IG9mIHRleHQgdHJhY2tzIC4uLiBbY29udGludWVzIGluIFRleHRUcmFja0xpc3Q6OmFwcGVuZF0K
KyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0VsZW1lbnQtPnRyYWNrKCk7
CisgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgIHJldHVybjsKKyAgICBhZGRUZXh0VHJhY2so
dGV4dFRyYWNrKTsgICAgCisgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFja1Jlc291cmNlKTsKIH0K
ICAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFja0Vs
ZW1lbnQqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQo
SFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogI2lmICFMT0dfRElTQUJMRUQKLSAg
ICBpZiAodHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0g
dHJhY2stPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgIGlmICh0cmFja0Vs
ZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7CisgICAgICAgIEtVUkwgdXJsID0gdHJhY2tF
bGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAgICAgICAgTE9HKE1l
ZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkIC0gJ3NyYycgaXMgJXMi
LCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogI2VuZGlmCi19CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tTb3VyY2VDaGFuZ2VkKEhUTUxUcmFja0VsZW1l
bnQqIHRyYWNrKQotewotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAodHJhY2stPmhhc1RhZ05h
bWUodHJhY2tUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gdHJhY2stPmdldE5vbkVtcHR5VVJM
QXR0cmlidXRlKHNyY0F0dHIpOwotICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50
Ojp0cmFja1NvdXJjZUNoYW5nZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51
dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0jZW5kaWYKLSAgICBsb2FkTmV4dFRleHRUcmFjayh0cmFj
ayk7CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFj
aygpOworICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyA0Ljgu
MTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIFdoZW4gYSB0
cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG9sZCBwYXJlbnQg
d2FzIGEgbWVkaWEgZWxlbWVudCwgCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IHJl
bW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0cmFjayBmcm9tIHRo
ZSAKKyAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcy4KKyAgICBtX3Rl
eHRUcmFja3MtPnJlbW92ZSh0ZXh0VHJhY2spOwogfQogI2VuZGlmCiAKQEAgLTIwNDIsNyArMjEw
Myw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGF2ZVBvdGVudGlhbFNvdXIKICAgICByZXR1
cm4gbmV4dFVSTC5pc1ZhbGlkKCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0
TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlICpjb250ZW50VHlwZSwgSW52YWxpZFNvdXJjZUFj
dGlvbiBhY3Rpb25JZkludmFsaWQpCitLVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRT
b3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5cGUsIEludmFsaWRVcmxBY3Rpb24gYWN0
aW9uSWZJbnZhbGlkKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICAvLyBEb24ndCBsb2cgaWYg
dGhpcyB3YXMganVzdCBjYWxsZWQgdG8gZmluZCBvdXQgaWYgdGhlcmUgYXJlIGFueSB2YWxpZCA8
c291cmNlPiBlbGVtZW50cy4KQEAgLTIxNTQsNyArMjIxNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c291cmNlV2FzQWRkZWQoSFQKICAgICAvLyBhdHRyaWJ1dGUgYW5kIHdob3NlIG5ldHdv
cmtTdGF0ZSBoYXMgdGhlIHZhbHVlIE5FVFdPUktfRU1QVFksIHRoZSB1c2VyIGFnZW50IG11c3Qg
aW52b2tlIAogICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFs
Z29yaXRobS4KICAgICBpZiAobmV0d29ya1N0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6TkVU
V09SS19FTVBUWSkgewotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVM
b2FkKE1lZGlhUmVzb3VyY2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMs
NiArNTMsNyBAQCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OwogY2xhc3MgTWVkaWFDb250cm9sczsK
IGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKIGNs
YXNzIFRpbWVSYW5nZXM7CiBjbGFzcyBVaW50OEFycmF5OwogI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQpAQCAtODksNyArOTAsMTEgQEAgcHVibGljOgogICAgIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogCi0gICAgdm9pZCBzY2hlZHVsZUxv
YWQoKTsKKyAgICBlbnVtIExvYWRUeXBlIHsKKyAgICAgICAgTWVkaWFSZXNvdXJjZSA9IDEgPDwg
MCwKKyAgICAgICAgVGV4dFRyYWNrUmVzb3VyY2UgPSAxIDw8IDEKKyAgICB9OworICAgIHZvaWQg
c2NoZWR1bGVMb2FkKExvYWRUeXBlKTsKICAgICAKICAgICBNZWRpYVBsYXllcjo6TW92aWVMb2Fk
VHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAgICAgCkBAIC0xODEsOSArMTg2LDIwIEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBQYXNzUmVmUHRyPFRleHRUcmFj
az4gYWRkVHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsID0gIiIs
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSAiIik7CisgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tM
aXN0PiB0ZXh0VHJhY2tzKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkZFRleHRUcmFjayhQYXNzUmVm
UHRyPFRleHRUcmFjaz4pOworCiAgICAgdmlydHVhbCB2b2lkIHRyYWNrV2FzQWRkZWQoSFRNTFRy
YWNrRWxlbWVudCopOwogICAgIHZpcnR1YWwgdm9pZCB0cmFja1dpbGxCZVJlbW92ZWQoSFRNTFRy
YWNrRWxlbWVudCopOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja1NvdXJjZUNoYW5nZWQoSFRNTFRy
YWNrRWxlbWVudCopOworCisgICAgLy8gVGV4dFRyYWNrQ2xpZW50CisgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRy
YWNrQ3VlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNr
KiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
UmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtMjMwLDYgKzI0Niw5IEBA
IHB1YmxpYzoKICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCk7
CiAjZW5kaWYKIAorICAgIGVudW0gSW52YWxpZFVybEFjdGlvbiB7IERvTm90aGluZywgQ29tcGxh
aW4gfTsKKyAgICBib29sIGlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiwgSW52YWxpZFVybEFj
dGlvbik7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVsZW1lbnQoKTsKQEAg
LTM0OSwyMyArMzY4LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWl0Rm9yU291cmNlQ2hhbmdl
KCk7CiAgICAgdm9pZCBwcmVwYXJlVG9QbGF5KCk7CiAKLSAgICBlbnVtIEludmFsaWRTb3VyY2VB
Y3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWluIH07Ci0gICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwo
Y29uc3QgS1VSTCYsIEludmFsaWRTb3VyY2VBY3Rpb24pOwotICAgIEtVUkwgc2VsZWN0TmV4dFNv
dXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgSW52YWxpZFNvdXJjZUFjdGlvbik7CisgICAgS1VSTCBz
ZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqLCBJbnZhbGlkVXJsQWN0aW9uKTsKICAg
ICB2b2lkIG1lZGlhTG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlKTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2b2lkIGxvYWRUZXh0VHJhY2tzKCk7Ci0gICAg
dm9pZCBsb2FkTmV4dFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50Kik7Ci0KLSAgICAvLyBUZXh0
VHJhY2tDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQo
VGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRU
cmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0
VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KTsKKyAgICB2b2lkIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKICNlbmRpZgogCiAg
ICAgLy8gVGhlc2UgImludGVybmFsIiBmdW5jdGlvbnMgZG8gbm90IGNoZWNrIHVzZXIgZ2VzdHVy
ZSByZXN0cmljdGlvbnMuCkBAIC00NzEsNiArNDc4LDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxl
IGZsb2F0IG1fY2FjaGVkVGltZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX2NhY2hlZFRpbWVXYWxs
Q2xvY2tVcGRhdGVUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fbWluaW11bVdhbGxDbG9ja1Rp
bWVUb0NhY2hlTWVkaWFUaW1lOworICAgIAorICAgIHR5cGVkZWYgdW5zaWduZWQgUGVuZGluZ0xv
YWRGbGFnczsKKyAgICBQZW5kaW5nTG9hZEZsYWdzIG1fcGVuZGluZ0xvYWRGbGFnczsKIAogICAg
IGJvb2wgbV9wbGF5aW5nIDogMTsKICAgICBib29sIG1faXNXYWl0aW5nVW50aWxNZWRpYUNhblN0
YXJ0IDogMTsKQEAgLTUxNCw3ICs1MjQsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4gbV90ZXh0VHJh
Y2tzOworICAgIFJlZlB0cjxUZXh0VHJhY2tMaXN0PiBtX3RleHRUcmFja3M7CiAjZW5kaWYKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkocmV2aXNp
b24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAgbW9kdWxlIGh0bWwgewogCiAjaWYgZGVm
aW5lZChFTkFCTEVfVklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSwogICAgIFtFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFjayBhZGRUcmFjayhpbiBET01T
dHJpbmcga2luZCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFiZWwsIGluIFtPcHRpb25hbF0g
RE9NU3RyaW5nIGxhbmd1YWdlKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1
bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrTGlzdCB0ZXh0VHJhY2tzOwogI2VuZGlm
CiB9OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgaW5saW5lIEhUTUxUcmFja0VsZW1l
bnQ6OkhUTUxUcmFja0VsZW1lbgogCiBIVE1MVHJhY2tFbGVtZW50Ojp+SFRNTFRyYWNrRWxlbWVu
dCgpCiB7CisgICAgaWYgKG1fdHJhY2spCisgICAgICAgIG1fdHJhY2stPmNsZWFyQ2xpZW50KCk7
CiB9CiAKIFBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTU5LDE2ICs2MSwxNiBAQCBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0Vs
CiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogewog
ICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGRlZXApOwotICAgIEVsZW1lbnQqIHBh
cmVudCA9IHBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRp
YUVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVu
dE5vZGUoKSktPnRyYWNrV2FzQWRkZWQodGhpcyk7CisKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVu
dCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHBhcmVudC0+dHJhY2tXYXNBZGRl
ZCh0aGlzKTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKCkKIHsKLSAg
ICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKHBhcmVudCAmJiBw
YXJlbnQtPmlzTWVkaWFFbGVtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVs
ZW1lbnQqPihwYXJlbnROb2RlKCkpLT50cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CisgICAgaWYg
KEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICBwYXJl
bnQtPnRyYWNrV2lsbEJlUmVtb3ZlZCh0aGlzKTsKKwogICAgIEhUTUxFbGVtZW50Ojp3aWxsUmVt
b3ZlKCk7CiB9CiAKQEAgLTkwLDggKzkyLDggQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjphdHRy
aWJ1dGVDaGFuZ2VkKAogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRy
LT5uYW1lKCk7CiAgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKLSAgICAgICAgaWYgKCFn
ZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIHBhcmVudE5vZGUoKSkKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpLT50cmFja1Nv
dXJjZUNoYW5nZWQodGhpcyk7CisgICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlz
RW1wdHkoKSAmJiBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwog
ICAgIH0KIH0KIApAQCAtMTM3LDcgKzEzOSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0
TGFiZWwoY29uc3QgU3QKIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc0RlZmF1bHQoKSBjb25z
dAogewotICAgIHJldHVybiBoYXNBdHRyaWJ1dGUoZGVmYXVsdEF0dHIpOworICAgIHJldHVybiBm
YXN0SGFzQXR0cmlidXRlKGRlZmF1bHRBdHRyKTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50
OjpzZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQpCkBAIC0xNDUsMTEgKzE0NywxMSBAQCB2b2lk
IEhUTUxUcmFja0VsZW1lbnQ6OnNldElzRGVmYXVsdChib29sCiAgICAgc2V0Qm9vbGVhbkF0dHJp
YnV0ZShkZWZhdWx0QXR0ciwgaXNEZWZhdWx0KTsKIH0KIAotVGV4dFRyYWNrKiBIVE1MVHJhY2tF
bGVtZW50Ojp0cmFjaygpIGNvbnN0CitQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBIVE1M
VHJhY2tFbGVtZW50Ojp0cmFjaygpCiB7Ci0gICAgaWYgKG1fdHJhY2spCi0gICAgICAgIHJldHVy
biBtX3RyYWNrLmdldCgpOwotICAgIHJldHVybiAwOworICAgIGlmICghbV90cmFjaykKKyAgICAg
ICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUodGhpcywgc3RhdGljX2Nhc3Q8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCo+KGRvY3VtZW50KCkpLCBraW5kKCksIGxhYmVsKCksIHNy
Y2xhbmcoKSwgaXNEZWZhdWx0KCkpOworICAgIHJldHVybiBtX3RyYWNrOwogfQogCiBib29sIEhU
TUxUcmFja0VsZW1lbnQ6OmlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25z
dApAQCAtMTU3LDE5ICsxNTksNzkgQEAgYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc1VSTEF0dHJp
YnV0ZShBdAogICAgIHJldHVybiBhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzcmNBdHRyOwogfQogCi12
b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6
c2NoZWR1bGVMb2FkKCkKIHsKLSAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0
ZSh0cmFja0NsaWVudCwgdGhpcywga2luZCgpLCBsYWJlbCgpLCBzcmNsYW5nKCksIGlzRGVmYXVs
dCgpKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoaGFzQXR0cmlidXRlKHNyY0F0dHIpKQotICAgICAgICBtX3RyYWNrLT5sb2FkKGdldE5vbkVt
cHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpLCBjb250ZXh0KTsKKyAgICBpZiAoIWZhc3RIYXNBdHRy
aWJ1dGUoc3JjQXR0cikpCisgICAgICAgIHJldHVybjsKKworICAgIHRyYWNrKCktPnNjaGVkdWxl
TG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKSk7Cit9CisKK2Jvb2wgSFRNTFRy
YWNrRWxlbWVudDo6Y2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmIHVy
bCkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsKKyAg
ICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFwYXJlbnQt
PmlzU2FmZVRvTG9hZFVSTCh1cmwsIEhUTUxNZWRpYUVsZW1lbnQ6OkNvbXBsYWluKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUxvYWRFdmVu
dCh1cmwuc3RyaW5nKCkpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0xv
YWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIGxvYWRpbmdGYWlsZWQpCit2
b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sq
LCBib29sIGxvYWRpbmdGYWlsZWQpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGxvYWRpbmdGYWlsZWQgPyBldmVudE5hbWVzKCku
ZXJyb3JFdmVudCA6IGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsK
IH0KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5n
ZWQoVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50
ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja1JlYWR5
U3RhdGVDaGFuZ2VkKHRyYWNrKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBpZiAoSFRNTE1lZGlh
RWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQt
PnRleHRUcmFja01vZGVDaGFuZ2VkKHRyYWNrKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxl
bWVudDo6dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tD
dWVMaXN0KiBjdWVzKQoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRp
YUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFj
aywgY3Vlcyk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92
ZUN1ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcykKK3sK
KyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAg
ICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZXModHJhY2ssIGN1ZXMpOworfQorICAg
IAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0cmFj
aywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxl
bWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRl
eHRUcmFja0FkZEN1ZSh0cmFjaywgY3VlKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlh
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJh
Y2ssIGN1ZSk7Cit9CisKK0hUTUxNZWRpYUVsZW1lbnQqIEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlh
RWxlbWVudCgpIGNvbnN0Cit7CisgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgp
OworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc01lZGlhRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSk7CisKKyAg
ICByZXR1cm4gMDsKK30KIAogI2lmIEVOQUJMRShNSUNST0RBVEEpCiBTdHJpbmcgSFRNTFRyYWNr
RWxlbWVudDo6aXRlbVZhbHVlVGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUcmFja0VsZW1lbnQuaAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxUcmFja0VsZW1lbnQgOiBwdWJsaWMgSFRN
TEVsZW1lbnQsIHByaXZhdGUgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworCitjbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50
LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Kik7CiAKQEAgLTQ4LDE4ICs1MCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTcmNsYW5nKGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRJc0RlZmF1bHQoYm9vbCk7Ci0gICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IHRyYWNrKCk7CiAgICAgCi0gICAgdm9pZCBs
b2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGllbnQqKTsKKyAgICB2b2lk
IHNjaGVkdWxlTG9hZCgpOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKExvYWRhYmxlVGV4
dFRyYWNrKiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVk
KExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKTsKIAogcHJpdmF0
ZToKLQotICAgIC8vIFRleHRUcmFja0xvYWRpbmdDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wpOwotCiAgICAg
SFRNTFRyYWNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5IVE1MVHJhY2tFbGVtZW50KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKIApAQCAtNzIsNyArNzIs
MTggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAjZW5kaWYKIAorICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0OworCisgICAgLy8gVGV4dFRyYWNrTG9hZGlu
Z0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0
VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNr
Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7Cisg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4pOworCiAgICAgUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBtX3RyYWNr
OworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2aXNp
b24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksMjYgKzI5LDUzIEBACiAKICNpbmNsdWRlICJMb2FkYWJsZVRl
eHRUcmFjay5oIgogCisjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgorI2luY2x1ZGUgIlNj
cmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNr
KFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIFRleHRUcmFja0xvYWRpbmdDbGllbnQqIGxv
YWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCi0gICAgOiBUZXh0VHJhY2sodHJh
Y2tDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKLSAgICAsIG1fbG9hZGluZ0NsaWVudChs
b2FkaW5nQ2xpZW50KQorTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqIHRyYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogVGV4dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwg
bGFuZ3VhZ2UpCisgICAgLCBtX3RyYWNrRWxlbWVudCh0cmFjaykKKyAgICAsIG1fbG9hZFRpbWVy
KHRoaXMsICZMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpCisgICAgLCBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1faXNEZWZhdWx0KGlzRGVmYXVsdCkKIHsKKyAgICBBU1NFUlQo
Y29udGV4dC0+aXNEb2N1bWVudCgpKTsKIH0KIAogTG9hZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJs
ZVRleHRUcmFjaygpCiB7CiB9CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWQoY29uc3Qg
S1VSTCYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBMb2FkYWJs
ZVRleHRUcmFjazo6Y2xlYXJDbGllbnQoKQogewotICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAg
IG1fbG9hZGVyID0gVGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgY29udGV4dCk7Ci0gICAg
bV9sb2FkZXItPmxvYWQodXJsKTsKKyAgICBtX3RyYWNrRWxlbWVudCA9IDA7CisgICAgVGV4dFRy
YWNrOjpjbGVhckNsaWVudCgpOworfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVs
ZUxvYWQoY29uc3QgS1VSTCYgdXJsKQoreworICAgIG1fdXJsID0gdXJsOworICAgIGlmICghbV9s
b2FkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDAp
OworfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZChUaW1lcjxMb2Fk
YWJsZVRleHRUcmFjaz4qKQoreworICAgIHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpMT0FESU5H
KTsKKyAgICAKKyAgICBpZiAobV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWxMb2Fk
KCk7CisKKyAgICBpZiAoIW1fdHJhY2tFbGVtZW50IHx8ICFtX3RyYWNrRWxlbWVudC0+Y2FuTG9h
ZFVybCh0aGlzLCBtX3VybCkpIHsKKyAgICAgICAgc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkhU
TUxfRVJST1IpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fbG9hZGVyID0g
VGV4dFRyYWNrTG9hZGVyOjpjcmVhdGUodGhpcywgbV9jb250ZXh0LmdldCgpKTsKKyAgICBtX2xv
YWRlci0+bG9hZChtX3VybCk7CiB9CiAKIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNB
dmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyKiBsb2FkZXIpCkBAIC04Miw4ICsxMDksOCBAQCB2b2lk
IExvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxlCiAKICAgICBsb2FkaW5nRmFpbGVk
ID8gc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkhUTUxfRVJST1IpIDogc2V0UmVhZHlTdGF0ZShU
ZXh0VHJhY2s6OkxPQURFRCk7CiAKLSAgICBpZiAobV9sb2FkaW5nQ2xpZW50KQotICAgICAgICBt
X2xvYWRpbmdDbGllbnQtPnRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQodGhpcywgbG9hZGluZ0Zh
aWxlZCk7CisgICAgaWYgKG1fdHJhY2tFbGVtZW50KQorICAgICAgICBtX3RyYWNrRWxlbWVudC0+
bG9hZGluZ0NvbXBsZXRlZCh0aGlzLCBsb2FkaW5nRmFpbGVkKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAko
cmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDIzICszOSwyNSBAQCBjbGFzcyBIVE1MVHJhY2tFbGVt
ZW50OwogY2xhc3MgTG9hZGFibGVUZXh0VHJhY2s7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCi1jbGFzcyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50IHsKK2NsYXNzIExvYWRhYmxlVGV4
dFRyYWNrQ2xpZW50IDogcHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmly
dHVhbCB+VGV4dFRyYWNrTG9hZGluZ0NsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgfkxvYWRhYmxl
VGV4dFRyYWNrQ2xpZW50KCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xv
YWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIC8qIGxvYWRpbmdGYWlsZWQg
Ki8pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayos
IGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5n
Q29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7
IH0KIH07CiAKIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJp
dmF0ZSBUZXh0VHJhY2tMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVhdGUoVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVu
dCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBr
aW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlz
RGVmYXVsdCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRl
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBMb2FkYWJsZVRleHRUcmFjayh0cmFja0NsaWVudCwgbG9hZGluZ0NsaWVudCwga2luZCwg
bGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBMb2FkYWJsZVRleHRUcmFjayh0cmFjaywgY29udGV4dCwga2luZCwgbGFiZWwsIGxhbmd1YWdl
LCBpc0RlZmF1bHQpKTsKICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsK
IAotICAgIHZvaWQgbG9hZChjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwot
ICAgIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2NoZWR1bGVM
b2FkKGNvbnN0IEtVUkwmKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpOwogCiBw
cml2YXRlOgogICAgIC8vIFRleHRUcmFja0xvYWRlckNsaWVudApAQCAtNjQsMTAgKzY2LDE1IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFydGVkKFRleHRUcmFja0xv
YWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xv
YWRlciosIGJvb2wgbG9hZGluZ0ZhaWxlZCk7CiAKLSAgICBMb2FkYWJsZVRleHRUcmFjayhUZXh0
VHJhY2tDbGllbnQqLCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVm
YXVsdCk7CisgICAgTG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCosIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KTsKKworICAgIHZvaWQgbG9h
ZFRpbWVyRmlyZWQoVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+Kik7CiAKKyAgICBIVE1MVHJhY2tF
bGVtZW50KiBtX3RyYWNrRWxlbWVudDsKKyAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9s
b2FkVGltZXI7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsK
ICAgICBPd25QdHI8VGV4dFRyYWNrTG9hZGVyPiBtX2xvYWRlcjsKLSAgICBUZXh0VHJhY2tMb2Fk
aW5nQ2xpZW50KiBtX2xvYWRpbmdDbGllbnQ7CisgICAgS1VSTCBtX3VybDsKICAgICBib29sIG1f
aXNEZWZhdWx0OwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2suaAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5UZXh0VHJhY2tDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVh
ZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFj
a0NyZWF0ZWQoVGV4dFRyYWNrKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRD
dWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayos
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgPSAwOwpAQCAtNzcsMTQgKzc2LDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBtb2RlQ2hhbmdlZCgp
OwogCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KICAg
ICBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9p
ZCBzZXRDbGllbnQoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7
IH0KIAogICAgIHZvaWQgYWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZvaWQgcmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsK
KyAgICB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKKyAgICB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0
b3I8VGV4dFRyYWNrQ3VlKj4mKTsKIAogcHJvdGVjdGVkOgogICAgIFRleHRUcmFjayhUZXh0VHJh
Y2tDbGllbnQqLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tD
dWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1
ZUxpc3QuY3BwCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRy
YWNrQ3VlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgdm9pZCBUZXh0
VHJhY2tDdWVMaXN0OjphZGQoUGFzc1JlZlB0cjxUZQogCiB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6
OmFkZChQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBl
bmQpCiB7Ci0gICAgQVNTRVJUKHN0YXJ0ID49IDAgJiYgc3RhcnQgPD0gbV9saXN0LnNpemUoKSk7
Ci0gICAgQVNTRVJUKGVuZCA+PSAwICYmIGVuZCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBBU1NF
UlQoc3RhcnQgPD0gbV9saXN0LnNpemUoKSk7CisgICAgQVNTRVJUKGVuZCA8PSBtX2xpc3Quc2l6
ZSgpKTsKIAogICAgIC8vIE1haW50YWluIHRleHQgdHJhY2sgY3VlIG9yZGVyOgogICAgIC8vIGh0
dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RleHQtdHJh
Y2stY3VlLW9yZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNr
TGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJUZXh0VHJhY2tMaXN0LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworVGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50
KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4
dChjb250ZXh0KQorICAgICwgbV9vd25lcihvd25lcikKKyAgICAsIG1fcGVuZGluZ0V2ZW50VGlt
ZXIodGhpcywgJlRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKQoreworICAgIEFT
U0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworfQorCitUZXh0VHJhY2tMaXN0Ojp+VGV4dFRy
YWNrTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIFRleHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdHJhY2tzLnNpemUoKTsKK30KKworVGV4dFRyYWNrKiBUZXh0VHJh
Y2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmRleCA8IG1fdHJhY2tz
LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICByZXR1
cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0VHJh
Y2s+IHRyYWNrKQoreworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7Cisg
ICAgbV90cmFja3MuYXBwZW5kKHRyYWNrUmVmKTsKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZlbnQo
dHJhY2tSZWYpOworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gdHJhY2spCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV90cmFja3MuZmluZCh0cmFj
ayk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAgbV90
cmFja3MucmVtb3ZlKGluZGV4KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2tM
aXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvclRleHRUcmFja0xpc3Q7Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6c2NoZWR1
bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICAvLyA0
LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIDQuOC4x
MC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44LjEwLjEy
LjQgVGV4dCB0cmFjayBBUEkKKyAgICAvLyAuLi4gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
biBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IAorICAgIC8vIGJ1
YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZlbnQg
aW50ZXJmYWNlLCB3aXRoIAorICAgIC8vIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6ZWQg
dG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCAKKyAgICAvLyB0aGUgbWVk
aWEgZWxlbWVudCdzIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmplY3Qu
CisKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNrRXZl
bnRJbml0IGluaXRpYWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7Cisg
ICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNlbGFi
bGUgPSBmYWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlmICgh
bV9wZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVudFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0Ojphc3luY0V2ZW50
VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopCit7CisgICAgVmVjdG9yPFJlZlB0cjxF
dmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIAor
ICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBjb3Vu
dCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZlbnRz
W2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrTGlzdF9oCisjZGVmaW5lIFRleHRUcmFj
a0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQWN0aXZlRE9N
T2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1MTWVk
aWFFbGVtZW50OworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKKworY2xh
c3MgVGV4dFRyYWNrTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+LCBwdWJs
aWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFj
a0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRy
YWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VGV4dFRyYWNrTGlzdCgpOwor
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgVGV4dFRyYWNrKiBpdGVtKHVuc2ln
bmVkIGluZGV4KTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAg
IHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdl
dAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7
CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOworICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OmRlcmVmOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7
CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9CisgICAgSFRNTE1lZGlh
RWxlbWVudCogb3duZXIoKSB7IHJldHVybiBtX293bmVyOyB9CisKK3ByaXZhdGU6CisgICAgVGV4
dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7
IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7
IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyByZXR1
cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorCisg
ICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKKyAg
ICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+Kik7CisKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgSFRNTE1lZGlhRWxlbWVu
dCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZlbnRz
OworICAgIFRpbWVyPFRleHRUcmFja0xpc3Q+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisKKyAgICBF
dmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxUZXh0
VHJhY2s+ID4gbV90cmFja3M7CisgICAgCisgICAgaW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgICAgICBFbmFibGVk
QXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCisgICAgICAgIEhhc0luZGV4R2V0dGVyLAorICAg
ICAgICBFdmVudFRhcmdldCwKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUKKyAgICBdIFRleHRU
cmFja0xpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5n
dGg7CisgICAgICAgIFRleHRUcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworCisg
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisKKyAgICAgICAgdm9p
ZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAg
dm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJl
KTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAgICAg
ICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDYgKzY4LDE0IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjdWVMb2FkVGltZXJGaXJlZCgK
ICAgICAgICAgbV9jbGllbnQtPmN1ZUxvYWRpbmdDb21wbGV0ZWQodGhpcywgbV9zdGF0ZSA9PSBG
YWlsZWQpOwogfQogCit2b2lkIFRleHRUcmFja0xvYWRlcjo6Y2FuY2VsTG9hZCgpCit7CisgICAg
aWYgKG1fY2FjaGVkQ3VlRGF0YSkgeworICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNs
aWVudCh0aGlzKTsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKKyAgICB9Cit9CisKIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CkBAIC0x
NDIsOCArMTUwLDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhYwog
ICAgIGlmICghbV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jdWVMb2FkVGlt
ZXIuc3RhcnRPbmVTaG90KDApOwogICAgIAotICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOwotICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgY2FuY2VsTG9hZCgpOwog
fQogCiBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCkBAIC0xNTEs
MTAgKzE1OCw3IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHUKICAg
ICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkQ3Vlcyh0aGlzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIGlmIChtX2NhY2hlZEN1ZURhdGEpIHsKLSAgICAgICAgbV9jYWNoZWRD
dWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7
Ci0gICAgfQorICAgIGNhbmNlbExvYWQoKTsKICAgICAKICAgICBBU1NFUlQobV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0
YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDk5NDIxKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMb2FkZXIoKTsK
ICAgICAKICAgICBib29sIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgY2FuY2VsTG9hZCgp
OwogICAgIHZvaWQgZ2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYgb3V0
cHV0Q3Vlcyk7CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bAkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTYxMyw2ICs2MTMsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFj
a0NvbnN0cnVjdG9yIFRleHRUcmFjazsKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50
aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0N1ZUNvbnN0cnVjdG9yIFRleHRUcmFja0N1
ZTsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ3VlTGlzdENvbnN0cnVj
dG9yIFRleHRUcmFja0N1ZUxpc3Q7CisgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGlt
ZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNrTGlz
dDsKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2td
IFRyYWNrRXZlbnRDb25zdHJ1Y3RvciBUcmFja0V2ZW50OwogI2VuZGlmCiAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk5NTE0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMDggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFRleHRUcmFja0xpc3QgYW5kIHRoZSB0ZXh0
VHJhY2tzIGF0dHJpYnV0ZSBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNr
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRkLXRy
YWNrLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFj
aEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTkwMjUtcjk5MDM3KTogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQtc2VsZWN0aW9uLXdpdGgtb3B0Z3Jv
dXBzLmh0bWwgaXMgYXNzZXJ0aW5nCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGUgbG9hZCBldmVudCBvbiBIVE1MVHJhY2tF
bGVtZW50IGFuZCBMT0FERUQgcmVhZHlTdGF0ZSBvbiBUZXh0VHJhY2sgd2hlbiBzcmMgaXMgc2V0
IGZyb20gSmF2YVNjcmlwdC4KKworKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhIDx0
cmFjaz4gZWxlbWVudC4KK1JVTih0cmFja0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCd0cmFjaycpKQorUlVOKHZpZGVvLmFwcGVuZENoaWxkKHRyYWNrRWxlbWVudCkpCitSVU4odHJh
Y2tFbGVtZW50LnNyYyA9ICdjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JykK
K0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAo
dHJhY2tzWzBdLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RF
RCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVE
IChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVD
VEVEIChldmVudC50cmFjayA9PSAnW29iamVjdCBUZXh0VHJhY2tdJykgT0sKKworKiogVGVzdCBh
IFRleHRUcmFjayBjcmVhdGVkIHdpdGggdmlkZW8uYWRkVHJhY2soKS4KK1JVTih0cmFja3MucHVz
aCh2aWRlby5hZGRUcmFjaygnY2FwdGlvbnMnLCAnQ2FwdGlvbiBUcmFjaycsICdlbicpKSkKK0VY
UEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJh
Y2tzWzFdLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAo
ZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChl
dmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVE
IChldmVudC50cmFjayA9PSAnW29iamVjdCBUZXh0VHJhY2tdJykgT0sKK0VYUEVDVEVEICh0cmFj
a3NbMV0ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9o
dG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZp
bGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisKKyAgICAgICAgICAgIHZhciB0cmFja3MgPSBbXTsK
KyAgICAgICAgICAgIHZhciB0cmFja0VsZW1lbnQ7CisgICAgICAgICAgICBmdW5jdGlvbiB0cmFj
a0FkZGVkKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVW
RU5UKCIgKyBldmVudC50eXBlICsgIikiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgiZXZlbnQudGFyZ2V0IiwgdmlkZW8udGV4dFRyYWNrcyk7CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50IiwgdHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudC50cmFjayIsIHRyYWNrc1t2aWRlby50
ZXh0VHJhY2tzLmxlbmd0aCAtIDFdKTsKKworICAgICAgICAgICAgICAgIGlmICh2aWRlby50ZXh0
VHJhY2tzLmxlbmd0aCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCB3aXRoIHZpZGVvLmFkZFRyYWNrKCkuIik7
CisgICAgICAgICAgICAgICAgICAgIHJ1bigidHJhY2tzLnB1c2godmlkZW8uYWRkVHJhY2soJ2Nh
cHRpb25zJywgJ0NhcHRpb24gVHJhY2snLCAnZW4nKSkiKTsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIsIDIpOworICAgICAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrc1sxXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5P
TkUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidHJhY2tzWzFdLnJlYWR5U3RhdGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRl
c3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqIFRlc3QgYSBUZXh0
VHJhY2sgY3JlYXRlZCBmb3IgYSAmbHQ7dHJhY2smZ3Q7IGVsZW1lbnQuIik7CisgICAgICAgICAg
ICAgICAgcnVuKCJ0cmFja0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycp
Iik7CisgICAgICAgICAgICAgICAgcnVuKCJ2aWRlby5hcHBlbmRDaGlsZCh0cmFja0VsZW1lbnQp
Iik7CisgICAgICAgICAgICAgICAgdHJhY2tzLnB1c2godHJhY2tFbGVtZW50LnRyYWNrKTsKKwor
ICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIHRoZSAnYWRkdHJhY2snIGxpc3RlbmVyIGFmdGVy
IGNyZWF0aW5nIHRoZSBlbGVtZW50IHRvIG1ha2Ugc3VyZSB0aGUKKyAgICAgICAgICAgICAgICAv
LyBldmVudCBpcyBkaXNwYXRjaCBhc3luY2hyb25vdXNseS4KKyAgICAgICAgICAgICAgICB2aWRl
by50ZXh0VHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoImFkZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisK
KyAgICAgICAgICAgICAgICBydW4oInRyYWNrRWxlbWVudC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0
L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InZpZGVvLnRleHRUcmFja3MubGVuZ3RoIiwgMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0cmFja3NbMF0ucmVhZHlTdGF0ZSIsIFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJz
dGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMgdGhlIGxvYWQgZXZlbnQgb24gSFRNTFRyYWNrRWxl
bWVudCBhbmQgTE9BREVEIHJlYWR5U3RhdGUgb24gVGV4dFRyYWNrIHdoZW4gc3JjIGlzIHNldCBm
cm9tIEphdmFTY3JpcHQuPC9wPgorICAgICAgICA8dmlkZW8+CisgICAgICAgIDwvdmlkZW8+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="112768"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114196</attachid>
            <date>2011-11-08 18:45:55 -0800</date>
            <delta_ts>2011-11-08 20:07:26 -0800</delta_ts>
            <desc>One more time.</desc>
            <filename>patch_tracks_array_12.txt</filename>
            <type>text/plain</type>
            <size>77842</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjMxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTExLTA4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBuZXcgZmlsZXMgZm9yIFRleHRUcmFja0xpc3QuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46IEFkZCBUZXh0VHJhY2tMaXN0LCBjb25kaXRpb25hbCBvbiBWSURFT19U
UkFDSy4KKworICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKTogVXBkYXRl
IGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KTogVXBkYXRlIGZvciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAg
IGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IFVwZGF0ZSBmb3Igc2No
ZWR1bGVMb2FkIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFtZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAg
ICAgICAgICAgIHRoZSBtYWluIHJlc291cmNlIG9yIGEgdGV4dCB0cmFjayBzaG91bGQgYmUgbG9h
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQp
OiBVcGRhdGUgdG8gYWxsb3cgdGV4dCB0cmFjayBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6
IExvZyB3aGVuIENTUCBkZW5pZXMgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogVXBkYXRlIGZv
ciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRv
IFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2spOiBOZXcsIGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcsIGFkZCBjb21tZW50cyBhYm91dCB3aGF0IHRoaXMgc2hvdWxkCisgICAgICAgICAgICBk
byBldmVudHVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcyk6IE5ldywgcmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKTogQmFpbCBpZiBydW50aW1lIGZlYXR1cmUgaXMg
bm90IGVuYWJsZWQsIHNjaGVkdWxlCisgICAgICAgICAgICBhc3luY2hyb25vdXMgdGV4dCB0cmFj
ayBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBj
aGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRleHRUcmFja3MgYXR0cmlidXRlLgorCisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogVXNlIG5ldyBtZWRpYUVsZW1lbnQoKSBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgaW5zdGVhZCBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJh
Y2tFbGVtZW50Ojppc0RlZmF1bHQpOiBoYXNBdHRyaWJ1dGUgLT4gZmFzdEhhc0F0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUgdHJh
Y2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2No
ZWR1bGVMb2FkKTogTmV3LCB0ZWxsIHRoZSB0cmFjayB0byBzY2hlZHVsZSBhIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKTogTmV3LCBjaGVjayBz
ZWN1cml0eSBwb2xpY3kgdG8gc2VlIGlmIGl0IGlzIE9LCisgICAgICAgICAgICB0byBsb2FkIGEg
dGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBnaXZlIGl0
IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICBsb2FkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6IFJlbmFtZWQgZnJvbSB0ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xvYWRpbmdDbGll
bnQgaW50ZXJmYWNlCisgICAgICAgICAgICB1c2VkIHRvIGluZm9ybSBwYXJlbnQgb2YgVGV4dFRy
YWNrIHN0YXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCk6IE5ldywg
cmV0dXJuIHBhcmVudCBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOiBJbml0aWFsaXplIG5l
dyBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVyIHRvIGtpY2sgb2ZmIGxvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOiBD
YW5jZWwgY3VycmVudCBsb2FkLCBpZiBhbnksIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAg
bmV3IHVybCBpcyBhbGxvd2VkIHRvIGxvYWQsIGFuZCBzdGFydCBuZXcgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTogCisgICAg
ICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQ6On5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCk6IFRleHRUcmFja0xv
YWRpbmdDbGllbnQgLT4gTG9hZGFibGVUZXh0VHJhY2tDbGllbnQKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5Mb2FkVXJsKTogCisgICAgICAgIChXZWJDb3Jl
OjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogc2V0
Q2xpZW50KDApIC0+IGNsZWFyQ2xpZW50KCkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOiBSZW5hbWVkIGZyb20g
c2V0Q2xpZW50LCBiZWNhdXNlIGl0IGlzIG9ubHkgdXNlZCB0byBjbGVhciB0aGUgY2xpZW50IHBv
aW50ZXIuCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKTogR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdh
cm5pbmcgdGhhdCBicmVha3MgdGhlIE9TIFggYnVpbGQuCisKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwOiBBZGRlZC4gSW1wbGVtZW50IHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdC4KKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QpOgorICAgICAgICAo
VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Oml0ZW0pOgorICAgICAgICAoVGV4dFRy
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAg
ICAgIChUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0xp
c3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojphc3lu
Y0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y2xlYXJPd25lcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tMaXN0Ojpvd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tM
aXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Ojpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGw6IEFk
ZGVkLgorCisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQpOiBOZXcsIGNhbmNlbCBwZW5kaW5n
IG9yIGluIHByb2dyZXNzIGxvYWQgYW5kIGRlbGV0ZSBsb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQ2FsbCBjYW5jZWxMb2FkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgICog
bG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDog
QWRkIFRleHRUcmFja0xpc3QuCisKIDIwMTEtMTEtMDggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyOTk2MTMpOiBJbmNvbXBsZXRlIHBhaW50
aW5nIG9mIHRoZSByb290IGVsZW1lbnQgYmFja2dyb3VuZCBpbiBmbGlwcGVkIGJsb2NrcyB3cml0
aW5nIG1vZGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5OTYxOSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNiArMzAx
LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvVWludDMyQXJyYXku
aWRsCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKIAorICAgIGh0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5pZGwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCiAKICAgICBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtMjA1Nyw2ICsyMDU4LDcgQEAgSUYgKEVO
QUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWUuY3BwCiAgICAgICAg
IGh0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3BwCiAgICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAogICAgICAgICBodG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmNwcAog
ICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5jcHAJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcgQEAKICNpbmNsdWRlICJK
U1RleHRUcmFjay5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2luY2x1ZGUg
IkpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0LmNwcCIK
ICNpbmNsdWRlICJKU1RyYWNrRXZlbnQuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNUaW1lUmFu
Z2VzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gOTk2
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC01MTAsNiArNTEwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgVGV4dFRyYWNrIFwKICAg
ICBUZXh0VHJhY2tDdWUgXAogICAgIFRleHRUcmFja0N1ZUxpc3QgXAorICAgIFRleHRUcmFja0xp
c3QgXAogICAgIFRpbWVSYW5nZXMgXAogICAgIFRvdWNoIFwKICAgICBUb3VjaEV2ZW50IFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDk5NjE5KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01OTAsNiArNTkw
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIAogICAgIGh0bWwv
VGV4dFRyYWNrLmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICBodG1sL1Rl
eHRUcmFja0N1ZUxpc3QuaWRsIFwKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsIFwK
ICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNCw2ICs1MDQsOCBAQCB3ZWJjb3Jl
X2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tD
dWUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZUxpc3QuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlTGlzdC5oIFwKKwlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNUZXh0VHJhY2tMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUaW1l
UmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RpbWVSYW5nZXMuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RvdWNoLmNwcCBcCkBAIC04NTAsNiArODUyLDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxl
U2hlZXRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hl
ZXRMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0Q3Vz
dG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXApAQCAtMTk4MCw2
ICsxOTgzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1Rp
bWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biA5OTYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTE4OTYsNiArMTg5Niw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAgICAgaHRt
bC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBcCisgICAgaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmggXAogICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAgIGh0bWwvdHJhY2sv
VHJhY2tFdmVudC5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKQEAgLTM1NjQs
NiArMzU2NSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0xKSAKICAg
ICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAgICAgIGJp
bmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1Ry
YWNrRXZlbnRDdXN0b20uY3BwCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xp
c3RDdXN0b20uY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA5
OTYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
MTM3Miw2ICsxMzcyLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1M
b2NhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJLaXRMb3NlQ29udGV4
dC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwnLAogICAg
ICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCkBAIC0xOTM2LDYgKzE5MzcsNyBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU1RleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RvdWNo
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCcsCkBAIC01
Nzg2LDYgKzU3ODgsNyBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxl
bWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL1RyYWNrRXZlbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVFBhcnNl
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwxMiArMTAx
LDE3IEBACiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1RUU2OTBG
NDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAv
KiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5j
cHAgKi87IH07CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NTM4NjAx
MTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKLQkJMDc2ODlENkUx
NDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY4OUQ2RDE0NUI1MkNDMDAxQ0QxMzIg
LyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMDc2OTcwODYxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3Qu
Y3BwICovOyB9OworCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUx
NDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4
MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAw
QzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzg0
NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAv
KiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThERjEgLyog
SlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87IH07CiAJ
CTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhFMDBBNThE
RjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBGQkRDMzMg
LyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3Np
YmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OworCQkwN0I1QTJEQjE0NjQzMjBBMDBBODFFQ0Ug
LyogSlNUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3Qu
Y3BwICovOyB9OworCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTJE
QTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi87IH07CisJCTA3QjVBMzBE
MTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEMxNDY4N0Q3MTAwQTgx
RUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTA3QkRENkVDMTQ2OUI0
QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpT
VHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdDRUQzMiAv
KiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODBFNDkyNjEyNTVGM0JEMDBF
RkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcgLyog
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07CiAJCTA4MEU0OTI4MTI1NUYzQkQw
MEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjQxMjU1RjNCRDAwRUZDQTI3IC8q
IFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggKi87IH07CkBAIC03MTEzLDcgKzcxMTgsOCBA
QAogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRU
ZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVk
VGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2MDExNDQ4
OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzY5NzA4NDE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2OTcw
ODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2MzQwMTQ1
QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTcxMjIsNiArNzEyOCwxMSBAQAogCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3ODIgLyog
TWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0FGRTU5
MDBGMTQ0NkJEMDA4NDE2MTcgLyogbWVkaWFDb250cm9sc1F1aWNrVGltZS5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LmNzczsgcGF0aCA9IG1lZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJp
bGl0eU1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDdCNUEyRDkxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0xpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0
VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dFRyYWNr
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTMwNjE0Njg1MzcxMDBB
ODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVGV4dFRy
YWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBBMTQ2ODdC
ODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODA2RTU3
OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBF
NDkyMTEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVC
YXNlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIyMTI1NUYz
QkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzgwMSw2ICsxNzgxMiw4IEBACiAJCQkJMDcwNzU2
RDgxNDIzOUI0QjAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlLmggKi8sCiAJCQkJMDcwNzU2RDkx
NDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8sCiAJCQkJMDcwNzU2
REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovLAorCQkJCTA3QjVB
MkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwICovLAorCQkJCTA3QjVB
MkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAqLywKIAkJCQlFNDQ2MTQx
MjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQlFNDQ2MTQxMzBD
RDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmggKi8sCiAJCQkJMDc4NDYzNDAxNDVCMTUx
QTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8sCkBAIC0xODQ4OSw2ICsxODUwMiw5IEBA
CiAJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuY3BwICovLAorCQkJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJDRiAvKiBU
ZXh0VHJhY2tMaXN0LmggKi8sCisJCQkJMDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8qIFRleHRU
cmFja0xpc3QuaWRsICovLAogCQkJCTA3MDMzNEQ4MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuY3BwICovLAogCQkJCTA3MDMzNEQ2MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuaCAq
LywKIAkJCQkwNzAzMzREMDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAgKi8sCkBA
IC0xOTU2Myw3ICsxOTU3OSw2IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUE4NUYy
MjA4MTQzMDM3N0QwMDdDQzg4NCAvKiBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICovLAogCQkJ
CUJDMjc1Q0IyMTFDNUU4NUMwMEM5MjA2QyAvKiBKU0FycmF5QnVmZmVyQ3VzdG9tLmNwcCAqLywK
IAkJCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIu
aCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAq
LywKQEAgLTE5NjU5LDYgKzE5Njc0LDcgQEAKIAkJCQlCQ0I3NzM2MDBDMTc4NTNEMDAxMzJCQTQg
LyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTc1MEREMzBBOTBFNzI5MDAwRkYy
MTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYxMEMxN0FBNjcw
MDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCAqLywKKwkJCQlBODVGMjIwODE0MzAzNzdE
MDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFEMTJENTEy
OTVEMEJEMDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwICovLAog
CQkJCTQ5OThBRUQzMTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk5RkEzN0VFNjExNzJGQ0YwMDBDNENENTUgLyogSlNT
Y3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgKi8sCkBAIC0xOTY3Miw5ICsxOTY4OCwxMCBAQAog
CQkJCTA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAgKi8s
CiAJCQkJQjJDOTZEOEMwQjNBRjJCNzAwNUU4MEVDIC8qIEpTU1ZHUGF0aFNlZ0N1c3RvbS5jcHAg
Ki8sCiAJCQkJMUEyQzQwQUEwREVCNTVBQTAwNUFGMTlFIC8qIEpTVGV4dEN1c3RvbS5jcHAgKi8s
CisJCQkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5j
cHAgKi8sCiAJCQkJMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3Bw
ICovLAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggKi8s
Ci0JCQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAg
Ki8sCisJCQkJMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5j
cHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3Rv
bS5jcHAgKi8sCiAJCQkJNDlFRUNGNzcxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2QXJyYXlD
dXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFy
cmF5Q3VzdG9tLmNwcCAqLywKQEAgLTI0NjMzLDYgKzI0NjUwLDggQEAKIAkJCQkzMTY5Mzc5QzE0
NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNBRTlG
OTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlz
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4
dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEy
IC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjc0ODQsNyArMjc1MDMsNiBAQAog
CQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAvKiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMDc4NDYzNDIxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzY4OUQ2RTE0NUI1MkNDMDAxQ0QxMzIgLyogSlNU
cmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOEZFQkRDMTQzRTNFRjcw
MDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEY4
NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlDQUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI3NDkyLDcgKzI3NTEwLDExIEBACiAJCQkJQ0RFQTc2MzQxNDYw
QjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVB
NzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2
RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwN0I1QTJEQjE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3QjVBMzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBK
U1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEzNDQ5NkQxNDY5
NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MDdCREQ2RUMxNDY5QjRDMjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MDksMTIgKzQwOSwxNSBA
QCBlbmRpZgogaWYgRU5BQkxFX1ZJREVPX1RSQUNLCiB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0g
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRy
YWNrLmggXAorCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9N
VGV4dFRyYWNrTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50LmgKIHdlYmtpdGd0a19n
ZG9tX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01U
ZXh0VHJhY2suY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNr
UHJpdmF0ZS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlz
dC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJp
dmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmNw
cCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3Bw
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1l
bnRXcmFwcGVyRmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkocmV2aXNpb24g
OTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVt
ZW50V3JhcHBlckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRU
cmFja0N1ZUxpc3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFj
a0N1ZVByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oIgogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAj
aW5jbHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpT
VGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaEN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNUb3VjaExpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20u
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpbmNsdWRlICJKU1RleHRUcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRp
YUVsZW1lbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitib29sIEpTVGV4dFRyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEpTVGV4dFRyYWNrTGlzdCoganNUZXh0VHJhY2tMaXN0ID0gc3RhdGlj
X2Nhc3Q8SlNUZXh0VHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBpZiAo
IWpzVGV4dFRyYWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGlj
X2Nhc3Q8VGV4dFRyYWNrTGlzdCo+KGpzVGV4dFRyYWNrTGlzdC0+aW1wbCgpKS0+b3duZXIoKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
bgkocmV2aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBAIFBlZXJDb25uZWN0aW9uIGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9X
T1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBT
VkdFbGVtZW50SW5zdGFuY2UgY29uZGl0aW9uYWw9U1ZHCitUZXh0VHJhY2tMaXN0IGNvbmRpdGlv
bmFsPVZJREVPX1RSQUNLCiBXZWJTb2NrZXQgY29uZGl0aW9uYWw9V0VCX1NPQ0tFVFMKIFdvcmtl
ciBjb25kaXRpb25hbD1XT1JLRVJTCiBYTUxIdHRwUmVxdWVzdApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcg
KzUyLDcgQEAgUGFzc1JlZlB0cjxIVE1MQXVkaW9FbGVtZW50PiBIVE1MQXVkaW9FbAogICAgIGF1
ZGlvLT5zZXRQcmVsb2FkKCJhdXRvIik7CiAgICAgaWYgKCFzcmMuaXNOdWxsKCkpIHsKICAgICAg
ICAgYXVkaW8tPnNldFNyYyhzcmMpOwotICAgICAgICBhdWRpby0+c2NoZWR1bGVMb2FkKCk7Cisg
ICAgICAgIGF1ZGlvLT5zY2hlZHVsZUxvYWQoSFRNTE1lZGlhRWxlbWVudDo6TWVkaWFSZXNvdXJj
ZSk7CiAgICAgfQogICAgIHJldHVybiBhdWRpby5yZWxlYXNlKCk7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksNiArODksNyBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNpbmNsdWRlICJIVE1MVHJh
Y2tFbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1
ZGUgIlRleHRUcmFja0xpc3QuaCIKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykKQEAg
LTIyNSw4ICsyMjYsMTIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQog
ICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsK
ICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
Q2FsbGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RleHRU
cmFja3NbaV0tPnNldENsaWVudCgwKTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBt
X3RleHRUcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKSB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
CisgICAgICAgICAgICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAg
fQogI2VuZGlmCiB9CiAKQEAgLTI2OCw3ICsyNzMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoCiAgICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAg
ICAgLy8gVHJpZ2dlciBhIHJlbG9hZCwgYXMgbG9uZyBhcyB0aGUgJ3NyYycgYXR0cmlidXRlIGlz
IHByZXNlbnQuCiAgICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1l
ZGlhUmVzb3VyY2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29udHJvbHNBdHRyKQog
ICAgICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiB9CkBAIC0zODEsMTAgKzM4NiwxMCBA
QCBSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlCiAgCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKLSAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50Iik7CisgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKICAgICBIVE1MRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRy
KS5pc0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAg
c2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTQyMywx
NyArNDI4LDI2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKICAg
ICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVs
ZUxvYWQoTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxl
bWVudDo6c2NoZWR1bGVMb2FkIik7CisKKyAgICBpZiAoKGxvYWRUeXBlICYgTWVkaWFSZXNvdXJj
ZSkgJiYgIShtX3BlbmRpbmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSkgewogI2lmIEVOQUJM
RShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsK
KyAgICAgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgpOwogI2VuZGlmCisgICAgICAgIAorICAg
ICAgICBwcmVwYXJlRm9yTG9hZCgpOworICAgICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVk
aWFSZXNvdXJjZTsKKyAgICB9CiAKLSAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIHByZXBhcmVGb3JMb2FkKCk7Ci0gICAgbV9sb2FkVGltZXIuc3Rh
cnRPbmVTaG90KDApOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobG9hZFR5cGUg
JiBUZXh0VHJhY2tSZXNvdXJjZSkKKyAgICAgICAgbV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRU
cmFja1Jlc291cmNlOworI2VuZGlmCisKKyAgICBpZiAoIW1fbG9hZFRpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCkBAIC00NzQsMTAgKzQ4OCwxOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFzeW5jRXZlbnRUaW1lckZpCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewot
ICAgIGlmIChtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCi0gICAgICAg
IGxvYWROZXh0U291cmNlQ2hpbGQoKTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRJbnRlcm5hbCgp
OworICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSB7CisgICAgICAg
IGlmIChtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCisgICAgICAgICAg
ICBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvYWRJ
bnRlcm5hbCgpOworICAgIH0KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9w
ZW5kaW5nTG9hZEZsYWdzICYgVGV4dFRyYWNrUmVzb3VyY2UpCisgICAgICAgIGNvbmZpZ3VyZVRl
eHRUcmFja3MoKTsKKyNlbmRpZgorCisgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKIH0KIAog
UGFzc1JlZlB0cjxNZWRpYUVycm9yPiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApA
QCAtNjMzLDkgKzY1Niw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkK
ICAgICByZW1vdmVCZWhhdmlvclJlc3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1l
ZGlhUmVzdHJpY3Rpb24pOwogCiAgICAgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotI2lmIEVOQUJM
RShWSURFT19UUkFDSykKLSAgICBsb2FkVGV4dFRyYWNrcygpOwotI2VuZGlmCiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXJjZSgpCkBAIC04MzcsMjggKzg1Nyw2
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFJlc291cmNlKGNvbnMKIH0KIAogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRleHRUcmFja3Mo
KQotewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RD
aGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCi0gICAgICAgICAgICBsb2FkTmV4dFRleHRUcmFj
ayhzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSkpOwotICAgIH0KLX0KLQotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkTmV4dFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0
cmFjaykKLXsKLSAgICAvLyBGSVhNRSg3MTEyNCk6IFRoaXMgc2hvdWxkIHNjaGVkdWxlIGFuICph
c3luY2hyb25vdXMqIGxvYWQuCi0gICAgdHJhY2stPmxvYWQoQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMpOwotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRU
cmFjayA9IHRyYWNrLT50cmFjaygpOwotICAgIGlmICh0ZXh0VHJhY2spCi0gICAgICAgIG1fdGV4
dFRyYWNrcy5hcHBlbmQodGV4dFRyYWNrLnJlbGVhc2UoKSk7Ci0gICAgCi0gICAgLy8gRklYTUUo
NzExMjMpOiBTZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBhY2NvcmRpbmdseS4KLX0KLQogdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKQog
ewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODY5LDExICs4NjcsNiBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAgICAgLy8gRklYTUUoNjI4
ODUpOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQ3Jl
YXRlZChUZXh0VHJhY2sqKQotewotICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotfQot
CiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29u
c3QgVGV4dFRyYWNrQ3VlTGlzdCopIAogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50
LgpAQCAtODk2LDcgKzg4OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVt
b3ZlQ3UKIAogI2VuZGlmCiAKLWJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJM
KGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFNvdXJjZUFjdGlvbiBhY3Rpb25JZkludmFsaWQpCiti
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIElu
dmFsaWRVcmxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQo
KSkgewogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRV
UkwoJXMpIC0+IEZBTFNFIGJlY2F1c2UgdXJsIGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nKHVy
bCkudXRmOCgpLmRhdGEoKSk7CkBAIC05MTEsOCArOTA0LDEwIEBAIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6aXNTYWZlVG9Mb2FkVVJMKGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGlmICghZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFG
cm9tU291cmNlKHVybCkpCisgICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkgeworICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
NjcwLDcgKzE2NjUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAK
ICAgICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1f
cGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVk
dWxlTG9hZCgpOworICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAKICAgICBp
ZiAoZW5kZWRQbGF5YmFjaygpKSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwpAQCAt
MTcwOSw3ICsxNzA0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkK
IAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICgh
bV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2No
ZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAg
IG1fYXV0b3BsYXlpbmcgPSBmYWxzZTsKICAgICAKQEAgLTE5OTAsNDAgKzE5ODUsMTA2IEBAIGZs
b2F0IEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKSAKIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CiAgICAgUmVmUHRyPFRl
eHRUcmFjaz4gdGV4dFRyYWNrID0gVGV4dFRyYWNrOjpjcmVhdGUodGhpcywga2luZCwgbGFiZWws
IGxhbmd1YWdlKTsKLSAgICBtX3RleHRUcmFja3MuYXBwZW5kKHRleHRUcmFjayk7CisgICAgYWRk
VGV4dFRyYWNrKHRleHRUcmFjayk7CiAgICAgcmV0dXJuIHRleHRUcmFjay5yZWxlYXNlKCk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50
KiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8
VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICBpZiAoIW1fdGV4dFRyYWNrcykKKyAgICAgICAgbV90
ZXh0VHJhY2tzID0gVGV4dFRyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBtX3RleHRUcmFja3MtPmFwcGVuZCh0cmFj
ayk7CisKKyAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y29uZmlndXJlVGV4dFRyYWNrcygpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIAor
ICAgIC8vIFdoZW4gYSB0ZXh0IHRyYWNrIGNvcnJlc3BvbmRpbmcgdG8gYSB0cmFjayBlbGVtZW50
IGlzIGFkZGVkIHRvIGEgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MsCisgICAg
Ly8gdGhlIHVzZXIgYWdlbnQgbXVzdCBzZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBhcHByb3ByaWF0
ZWx5LCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAgICAKKyAg
ICAvLyAqIElmIHRoZSB0ZXh0IHRyYWNrIGtpbmQgaXMgc3VidGl0bGVzIG9yIGNhcHRpb25zIGFu
ZCB0aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFuIGludGVyZXN0IGluIGhhdmluZyBhCisgICAgLy8g
dHJhY2sgd2l0aCB0aGlzIHRleHQgdHJhY2sga2luZCwgdGV4dCB0cmFjayBsYW5ndWFnZSwgYW5k
IHRleHQgdHJhY2sgbGFiZWwgZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vCisgICAgLy8gb3RoZXIg
dGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0
aCBhIHRleHQgdHJhY2sga2luZCBvZiBlaXRoZXIgc3VidGl0bGVzCisgICAgLy8gb3IgY2FwdGlv
bnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAqIElmIHRoZSB0ZXh0
IHRyYWNrIGtpbmQgaXMgZGVzY3JpcHRpb25zIGFuZCB0aGUgdXNlciBoYXMgaW5kaWNhdGVkIGFu
IGludGVyZXN0IGluIGhhdmluZyB0ZXh0IAorICAgIC8vIGRlc2NyaXB0aW9ucyB3aXRoIHRoaXMg
dGV4dCB0cmFjayBsYW5ndWFnZSBhbmQgdGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhl
cmUgaXMgbm8gb3RoZXIgdGV4dCAKKyAgICAvLyB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdz
IGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2l0aCBhIHRleHQgdHJhY2sga2luZCBvZiBkZXNjcmlwdGlv
bnMgd2hvc2UgdGV4dCAKKyAgICAvLyB0cmFjayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAgICBM
ZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nLgorICAgIC8vICAgIElmIHRoZXJlIGlz
IGEgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mg
d2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcgCisgICAgLy8gICAgYnkgZGVmYXVsdCwg
dGhlIHVzZXIgYWdlbnQgbXVzdCBmdXJ0aGVybW9yZSBjaGFuZ2UgdGhhdCB0ZXh0IHRyYWNrJ3Mg
dGV4dCB0cmFjayBtb2RlIHRvIGhpZGRlbi4KKyAgICAKKyAgICAvLyAqIElmIHRoZSB0ZXh0IHRy
YWNrIGtpbmQgaXMgY2hhcHRlcnMgYW5kIHRoZSB0ZXh0IHRyYWNrIGxhbmd1YWdlIGlzIG9uZSB0
aGF0IHRoZSB1c2VyIGFnZW50IGhhcyByZWFzb24KKyAgICAvLyB0byBiZWxpZXZlIGlzIGFwcHJv
cHJpYXRlIGZvciB0aGUgdXNlciwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4g
dGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mCisgICAgLy8gdGV4dCB0cmFja3Mgd2l0aCBhIHRl
eHQgdHJhY2sga2luZCBvZiBjaGFwdGVycyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2lu
ZworICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCisgICAgCisg
ICAgLy8gKiBJZiB0aGUgdHJhY2sgZWxlbWVudCBoYXMgYSBkZWZhdWx0IGF0dHJpYnV0ZSBzcGVj
aWZpZWQsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYQorICAg
IC8vIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBp
cyBzaG93aW5nIG9yIHNob3dpbmcgYnkgZGVmYXVsdAorICAgIC8vICAgIExldCB0aGUgdGV4dCB0
cmFjayBtb2RlIGJlIHNob3dpbmcgYnkgZGVmYXVsdC4KKyAgICAKKyAgICAvLyBPdGhlcndpc2UK
KyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBkaXNhYmxlZC4KKyAgICAKKyAg
ICAvLyBGSVhNRSg3MTEyMyk6IFVudGlsIHRoZSBhYm92ZSBsb2dpYyBoYXMgYmVlbiBpbXBsZW1l
bnRlZCwganVzdCB0ZWxsIGFsbCB0ZXh0IHRyYWNrcyB0byBsb2FkLgorICAgIGZvciAoTm9kZSog
bm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodHJhY2tUYWcpKQorICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpLT5zY2hlZHVsZUxvYWQoKTsKKyAgICB9
Cit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcygpIGNvbnN0IAogeworICAgIHJldHVybiBtX3RleHRUcmFja3M7Cit9CisKK3ZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1l
bnQpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYg
KHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNr
LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVtZW50
LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxlbWVu
dC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZvckxv
Z2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKLSAgICBsb2FkTmV4dFRl
eHRUcmFjayh0cmFjayk7CisKKyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFu
ZCB0ZXh0IHRyYWNrcworICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1l
bnQgY2hhbmdlcyBhbmQgdGhlIG5ldyBwYXJlbnQgaXMgYSBtZWRpYSBlbGVtZW50LCAKKyAgICAv
LyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgYWRkIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVz
cG9uZGluZyB0ZXh0IHRyYWNrIHRvIHRoZSAKKyAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBv
ZiB0ZXh0IHRyYWNrcyAuLi4gW2NvbnRpbnVlcyBpbiBUZXh0VHJhY2tMaXN0OjphcHBlbmRdCisg
ICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2tFbGVtZW50LT50cmFjaygpOwor
ICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICByZXR1cm47CisgICAgYWRkVGV4dFRyYWNrKHRl
eHRUcmFjayk7ICAgIAorICAgIHNjaGVkdWxlTG9hZChUZXh0VHJhY2tSZXNvdXJjZSk7CiB9CiAg
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tFbGVt
ZW50KiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVkKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAg
aWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRy
YWNrLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICBpZiAodHJhY2tFbGVt
ZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNrRWxl
bWVudC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CiAgICAgICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZCAtICdzcmMnIGlzICVzIiwg
dXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRpZgotfQogCi12
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrU291cmNlQ2hhbmdlZChIVE1MVHJhY2tFbGVtZW50
KiB0cmFjaykKLXsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1l
KHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0
dHJpYnV0ZShzcmNBdHRyKTsKLSAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6
dHJhY2tTb3VyY2VDaGFuZ2VkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgfQotI2VuZGlmCi0gICAgbG9hZE5leHRUZXh0VHJhY2sodHJhY2sp
OworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJhY2so
KTsKKyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gNC44LjEw
LjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyBXaGVuIGEgdHJh
Y2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBvbGQgcGFyZW50IHdh
cyBhIG1lZGlhIGVsZW1lbnQsIAorICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCByZW1v
dmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgZnJvbSB0aGUg
CisgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MuCisgICAgbV90ZXh0
VHJhY2tzLT5yZW1vdmUodGV4dFRyYWNrKTsKIH0KICNlbmRpZgogCkBAIC0yMDQyLDcgKzIxMDMs
NyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3RlbnRpYWxTb3VyCiAgICAgcmV0dXJu
IG5leHRVUkwuaXNWYWxpZCgpOwogfQogCi1LVVJMIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE5l
eHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5cGUsIEludmFsaWRTb3VyY2VBY3Rp
b24gYWN0aW9uSWZJbnZhbGlkKQorS1VSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0U291
cmNlQ2hpbGQoQ29udGVudFR5cGUgKmNvbnRlbnRUeXBlLCBJbnZhbGlkVXJsQWN0aW9uIGFjdGlv
bklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgLy8gRG9uJ3QgbG9nIGlmIHRo
aXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoZXJlIGFyZSBhbnkgdmFsaWQgPHNv
dXJjZT4gZWxlbWVudHMuCkBAIC0yMTU0LDcgKzIyMTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAgLy8gYXR0cmlidXRlIGFuZCB3aG9zZSBuZXR3b3Jr
U3RhdGUgaGFzIHRoZSB2YWx1ZSBORVRXT1JLX0VNUFRZLCB0aGUgdXNlciBhZ2VudCBtdXN0IGlu
dm9rZSAKICAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBhbGdv
cml0aG0uCiAgICAgaWYgKG5ldHdvcmtTdGF0ZSgpID09IEhUTUxNZWRpYUVsZW1lbnQ6Ok5FVFdP
UktfRU1QVFkpIHsKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9h
ZChNZWRpYVJlc291cmNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYg
KzUzLDcgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKIGNsYXNzIE1lZGlhQ29udHJvbHM7CiBj
bGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKK2NsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFz
cyBUaW1lUmFuZ2VzOwogY2xhc3MgVWludDhBcnJheTsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZ
X0ZPUl9WSURFTykKQEAgLTg5LDcgKzkwLDExIEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVy
KiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAotICAgIHZvaWQgc2NoZWR1bGVMb2Fk
KCk7CisgICAgZW51bSBMb2FkVHlwZSB7CisgICAgICAgIE1lZGlhUmVzb3VyY2UgPSAxIDw8IDAs
CisgICAgICAgIFRleHRUcmFja1Jlc291cmNlID0gMSA8PCAxCisgICAgfTsKKyAgICB2b2lkIHNj
aGVkdWxlTG9hZChMb2FkVHlwZSk7CiAgICAgCiAgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5
cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogICAgIApAQCAtMTgxLDkgKzE4NiwyMCBAQCBwdWJs
aWM6CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2s+
IGFkZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCA9ICIiLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlID0gIiIpOworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlz
dD4gdGV4dFRyYWNrcygpIGNvbnN0OworCisgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFzc1JlZlB0
cjxUZXh0VHJhY2s+KTsKKwogICAgIHZpcnR1YWwgdm9pZCB0cmFja1dhc0FkZGVkKEhUTUxUcmFj
a0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFj
a0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tTb3VyY2VDaGFuZ2VkKEhUTUxUcmFj
a0VsZW1lbnQqKTsKKworICAgIC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFj
a0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayos
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1Jl
bW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTIzMCw2ICsyNDYsOSBAQCBw
dWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpOwog
I2VuZGlmCiAKKyAgICBlbnVtIEludmFsaWRVcmxBY3Rpb24geyBEb05vdGhpbmcsIENvbXBsYWlu
IH07CisgICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRVcmxBY3Rp
b24pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CkBAIC0z
NDksMjMgKzM2OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvclNvdXJjZUNoYW5nZSgp
OwogICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpOwogCi0gICAgZW51bSBJbnZhbGlkU291cmNlQWN0
aW9uIHsgRG9Ob3RoaW5nLCBDb21wbGFpbiB9OwotICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNv
bnN0IEtVUkwmLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKLSAgICBLVVJMIHNlbGVjdE5leHRTb3Vy
Y2VDaGlsZChDb250ZW50VHlwZSosIEludmFsaWRTb3VyY2VBY3Rpb24pOworICAgIEtVUkwgc2Vs
ZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgSW52YWxpZFVybEFjdGlvbik7CiAgICAg
dm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBsb2FkVGV4dFRyYWNrcygpOwotICAgIHZv
aWQgbG9hZE5leHRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwotCi0gICAgLy8gVGV4dFRy
YWNrQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRl
eHRUcmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJh
Y2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRy
YWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPik7CisgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYKIAogICAg
IC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUg
cmVzdHJpY3Rpb25zLgpAQCAtNDcxLDYgKzQ3OCw5IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBm
bG9hdCBtX2NhY2hlZFRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1lV2FsbENs
b2NrVXBkYXRlVGltZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX21pbmltdW1XYWxsQ2xvY2tUaW1l
VG9DYWNoZU1lZGlhVGltZTsKKyAgICAKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRpbmdMb2Fk
RmxhZ3M7CisgICAgUGVuZGluZ0xvYWRGbGFncyBtX3BlbmRpbmdMb2FkRmxhZ3M7CiAKICAgICBi
b29sIG1fcGxheWluZyA6IDE7CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFy
dCA6IDE7CkBAIC01MTQsNyArNTI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4dFRyYWNr
czsKKyAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogI2VuZGlmCiB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJldmlzaW9u
IDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIG1vZHVsZSBodG1sIHsKIAogI2lmIGRlZmlu
ZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBbRW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4gRE9NU3Ry
aW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERP
TVN0cmluZyBsYW5ndWFnZSk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50
aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKICNlbmRpZgog
fTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2
aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIGlubGluZSBIVE1MVHJhY2tFbGVtZW50
OjpIVE1MVHJhY2tFbGVtZW4KIAogSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQo
KQogeworICAgIGlmIChtX3RyYWNrKQorICAgICAgICBtX3RyYWNrLT5jbGVhckNsaWVudCgpOwog
fQogCiBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsZW1lbnQ6OmNyZWF0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCkBAIC01
OSwxNiArNjEsMTYgQEAgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbAog
dm9pZCBIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKGJvb2wgZGVlcCkKIHsKICAg
ICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShkZWVwKTsKLSAgICBFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFF
bGVtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnRO
b2RlKCkpLT50cmFja1dhc0FkZGVkKHRoaXMpOworCisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQq
IHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICBwYXJlbnQtPnRyYWNrV2FzQWRkZWQo
dGhpcyk7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6d2lsbFJlbW92ZSgpCiB7Ci0gICAg
RWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlmIChwYXJlbnQgJiYgcGFy
ZW50LT5pc01lZGlhRWxlbWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVt
ZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tXaWxsQmVSZW1vdmVkKHRoaXMpOworICAgIGlmIChI
VE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcGFyZW50
LT50cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CisKICAgICBIVE1MRWxlbWVudDo6d2lsbFJlbW92
ZSgpOwogfQogCkBAIC05MCw4ICs5Miw4IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZCgKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lID0gYXR0ci0+
bmFtZSgpOwogICAgIGlmIChhdHRyTmFtZSA9PSBzcmNBdHRyKSB7Ci0gICAgICAgIGlmICghZ2V0
QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBwYXJlbnROb2RlKCkpCi0gICAgICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tTb3Vy
Y2VDaGFuZ2VkKHRoaXMpOworICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0Vt
cHR5KCkgJiYgbWVkaWFFbGVtZW50KCkpCisgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKICAg
ICB9CiB9CiAKQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldExh
YmVsKGNvbnN0IFN0CiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNEZWZhdWx0KCkgY29uc3QK
IHsKLSAgICByZXR1cm4gaGFzQXR0cmlidXRlKGRlZmF1bHRBdHRyKTsKKyAgICByZXR1cm4gZmFz
dEhhc0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6
c2V0SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KQpAQCAtMTQ1LDExICsxNDcsMTEgQEAgdm9pZCBI
VE1MVHJhY2tFbGVtZW50OjpzZXRJc0RlZmF1bHQoYm9vbAogICAgIHNldEJvb2xlYW5BdHRyaWJ1
dGUoZGVmYXVsdEF0dHIsIGlzRGVmYXVsdCk7CiB9CiAKLVRleHRUcmFjayogSFRNTFRyYWNrRWxl
bWVudDo6dHJhY2soKSBjb25zdAorUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gSFRNTFRy
YWNrRWxlbWVudDo6dHJhY2soKQogewotICAgIGlmIChtX3RyYWNrKQotICAgICAgICByZXR1cm4g
bV90cmFjay5nZXQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fdHJhY2spCisgICAgICAg
IG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0PFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqPihkb2N1bWVudCgpKSwga2luZCgpLCBsYWJlbCgpLCBzcmNs
YW5nKCksIGlzRGVmYXVsdCgpKTsKKyAgICByZXR1cm4gbV90cmFjazsKIH0KIAogYm9vbCBIVE1M
VHJhY2tFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QK
QEAgLTE1NywxOSArMTU5LDc5IEBAIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1
dGUoQXQKICAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotdm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNj
aGVkdWxlTG9hZCgpCiB7Ci0gICAgbV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUo
dHJhY2tDbGllbnQsIHRoaXMsIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQo
KSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGhhc0F0dHJpYnV0ZShzcmNBdHRyKSkKLSAgICAgICAgbV90cmFjay0+bG9hZChnZXROb25FbXB0
eVVSTEF0dHJpYnV0ZShzcmNBdHRyKSwgY29udGV4dCk7CisgICAgaWYgKCFmYXN0SGFzQXR0cmli
dXRlKHNyY0F0dHIpKQorICAgICAgICByZXR1cm47CisKKyAgICB0cmFjaygpLT5zY2hlZHVsZUxv
YWQoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cikpOworfQorCitib29sIEhUTUxUcmFj
a0VsZW1lbnQ6OmNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJiB1cmwp
Cit7CisgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CisgICAg
aWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghcGFyZW50LT5p
c1NhZmVUb0xvYWRVUkwodXJsLCBIVE1MTWVkaWFFbGVtZW50OjpDb21wbGFpbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQo
dXJsLnN0cmluZygpKTsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tMb2Fk
aW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCBsb2FkaW5nRmFpbGVkKQordm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwg
Ym9vbCBsb2FkaW5nRmFpbGVkKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGRp
c3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShsb2FkaW5nRmFpbGVkID8gZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQgOiBldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CiB9
CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2Vk
KFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9
IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZWFkeVN0
YXRlQ2hhbmdlZCh0cmFjayk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRU
cmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayogdHJhY2spCit7CisgICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50
ZXh0VHJhY2tNb2RlQ2hhbmdlZCh0cmFjayk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1l
bnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCogY3VlcykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFF
bGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZXModHJhY2ss
IGN1ZXMpOworfQorICAgIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVD
dWVzKFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCit7Cisg
ICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKK30KKyAgICAK
K3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayogdHJhY2ss
IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1l
bnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0
VHJhY2tBZGRDdWUodHJhY2ssIGN1ZSk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6
OnRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqIHRyYWNrLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4gY3VlKQoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRyYWNr
LCBjdWUpOworfQorCitIVE1MTWVkaWFFbGVtZW50KiBIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVs
ZW1lbnQoKSBjb25zdAoreworICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsK
KyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpOworCisgICAg
cmV0dXJuIDA7Cit9CiAKICNpZiBFTkFCTEUoTUlDUk9EQVRBKQogU3RyaW5nIEhUTUxUcmFja0Vs
ZW1lbnQ6Oml0ZW1WYWx1ZVRleHQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVHJhY2tFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZW50LCBwcml2YXRlIFRleHRUcmFja0xvYWRpbmdDbGllbnQgeworY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKKworY2xhc3MgSFRNTFRyYWNrRWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwg
cHVibGljIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SFRNTFRyYWNrRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogCkBAIC00OCwxOCArNTAsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3JjbGFuZyhjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0SXNEZWZhdWx0KGJvb2wpOwotICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKKyAgICBQ
YXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiB0cmFjaygpOwogICAgIAotICAgIHZvaWQgbG9h
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kik7CisgICAgdm9pZCBz
Y2hlZHVsZUxvYWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRleHRU
cmFjayosIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRlZChM
b2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLyk7CiAKIHByaXZhdGU6
Ci0KLSAgICAvLyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sKTsKLQogICAgIEhU
TUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmly
dHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVD
aGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyk7CiAKQEAgLTcyLDcgKzcyLDE4
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0ZW1WYWx1ZVRleHQoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2VuZGlmCiAKKyAgICBIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdDsKKworICAgIC8vIFRleHRUcmFja0xvYWRpbmdD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRy
YWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayop
OworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRl
eHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhU
ZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+KTsKKwogICAgIFJlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gbV90cmFjazsK
KyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHJldmlzaW9u
IDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDI2ICsyOSw1MyBAQAogCiAjaW5jbHVkZSAiTG9hZGFibGVUZXh0
VHJhY2suaCIKIAorI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLUxvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhU
ZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2Fk
aW5nQ2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQotICAgIDogVGV4dFRyYWNrKHRyYWNr
Q2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCi0gICAgLCBtX2xvYWRpbmdDbGllbnQobG9h
ZGluZ0NsaWVudCkKK0xvYWRhYmxlVGV4dFRyYWNrOjpMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJh
Y2tFbGVtZW50KiB0cmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdl
LCBib29sIGlzRGVmYXVsdCkKKyAgICA6IFRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxh
bmd1YWdlKQorICAgICwgbV90cmFja0VsZW1lbnQodHJhY2spCisgICAgLCBtX2xvYWRUaW1lcih0
aGlzLCAmTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKQorICAgICwgbV9jb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCiB7CisgICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CiB9CiAKIExvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVU
ZXh0VHJhY2soKQogewogfQogCi12b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IEtV
UkwmIHVybCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgTG9hZGFibGVU
ZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCkKIHsKLSAgICBpZiAoIW1fbG9hZGVyKQotICAgICAgICBt
X2xvYWRlciA9IFRleHRUcmFja0xvYWRlcjo6Y3JlYXRlKHRoaXMsIGNvbnRleHQpOwotICAgIG1f
bG9hZGVyLT5sb2FkKHVybCk7CisgICAgbV90cmFja0VsZW1lbnQgPSAwOworICAgIFRleHRUcmFj
azo6Y2xlYXJDbGllbnQoKTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6c2NoZWR1bGVM
b2FkKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX3VybCA9IHVybDsKKyAgICBpZiAoIW1fbG9h
ZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQoVGltZXI8TG9hZGFi
bGVUZXh0VHJhY2s+KikKK3sKKyAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TE9BRElORyk7
CisgICAgCisgICAgaWYgKG1fbG9hZGVyKQorICAgICAgICBtX2xvYWRlci0+Y2FuY2VsTG9hZCgp
OworCisgICAgaWYgKCFtX3RyYWNrRWxlbWVudCB8fCAhbV90cmFja0VsZW1lbnQtPmNhbkxvYWRV
cmwodGhpcywgbV91cmwpKSB7CisgICAgICAgIHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpIVE1M
X0VSUk9SKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX2xvYWRlciA9IFRl
eHRUcmFja0xvYWRlcjo6Y3JlYXRlKHRoaXMsIG1fY29udGV4dC5nZXQoKSk7CisgICAgbV9sb2Fk
ZXItPmxvYWQobV91cmwpOwogfQogCiB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpuZXdDdWVzQXZh
aWxhYmxlKFRleHRUcmFja0xvYWRlciogbG9hZGVyKQpAQCAtODIsOCArMTA5LDggQEAgdm9pZCBM
b2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZQogCiAgICAgbG9hZGluZ0ZhaWxlZCA/
IHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpIVE1MX0VSUk9SKSA6IHNldFJlYWR5U3RhdGUoVGV4
dFRyYWNrOjpMT0FERUQpOwogCi0gICAgaWYgKG1fbG9hZGluZ0NsaWVudCkKLSAgICAgICAgbV9s
b2FkaW5nQ2xpZW50LT50ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKHRoaXMsIGxvYWRpbmdGYWls
ZWQpOworICAgIGlmIChtX3RyYWNrRWxlbWVudCkKKyAgICAgICAgbV90cmFja0VsZW1lbnQtPmxv
YWRpbmdDb21wbGV0ZWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgJKHJl
dmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMyArMzksMjUgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVu
dDsKIGNsYXNzIExvYWRhYmxlVGV4dFRyYWNrOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKIAotY2xhc3MgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBMb2FkYWJsZVRleHRU
cmFja0NsaWVudCA6IHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1
YWwgflRleHRUcmFja0xvYWRpbmdDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRl
eHRUcmFja0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2Fk
aW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICov
KSA9IDA7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBj
b25zdCBLVVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0Nv
bXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9
CiB9OwogCiBjbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZh
dGUgVGV4dFRyYWNrTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQs
IFRleHRUcmFja0xvYWRpbmdDbGllbnQqIGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2lu
ZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0Rl
ZmF1bHQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShI
VE1MVHJhY2tFbGVtZW50KiB0cmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxh
bmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2tDbGllbnQsIGxvYWRpbmdDbGllbnQsIGtpbmQsIGxh
YmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGNvbnRleHQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwg
aXNEZWZhdWx0KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CiAK
LSAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAg
ICBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNjaGVkdWxlTG9h
ZChjb25zdCBLVVJMJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKTsKIAogcHJp
dmF0ZToKICAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQKQEAgLTY0LDEwICs2NiwxNSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0VHJhY2tMb2Fk
ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2Fk
ZXIqLCBib29sIGxvYWRpbmdGYWlsZWQpOwogCi0gICAgTG9hZGFibGVUZXh0VHJhY2soVGV4dFRy
YWNrQ2xpZW50KiwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1
bHQpOworICAgIExvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisKKyAgICB2b2lkIGxvYWRU
aW1lckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopOwogCisgICAgSFRNTFRyYWNrRWxl
bWVudCogbV90cmFja0VsZW1lbnQ7CisgICAgVGltZXI8TG9hZGFibGVUZXh0VHJhY2s+IG1fbG9h
ZFRpbWVyOworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CiAg
ICAgT3duUHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgVGV4dFRyYWNrTG9hZGlu
Z0NsaWVudCogbV9sb2FkaW5nQ2xpZW50OworICAgIEtVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lz
RGVmYXVsdDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2suY3BwCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBUZXh0VHJhY2s6On5U
ZXh0VHJhY2soKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnRleHRU
cmFja1JlbW92ZUN1ZXModGhpcywgbV9jdWVzLmdldCgpKTsKLSAgICBzZXRDbGllbnQoMCk7Cisg
ICAgY2xlYXJDbGllbnQoMCk7CiB9CiAKIFN0cmluZyBUZXh0VHJhY2s6OmtpbmQoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCop
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7CkBAIC03Nywx
NCArNzYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKICAgICB2
b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSB7IG1f
Y2xpZW50ID0gMDsgfQogICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1cm4gbV9j
bGllbnQ7IH0KLSAgICB2b2lkIHNldENsaWVudChUZXh0VHJhY2tDbGllbnQqIGNsaWVudCkgeyBt
X2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVDdWUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIG5l
d0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiYpOworICAgIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOworICAgIHZvaWQgZmV0
Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAJKHJldmlzaW9uIDk5NDIxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksOCAr
NjksOCBAQCB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRlCiAKIHZvaWQg
VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUsIHNpemVf
dCBzdGFydCwgc2l6ZV90IGVuZCkKIHsKLSAgICBBU1NFUlQoc3RhcnQgPj0gMCAmJiBzdGFydCA8
PSBtX2xpc3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQoZW5kID49IDAgJiYgZW5kIDw9IG1fbGlzdC5z
aXplKCkpOworICAgIEFTU0VSVChzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBBU1NFUlQo
ZW5kIDw9IG1fbGlzdC5zaXplKCkpOwogCiAgICAgLy8gTWFpbnRhaW4gdGV4dCB0cmFjayBjdWUg
b3JkZXI6CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJl
bnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUcmFja0V2ZW50LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0
KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVyKG93bmVyKQorICAgICwg
bV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVy
RmlyZWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Cit9CisKK1RleHRU
cmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkKK3sKK30KKwordW5zaWduZWQgVGV4dFRyYWNrTGlz
dDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmFja3Muc2l6ZSgpOworfQorCitU
ZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYg
KGluZGV4IDwgbV90cmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4gbV90cmFja3NbaW5kZXhd
LmdldCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdHJh
Y2tSZWYgPSB0cmFjazsKKyAgICBtX3RyYWNrcy5hcHBlbmQodHJhY2tSZWYpOworICAgIHNjaGVk
dWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZik7Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVt
b3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBt
X3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX3RyYWNrcy5yZW1vdmUoaW5kZXgpOworfQorCitjb25zdCBBdG9taWNT
dHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVy
biBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsKK30KKwordm9pZCBUZXh0
VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRy
YWNrKQoreworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJh
Y2tzCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MK
KyAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQorICAgIC8vIC4uLiB0aGVuIHF1ZXVl
IGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9l
cyBub3QgCisgICAgLy8gYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNl
cyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggCisgICAgLy8gdGhlIHRyYWNrIGF0dHJp
YnV0ZSBpbml0aWFsaXplZCB0byB0aGUgdGV4dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0
IAorICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50J3MgdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0
VHJhY2tMaXN0IG9iamVjdC4KKworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJh
Y2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJh
Y2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5p
dGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVu
ZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNrRXZlbnQsIGluaXRpYWxp
emVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFRleHRUcmFj
a0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+KikKK3sKKyAg
ICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7
CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2
ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworfQorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tMaXN0X2gK
KyNkZWZpbmUgVGV4dFRyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0
VHJhY2tMaXN0OworCitjbGFzcyBUZXh0VHJhY2tMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0VHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5U
ZXh0VHJhY2tMaXN0KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBUZXh0
VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7CisgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKKwor
ICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6ZGVyZWY7CisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGFkZHRyYWNrKTsKKworICAgIHZvaWQgY2xlYXJPd25lcigpIHsgbV9vd25lciA9IDA7
IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBvd25lcigpIHsgcmV0dXJuIG1fb3duZXI7IH0KKwor
cHJpdmF0ZToKKyAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRy
PFRleHRUcmFjaz4pOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRy
YWNrTGlzdD4qKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtX293bmVyOworCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4g
PiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8VGV4dFRyYWNrTGlzdD4gbV9wZW5kaW5nRXZl
bnRUaW1lcjsKKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX3RyYWNrczsKKyAgICAKKyAgICBpbnQgbV9kaXNw
YXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0
bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ss
CisgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFjaywKKyAgICAgICAgSGFz
SW5kZXhHZXR0ZXIsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAgICBDdXN0b21Jc1JlYWNo
YWJsZQorICAgIF0gVGV4dFRyYWNrTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgVGV4dFRyYWNrIGl0ZW0oaW4gdW5zaWduZWQg
bG9uZyBpbmRleCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFj
azsKKworICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkocmV2aXNp
b24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTQgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmN1
ZUxvYWRUaW1lckZpcmVkKAogICAgICAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ0NvbXBsZXRlZCh0
aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjYW5j
ZWxMb2FkKCkKK3sKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7CisgICAgICAgIG1fY2FjaGVk
Q3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX2NhY2hlZEN1ZURhdGEgPSAw
OworICAgIH0KK30KKwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09
IHJlc291cmNlKTsKQEAgLTE0Miw4ICsxNTAsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjCiAgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgCi0gICAgbV9jYWNoZWRD
dWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKKyAg
ICBjYW5jZWxMb2FkKCk7CiB9CiAKIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtV
UkwmIHVybCkKQEAgLTE1MSwxMCArMTU4LDcgQEAgYm9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQo
Y29uc3QgS1VSTCYgdQogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkgewot
ICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgbV9j
YWNoZWRDdWVEYXRhID0gMDsKLSAgICB9CisgICAgY2FuY2VsTG9hZCgpOwogICAgIAogICAgIEFT
U0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkocmV2
aXNpb24gOTk0MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRl
eHRUcmFja0xvYWRlcigpOwogICAgIAogICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJik7CisgICAg
dm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA5OTQyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDYgKzYxMyw3IEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0Vmlk
ZW9UcmFja10gVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwogICAgICAgICBhdHRyaWJ1
dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ3VlQ29uc3Ry
dWN0b3IgVGV4dFRyYWNrQ3VlOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCiAgICAg
ICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJh
Y2tDdWVMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlTGlzdDsKKyAgICAgICAgYXR0cmlidXRl
IFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0xpc3RDb25zdHJ1
Y3RvciBUZXh0VHJhY2tMaXN0OwogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9
d2Via2l0VmlkZW9UcmFja10gVHJhY2tFdmVudENvbnN0cnVjdG9yIFRyYWNrRXZlbnQ7CiAjZW5k
aWYKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk1MTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0wOCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgVGV4dFRyYWNr
TGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90
cmFjay90cmFjay1hZGQtdHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDcgIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHI5OTAy
NS1yOTkwMzcpOiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3QtZWxlbWVudC1zZWxl
Y3Rpb24td2l0aC1vcHRncm91cHMuaHRtbCBpcyBhc3NlcnRpbmcKSW5kZXg6IExheW91dFRlc3Rz
L21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoZSBsb2FkIGV2
ZW50IG9uIEhUTUxUcmFja0VsZW1lbnQgYW5kIExPQURFRCByZWFkeVN0YXRlIG9uIFRleHRUcmFj
ayB3aGVuIHNyYyBpcyBzZXQgZnJvbSBKYXZhU2NyaXB0LgorCisqKiBUZXN0IGEgVGV4dFRyYWNr
IGNyZWF0ZWQgZm9yIGEgPHRyYWNrPiBlbGVtZW50LgorUlVOKHRyYWNrRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3RyYWNrJykpCitSVU4odmlkZW8uYXBwZW5kQ2hpbGQodHJhY2tF
bGVtZW50KSkKK1JVTih0cmFja0VsZW1lbnQuc3JjID0gJ2NhcHRpb25zLXdlYnZ0dC90YzAwNC13
ZWJ2dHQtZmlsZS52dHQnKQorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICcx
JykgT0sKK0VYUEVDVEVEICh0cmFja3NbMF0ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCitFVkVOVChh
ZGR0cmFjaykKK0VYUEVDVEVEIChldmVudC50YXJnZXQgPT0gJ1tvYmplY3QgVGV4dFRyYWNrTGlz
dF0nKSBPSworRVhQRUNURUQgKGV2ZW50IGluc3RhbmNlb2Ygd2luZG93LlRyYWNrRXZlbnQgPT0g
J3RydWUnKSBPSworRVhQRUNURUQgKGV2ZW50LnRyYWNrID09ICdbb2JqZWN0IFRleHRUcmFja10n
KSBPSworCisqKiBUZXN0IGEgVGV4dFRyYWNrIGNyZWF0ZWQgd2l0aCB2aWRlby5hZGRUcmFjaygp
LgorUlVOKHRyYWNrcy5wdXNoKHZpZGVvLmFkZFRyYWNrKCdjYXB0aW9ucycsICdDYXB0aW9uIFRy
YWNrJywgJ2VuJykpKQorRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09ICcyJykg
T0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAnMCcpIE9LCitFVkVOVChhZGR0
cmFjaykKK0VYUEVDVEVEIChldmVudC50YXJnZXQgPT0gJ1tvYmplY3QgVGV4dFRyYWNrTGlzdF0n
KSBPSworRVhQRUNURUQgKGV2ZW50IGluc3RhbmNlb2Ygd2luZG93LlRyYWNrRXZlbnQgPT0gJ3Ry
dWUnKSBPSworRVhQRUNURUQgKGV2ZW50LnRyYWNrID09ICdbb2JqZWN0IFRleHRUcmFja10nKSBP
SworRVhQRUNURUQgKHRyYWNrc1sxXS5yZWFkeVN0YXRlID09ICcwJykgT0sKKworRU5EIE9GIFRF
U1QKKwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJh
Y2suaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlw
dCBzcmM9Li4vbWVkaWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4v
dmlkZW8tdGVzdC5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKworICAgICAgICAgICAg
dmFyIHRyYWNrcyA9IFtdOworICAgICAgICAgICAgdmFyIHRyYWNrRWxlbWVudDsKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRyYWNrQWRkZWQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50LnR5cGUgKyAiKSIpOworCisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJldmVudC50YXJnZXQiLCB2aWRlby50ZXh0VHJhY2tzKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50IGluc3RhbmNlb2Ygd2luZG93LlRyYWNr
RXZlbnQiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRyYWNr
IiwgdHJhY2tzW3ZpZGVvLnRleHRUcmFja3MubGVuZ3RoIC0gMV0pOworCisgICAgICAgICAgICAg
ICAgaWYgKHZpZGVvLnRleHRUcmFja3MubGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIHdpdGggdmlk
ZW8uYWRkVHJhY2soKS4iKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuKCJ0cmFja3MucHVzaCh2
aWRlby5hZGRUcmFjaygnY2FwdGlvbnMnLCAnQ2FwdGlvbiBUcmFjaycsICdlbicpKSIpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVuZ3RoIiwg
Mik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzFdLnJlYWR5U3Rh
dGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMV0ucmVhZHlTdGF0ZSIsIFRleHRUcmFj
ay5OT05FKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhICZsdDt0cmFjayZndDsgZWxlbWVu
dC4iKTsKKyAgICAgICAgICAgICAgICBydW4oInRyYWNrRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3RyYWNrJykiKTsKKyAgICAgICAgICAgICAgICBydW4oInZpZGVvLmFwcGVuZENo
aWxkKHRyYWNrRWxlbWVudCkiKTsKKyAgICAgICAgICAgICAgICB0cmFja3MucHVzaCh0cmFja0Vs
ZW1lbnQudHJhY2spOworCisgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgdGhlICdhZGR0cmFj
aycgbGlzdGVuZXIgYWZ0ZXIgY3JlYXRpbmcgdGhlIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHRoZQor
ICAgICAgICAgICAgICAgIC8vIGV2ZW50IGlzIGRpc3BhdGNoIGFzeW5jaHJvbm91c2x5LgorICAg
ICAgICAgICAgICAgIHZpZGVvLnRleHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcigiYWRkdHJhY2si
LCB0cmFja0FkZGVkKTsKKworICAgICAgICAgICAgICAgIHJ1bigidHJhY2tFbGVtZW50LnNyYyA9
ICdjYXB0aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JyIpOworICAgICAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCAxKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrc1swXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5P
TkUpOworICAgICAgICAgICAgfQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9InN0YXJ0KCkiPgorICAgICAgICA8cD5UZXN0cyB0aGUgbG9hZCBldmVu
dCBvbiBIVE1MVHJhY2tFbGVtZW50IGFuZCBMT0FERUQgcmVhZHlTdGF0ZSBvbiBUZXh0VHJhY2sg
d2hlbiBzcmMgaXMgc2V0IGZyb20gSmF2YVNjcmlwdC48L3A+CisgICAgICAgIDx2aWRlbz4KKyAg
ICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="commit-queue"
          id="112780"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114201</attachid>
            <date>2011-11-08 20:07:26 -0800</date>
            <delta_ts>2011-11-09 07:47:48 -0800</delta_ts>
            <desc>YAP</desc>
            <filename>patch_tracks_array_13.txt</filename>
            <type>text/plain</type>
            <size>77747</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjQ1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTExLTA4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBuZXcgZmlsZXMgZm9yIFRleHRUcmFja0xpc3QuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46IEFkZCBUZXh0VHJhY2tMaXN0LCBjb25kaXRpb25hbCBvbiBWSURFT19U
UkFDSy4KKworICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKTogVXBkYXRl
IGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KTogVXBkYXRlIGZvciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAg
IGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IFVwZGF0ZSBmb3Igc2No
ZWR1bGVMb2FkIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFtZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAg
ICAgICAgICAgIHRoZSBtYWluIHJlc291cmNlIG9yIGEgdGV4dCB0cmFjayBzaG91bGQgYmUgbG9h
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQp
OiBVcGRhdGUgdG8gYWxsb3cgdGV4dCB0cmFjayBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6
IExvZyB3aGVuIENTUCBkZW5pZXMgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogVXBkYXRlIGZv
ciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRv
IFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2spOiBOZXcsIGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcsIGFkZCBjb21tZW50cyBhYm91dCB3aGF0IHRoaXMgc2hvdWxkCisgICAgICAgICAgICBk
byBldmVudHVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcyk6IE5ldywgcmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKTogQmFpbCBpZiBydW50aW1lIGZlYXR1cmUgaXMg
bm90IGVuYWJsZWQsIHNjaGVkdWxlCisgICAgICAgICAgICBhc3luY2hyb25vdXMgdGV4dCB0cmFj
ayBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBj
aGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRleHRUcmFja3MgYXR0cmlidXRlLgorCisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogVXNlIG5ldyBtZWRpYUVsZW1lbnQoKSBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgaW5zdGVhZCBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJh
Y2tFbGVtZW50Ojppc0RlZmF1bHQpOiBoYXNBdHRyaWJ1dGUgLT4gZmFzdEhhc0F0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUgdHJh
Y2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2No
ZWR1bGVMb2FkKTogTmV3LCB0ZWxsIHRoZSB0cmFjayB0byBzY2hlZHVsZSBhIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKTogTmV3LCBjaGVjayBz
ZWN1cml0eSBwb2xpY3kgdG8gc2VlIGlmIGl0IGlzIE9LCisgICAgICAgICAgICB0byBsb2FkIGEg
dGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBnaXZlIGl0
IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICBsb2FkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6IFJlbmFtZWQgZnJvbSB0ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xvYWRpbmdDbGll
bnQgaW50ZXJmYWNlCisgICAgICAgICAgICB1c2VkIHRvIGluZm9ybSBwYXJlbnQgb2YgVGV4dFRy
YWNrIHN0YXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCk6IE5ldywg
cmV0dXJuIHBhcmVudCBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOiBJbml0aWFsaXplIG5l
dyBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVyIHRvIGtpY2sgb2ZmIGxvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOiBD
YW5jZWwgY3VycmVudCBsb2FkLCBpZiBhbnksIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAg
bmV3IHVybCBpcyBhbGxvd2VkIHRvIGxvYWQsIGFuZCBzdGFydCBuZXcgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTogCisgICAg
ICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQ6On5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCk6IFRleHRUcmFja0xv
YWRpbmdDbGllbnQgLT4gTG9hZGFibGVUZXh0VHJhY2tDbGllbnQKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5Mb2FkVXJsKTogCisgICAgICAgIChXZWJDb3Jl
OjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogc2V0
Q2xpZW50KDApIC0+IGNsZWFyQ2xpZW50KCkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOiBSZW5hbWVkIGZyb20g
c2V0Q2xpZW50LCBiZWNhdXNlIGl0IGlzIG9ubHkgdXNlZCB0byBjbGVhciB0aGUgY2xpZW50IHBv
aW50ZXIuCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKTogR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdh
cm5pbmcgdGhhdCBicmVha3MgdGhlIE9TIFggYnVpbGQuCisKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwOiBBZGRlZC4gSW1wbGVtZW50IHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdC4KKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QpOgorICAgICAgICAo
VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Oml0ZW0pOgorICAgICAgICAoVGV4dFRy
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAg
ICAgIChUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0xp
c3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojphc3lu
Y0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y2xlYXJPd25lcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tMaXN0Ojpvd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tM
aXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Ojpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGw6IEFk
ZGVkLgorCisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQpOiBOZXcsIGNhbmNlbCBwZW5kaW5n
IG9yIGluIHByb2dyZXNzIGxvYWQgYW5kIGRlbGV0ZSBsb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQ2FsbCBjYW5jZWxMb2FkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgICog
bG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDog
QWRkIFRleHRUcmFja0xpc3QuCisKIDIwMTEtMTEtMDggIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVXNlIGEgdHlwZWRlZiBmb3IgRXhjZXB0aW9uQ29kZSBpbiBh
bGwgaGVhZGVyIGZpbGVzIGluc3RlYWQgb2YgaW5jbHVkaW5nIEV4Y2VwdGlvbkNvZGUuaApJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDk5NjQ1KQorKysgU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw2ICszMDEsNyBAQCBTRVQoV2Vi
Q29yZV9JRExfRklMRVMKICAgICBodG1sL2NhbnZhcy9VaW50MzJBcnJheS5pZGwKICAgICBodG1s
L2NhbnZhcy9VaW50OEFycmF5LmlkbAogCisgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bAogICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwKIAogICAgIGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsCkBAIC0yMDU3LDYgKzIwNTgsNyBAQCBJRiAoRU5BQkxFX1ZJREVPX1RS
QUNLKQogICAgICAgICBodG1sL1RleHRUcmFja0N1ZS5jcHAKICAgICAgICAgaHRtbC9UZXh0VHJh
Y2tDdWVJbmRleC5jcHAKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAg
ICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tC
YXNlLmNwcAogICAgICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwCiAgICAgICAgIGh0bWwv
dHJhY2svV2ViVlRUUGFyc2VyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAko
cmV2aXNpb24gOTk2NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0MSw2ICs0NDEsNyBAQAogI2luY2x1ZGUgIkpTVGV4dFRyYWNrLmNw
cCIKICNpbmNsdWRlICJKU1RleHRUcmFja0N1ZS5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tD
dWVMaXN0LmNwcCIKKyNpbmNsdWRlICJKU1RleHRUcmFja0xpc3QuY3BwIgogI2luY2x1ZGUgIkpT
VHJhY2tFdmVudC5jcHAiCiAjZW5kaWYKICNpbmNsdWRlICJKU1RpbWVSYW5nZXMuY3BwIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1
MTAsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBUZXh0VHJhY2sgXAogICAgIFRleHRUcmFja0N1
ZSBcCiAgICAgVGV4dFRyYWNrQ3VlTGlzdCBcCisgICAgVGV4dFRyYWNrTGlzdCBcCiAgICAgVGlt
ZVJhbmdlcyBcCiAgICAgVG91Y2ggXAogICAgIFRvdWNoRXZlbnQgXApJbmRleDogU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaQkocmV2aXNpb24gOTk2NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw2ICs1OTAsNyBAQCBjb250YWlu
cyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgCiAgICAgaHRtbC9UZXh0VHJhY2suaWRs
IFwKICAgICBodG1sL1RleHRUcmFja0N1ZS5pZGwgXAogICAgIGh0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5pZGwgXAorICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwgXAogICAgIGh0bWwvdHJh
Y2svVHJhY2tFdmVudC5pZGwgXAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDk5NjQ1KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtNTA0LDYgKzUwNCw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNl
cyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZS5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tDdWVMaXN0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNUZXh0VHJhY2tMaXN0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRU
cmFja0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RpbWVSYW5nZXMuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGltZVJhbmdlcy5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTVG91Y2guY3BwIFwKQEAgLTg1MCw2ICs4NTIsNyBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaExpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCkBAIC0xOTgwLDYgKzE5ODMsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVSYW5nZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9odG1sL1RpbWVSYW5nZXMuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UcmFja0V2ZW50LmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDk5NjQ1KQorKysg
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTg5Niw2ICsxODk2
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIFwKICAgICBo
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIFwKICAgICBodG1sL3NoYWRvdy9EZXRh
aWxzTWFya2VyQ29udHJvbC5oIFwKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaCBcCiAg
ICAgaHRtbC90cmFjay9UcmFja0Jhc2UuaCBcCiAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50Lmgg
XAogICAgIGh0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmggXApAQCAtMzU2NCw2ICszNTY1LDcgQEAg
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIAogICAgICAgICAgICAgYmlu
ZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNU
cmFja0N1c3RvbS5oIFwKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tFdmVudEN1c3Rv
bS5jcHAKKyAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAK
ICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk5NjQ1KQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcyLDYgKzEzNzIs
NyBAQAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmlkbCcs
CiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmlkbCcsCisgICAg
ICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCcsCiAgICAgICAgICAgICAnaHRt
bC90cmFjay9UcmFja0V2ZW50LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsJywKQEAgLTE5MzYsNiArMTkzNyw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNT
dHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVGV4
dEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwJywKQEAgLTU3ODYsNiArNTc4OCw3
IEBACiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmgnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAnLAogICAg
ICAgICAgICAgJ2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oJywKKyAgICAg
ICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwJywKICAgICAgICAgICAgICdodG1s
L3RyYWNrL1RyYWNrQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVu
dC5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcCcsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAxLDEyICsxMDEsMTcgQEAKIAkJMDcz
NUVFNkEwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3MzVFRTY5MEY0MEM1RTQwMDRBMjYw
NCAvKiBNZWRpYVBsYXllclByb3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRU
cmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
NzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAqLzsgfTsKIAkJ
MDc1Mzg2MDMxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDExNDQ4OUU5ODAwQjc4
NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovOyB9OwotCQkwNzY4OUQ2RTE0NUI1MkNDMDAxQ0Qx
MzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njg5RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZl
bnRDdXN0b20uY3BwICovOyB9OworCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRy
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwNzY5NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi87IH07CisJ
CTA3Njk3MDg3MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3MDBGNTAy
Q0YgLyogVGV4dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3MDBDMjZBQTQg
LyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi87IH07CiAJCTA3ODQ2MzQyMTQ1QjE1MUEw
MEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5jcHAgKi87IH07CiAJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQx
MTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuaCAqLzsgfTsKIAkJMDc4NDYzODUxNDVC
MUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNr
Q3VzdG9tLmggKi87IH07CiAJCTA3QjAxMTNGMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmls
aXR5TWVkaWFDb250cm9scy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmggKi87IH07CisJCTA3QjVBMkRCMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDdCNUEyRDkxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgKi87IH07CisJ
CTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkRBMTQ2NDMyMEEwMEE4
MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAqLzsgfTsKKwkJMDdCNUEzMEQxNDY4N0Q3MTAwQTgx
RUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwN0I1QTMwQzE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0
VHJhY2tMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMDdCREQ2RUMxNDY5QjRDMjAwOUM5Rjg1IC8q
IEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3Vz
dG9tLmNwcCAqLzsgfTsKIAkJMDgwNkU1N0ExMjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwNkU1Nzkx
Mjg5MzA0NTAwN0NFRDMyIC8qIFNWR01hdHJpeC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4MEU0OTI2MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4MEU0OTIyMTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0
RW5naW5lQmFzZWxpbmUuaCAqLzsgfTsKIAkJMDgwRTQ5MjgxMjU1RjNCRDAwRUZDQTI3IC8qIFNW
R1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyNDEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91
dEVuZ2luZVNwYWNpbmcuaCAqLzsgfTsKQEAgLTcxMTMsNyArNzExOCw4IEBACiAJCTA3MzVFRTY5
MEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzUzODYwMTE0NDg5RTk4MDBCNzg0NTIg
LyogQ2FjaGVkVGV4dFRyYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
Y2hlZFRleHRUcmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzY4OUQ2RDE0
NUI1MkNDMDAxQ0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVHJhY2tFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRUcmFja0xp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzY5NzA4NTE0NjNBRDg3MDBG
NTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0VHJhY2tMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NkYwRDA5
MTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBEMEExMkI4
MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc4NDYzNDAxNDVCMTUxQTAwQTU4REYx
IC8qIEpTVHJhY2tFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1RyYWNrRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEyMiw2
ICs3MTI4LDExIEBACiAJCTA3OUY1RTRCMEYzQkVCRUEwMDVFMDc4MiAvKiBNZWRpYVBsYXllclBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3QUZFNTkwMEYxNDQ2QkQwMDg0
MTYxNyAvKiBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBw
YXRoID0gbWVkaWFDb250cm9sc1F1aWNrVGltZS5jc3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250
cm9scy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TWVk
aWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTJEOTE0NjQz
MjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzA2MTQ2ODUzNzEwMEE4MUVDRSAvKiBUZXh0
VHJhY2tMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBUZXh0VHJhY2tMaXN0LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8q
IEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1RyYWNrRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwN0I1QTMwQzE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVGV4dFRyYWNrTGlzdEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MDZFNTc5MTI4OTMwNDUwMDdD
RUQzMiAvKiBTVkdNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIxMTI1NUYzQkQw
MEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjIxMjU1RjNCRDAwRUZDQTI3IC8q
IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3ODAxLDYgKzE3ODEyLDggQEAKIAkJCQkwNzA3NTZEODE0MjM5QjRCMDA0
MTQxNjEgLyogSlNUZXh0VHJhY2tDdWUuaCAqLywKIAkJCQkwNzA3NTZEOTE0MjM5QjRDMDA0MTQx
NjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCAqLywKIAkJCQkwNzA3NTZEQTE0MjM5QjRFMDA0
MTQxNjEgLyogSlNUZXh0VHJhY2tDdWVMaXN0LmggKi8sCisJCQkJMDdCNUEyRDkxNDY0MzIwQTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgKi8sCisJCQkJMDdCNUEyREExNDY0MzIwQTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovLAogCQkJCUU0NDYxNDEyMENENjgyNjkwMEZB
REE3NSAvKiBKU1RpbWVSYW5nZXMuY3BwICovLAogCQkJCUU0NDYxNDEzMENENjgyNjkwMEZBREE3
NSAvKiBKU1RpbWVSYW5nZXMuaCAqLywKIAkJCQkwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyog
SlNUcmFja0V2ZW50LmNwcCAqLywKQEAgLTE4NDg5LDYgKzE4NTAyLDkgQEAKIAkJQjFBRDRFNzcx
M0ExMkE3MjAwODQ2QjI3IC8qIHRyYWNrICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwNzY5NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlz
dC5jcHAgKi8sCisJCQkJMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3Qu
aCAqLywKKwkJCQkwN0I1QTMwNjE0Njg1MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwg
Ki8sCiAJCQkJMDcwMzM0RDgxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgKi8sCiAJ
CQkJMDcwMzM0RDYxNDU5RkZENTAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5oICovLAogCQkJCTA3MDMz
NEQwMTQ1OUZGQUMwMDhEOEQ0NSAvKiBUcmFja0V2ZW50LmNwcCAqLywKQEAgLTE5NTYzLDcgKzE5
NTc5LDYgQEAKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQTg1RjIyMDgxNDMwMzc3RDAw
N0NDODg0IC8qIEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1
RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovLAogCQkJCTg2MjQzRDAw
MTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovLAogCQkJCUJD
MkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLApAQCAtMTk2NTks
NiArMTk2NzQsNyBAQAogCQkJCUJDQjc3MzYwMEMxNzg1M0QwMDEzMkJBNCAvKiBKU05vZGVGaWx0
ZXJDdXN0b20uY3BwICovLAogCQkJCTFBNzUwREQzMEE5MEU3MjkwMDBGRjIxNSAvKiBKU05vZGVJ
dGVyYXRvckN1c3RvbS5jcHAgKi8sCiAJCQkJQkNEOUMyNjEwQzE3QUE2NzAwNUM5MEEyIC8qIEpT
Tm9kZUxpc3RDdXN0b20uY3BwICovLAorCQkJCUE4NUYyMjA4MTQzMDM3N0QwMDdDQzg4NCAvKiBK
U1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUUxQUQxMkQ1MTI5NUQwQkQwMEFDQTk4
OSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJNDk5OEFFRDMx
M0ZDNDE3RjAwOTBCMUFBIC8qIEpTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20u
Y3BwICovLAogCQkJCTlGQTM3RUU2MTE3MkZDRjAwMEM0Q0Q1NSAvKiBKU1NjcmlwdFByb2ZpbGVO
b2RlQ3VzdG9tLmNwcCAqLywKQEAgLTE5NjcyLDkgKzE5Njg4LDEwIEBACiAJCQkJMDhFNEZFNDUw
RTJCRDQxNDAwRjRDQUUwIC8qIEpTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCAqLywKIAkJCQlCMkM5NkQ4
QzBCM0FGMkI3MDA1RTgwRUMgLyogSlNTVkdQYXRoU2VnQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTJD
NDBBQTBERUI1NUFBMDA1QUYxOUUgLyogSlNUZXh0Q3VzdG9tLmNwcCAqLywKKwkJCQkwN0I1QTMw
QzE0Njg3RDcxMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQkw
NzAzMzRFODE0NUExRjM1MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJMDc4
NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJhY2tDdXN0b20uaCAqLywKLQkJCQkwNzY4OUQ2
RDE0NUI1MkNDMDAxQ0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLywKKwkJCQkwN0I1
QTMwQTE0Njg3Qjg0MDBBODFFQ0UgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQk1
MTZCQjc5MjBDRTkxRTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCAqLywKIAkJ
CQk0OUVFQ0Y3NzEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MTZBcnJheUN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3Bw
ICovLApAQCAtMjQ2MzMsNiArMjQ2NTAsOCBAQAogCQkJCTMxNjkzNzlDMTQ2MDlDNkMwMEMwMTM2
MiAvKiBEcmFnU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0FFOUY5MTAxNDY0NDFGMDAw
QzI0NUIwIC8qIENTU0FzcGVjdFJhdGlvVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkYz
NkVCMTQ2ODYyMjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTA3Njk3MDg3MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MTM0NDk2RTE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3Ro
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0yNzQ4NCw3ICsyNzUwMyw2IEBACiAJCQkJMDcwMzM0RDkx
NDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzAz
MzRFOTE0NUExRjM2MDA4RDhENDUgLyogSlNUcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTA3Njg5RDZFMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4RkVCREMxNDNFM0VGNzAwNzI1MDJCIC8qIENT
U0Nyb3NzZmFkZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0Qw
MDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNBRTlGOTBG
MTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjc0OTIsNyArMjc1MTAsMTEgQEAKIAkJCQlDREVBNzYzNDE0NjBCNTZGMDA4QjMxRjEg
LyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNERUE3NjM1MTQ2MEI3MUEw
MDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzZGMzZFQTE0Njg2MjI1
MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA3Njk3
MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3QjVBMkRCMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMDdCNUEzMEQxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3MTM0NDk2RDE0Njk0MUIzMDA3MjAzMTIg
LyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwN0JERDZFQzE0NjlC
NEMyMDA5QzlGODUgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQwOSwxMiArNDA5LDE1IEBAIGVuZGlmCiBpZiBF
TkFCTEVfVklERU9fVFJBQ0sKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3BfYnVp
bGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2suaCBcCisJJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0
LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4
dFRyYWNrQ3VlLmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2Vi
S2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJj
ZXMvd2Via2l0L1dlYktpdERPTVRyYWNrRXZlbnQuaAogd2Via2l0Z3RrX2dkb21fYnVpbHRfc291
cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFjay5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmggXAor
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCisJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlLmggXAogCURl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWUuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIFwKIAlEZXJpdmVk
U291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5jcHAgXApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0
b3J5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dl
YktpdEhUTUxFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwCShyZXZpc2lvbiA5OTY0NSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFj
dG9yeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFBy
aXZhdGUuaCIKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Vi
a2l0L1dlYktpdERPTVRyYWNrRXZlbnRQcml2YXRlLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNp
b24gOTk2NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNsdWRlICJKU1N0
eWxlU2hlZXRDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU3R5bGVTaGVldExpc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTVGV4dEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1Rv
dWNoTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5jcHAiCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1
ZGUgIkpTVGV4dFRyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNU
ZXh0VHJhY2tMaXN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7Cisg
ICAgSlNUZXh0VHJhY2tMaXN0KiBqc1RleHRUcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxKU1RleHRU
cmFja0xpc3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIGlmICghanNUZXh0VHJhY2tM
aXN0LT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gdmlzaXRvci5jb250YWluc09wYXF1ZVJvb3Qocm9vdChzdGF0aWNfY2FzdDxUZXh0VHJh
Y2tMaXN0Kj4oanNUZXh0VHJhY2tMaXN0LT5pbXBsKCkpLT5vd25lcigpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXRGYWN0b3J5LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4JKHJldmlzaW9uIDk5NjQ1KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQCBQ
ZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFNoYXJlZFdvcmtlciBjb25k
aXRpb25hbD1TSEFSRURfV09SS0VSUwogU2hhcmVkV29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1T
SEFSRURfV09SS0VSUwogU1ZHRWxlbWVudEluc3RhbmNlIGNvbmRpdGlvbmFsPVNWRworVGV4dFRy
YWNrTGlzdCBjb25kaXRpb25hbD1WSURFT19UUkFDSwogV2ViU29ja2V0IGNvbmRpdGlvbmFsPVdF
Ql9TT0NLRVRTCiBXb3JrZXIgY29uZGl0aW9uYWw9V09SS0VSUwogWE1MSHR0cFJlcXVlc3QKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkocmV2aXNpb24gOTk2
NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NSZWZQdHI8SFRNTEF1ZGlvRWxlbWVudD4gSFRN
TEF1ZGlvRWwKICAgICBhdWRpby0+c2V0UHJlbG9hZCgiYXV0byIpOwogICAgIGlmICghc3JjLmlz
TnVsbCgpKSB7CiAgICAgICAgIGF1ZGlvLT5zZXRTcmMoc3JjKTsKLSAgICAgICAgYXVkaW8tPnNj
aGVkdWxlTG9hZCgpOworICAgICAgICBhdWRpby0+c2NoZWR1bGVMb2FkKEhUTUxNZWRpYUVsZW1l
bnQ6Ok1lZGlhUmVzb3VyY2UpOwogICAgIH0KICAgICByZXR1cm4gYXVkaW8ucmVsZWFzZSgpOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lv
biA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAj
aW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJfQVVESU8pCkBAIC0yMjUsOCArMjI2LDEyIEBAIEhUTUxNZWRpYUVsZW1lbnQ6On5IVE1M
TWVkaWFFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yTWVkaWFWb2x1bWVD
YWxsYmFja3ModGhpcyk7CiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvclByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyh0aGlzKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy5zaXplKCk7ICsraSkK
LSAgICAgICAgbV90ZXh0VHJhY2tzW2ldLT5zZXRDbGllbnQoMCk7CisgICAgaWYgKG1fdGV4dFRy
YWNrcykKKyAgICAgICAgbV90ZXh0VHJhY2tzLT5jbGVhck93bmVyKCk7CisgICAgaWYgKG1fdGV4
dFRyYWNrcykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tz
LT5sZW5ndGgoKTsgKytpKQorICAgICAgICAgICAgbV90ZXh0VHJhY2tzLT5pdGVtKGkpLT5jbGVh
ckNsaWVudCgpOworICAgIH0KICNlbmRpZgogfQogCkBAIC0yNjgsNyArMjczLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKAogICAgIGlmIChhdHRyTmFtZSA9PSBz
cmNBdHRyKSB7CiAgICAgICAgIC8vIFRyaWdnZXIgYSByZWxvYWQsIGFzIGxvbmcgYXMgdGhlICdz
cmMnIGF0dHJpYnV0ZSBpcyBwcmVzZW50LgogICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNB
dHRyKS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgICAg
IHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09
IGNvbnRyb2xzQXR0cikKICAgICAgICAgY29uZmlndXJlTWVkaWFDb250cm9scygpOwogfQpAQCAt
MzgxLDEwICszODYsMTAgQEAgUmVuZGVyT2JqZWN0KiBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVS
ZQogIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCIpOwor
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50Iik7
CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYgKCFnZXRB
dHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktf
RU1QVFkpCi0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICBzY2hlZHVsZUxvYWQoTWVk
aWFSZXNvdXJjZSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCgpCkBAIC00MjMsMTcgKzQyOCwyNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZFJl
Y2FsY1N0eWxlKFN0CiAgICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKK3ZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2NoZWR1bGVMb2FkKExvYWRUeXBlIGxvYWRUeXBlKQogewogICAgIExPRyhNZWRp
YSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCIpOworCisgICAgaWYgKChsb2FkVHlw
ZSAmIE1lZGlhUmVzb3VyY2UpICYmICEobV9wZW5kaW5nTG9hZEZsYWdzICYgTWVkaWFSZXNvdXJj
ZSkpIHsKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBjcmVhdGVNZWRp
YVBsYXllclByb3h5KCk7CisgICAgICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKICNlbmRp
ZgorICAgICAgICAKKyAgICAgICAgcHJlcGFyZUZvckxvYWQoKTsKKyAgICAgICAgbV9wZW5kaW5n
TG9hZEZsYWdzIHw9IE1lZGlhUmVzb3VyY2U7CisgICAgfQogCi0gICAgaWYgKG1fbG9hZFRpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBwcmVwYXJlRm9yTG9hZCgpOwotICAg
IG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisg
ICAgaWYgKGxvYWRUeXBlICYgVGV4dFRyYWNrUmVzb3VyY2UpCisgICAgICAgIG1fcGVuZGluZ0xv
YWRGbGFncyB8PSBUZXh0VHJhY2tSZXNvdXJjZTsKKyNlbmRpZgorCisgICAgaWYgKCFtX2xvYWRU
aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2xvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVOZXh0U291cmNlQ2hpbGQoKQpAQCAt
NDc0LDEwICs0ODgsMTkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojphc3luY0V2ZW50VGltZXJG
aQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpbWVyPEhUTUxNZWRp
YUVsZW1lbnQ+KikKIHsKLSAgICBpZiAobV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VF
bGVtZW50KQotICAgICAgICBsb2FkTmV4dFNvdXJjZUNoaWxkKCk7Ci0gICAgZWxzZQotICAgICAg
ICBsb2FkSW50ZXJuYWwoKTsKKyAgICBpZiAobV9wZW5kaW5nTG9hZEZsYWdzICYgTWVkaWFSZXNv
dXJjZSkgeworICAgICAgICBpZiAobV9sb2FkU3RhdGUgPT0gTG9hZGluZ0Zyb21Tb3VyY2VFbGVt
ZW50KQorICAgICAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBsb2FkSW50ZXJuYWwoKTsKKyAgICB9CisKKyNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCisgICAgaWYgKG1fcGVuZGluZ0xvYWRGbGFncyAmIFRleHRUcmFja1Jlc291cmNlKQorICAg
ICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CisjZW5kaWYKKworICAgIG1fcGVuZGluZ0xvYWRG
bGFncyA9IDA7CiB9CiAKIFBhc3NSZWZQdHI8TWVkaWFFcnJvcj4gSFRNTE1lZGlhRWxlbWVudDo6
ZXJyb3IoKSBjb25zdCAKQEAgLTYzMyw5ICs2NTYsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRJbnRlcm5hbCgpCiAgICAgcmVtb3ZlQmVoYXZpb3JSZXN0cmljdGlvbihSZXF1aXJlUGFn
ZUNvbnNlbnRUb0xvYWRNZWRpYVJlc3RyaWN0aW9uKTsKIAogICAgIHNlbGVjdE1lZGlhUmVzb3Vy
Y2UoKTsKLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgbG9hZFRleHRUcmFja3MoKTsKLSNl
bmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNlbGVjdE1lZGlhUmVzb3VyY2UoKQpA
QCAtODM3LDI4ICs4NTcsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRSZXNvdXJjZShj
b25zCiB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRUZXh0VHJhY2tzKCkKLXsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoTm9k
ZSogbm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUodHJhY2tUYWcpKQotICAgICAgICAgICAg
bG9hZE5leHRUZXh0VHJhY2soc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpKTsK
LSAgICB9Ci19Ci0KLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZE5leHRUZXh0VHJhY2soSFRN
TFRyYWNrRWxlbWVudCogdHJhY2spCi17Ci0gICAgLy8gRklYTUUoNzExMjQpOiBUaGlzIHNob3Vs
ZCBzY2hlZHVsZSBhbiAqYXN5bmNocm9ub3VzKiBsb2FkLgotICAgIHRyYWNrLT5sb2FkKEFjdGl2
ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzKTsKLSAgICBSZWZQdHI8
VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFjay0+dHJhY2soKTsKLSAgICBpZiAodGV4dFRyYWNr
KQotICAgICAgICBtX3RleHRUcmFja3MuYXBwZW5kKHRleHRUcmFjay5yZWxlYXNlKCkpOwotICAg
IAotICAgIC8vIEZJWE1FKDcxMTIzKTogU2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYWNjb3JkaW5n
bHkuCi19Ci0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5n
ZWQoVGV4dFRyYWNrKikKIHsKICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KQEAgLTg2
OSwxMSArODY3LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbgog
ICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja0NyZWF0ZWQoVGV4dFRyYWNrKikKLXsKLSAgICAvLyBGSVhNRSg2Mjg4NSk6
IEltcGxlbWVudC4KLX0KLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSAKIHsKICAgICAvLyBGSVhNRSg2
Mjg4NSk6IEltcGxlbWVudC4KQEAgLTg5Niw3ICs4ODksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja1JlbW92ZUN1CiAKICNlbmRpZgogCi1ib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRTb3VyY2VBY3Rpb24gYWN0
aW9uSWZJbnZhbGlkKQorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoY29u
c3QgS1VSTCYgdXJsLCBJbnZhbGlkVXJsQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkpIHsKICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6aXNTYWZlVG9Mb2FkVVJMKCVzKSAtPiBGQUxTRSBiZWNhdXNlIHVybCBpcyBpbnZhbGlkIiwg
dXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtOTExLDggKzkwNCwxMCBAQCBi
b29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTChjCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAoIWRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwpKQorICAgIGlmICghZG9jdW1lbnQoKS0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpIHsKKyAgICAg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKCVzKSAtPiBy
ZWplY3RlZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSIsIHVybEZvckxvZ2dpbmcodXJsKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMTY3MCw3ICsxNjY1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpw
bGF5SW50ZXJuYWwoKQogCiAgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1lZGlhIHJlc291
cmNlCiAgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JLX0VNUFRZ
KQotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVz
b3VyY2UpOwogCiAgICAgaWYgKGVuZGVkUGxheWJhY2soKSkgewogICAgICAgICBFeGNlcHRpb25D
b2RlIHVudXNlZDsKQEAgLTE3MDksNyArMTcwNCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGF1c2VJbnRlcm5hbCgpCiAKICAgICAvLyA0LjguMTAuOS4gUGxheWluZyB0aGUgbWVkaWEgcmVz
b3VyY2UKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0YXRlID09IE5FVFdPUktfRU1Q
VFkpCi0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICBzY2hlZHVsZUxvYWQoTWVkaWFS
ZXNvdXJjZSk7CiAKICAgICBtX2F1dG9wbGF5aW5nID0gZmFsc2U7CiAgICAgCkBAIC0xOTkwLDQw
ICsxOTg1LDEwNiBAQCBmbG9hdCBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVkKCkgCiBQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2soY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQog
ewogICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKHRo
aXMsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSk7Ci0gICAgbV90ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0
VHJhY2spOworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOwogICAgIHJldHVybiB0ZXh0VHJh
Y2sucmVsZWFzZSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQo
SFRNTFRyYWNrRWxlbWVudCogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRU
cmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgaWYgKCFtX3RleHRUcmFj
a3MpCisgICAgICAgIG1fdGV4dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV90ZXh0VHJh
Y2tzLT5hcHBlbmQodHJhY2spOworCisgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworfQorCit2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3MoKQoreworICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4
dCB0cmFja3MKKyAgICAKKyAgICAvLyBXaGVuIGEgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRv
IGEgdHJhY2sgZWxlbWVudCBpcyBhZGRlZCB0byBhIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRl
eHQgdHJhY2tzLAorICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3Qgc2V0IHRoZSB0ZXh0IHRyYWNr
IG1vZGUgYXBwcm9wcmlhdGVseSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6CisgICAgCisgICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIHN1YnRpdGxl
cyBvciBjYXB0aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBo
YXZpbmcgYQorICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJh
Y2sgbGFuZ3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBu
bworICAgIC8vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9m
IHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgZWl0aGVyIHN1YnRpdGxlcwor
ICAgIC8vIG9yIGNhcHRpb25zIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nCisgICAg
Ly8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIGRlc2NyaXB0aW9ucyBhbmQgdGhlIHVzZXIg
aGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgdGV4dCAKKyAgICAvLyBkZXNjcmlw
dGlvbnMgd2l0aCB0aGlzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgYW5kIHRleHQgdHJhY2sgbGFiZWwg
ZW5hYmxlZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgCisgICAgLy8gdHJhY2sgaW4gdGhl
IG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtp
bmQgb2YgZGVzY3JpcHRpb25zIHdob3NlIHRleHQgCisgICAgLy8gdHJhY2sgbW9kZSBpcyBzaG93
aW5nCisgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KKyAgICAv
LyAgICBJZiB0aGVyZSBpcyBhIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0
IG9mIHRleHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nIAorICAgIC8v
ICAgIGJ5IGRlZmF1bHQsIHRoZSB1c2VyIGFnZW50IG11c3QgZnVydGhlcm1vcmUgY2hhbmdlIHRo
YXQgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSB0byBoaWRkZW4uCisgICAgCisgICAgLy8g
KiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIGNoYXB0ZXJzIGFuZCB0aGUgdGV4dCB0cmFjayBs
YW5ndWFnZSBpcyBvbmUgdGhhdCB0aGUgdXNlciBhZ2VudCBoYXMgcmVhc29uCisgICAgLy8gdG8g
YmVsaWV2ZSBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIHVzZXIsIGFuZCB0aGVyZSBpcyBubyBvdGhl
ciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZgorICAgIC8vIHRleHQg
dHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4dCB0cmFj
ayBtb2RlIGlzIHNob3dpbmcKKyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBz
aG93aW5nLgorICAgIAorICAgIC8vICogSWYgdGhlIHRyYWNrIGVsZW1lbnQgaGFzIGEgZGVmYXVs
dCBhdHRyaWJ1dGUgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBp
biB0aGUgbWVkaWEKKyAgICAvLyBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aG9zZSB0
ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZyBvciBzaG93aW5nIGJ5IGRlZmF1bHQKKyAgICAvLyAg
ICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nIGJ5IGRlZmF1bHQuCisgICAgCisg
ICAgLy8gT3RoZXJ3aXNlCisgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgZGlz
YWJsZWQuCisgICAgCisgICAgLy8gRklYTUUoNzExMjMpOiBVbnRpbCB0aGUgYWJvdmUgbG9naWMg
aGFzIGJlZW4gaW1wbGVtZW50ZWQsIGp1c3QgdGVsbCBhbGwgdGV4dCB0cmFja3MgdG8gbG9hZC4K
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKS0+c2NoZWR1
bGVMb2FkKCk7CisgICAgfQorfQorCitQYXNzUmVmUHRyPFRleHRUcmFja0xpc3Q+IEhUTUxNZWRp
YUVsZW1lbnQ6OnRleHRUcmFja3MoKSBjb25zdCAKIHsKKyAgICByZXR1cm4gbV90ZXh0VHJhY2tz
OworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQoSFRNTFRyYWNrRWxl
bWVudCogdHJhY2tFbGVtZW50KQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUxPR19E
SVNBQkxFRAotICAgIGlmICh0cmFjay0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAg
S1VSTCB1cmwgPSB0cmFjay0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAg
aWYgKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKKyAgICAgICAgS1VSTCB1
cmwgPSB0cmFja0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAg
ICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkIC0gJ3NyYycg
aXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogI2VuZGlm
Ci0gICAgbG9hZE5leHRUZXh0VHJhY2sodHJhY2spOworCisgICAgLy8gNC44LjEwLjEyLjMgU291
cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyBXaGVuIGEgdHJhY2sgZWxlbWVu
dCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMgYW5kIHRoZSBuZXcgcGFyZW50IGlzIGEgbWVkaWEg
ZWxlbWVudCwgCisgICAgLy8gdGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGFkZCB0aGUgdHJhY2sg
ZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4dCB0cmFjayB0byB0aGUgCisgICAgLy8gbWVkaWEg
ZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3MgLi4uIFtjb250aW51ZXMgaW4gVGV4dFRyYWNr
TGlzdDo6YXBwZW5kXQorICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxl
bWVudC0+dHJhY2soKTsKKyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuOworICAg
IGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOyAgICAKKyAgICBzY2hlZHVsZUxvYWQoVGV4dFRyYWNr
UmVzb3VyY2UpOwogfQogIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92
ZWQoSFRNTFRyYWNrRWxlbWVudCogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNr
V2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAjaWYgIUxP
R19ESVNBQkxFRAotICAgIGlmICh0cmFjay0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAg
ICAgS1VSTCB1cmwgPSB0cmFjay0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Cisg
ICAgaWYgKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKKyAgICAgICAgS1VS
TCB1cmwgPSB0cmFja0VsZW1lbnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwog
ICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQg
LSAnc3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9
CiAjZW5kaWYKLX0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1NvdXJjZUNoYW5nZWQo
SFRNTFRyYWNrRWxlbWVudCogdHJhY2spCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICh0
cmFjay0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFjay0+
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhU
TUxNZWRpYUVsZW1lbnQ6OnRyYWNrU291cmNlQ2hhbmdlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9y
TG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwotICAgIH0KLSNlbmRpZgotICAgIGxvYWROZXh0
VGV4dFRyYWNrKHRyYWNrKTsKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFj
a0VsZW1lbnQtPnRyYWNrKCk7CisgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisg
ICAgLy8gV2hlbiBhIHRyYWNrIGVsZW1lbnQncyBwYXJlbnQgZWxlbWVudCBjaGFuZ2VzIGFuZCB0
aGUgb2xkIHBhcmVudCB3YXMgYSBtZWRpYSBlbGVtZW50LCAKKyAgICAvLyB0aGVuIHRoZSB1c2Vy
IGFnZW50IG11c3QgcmVtb3ZlIHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0
IHRyYWNrIGZyb20gdGhlIAorICAgIC8vIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJh
Y2tzLgorICAgIG1fdGV4dFRyYWNrcy0+cmVtb3ZlKHRleHRUcmFjayk7CiB9CiAjZW5kaWYKIApA
QCAtMjA0Miw3ICsyMTAzLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZlUG90ZW50aWFs
U291cgogICAgIHJldHVybiBuZXh0VVJMLmlzVmFsaWQoKTsKIH0KIAotS1VSTCBIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUgKmNvbnRlbnRUeXBlLCBJ
bnZhbGlkU291cmNlQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKK0tVUkwgSFRNTE1lZGlhRWxlbWVu
dDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlICpjb250ZW50VHlwZSwgSW52YWxp
ZFVybEFjdGlvbiBhY3Rpb25JZkludmFsaWQpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIC8v
IERvbid0IGxvZyBpZiB0aGlzIHdhcyBqdXN0IGNhbGxlZCB0byBmaW5kIG91dCBpZiB0aGVyZSBh
cmUgYW55IHZhbGlkIDxzb3VyY2U+IGVsZW1lbnRzLgpAQCAtMjE1NCw3ICsyMjE1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpzb3VyY2VXYXNBZGRlZChIVAogICAgIC8vIGF0dHJpYnV0ZSBh
bmQgd2hvc2UgbmV0d29ya1N0YXRlIGhhcyB0aGUgdmFsdWUgTkVUV09SS19FTVBUWSwgdGhlIHVz
ZXIgYWdlbnQgbXVzdCBpbnZva2UgCiAgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyByZXNvdXJj
ZSBzZWxlY3Rpb24gYWxnb3JpdGhtLgogICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9PSBIVE1MTWVk
aWFFbGVtZW50OjpORVRXT1JLX0VNUFRZKSB7Ci0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAg
ICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiA5
OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBAIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQ7CiBjbGFzcyBN
ZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CitjbGFzcyBUZXh0
VHJhY2tMaXN0OwogY2xhc3MgVGltZVJhbmdlczsKIGNsYXNzIFVpbnQ4QXJyYXk7CiAjaWYgRU5B
QkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC04OSw3ICs5MCwxMSBAQCBwdWJsaWM6CiAg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2
b2lkIHNjaGVkdWxlTG9hZCgpOworICAgIGVudW0gTG9hZFR5cGUgeworICAgICAgICBNZWRpYVJl
c291cmNlID0gMSA8PCAwLAorICAgICAgICBUZXh0VHJhY2tSZXNvdXJjZSA9IDEgPDwgMQorICAg
IH07CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoTG9hZFR5cGUpOwogICAgIAogICAgIE1lZGlhUGxh
eWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdDsKICAgICAKQEAgLTE4MSw5
ICsxODYsMjAgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrPiBhZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwgPSAiIiwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSA9ICIiKTsKKyAgICBQYXNzUmVm
UHRyPFRleHRUcmFja0xpc3Q+IHRleHRUcmFja3MoKSBjb25zdDsKKworICAgIHZvaWQgYWRkVGV4
dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tX
YXNBZGRlZChIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrV2lsbEJl
UmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrU291cmNl
Q2hhbmdlZChIVE1MVHJhY2tFbGVtZW50Kik7CisKKyAgICAvLyBUZXh0VHJhY2tDbGllbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7Cisg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sq
LCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0Fk
ZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC0y
MzAsNiArMjQ2LDkgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291
cmNlUHJvdmlkZXIoKTsKICNlbmRpZgogCisgICAgZW51bSBJbnZhbGlkVXJsQWN0aW9uIHsgRG9O
b3RoaW5nLCBDb21wbGFpbiB9OworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwm
LCBJbnZhbGlkVXJsQWN0aW9uKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlh
RWxlbWVudCgpOwpAQCAtMzQ5LDIzICszNjgsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRG
b3JTb3VyY2VDaGFuZ2UoKTsKICAgICB2b2lkIHByZXBhcmVUb1BsYXkoKTsKIAotICAgIGVudW0g
SW52YWxpZFNvdXJjZUFjdGlvbiB7IERvTm90aGluZywgQ29tcGxhaW4gfTsKLSAgICBib29sIGlz
U2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiwgSW52YWxpZFNvdXJjZUFjdGlvbik7Ci0gICAgS1VS
TCBzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqLCBJbnZhbGlkU291cmNlQWN0aW9u
KTsKKyAgICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIEludmFsaWRV
cmxBY3Rpb24pOwogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHZvaWQgbG9hZFRleHRU
cmFja3MoKTsKLSAgICB2b2lkIGxvYWROZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsK
LQotICAgIC8vIFRleHRUcmFja0NsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFk
eVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9k
ZUNoYW5nZWQoVGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQo
VGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNr
KiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tS
ZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygp
OwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hl
Y2sgdXNlciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KQEAgLTQ3MSw2ICs0NzgsOSBAQCBwcml2YXRl
OgogICAgIG11dGFibGUgZmxvYXQgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1f
Y2FjaGVkVGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5p
bXVtV2FsbENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CisgICAgCisgICAgdHlwZWRlZiB1bnNp
Z25lZCBQZW5kaW5nTG9hZEZsYWdzOworICAgIFBlbmRpbmdMb2FkRmxhZ3MgbV9wZW5kaW5nTG9h
ZEZsYWdzOwogCiAgICAgYm9vbCBtX3BsYXlpbmcgOiAxOwogICAgIGJvb2wgbV9pc1dhaXRpbmdV
bnRpbE1lZGlhQ2FuU3RhcnQgOiAxOwpAQCAtNTE0LDcgKzUyNCw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFj
az4gPiBtX3RleHRUcmFja3M7CisgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNr
czsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaWRsCShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBtb2R1bGUgaHRt
bCB7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RS
QUNLCiAgICAgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFk
ZFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwg
aW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0IHRleHRU
cmFja3M7CiAjZW5kaWYKIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNr
RWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NjQ1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBpbmxpbmUg
SFRNTFRyYWNrRWxlbWVudDo6SFRNTFRyYWNrRWxlbWVuCiAKIEhUTUxUcmFja0VsZW1lbnQ6On5I
VE1MVHJhY2tFbGVtZW50KCkKIHsKKyAgICBpZiAobV90cmFjaykKKyAgICAgICAgbV90cmFjay0+
Y2xlYXJDbGllbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJh
Y2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50KQpAQCAtNTksMTYgKzYxLDE2IEBAIFBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVu
dD4gSFRNTFRyYWNrRWwKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShi
b29sIGRlZXApCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoZGVlcCk7Ci0g
ICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlmIChwYXJlbnQgJiYg
cGFyZW50LT5pc01lZGlhRWxlbWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFF
bGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tXYXNBZGRlZCh0aGlzKTsKKworICAgIGlmIChI
VE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcGFyZW50
LT50cmFja1dhc0FkZGVkKHRoaXMpOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OndpbGxS
ZW1vdmUoKQogewotICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKLSAgICBp
ZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPnRyYWNrV2lsbEJlUmVtb3ZlZCh0
aGlzKTsKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkp
CisgICAgICAgIHBhcmVudC0+dHJhY2tXaWxsQmVSZW1vdmVkKHRoaXMpOworCiAgICAgSFRNTEVs
ZW1lbnQ6OndpbGxSZW1vdmUoKTsKIH0KIApAQCAtOTAsOCArOTIsOCBAQCB2b2lkIEhUTUxUcmFj
a0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoCiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikgewot
ICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgcGFyZW50Tm9k
ZSgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5v
ZGUoKSktPnRyYWNrU291cmNlQ2hhbmdlZCh0aGlzKTsKKyAgICAgICAgaWYgKCFnZXRBdHRyaWJ1
dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgc2No
ZWR1bGVMb2FkKCk7CiAgICAgfQogfQogCkBAIC0xMzcsNyArMTM5LDcgQEAgdm9pZCBIVE1MVHJh
Y2tFbGVtZW50OjpzZXRMYWJlbChjb25zdCBTdAogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6Omlz
RGVmYXVsdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7
CisgICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoZGVmYXVsdEF0dHIpOwogfQogCiB2b2lkIEhU
TUxUcmFja0VsZW1lbnQ6OnNldElzRGVmYXVsdChib29sIGlzRGVmYXVsdCkKQEAgLTE0NSwxMSAr
MTQ3LDExIEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0SXNEZWZhdWx0KGJvb2wKICAgICBz
ZXRCb29sZWFuQXR0cmlidXRlKGRlZmF1bHRBdHRyLCBpc0RlZmF1bHQpOwogfQogCi1UZXh0VHJh
Y2sqIEhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKCkgY29uc3QKK1Bhc3NSZWZQdHI8TG9hZGFibGVU
ZXh0VHJhY2s+IEhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKCkKIHsKLSAgICBpZiAobV90cmFjaykK
LSAgICAgICAgcmV0dXJuIG1fdHJhY2suZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFt
X3RyYWNrKQorICAgICAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSh0aGlz
LCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4oZG9jdW1lbnQoKSksIGtpbmQo
KSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgcmV0dXJuIG1fdHJhY2s7
CiB9CiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBh
dHRyaWJ1dGUpIGNvbnN0CkBAIC0xNTcsMTkgKzE1OSw3OSBAQCBib29sIEhUTUxUcmFja0VsZW1l
bnQ6OmlzVVJMQXR0cmlidXRlKEF0CiAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+bmFtZSgpID09IHNy
Y0F0dHI7CiB9CiAKLXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6bG9hZChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIHRyYWNrQ2xpZW50KQordm9pZCBIVE1M
VHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogewotICAgIG1fdHJhY2sgPSBMb2FkYWJsZVRl
eHRUcmFjazo6Y3JlYXRlKHRyYWNrQ2xpZW50LCB0aGlzLCBraW5kKCksIGxhYmVsKCksIHNyY2xh
bmcoKSwgaXNEZWZhdWx0KCkpOworICAgIGlmICghbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChoYXNBdHRyaWJ1dGUoc3JjQXR0cikpCi0gICAgICAgIG1fdHJhY2st
PmxvYWQoZ2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0ciksIGNvbnRleHQpOworICAgIGlm
ICghZmFzdEhhc0F0dHJpYnV0ZShzcmNBdHRyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHJh
Y2soKS0+c2NoZWR1bGVMb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpKTsKK30K
KworYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRyYWNrKiwg
Y29uc3QgS1VSTCYgdXJsKQoreworICAgIEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlh
RWxlbWVudCgpOworICAgIGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIXBhcmVudC0+aXNTYWZlVG9Mb2FkVVJMKHVybCwgSFRNTE1lZGlhRWxlbWVudDo6Q29t
cGxhaW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIGRpc3BhdGNo
QmVmb3JlTG9hZEV2ZW50KHVybC5zdHJpbmcoKSk7CiB9CiAKLXZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9h
ZGluZ0ZhaWxlZCkKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZChMb2Fk
YWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKIHsKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUobG9hZGluZ0ZhaWxlZCA/
IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2Us
IGZhbHNlKSwgZWMpOwogfQorICAgIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tS
ZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIGlmIChIVE1MTWVkaWFF
bGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+
dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQodHJhY2spOworfQorICAgIAordm9pZCBIVE1MVHJh
Y2tFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQoreworICAg
IGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAg
cmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodHJhY2spOworfQorICAgIAordm9p
ZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJhY2ssIGNv
bnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCit7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQq
IHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50ZXh0VHJh
Y2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6
dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVM
aXN0KiBjdWVzKQoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywg
Y3Vlcyk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZShU
ZXh0VHJhY2sqIHRyYWNrLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQoreworICAgIGlm
IChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0
dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUpOworfQorICAgIAordm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiB0cmFjaywgUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCog
cGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFj
a1JlbW92ZUN1ZSh0cmFjaywgY3VlKTsKK30KKworSFRNTE1lZGlhRWxlbWVudCogSFRNTFRyYWNr
RWxlbWVudDo6bWVkaWFFbGVtZW50KCkgY29uc3QKK3sKKyAgICBFbGVtZW50KiBwYXJlbnQgPSBw
YXJlbnRFbGVtZW50KCk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFFbGVtZW50
KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50
Tm9kZSgpKTsKKworICAgIHJldHVybiAwOworfQogCiAjaWYgRU5BQkxFKE1JQ1JPREFUQSkKIFN0
cmluZyBIVE1MVHJhY2tFbGVtZW50OjppdGVtVmFsdWVUZXh0KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3
ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRyYWNrRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50IHsK
K2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisKK2NsYXNzIEhUTUxUcmFja0VsZW1lbnQgOiBwdWJs
aWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDgsMTggKzUwLDE2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFNyY2xhbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBTdHJp
bmcmKTsKICAgICB2b2lkIHNldElzRGVmYXVsdChib29sKTsKLSAgICBUZXh0VHJhY2sqIHRyYWNr
KCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gdHJhY2soKTsKICAg
ICAKLSAgICB2b2lkIGxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVu
dCopOworICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRV
cmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGxv
YWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIC8qIGxvYWRpbmdGYWlsZWQg
Ki8pOwogCiBwcml2YXRlOgotCi0gICAgLy8gVGV4dFRyYWNrTG9hZGluZ0NsaWVudAotICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwg
Ym9vbCk7Ci0KICAgICBIVE1MVHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxUcmFja0VsZW1lbnQoKTsKLSAgICAKKwogICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMpOwog
CkBAIC03Miw3ICs3MiwxOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRJdGVtVmFs
dWVUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBPVkVSUklERTsKICNlbmRpZgog
CisgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3Q7CisKKyAgICAvLyBU
ZXh0VHJhY2tMb2FkaW5nQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3Rh
dGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hh
bmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0
VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAg
IHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+KTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFj
ayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisKICAgICBSZWZQdHI8TG9hZGFibGVUZXh0
VHJhY2s+IG1fdHJhY2s7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29u
dGV4dDsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJh
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJh
Y2suY3BwCShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVU
ZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNiArMjksNTMgQEAKIAogI2luY2x1
ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCiAKKyNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50Lmgi
CisjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1
ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2FkYWJsZVRleHRUcmFjazo6TG9h
ZGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9h
ZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6
IFRleHRUcmFjayh0cmFja0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgbV9s
b2FkaW5nQ2xpZW50KGxvYWRpbmdDbGllbnQpCitMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVU
ZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgOiBUZXh0VHJhY2sodHJhY2ss
IGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKKyAgICAsIG1fdHJhY2tFbGVtZW50KHRyYWNrKQorICAg
ICwgbV9sb2FkVGltZXIodGhpcywgJkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCkK
KyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0KQog
eworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogfQogCiBMb2FkYWJsZVRleHRU
cmFjazo6fkxvYWRhYmxlVGV4dFRyYWNrKCkKIHsKIH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFj
azo6bG9hZChjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
Cit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCiB7Ci0gICAgaWYgKCFtX2xv
YWRlcikKLSAgICAgICAgbV9sb2FkZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSh0aGlzLCBj
b250ZXh0KTsKLSAgICBtX2xvYWRlci0+bG9hZCh1cmwpOworICAgIG1fdHJhY2tFbGVtZW50ID0g
MDsKKyAgICBUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0
VHJhY2s6OnNjaGVkdWxlTG9hZChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbV91cmwgPSB1cmw7
CisgICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2xvYWRUaW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZp
cmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCit7CisgICAgc2V0UmVhZHlTdGF0ZShUZXh0
VHJhY2s6OkxPQURJTkcpOworICAgIAorICAgIGlmIChtX2xvYWRlcikKKyAgICAgICAgbV9sb2Fk
ZXItPmNhbmNlbExvYWQoKTsKKworICAgIGlmICghbV90cmFja0VsZW1lbnQgfHwgIW1fdHJhY2tF
bGVtZW50LT5jYW5Mb2FkVXJsKHRoaXMsIG1fdXJsKSkgeworICAgICAgICBzZXRSZWFkeVN0YXRl
KFRleHRUcmFjazo6SFRNTF9FUlJPUik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgbV9sb2FkZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSh0aGlzLCBtX2NvbnRleHQuZ2V0
KCkpOworICAgIG1fbG9hZGVyLT5sb2FkKG1fdXJsKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRU
cmFjazo6bmV3Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2FkZXIqIGxvYWRlcikKQEAgLTgyLDgg
KzEwOSw4IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21wbGUKIAogICAg
IGxvYWRpbmdGYWlsZWQgPyBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6SFRNTF9FUlJPUikgOiBz
ZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6TE9BREVEKTsKIAotICAgIGlmIChtX2xvYWRpbmdDbGll
bnQpCi0gICAgICAgIG1fbG9hZGluZ0NsaWVudC0+dGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZCh0
aGlzLCBsb2FkaW5nRmFpbGVkKTsKKyAgICBpZiAobV90cmFja0VsZW1lbnQpCisgICAgICAgIG1f
dHJhY2tFbGVtZW50LT5sb2FkaW5nQ29tcGxldGVkKHRoaXMsIGxvYWRpbmdGYWlsZWQpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRh
YmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJs
ZVRleHRUcmFjay5oCShyZXZpc2lvbiA5OTY0NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9h
ZGFibGVUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjMgKzM5LDI1IEBAIGNsYXNz
IEhUTUxUcmFja0VsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVRleHRUcmFjazsKIGNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKLWNsYXNzIFRleHRUcmFja0xvYWRpbmdDbGllbnQgeworY2xh
c3MgTG9hZGFibGVUZXh0VHJhY2tDbGllbnQgOiBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1
YmxpYzoKLSAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMb2FkaW5nQ2xpZW50KCkgeyB9CisgICAgdmly
dHVhbCB+TG9hZGFibGVUZXh0VHJhY2tDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyog
bG9hZGluZ0ZhaWxlZCAqLykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKExvYWRh
YmxlVGV4dFRyYWNrKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCB2b2lkIGxvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIC8qIGxvYWRp
bmdGYWlsZWQgKi8pIHsgfQogfTsKIAogY2xhc3MgTG9hZGFibGVUZXh0VHJhY2sgOiBwdWJsaWMg
VGV4dFRyYWNrLCBwcml2YXRlIFRleHRUcmFja0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShUZXh0VHJhY2tDbGll
bnQqIHRyYWNrQ2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4
dFRyYWNrPiBjcmVhdGUoSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBsb2FkaW5n
Q2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrLCBjb250ZXh0LCBraW5kLCBs
YWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Mb2FkYWJs
ZVRleHRUcmFjaygpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7Ci0gICAgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CisgICAg
dm9pZCBzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2xpZW50KCk7CiAKIHByaXZhdGU6CiAgICAgLy8gVGV4dFRyYWNrTG9hZGVyQ2xpZW50CkBAIC02
NCwxMCArNjYsMTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0
ZWQoVGV4dFRyYWNrTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0
ZWQoVGV4dFRyYWNrTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKTsKIAotICAgIExvYWRhYmxl
VGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIFRleHRUcmFja0xvYWRpbmdDbGllbnQqLCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIGJvb2wgaXNEZWZhdWx0KTsKKyAgICBMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVt
ZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOwor
CisgICAgdm9pZCBsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4qKTsKIAor
ICAgIEhUTUxUcmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50OworICAgIFRpbWVyPExvYWRhYmxl
VGV4dFRyYWNrPiBtX2xvYWRUaW1lcjsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4
dD4gbV9jb250ZXh0OwogICAgIE93blB0cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwotICAg
IFRleHRUcmFja0xvYWRpbmdDbGllbnQqIG1fbG9hZGluZ0NsaWVudDsKKyAgICBLVVJMIG1fdXJs
OwogICAgIGJvb2wgbV9pc0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gOTk2NDUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcg
QEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAg
IG1fY2xpZW50LT50ZXh0VHJhY2tSZW1vdmVDdWVzKHRoaXMsIG1fY3Vlcy5nZXQoKSk7Ci0gICAg
c2V0Q2xpZW50KDApOworICAgIGNsZWFyQ2xpZW50KCk7CiB9CiAKIFN0cmluZyBUZXh0VHJhY2s6
OmtpbmQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiA5OTY0
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayop
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4
dFRyYWNrQ3VlTGlzdCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
cyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+
KSA9IDA7CkBAIC03OCwxNCArNzcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNo
YW5nZWQoKTsKICAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJDbGllbnQoKSB7IG1fY2xpZW50ID0gMDsgfQogICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50
KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lkIHNldENsaWVudChUZXh0VHJhY2tDbGll
bnQqIGNsaWVudCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFz
c1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVD
dWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdl
c3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOworICAgIHZvaWQgbmV3Q3Vlc0xvYWRlZCgp
OworICAgIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOwogCiBw
cm90ZWN0ZWQ6CiAgICAgVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYg
a2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAJKHJldmlzaW9uIDk5NjQ1
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksOCArNjksOCBAQCB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVm
UHRyPFRlCiAKIHZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlPiBjdWUsIHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKIHsKLSAgICBBU1NFUlQoc3RhcnQg
Pj0gMCAmJiBzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQoZW5kID49IDAgJiYg
ZW5kIDw9IG1fbGlzdC5zaXplKCkpOworICAgIEFTU0VSVChzdGFydCA8PSBtX2xpc3Quc2l6ZSgp
KTsKKyAgICBBU1NFUlQoZW5kIDw9IG1fbGlzdC5zaXplKCkpOwogCiAgICAgLy8gTWFpbnRhaW4g
dGV4dCB0cmFjayBjdWUgb3JkZXI6CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKworI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJU
cmFja0V2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitUZXh0VHJhY2tMaXN0
OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX293bmVy
KG93bmVyKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAmVGV4dFRyYWNrTGlzdDo6
YXN5bmNFdmVudFRpbWVyRmlyZWQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7Cit9CisKK1RleHRUcmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkKK3sKK30KKwordW5zaWdu
ZWQgVGV4dFRyYWNrTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90cmFja3Mu
c2l6ZSgpOworfQorCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpCit7CisgICAgaWYgKGluZGV4IDwgbV90cmFja3Muc2l6ZSgpKQorICAgICAgICByZXR1cm4g
bV90cmFja3NbaW5kZXhdLmdldCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFj
a0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgUmVmUHRy
PFRleHRUcmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBtX3RyYWNrcy5hcHBlbmQodHJhY2tS
ZWYpOworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZik7Cit9CisKK3ZvaWQgVGV4
dFRyYWNrTGlzdDo6cmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICBz
aXplX3QgaW5kZXggPSBtX3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBpZiAoaW5kZXggPT0gbm90
Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYWNrcy5yZW1vdmUoaW5kZXgpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yVGV4dFRyYWNrTGlzdDsK
K30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1v
Zi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJh
bmQgdGV4dCB0cmFja3MKKyAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQorICAgIC8v
IC4uLiB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IHdpdGggdGhlIG5hbWUgYWRk
dHJhY2ssIHRoYXQgZG9lcyBub3QgCisgICAgLy8gYnViYmxlIGFuZCBpcyBub3QgY2FuY2VsYWJs
ZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIHdpdGggCisgICAgLy8g
dGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgdGV4dCB0cmFjaydzIFRleHRU
cmFjayBvYmplY3QsIGF0IAorICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50J3MgdGV4dFRyYWNrcyBh
dHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KKworICAgIFJlZlB0cjxUZXh0VHJhY2s+
IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5pdGlhbGl6ZXI7CisgICAg
aW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFsaXplci5idWJibGVzID0g
ZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNlOworCisgICAgbV9wZW5k
aW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFkZHRyYWNr
RXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdFdmVudFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQor
Cit2b2lkIFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFj
a0xpc3Q+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBlbmRpbmdFdmVudHM7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAo
cGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7
CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAg
ICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOwor
fQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBU
ZXh0VHJhY2tMaXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrTGlzdF9oCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUaW1lci5o
IgorI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBUZXh0VHJh
Y2s7CitjbGFzcyBUZXh0VHJhY2tMaXN0OworCitjbGFzcyBUZXh0VHJhY2tMaXN0IDogcHVibGlj
IFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVs
ZW1lbnQqIG93bmVyLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7
CisgICAgfQorICAgIH5UZXh0VHJhY2tMaXN0KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKKyAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBw
ZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRl
eHRUcmFja0xpc3Q+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6
ZGVyZWY7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHRyYWNrKTsKKworICAgIHZvaWQgY2xlYXJPd25lcigp
IHsgbV9vd25lciA9IDA7IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBvd25lcigpIHsgcmV0dXJu
IG1fb3duZXI7IH0KKworcHJpdmF0ZToKKyAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1l
bnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAg
IHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0K
KyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tF
dmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmly
ZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IG1fY29udGV4dDsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX293bmVyOworCisgICAgVmVjdG9y
PFJlZlB0cjxFdmVudD4gPiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8VGV4dFRyYWNrTGlz
dD4gbV9wZW5kaW5nRXZlbnRUaW1lcjsKKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX3RyYWNrczsKKyAgICAK
KyAgICBpbnQgbV9kaXNwYXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrTGlzdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworbW9kdWxlIGh0bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9VklERU9fVFJBQ0ssCisgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFj
aywKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAg
ICBDdXN0b21Jc1JlYWNoYWJsZQorICAgIF0gVGV4dFRyYWNrTGlzdCB7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgVGV4dFRyYWNrIGl0
ZW0oaW4gdW5zaWduZWQgbG9uZyBpbmRleCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25hZGR0cmFjazsKKworICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFs
XSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
aW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9u
KTsKKyAgICB9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9h
ZGVyLmNwcAkocmV2aXNpb24gOTk2NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRy
YWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTQgQEAgdm9pZCBUZXh0
VHJhY2tMb2FkZXI6OmN1ZUxvYWRUaW1lckZpcmVkKAogICAgICAgICBtX2NsaWVudC0+Y3VlTG9h
ZGluZ0NvbXBsZXRlZCh0aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7CiB9CiAKK3ZvaWQgVGV4dFRy
YWNrTG9hZGVyOjpjYW5jZWxMb2FkKCkKK3sKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7Cisg
ICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX2Nh
Y2hlZEN1ZURhdGEgPSAwOworICAgIH0KK30KKwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nl
c3NOZXdDdWVEYXRhKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9j
YWNoZWRDdWVEYXRhID09IHJlc291cmNlKTsKQEAgLTE0Miw4ICsxNTAsNyBAQCB2b2lkIFRleHRU
cmFja0xvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjCiAgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAg
Ci0gICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9jYWNoZWRD
dWVEYXRhID0gMDsKKyAgICBjYW5jZWxMb2FkKCk7CiB9CiAKIGJvb2wgVGV4dFRyYWNrTG9hZGVy
Ojpsb2FkKGNvbnN0IEtVUkwmIHVybCkKQEAgLTE1MSwxMCArMTU4LDcgQEAgYm9vbCBUZXh0VHJh
Y2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdQogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExv
YWRDdWVzKHRoaXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fY2Fj
aGVkQ3VlRGF0YSkgewotICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlz
KTsKLSAgICAgICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKLSAgICB9CisgICAgY2FuY2VsTG9hZCgp
OwogICAgIAogICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQo
KSk7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRU
cmFja0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuaAkocmV2aXNpb24gOTk2NDUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4
dFRyYWNrTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflRleHRUcmFja0xvYWRlcigpOwogICAgIAogICAgIGJvb2wgbG9hZChjb25z
dCBLVVJMJik7CisgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZl
Y3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICAgICAKIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA5OTY0NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDYg
KzYxMyw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1
bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwog
ICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4
dFRyYWNrQ3VlQ29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3
IG9wZXJhdG9yCiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRl
b1RyYWNrXSBUZXh0VHJhY2tDdWVMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlTGlzdDsKKyAg
ICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRU
cmFja0xpc3RDb25zdHJ1Y3RvciBUZXh0VHJhY2tMaXN0OwogICAgICAgICBhdHRyaWJ1dGUgW0Vu
YWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVHJhY2tFdmVudENvbnN0cnVjdG9yIFRy
YWNrRXZlbnQ7CiAjZW5kaWYKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk2NDUpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0w
OCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgVGV4dFRyYWNrTGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxN
ZWRpYUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTEt
MTEtMDggIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtX
aW5DYWlyb10gVW5yZXZpZXdlZCBza2lwbGlzdCB1cGRhdGUgdG8gbWF0Y2ggbWFpbiBXaW5kb3dz
CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFj
ay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90
cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBA
CitUZXN0cyB0aGUgbG9hZCBldmVudCBvbiBIVE1MVHJhY2tFbGVtZW50IGFuZCBMT0FERUQgcmVh
ZHlTdGF0ZSBvbiBUZXh0VHJhY2sgd2hlbiBzcmMgaXMgc2V0IGZyb20gSmF2YVNjcmlwdC4KKwor
KiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhIDx0cmFjaz4gZWxlbWVudC4KK1JVTih0
cmFja0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpKQorUlVOKHZpZGVv
LmFwcGVuZENoaWxkKHRyYWNrRWxlbWVudCkpCitSVU4odHJhY2tFbGVtZW50LnNyYyA9ICdjYXB0
aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JykKK0VYUEVDVEVEICh2aWRlby50ZXh0
VHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzBdLnJlYWR5U3RhdGUg
PT0gJzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdb
b2JqZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdp
bmRvdy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAn
W29iamVjdCBUZXh0VHJhY2tdJykgT0sKKworKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIHdp
dGggdmlkZW8uYWRkVHJhY2soKS4KK1JVTih0cmFja3MucHVzaCh2aWRlby5hZGRUcmFjaygnY2Fw
dGlvbnMnLCAnQ2FwdGlvbiBUcmFjaycsICdlbicpKSkKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzLmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzFdLnJlYWR5U3RhdGUgPT0g
JzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2Jq
ZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRv
dy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29i
amVjdCBUZXh0VHJhY2tdJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAn
MCcpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWFkZC10cmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLWFkZC10cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stYWRkLXRyYWNrLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAv
PgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisKKyAgICAgICAgICAgIHZhciB0cmFja3MgPSBbXTsKKyAgICAgICAgICAgIHZhciB0cmFj
a0VsZW1lbnQ7CisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0FkZGVkKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudC50eXBlICsg
IikiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0Iiwgdmlk
ZW8udGV4dFRyYWNrcyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudCBpbnN0
YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50IiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJldmVudC50cmFjayIsIHRyYWNrc1t2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCAtIDFd
KTsKKworICAgICAgICAgICAgICAgIGlmICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRlc3QgYSBUZXh0VHJh
Y2sgY3JlYXRlZCB3aXRoIHZpZGVvLmFkZFRyYWNrKCkuIik7CisgICAgICAgICAgICAgICAgICAg
IHJ1bigidHJhY2tzLnB1c2godmlkZW8uYWRkVHJhY2soJ2NhcHRpb25zJywgJ0NhcHRpb24gVHJh
Y2snLCAnZW4nKSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50
ZXh0VHJhY2tzLmxlbmd0aCIsIDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InRyYWNrc1sxXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5PTkUpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzFdLnJl
YWR5U3RhdGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCBmb3IgYSAm
bHQ7dHJhY2smZ3Q7IGVsZW1lbnQuIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFja0VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAg
cnVuKCJ2aWRlby5hcHBlbmRDaGlsZCh0cmFja0VsZW1lbnQpIik7CisgICAgICAgICAgICAgICAg
dHJhY2tzLnB1c2godHJhY2tFbGVtZW50LnRyYWNrKTsKKworICAgICAgICAgICAgICAgIC8vIFJl
Z2lzdGVyIHRoZSAnYWRkdHJhY2snIGxpc3RlbmVyIGFmdGVyIGNyZWF0aW5nIHRoZSBlbGVtZW50
IHRvIG1ha2Ugc3VyZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBldmVudCBpcyBkaXNwYXRjaCBh
c3luY2hyb25vdXNseS4KKyAgICAgICAgICAgICAgICB2aWRlby50ZXh0VHJhY2tzLmFkZEV2ZW50
TGlzdGVuZXIoImFkZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisKKyAgICAgICAgICAgICAgICBydW4o
InRyYWNrRWxlbWVudC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0
dCciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVu
Z3RoIiwgMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMF0ucmVhZHlT
dGF0ZSIsIFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+
VGVzdHMgdGhlIGxvYWQgZXZlbnQgb24gSFRNTFRyYWNrRWxlbWVudCBhbmQgTE9BREVEIHJlYWR5
U3RhdGUgb24gVGV4dFRyYWNrIHdoZW4gc3JjIGlzIHNldCBmcm9tIEphdmFTY3JpcHQuPC9wPgor
ICAgICAgICA8dmlkZW8+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="112786"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114278</attachid>
            <date>2011-11-09 07:47:48 -0800</date>
            <delta_ts>2011-11-09 13:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch_tracks_array_15.txt</filename>
            <type>text/plain</type>
            <size>78145</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTExLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBuZXcgZmlsZXMgZm9yIFRleHRUcmFja0xpc3QuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46IEFkZCBUZXh0VHJhY2tMaXN0LCBjb25kaXRpb25hbCBvbiBWSURFT19U
UkFDSy4KKworICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKTogVXBkYXRl
IGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KTogVXBkYXRlIGZvciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAg
IGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IFVwZGF0ZSBmb3Igc2No
ZWR1bGVMb2FkIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFtZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAg
ICAgICAgICAgIHRoZSBtYWluIHJlc291cmNlIG9yIGEgdGV4dCB0cmFjayBzaG91bGQgYmUgbG9h
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQp
OiBVcGRhdGUgdG8gYWxsb3cgdGV4dCB0cmFjayBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6
IExvZyB3aGVuIENTUCBkZW5pZXMgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogVXBkYXRlIGZv
ciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRv
IFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2spOiBOZXcsIGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcsIGFkZCBjb21tZW50cyBhYm91dCB3aGF0IHRoaXMgc2hvdWxkCisgICAgICAgICAgICBk
byBldmVudHVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcyk6IE5ldywgcmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKTogQmFpbCBpZiBydW50aW1lIGZlYXR1cmUgaXMg
bm90IGVuYWJsZWQsIHNjaGVkdWxlCisgICAgICAgICAgICBhc3luY2hyb25vdXMgdGV4dCB0cmFj
ayBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBj
aGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRleHRUcmFja3MgYXR0cmlidXRlLgorCisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogVXNlIG5ldyBtZWRpYUVsZW1lbnQoKSBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgaW5zdGVhZCBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJh
Y2tFbGVtZW50Ojppc0RlZmF1bHQpOiBoYXNBdHRyaWJ1dGUgLT4gZmFzdEhhc0F0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUgdHJh
Y2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2No
ZWR1bGVMb2FkKTogTmV3LCB0ZWxsIHRoZSB0cmFjayB0byBzY2hlZHVsZSBhIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKTogTmV3LCBjaGVjayBz
ZWN1cml0eSBwb2xpY3kgdG8gc2VlIGlmIGl0IGlzIE9LCisgICAgICAgICAgICB0byBsb2FkIGEg
dGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBnaXZlIGl0
IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICBsb2FkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6IFJlbmFtZWQgZnJvbSB0ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xvYWRpbmdDbGll
bnQgaW50ZXJmYWNlCisgICAgICAgICAgICB1c2VkIHRvIGluZm9ybSBwYXJlbnQgb2YgVGV4dFRy
YWNrIHN0YXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCk6IE5ldywg
cmV0dXJuIHBhcmVudCBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOiBJbml0aWFsaXplIG5l
dyBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVyIHRvIGtpY2sgb2ZmIGxvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOiBD
YW5jZWwgY3VycmVudCBsb2FkLCBpZiBhbnksIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAg
bmV3IHVybCBpcyBhbGxvd2VkIHRvIGxvYWQsIGFuZCBzdGFydCBuZXcgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTogCisgICAg
ICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQ6On5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCk6IFRleHRUcmFja0xv
YWRpbmdDbGllbnQgLT4gTG9hZGFibGVUZXh0VHJhY2tDbGllbnQKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5Mb2FkVXJsKTogCisgICAgICAgIChXZWJDb3Jl
OjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogc2V0
Q2xpZW50KDApIC0+IGNsZWFyQ2xpZW50KCkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOiBSZW5hbWVkIGZyb20g
c2V0Q2xpZW50LCBiZWNhdXNlIGl0IGlzIG9ubHkgdXNlZCB0byBjbGVhciB0aGUgY2xpZW50IHBv
aW50ZXIuCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKTogR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdh
cm5pbmcgdGhhdCBicmVha3MgdGhlIE9TIFggYnVpbGQuCisKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwOiBBZGRlZC4gSW1wbGVtZW50IHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdC4KKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QpOgorICAgICAgICAo
VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Oml0ZW0pOgorICAgICAgICAoVGV4dFRy
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAg
ICAgIChUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0xp
c3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojphc3lu
Y0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y2xlYXJPd25lcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tMaXN0Ojpvd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tM
aXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Ojpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGw6IEFk
ZGVkLgorCisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQpOiBOZXcsIGNhbmNlbCBwZW5kaW5n
IG9yIGluIHByb2dyZXNzIGxvYWQgYW5kIGRlbGV0ZSBsb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQ2FsbCBjYW5jZWxMb2FkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgICog
bG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDog
QWRkIFRleHRUcmFja0xpc3QuCisKIDIwMTEtMTEtMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXhjZXB0aW9uIGluIHJl
bW90ZSBmcm9udC1lbmQgbG9hZCBoYW5kbGVyIGR1ZSB0byB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IHdvcmtlck1hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5OTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMDEs
NiArMzAxLDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvVWludDMy
QXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKIAorICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCiAKICAg
ICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtMjA1OCw2ICsyMDU5LDcgQEAg
SUYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWUuY3BwCiAg
ICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3BwCiAgICAgICAgIGh0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAogICAgICAg
ICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50
LmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcgQEAKICNpbmNs
dWRlICJKU1RleHRUcmFjay5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0
LmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZlbnQuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNU
aW1lUmFuZ2VzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgVGV4dFRyYWNr
IFwKICAgICBUZXh0VHJhY2tDdWUgXAogICAgIFRleHRUcmFja0N1ZUxpc3QgXAorICAgIFRleHRU
cmFja0xpc3QgXAogICAgIFRpbWVSYW5nZXMgXAogICAgIFRvdWNoIFwKICAgICBUb3VjaEV2ZW50
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDk5Njk0KQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01OTAs
NiArNTkwLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIAogICAg
IGh0bWwvVGV4dFRyYWNrLmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICBo
dG1sL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsIFwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNCw2ICs1MDQsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0
VHJhY2tDdWUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlTGlzdC5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNUaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RpbWVSYW5nZXMu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RvdWNoLmNwcCBcCkBAIC04NTAsNiArODUy
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXApAQCAt
MTk4MCw2ICsxOTgzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OTksNiArMTg5OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAg
ICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBcCisgICAgaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmggXAogICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAgIGh0bWwv
dHJhY2svVHJhY2tFdmVudC5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKQEAg
LTM1NjcsNiArMzU2OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0x
KSAKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9q
cy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZp
c2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTM3Myw2ICsxMzczLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVu
aWZvcm1Mb2NhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJLaXRMb3Nl
Q29udGV4dC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCkBAIC0xOTM3LDYgKzE5MzgsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1RvdWNoQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaExpc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCcs
CkBAIC01Nzg4LDYgKzU3OTAsNyBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwJywKICAgICAgICAgICAgICdo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwx
MiArMTAxLDE3IEBACiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1
RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3
ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRU
cmFjay5jcHAgKi87IH07CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKLQkJMDc2
ODlENkUxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY4OUQ2RDE0NUI1MkNDMDAx
Q0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMDc2OTcwODYxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwICovOyB9OworCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBE
MEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4
MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9Owog
CQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87
IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhF
MDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBG
QkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBB
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OworCQkwN0I1QTJEQjE0NjQzMjBBMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuY3BwICovOyB9OworCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJh
Y2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi87IH07CisJCTA3
QjVBMzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEMxNDY4N0Q3
MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTA3QkRENkVD
MTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNF
IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdD
RUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODBFNDkyNjEyNTVG
M0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyMjEyNTVGM0JEMDBFRkNB
MjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07CiAJCTA4MEU0OTI4MTI1
NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjQxMjU1RjNCRDAwRUZD
QTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggKi87IH07CkBAIC03MTE1LDcgKzcx
MjAsOCBAQAogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2
MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzY5NzA4NDE0NjNBRDg3MDBG
NTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2
MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcxMjQsNiArNzEzMCwxMSBAQAogCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3
ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0FGRTU5MDBGMTQ0NkJEMDA4NDE2MTcgLyogbWVkaWFDb250cm9sc1F1aWNrVGltZS5jc3MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IG1lZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdCNUEyRDkxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0xpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyog
SlNUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4
dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTMwNjE0Njg1
MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBB
MTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RleHRUcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODBFNDkyMTEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIy
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzgwNyw2ICsxNzgxOCw4IEBACiAJCQkJ
MDcwNzU2RDgxNDIzOUI0QjAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlLmggKi8sCiAJCQkJMDcw
NzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8sCiAJCQkJ
MDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovLAorCQkJ
CTA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwICovLAorCQkJ
CTA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAqLywKIAkJCQlF
NDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQlFNDQ2
MTQxMzBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmggKi8sCiAJCQkJMDc4NDYzNDAx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8sCkBAIC0xODQ5NSw2ICsxODUw
OCw5IEBACiAJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc2OTcwODQxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovLAorCQkJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJD
RiAvKiBUZXh0VHJhY2tMaXN0LmggKi8sCisJCQkJMDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8q
IFRleHRUcmFja0xpc3QuaWRsICovLAogCQkJCTA3MDMzNEQ4MTQ1QTAwNkYwMDhEOEQ0NSAvKiBU
cmFja0Jhc2UuY3BwICovLAogCQkJCTA3MDMzNEQ2MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuaCAqLywKIAkJCQkwNzAzMzREMDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAg
Ki8sCkBAIC0xOTU2OSw3ICsxOTU4NSw2IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAv
KiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUE4NUYyMjA4MTQzMDM3N0QwMDdDQzg4NCAvKiBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICov
LAogCQkJCUJDMjc1Q0IyMTFDNUU4NUMwMEM5MjA2QyAvKiBKU0FycmF5QnVmZmVyQ3VzdG9tLmNw
cCAqLywKIAkJCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9t
LmNwcCAqLywKQEAgLTE5NjY1LDYgKzE5NjgwLDcgQEAKIAkJCQlCQ0I3NzM2MDBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTc1MEREMzBBOTBFNzI5
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYxMEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCAqLywKKwkJCQlBODVGMjIwODE0
MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFE
MTJENTEyOTVEMEJEMDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3Bw
ICovLAogCQkJCTQ5OThBRUQzMTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk5RkEzN0VFNjExNzJGQ0YwMDBDNENENTUg
LyogSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgKi8sCkBAIC0xOTY3OCw5ICsxOTY5NCwx
MCBAQAogCQkJCTA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5j
cHAgKi8sCiAJCQkJQjJDOTZEOEMwQjNBRjJCNzAwNUU4MEVDIC8qIEpTU1ZHUGF0aFNlZ0N1c3Rv
bS5jcHAgKi8sCiAJCQkJMUEyQzQwQUEwREVCNTVBQTAwNUFGMTlFIC8qIEpTVGV4dEN1c3RvbS5j
cHAgKi8sCisJCQkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0
b20uY3BwICovLAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9t
LmggKi8sCi0JCQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3Rv
bS5jcHAgKi8sCisJCQkJMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpTVHJhY2tFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzcxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2
QXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1Vp
bnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKQEAgLTI0NjM5LDYgKzI0NjU2LDggQEAKIAkJCQkzMTY5
Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRy
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8q
IEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NEQyREE1
MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwpAQCAtMjc0OTEsNyArMjc1MTAsNiBAQAogCQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAv
KiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4
RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4NDYzNDIxNDVC
MTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzY4
OUQ2RTE0NUI1MkNDMDAxQ0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOEZFQkRDMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1h
Z2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAg
LyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDk5LDYgKzI3
NTE3LDEwIEBACiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3Vy
aXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDc2OTcwODYxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisgCQkJCTA3QjVBMkRCMTQ2
NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisgCQkJ
CTA3QjVBMzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisgCQkJCTA3QkRENkVDMTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZl
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEy
IC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJEQTQxNDZB
NTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MDksMTIgKzQwOSwxNSBAQCBlbmRpZgog
aWYgRU5BQkxFX1ZJREVPX1RSQUNLCiB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0gXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrLmggXAor
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNr
TGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50LmgKIHdlYmtpdGd0a19nZG9tX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2su
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5o
IFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkocmV2aXNpb24gOTk2OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxp
c3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oIgogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJl
dmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAi
SlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU1RleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVGV4dFRyYWNr
TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNUb3VjaExpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uY3BwIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RD
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNp
bmNsdWRlICJKU1RleHRUcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEpTVGV4dFRyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTVGV4dFRyYWNrTGlzdCoganNUZXh0VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8SlNU
ZXh0VHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBpZiAoIWpzVGV4dFRy
YWNrTGlzdC0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3Qoc3RhdGljX2Nhc3Q8VGV4
dFRyYWNrTGlzdCo+KGpzVGV4dFRyYWNrTGlzdC0+aW1wbCgpKS0+b3duZXIoKSkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcg
QEAgUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3JrZXIg
Y29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0aW9u
YWw9U0hBUkVEX1dPUktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcKK1Rl
eHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25kaXRpb25h
bD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBSZXF1ZXN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlzaW9u
IDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1lbnQ+
IEhUTUxBdWRpb0VsCiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBpZiAoIXNy
Yy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAgIGF1ZGlv
LT5zY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1MTWVkaWFF
bGVtZW50OjpNZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJlbGVhc2Uo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQpAQCAtMjI1LDggKzIyNiwxMiBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+
SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvck1lZGlhVm9s
dW1lQ2FsbGJhY2tzKHRoaXMpOwogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JQcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Muc2l6ZSgpOyAr
K2kpCi0gICAgICAgIG1fdGV4dFRyYWNrc1tpXS0+c2V0Q2xpZW50KDApOworICAgIGlmIChtX3Rl
eHRUcmFja3MpCisgICAgICAgIG1fdGV4dFRyYWNrcy0+Y2xlYXJPd25lcigpOworICAgIGlmICht
X3RleHRUcmFja3MpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRy
YWNrcy0+bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dFRyYWNrcy0+aXRlbShpKS0+
Y2xlYXJDbGllbnQoKTsKKyAgICB9CiAjZW5kaWYKIH0KIApAQCAtMjY4LDcgKzI3Myw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCgKICAgICBpZiAoYXR0ck5hbWUg
PT0gc3JjQXR0cikgewogICAgICAgICAvLyBUcmlnZ2VyIGEgcmVsb2FkLCBhcyBsb25nIGFzIHRo
ZSAnc3JjJyBhdHRyaWJ1dGUgaXMgcHJlc2VudC4KICAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUo
c3JjQXR0cikuaXNFbXB0eSgpKQotICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAg
ICAgICBzY2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAgICAgfSBlbHNlIGlmIChhdHRyTmFt
ZSA9PSBjb250cm9sc0F0dHIpCiAgICAgICAgIGNvbmZpZ3VyZU1lZGlhQ29udHJvbHMoKTsKIH0K
QEAgLTM4MSwxMCArMzg2LDEwIEBAIFJlbmRlck9iamVjdCogSFRNTE1lZGlhRWxlbWVudDo6Y3Jl
YXRlUmUKICAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQi
KTsKKyAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVu
dCIpOwogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgIGlmICgh
Z2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBtX25ldHdvcmtTdGF0ZSA9PSBORVRX
T1JLX0VNUFRZKQotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVMb2Fk
KE1lZGlhUmVzb3VyY2UpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoKQpAQCAtNDIzLDE3ICs0MjgsMjYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZWNhbGNTdHlsZShTdAogICAgICAgICByZW5kZXJlcigpLT51cGRhdGVGcm9tRWxlbWVudCgp
OwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTG9hZChMb2FkVHlwZSBsb2FkVHlwZSkKIHsKICAgICBMT0co
TWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQiKTsKKworICAgIGlmICgobG9h
ZFR5cGUgJiBNZWRpYVJlc291cmNlKSAmJiAhKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlhUmVz
b3VyY2UpKSB7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgY3JlYXRl
TWVkaWFQbGF5ZXJQcm94eSgpOworICAgICAgICBjcmVhdGVNZWRpYVBsYXllclByb3h5KCk7CiAj
ZW5kaWYKKyAgICAgICAgCisgICAgICAgIHByZXBhcmVGb3JMb2FkKCk7CisgICAgICAgIG1fcGVu
ZGluZ0xvYWRGbGFncyB8PSBNZWRpYVJlc291cmNlOworICAgIH0KIAotICAgIGlmIChtX2xvYWRU
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgcHJlcGFyZUZvckxvYWQoKTsK
LSAgICBtX2xvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIGlmIChsb2FkVHlwZSAmIFRleHRUcmFja1Jlc291cmNlKQorICAgICAgICBtX3BlbmRp
bmdMb2FkRmxhZ3MgfD0gVGV4dFRyYWNrUmVzb3VyY2U7CisjZW5kaWYKKworICAgIGlmICghbV9s
b2FkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDAp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlTmV4dFNvdXJjZUNoaWxkKCkK
QEAgLTQ3NCwxMCArNDg4LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YXN5bmNFdmVudFRp
bWVyRmkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaW1lcjxIVE1M
TWVkaWFFbGVtZW50PiopCiB7Ci0gICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291
cmNlRWxlbWVudCkKLSAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwotICAgIGVsc2UKLSAg
ICAgICAgbG9hZEludGVybmFsKCk7CisgICAgaWYgKG1fcGVuZGluZ0xvYWRGbGFncyAmIE1lZGlh
UmVzb3VyY2UpIHsKKyAgICAgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRpbmdGcm9tU291cmNl
RWxlbWVudCkKKyAgICAgICAgICAgIGxvYWROZXh0U291cmNlQ2hpbGQoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG9hZEludGVybmFsKCk7CisgICAgfQorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQorICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBUZXh0VHJhY2tSZXNvdXJjZSkK
KyAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworI2VuZGlmCisKKyAgICBtX3BlbmRpbmdM
b2FkRmxhZ3MgPSAwOwogfQogCiBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IEhUTUxNZWRpYUVsZW1l
bnQ6OmVycm9yKCkgY29uc3QgCkBAIC02MzMsOSArNjU2LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkSW50ZXJuYWwoKQogICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJpY3Rpb24oUmVxdWly
ZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0cmljdGlvbik7CiAKICAgICBzZWxlY3RNZWRpYVJl
c291cmNlKCk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGxvYWRUZXh0VHJhY2tzKCk7
Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNl
KCkKQEAgLTgzNywyOCArODU3LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkUmVzb3Vy
Y2UoY29ucwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotdm9pZCBIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkVGV4dFRyYWNrcygpCi17Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAg
ICAgIGxvYWROZXh0VGV4dFRyYWNrKHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2Rl
KSk7Ci0gICAgfQotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWROZXh0VGV4dFRyYWNr
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQotewotICAgIC8vIEZJWE1FKDcxMTI0KTogVGhpcyBz
aG91bGQgc2NoZWR1bGUgYW4gKmFzeW5jaHJvbm91cyogbG9hZC4KLSAgICB0cmFjay0+bG9hZChB
Y3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7Ci0gICAgUmVm
UHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2stPnRyYWNrKCk7Ci0gICAgaWYgKHRleHRU
cmFjaykKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2sucmVsZWFzZSgpKTsK
LSAgICAKLSAgICAvLyBGSVhNRSg3MTEyMyk6IFNldCB0aGUgdGV4dCB0cmFjayBtb2RlIGFjY29y
ZGluZ2x5LgotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja1JlYWR5U3RhdGVD
aGFuZ2VkKFRleHRUcmFjayopCiB7CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCkBA
IC04NjksMTEgKzg2Nyw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNo
YW4KICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopCi17Ci0gICAgLy8gRklYTUUoNjI4
ODUpOiBJbXBsZW1lbnQuCi19Ci0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQWRk
Q3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgCiB7CiAgICAgLy8gRklY
TUUoNjI4ODUpOiBJbXBsZW1lbnQuCkBAIC04OTYsNyArODg5LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdQogCiAjZW5kaWYKIAotYm9vbCBIVE1MTWVkaWFFbGVt
ZW50Ojppc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYgdXJsLCBJbnZhbGlkU291cmNlQWN0aW9u
IGFjdGlvbklmSW52YWxpZCkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJM
KGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFVybEFjdGlvbiBhY3Rpb25JZkludmFsaWQpCiB7CiAg
ICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gRkFMU0UgYmVjYXVzZSB1cmwgaXMgaW52YWxp
ZCIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTkxMSw4ICs5MDQsMTAg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoYwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkKKyAgICBpZiAoIWRvY3VtZW50KCkt
PmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZSh1cmwpKSB7Cisg
ICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykg
LT4gcmVqZWN0ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kiLCB1cmxGb3JMb2dnaW5nKHVy
bCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2NzAsNyArMTY2NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cGxheUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5nIHRoZSBtZWRpYSBy
ZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19F
TVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRp
YVJlc291cmNlKTsKIAogICAgIGlmIChlbmRlZFBsYXliYWNrKCkpIHsKICAgICAgICAgRXhjZXB0
aW9uQ29kZSB1bnVzZWQ7CkBAIC0xNzA5LDcgKzE3MDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnBhdXNlSW50ZXJuYWwoKQogCiAgICAgLy8gNC44LjEwLjkuIFBsYXlpbmcgdGhlIG1lZGlh
IHJlc291cmNlCiAgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0ZSA9PSBORVRXT1JL
X0VNUFRZKQotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKE1l
ZGlhUmVzb3VyY2UpOwogCiAgICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwogICAgIApAQCAtMTk4
OSw0MSArMTk4NCwxMTEgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgp
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVk
aWFFbGVtZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIC8vIEZJWE1FKDcxOTE1KTogYWRkVHJhY2sgc2hvdWxkIHRocm93IGEgU3ludGF4RXJyb3Ig
ZXhjZXB0aW9uIGlmICdraW5kJyBpcyBhbiB1bmtub3duIHZhbHVlLgogICAgIFJlZlB0cjxUZXh0
VHJhY2s+IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSk7Ci0gICAgbV90ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2spOworICAgIGFkZFRl
eHRUcmFjayh0ZXh0VHJhY2spOwogICAgIHJldHVybiB0ZXh0VHJhY2sucmVsZWFzZSgpOwogfQog
Ci12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQoSFRNTFRyYWNrRWxlbWVudCog
dHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gdHJhY2spCit7CisgICAgaWYgKCFtX3RleHRUcmFja3MpCisgICAgICAgIG1fdGV4
dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV90ZXh0VHJhY2tzLT5hcHBlbmQodHJhY2sp
OworCisgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworfQorCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNvbmZpZ3VyZVRleHRUcmFja3MoKQoreworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAKKyAg
ICAvLyBXaGVuIGEgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIGEgdHJhY2sgZWxlbWVudCBp
cyBhZGRlZCB0byBhIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLAorICAgIC8v
IHRoZSB1c2VyIGFnZW50IG11c3Qgc2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYXBwcm9wcmlhdGVs
eSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgICAgCisgICAg
Ly8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIHN1YnRpdGxlcyBvciBjYXB0aW9ucyBhbmQg
dGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgYQorICAgIC8vIHRy
YWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJhY2sgbGFuZ3VhZ2UsIGFuZCB0
ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBubworICAgIC8vIG90aGVyIHRl
eHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdpdGgg
YSB0ZXh0IHRyYWNrIGtpbmQgb2YgZWl0aGVyIHN1YnRpdGxlcworICAgIC8vIG9yIGNhcHRpb25z
IHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nCisgICAgLy8gKiBJZiB0aGUgdGV4dCB0
cmFjayBraW5kIGlzIGRlc2NyaXB0aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBp
bnRlcmVzdCBpbiBoYXZpbmcgdGV4dCAKKyAgICAvLyBkZXNjcmlwdGlvbnMgd2l0aCB0aGlzIHRl
eHQgdHJhY2sgbGFuZ3VhZ2UgYW5kIHRleHQgdHJhY2sgbGFiZWwgZW5hYmxlZCwgYW5kIHRoZXJl
IGlzIG5vIG90aGVyIHRleHQgCisgICAgLy8gdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBs
aXN0IG9mIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgZGVzY3JpcHRpb25z
IHdob3NlIHRleHQgCisgICAgLy8gdHJhY2sgbW9kZSBpcyBzaG93aW5nCisgICAgLy8gICAgTGV0
IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KKyAgICAvLyAgICBJZiB0aGVyZSBpcyBh
IHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdo
b3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nIAorICAgIC8vICAgIGJ5IGRlZmF1bHQsIHRo
ZSB1c2VyIGFnZW50IG11c3QgZnVydGhlcm1vcmUgY2hhbmdlIHRoYXQgdGV4dCB0cmFjaydzIHRl
eHQgdHJhY2sgbW9kZSB0byBoaWRkZW4uCisgICAgCisgICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFj
ayBraW5kIGlzIGNoYXB0ZXJzIGFuZCB0aGUgdGV4dCB0cmFjayBsYW5ndWFnZSBpcyBvbmUgdGhh
dCB0aGUgdXNlciBhZ2VudCBoYXMgcmVhc29uCisgICAgLy8gdG8gYmVsaWV2ZSBpcyBhcHByb3By
aWF0ZSBmb3IgdGhlIHVzZXIsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IHRyYWNrIGluIHRo
ZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZgorICAgIC8vIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0
IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4dCB0cmFjayBtb2RlIGlzIHNob3dpbmcK
KyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nLgorICAgIAorICAg
IC8vICogSWYgdGhlIHRyYWNrIGVsZW1lbnQgaGFzIGEgZGVmYXVsdCBhdHRyaWJ1dGUgc3BlY2lm
aWVkLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUgbWVkaWEKKyAgICAv
LyBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMg
c2hvd2luZyBvciBzaG93aW5nIGJ5IGRlZmF1bHQKKyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJh
Y2sgbW9kZSBiZSBzaG93aW5nIGJ5IGRlZmF1bHQuCisgICAgCisgICAgLy8gT3RoZXJ3aXNlCisg
ICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgZGlzYWJsZWQuCisgICAgCisgICAg
Ly8gRklYTUUoNzExMjMpOiBVbnRpbCB0aGUgYWJvdmUgbG9naWMgaGFzIGJlZW4gaW1wbGVtZW50
ZWQsIGp1c3QgdGVsbCBhbGwgdGV4dCB0cmFja3MgdG8gbG9hZC4KKyAgICBmb3IgKE5vZGUqIG5v
ZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7Cisg
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKS0+c2NoZWR1bGVMb2FkKCk7CisgICAgfQor
fQorCitQYXNzUmVmUHRyPFRleHRUcmFja0xpc3Q+IEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a3MoKSBjb25zdCAKK3sKKyAgICByZXR1cm4gbV90ZXh0VHJhY2tzOworfQorCit2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQoSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
KQogeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICh0
cmFjay0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFjay0+
Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgaWYgKHRyYWNrRWxlbWVudC0+
aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKKyAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1lbnQt
PmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkIC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dn
aW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogI2VuZGlmCi0gICAgbG9hZE5leHRUZXh0
VHJhY2sodHJhY2spOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQg
dGV4dCB0cmFja3MKKyAgICAvLyBXaGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50
IGNoYW5nZXMgYW5kIHRoZSBuZXcgcGFyZW50IGlzIGEgbWVkaWEgZWxlbWVudCwgCisgICAgLy8g
dGhlbiB0aGUgdXNlciBhZ2VudCBtdXN0IGFkZCB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3Bv
bmRpbmcgdGV4dCB0cmFjayB0byB0aGUgCisgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2Yg
dGV4dCB0cmFja3MgLi4uIFtjb250aW51ZXMgaW4gVGV4dFRyYWNrTGlzdDo6YXBwZW5kXQorICAg
IFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKKyAg
ICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0dXJuOworICAgIGFkZFRleHRUcmFjayh0ZXh0
VHJhY2spOyAgICAKKyAgICBzY2hlZHVsZUxvYWQoVGV4dFRyYWNrUmVzb3VyY2UpOwogfQogIAot
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQoSFRNTFRyYWNrRWxlbWVu
dCogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVtb3ZlZChIVE1M
VHJhY2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGlm
ICh0cmFjay0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFj
ay0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgaWYgKHRyYWNrRWxlbWVu
dC0+aGFzVGFnTmFtZSh0cmFja1RhZykpIHsKKyAgICAgICAgS1VSTCB1cmwgPSB0cmFja0VsZW1l
bnQtPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwogICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQgLSAnc3JjJyBpcyAlcyIsIHVy
bEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAjZW5kaWYKLX0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1NvdXJjZUNoYW5nZWQoSFRNTFRyYWNrRWxlbWVudCog
dHJhY2spCi17Ci0jaWYgIUxPR19ESVNBQkxFRAotICAgIGlmICh0cmFjay0+aGFzVGFnTmFtZSh0
cmFja1RhZykpIHsKLSAgICAgICAgS1VSTCB1cmwgPSB0cmFjay0+Z2V0Tm9uRW1wdHlVUkxBdHRy
aWJ1dGUoc3JjQXR0cik7Ci0gICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRy
YWNrU291cmNlQ2hhbmdlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIH0KLSNlbmRpZgotICAgIGxvYWROZXh0VGV4dFRyYWNrKHRyYWNrKTsK
KyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0VsZW1lbnQtPnRyYWNrKCk7
CisgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIC8vIDQuOC4xMC4x
Mi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gV2hlbiBhIHRyYWNr
IGVsZW1lbnQncyBwYXJlbnQgZWxlbWVudCBjaGFuZ2VzIGFuZCB0aGUgb2xkIHBhcmVudCB3YXMg
YSBtZWRpYSBlbGVtZW50LCAKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgcmVtb3Zl
IHRoZSB0cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0IHRyYWNrIGZyb20gdGhlIAor
ICAgIC8vIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzLgorICAgIG1fdGV4dFRy
YWNrcy0+cmVtb3ZlKHRleHRUcmFjayk7CiB9CiAjZW5kaWYKIApAQCAtMjA0Miw3ICsyMTA3LDcg
QEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXZlUG90ZW50aWFsU291cgogICAgIHJldHVybiBu
ZXh0VVJMLmlzVmFsaWQoKTsKIH0KIAotS1VSTCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3ROZXh0
U291cmNlQ2hpbGQoQ29udGVudFR5cGUgKmNvbnRlbnRUeXBlLCBJbnZhbGlkU291cmNlQWN0aW9u
IGFjdGlvbklmSW52YWxpZCkKK0tVUkwgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TmV4dFNvdXJj
ZUNoaWxkKENvbnRlbnRUeXBlICpjb250ZW50VHlwZSwgSW52YWxpZFVybEFjdGlvbiBhY3Rpb25J
ZkludmFsaWQpCiB7CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIC8vIERvbid0IGxvZyBpZiB0aGlz
IHdhcyBqdXN0IGNhbGxlZCB0byBmaW5kIG91dCBpZiB0aGVyZSBhcmUgYW55IHZhbGlkIDxzb3Vy
Y2U+IGVsZW1lbnRzLgpAQCAtMjE1NCw3ICsyMjE5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpzb3VyY2VXYXNBZGRlZChIVAogICAgIC8vIGF0dHJpYnV0ZSBhbmQgd2hvc2UgbmV0d29ya1N0
YXRlIGhhcyB0aGUgdmFsdWUgTkVUV09SS19FTVBUWSwgdGhlIHVzZXIgYWdlbnQgbXVzdCBpbnZv
a2UgCiAgICAgLy8gdGhlIG1lZGlhIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3Jp
dGhtLgogICAgIGlmIChuZXR3b3JrU3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpORVRXT1JL
X0VNUFRZKSB7Ci0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICBzY2hlZHVsZUxvYWQo
TWVkaWFSZXNvdXJjZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1
Myw3IEBAIGNsYXNzIEhUTUxUcmFja0VsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xh
c3MgTWVkaWFFcnJvcjsKIGNsYXNzIEtVUkw7CitjbGFzcyBUZXh0VHJhY2tMaXN0OwogY2xhc3Mg
VGltZVJhbmdlczsKIGNsYXNzIFVpbnQ4QXJyYXk7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9G
T1JfVklERU8pCkBAIC04OSw3ICs5MCwxMSBAQCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciog
cGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2b2lkIHNjaGVkdWxlTG9hZCgp
OworICAgIGVudW0gTG9hZFR5cGUgeworICAgICAgICBNZWRpYVJlc291cmNlID0gMSA8PCAwLAor
ICAgICAgICBUZXh0VHJhY2tSZXNvdXJjZSA9IDEgPDwgMQorICAgIH07CisgICAgdm9pZCBzY2hl
ZHVsZUxvYWQoTG9hZFR5cGUpOwogICAgIAogICAgIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdDsKICAgICAKQEAgLTE4MSw5ICsxODYsMjAgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBh
ZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwgPSAiIiwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSA9ICIiKTsKKyAgICBQYXNzUmVmUHRyPFRleHRUcmFja0xpc3Q+
IHRleHRUcmFja3MoKSBjb25zdDsKKworICAgIHZvaWQgYWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7CisKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tXYXNBZGRlZChIVE1MVHJhY2tF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrV2lsbEJlUmVtb3ZlZChIVE1MVHJhY2tF
bGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrU291cmNlQ2hhbmdlZChIVE1MVHJhY2tF
bGVtZW50Kik7CisKKyAgICAvLyBUZXh0VHJhY2tDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tD
dWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQ
YXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC0yMzAsNiArMjQ2LDkgQEAgcHVi
bGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKTsKICNl
bmRpZgogCisgICAgZW51bSBJbnZhbGlkVXJsQWN0aW9uIHsgRG9Ob3RoaW5nLCBDb21wbGFpbiB9
OworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmLCBJbnZhbGlkVXJsQWN0aW9u
KTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpAQCAtMzQ5
LDIzICszNjgsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRGb3JTb3VyY2VDaGFuZ2UoKTsK
ICAgICB2b2lkIHByZXBhcmVUb1BsYXkoKTsKIAotICAgIGVudW0gSW52YWxpZFNvdXJjZUFjdGlv
biB7IERvTm90aGluZywgQ29tcGxhaW4gfTsKLSAgICBib29sIGlzU2FmZVRvTG9hZFVSTChjb25z
dCBLVVJMJiwgSW52YWxpZFNvdXJjZUFjdGlvbik7Ci0gICAgS1VSTCBzZWxlY3ROZXh0U291cmNl
Q2hpbGQoQ29udGVudFR5cGUqLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKKyAgICBLVVJMIHNlbGVj
dE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIEludmFsaWRVcmxBY3Rpb24pOwogICAgIHZv
aWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUpOwogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHZvaWQgbG9hZFRleHRUcmFja3MoKTsKLSAgICB2b2lk
IGxvYWROZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLQotICAgIC8vIFRleHRUcmFj
a0NsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0
VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNr
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQoVGV4dFRyYWNrKik7Ci0gICAg
dmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNr
Q3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFj
ayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7Ci0gICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4pOworICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygpOwogI2VuZGlmCiAKICAgICAv
LyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNlciBnZXN0dXJlIHJl
c3RyaWN0aW9ucy4KQEAgLTQ3MSw2ICs0NzgsOSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgZmxv
YXQgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVkVGltZVdhbGxDbG9j
a1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2FsbENsb2NrVGltZVRv
Q2FjaGVNZWRpYVRpbWU7CisgICAgCisgICAgdHlwZWRlZiB1bnNpZ25lZCBQZW5kaW5nTG9hZEZs
YWdzOworICAgIFBlbmRpbmdMb2FkRmxhZ3MgbV9wZW5kaW5nTG9hZEZsYWdzOwogCiAgICAgYm9v
bCBtX3BsYXlpbmcgOiAxOwogICAgIGJvb2wgbV9pc1dhaXRpbmdVbnRpbE1lZGlhQ2FuU3RhcnQg
OiAxOwpAQCAtNTE0LDcgKzUyNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX3RleHRUcmFja3M7
CisgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKICNlbmRpZgogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCShyZXZpc2lvbiA5
OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBtb2R1bGUgaHRtbCB7CiAKICNpZiBkZWZpbmVk
KEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAgICAgW0VuYWJsZWRB
dFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0cmlu
ZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01T
dHJpbmcgbGFuZ3VhZ2UpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGlt
ZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7CiAjZW5kaWYKIH07
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHJldmlz
aW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksOCBAQCBpbmxpbmUgSFRNTFRyYWNrRWxlbWVudDo6
SFRNTFRyYWNrRWxlbWVuCiAKIEhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KCkK
IHsKKyAgICBpZiAobV90cmFjaykKKyAgICAgICAgbV90cmFjay0+Y2xlYXJDbGllbnQoKTsKIH0K
IAogUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTks
MTYgKzYxLDE2IEBAIFBhc3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gSFRNTFRyYWNrRWwKIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiB7CiAgICAg
SFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoZGVlcCk7Ci0gICAgRWxlbWVudCogcGFyZW50
ID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc01lZGlhRWxl
bWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9k
ZSgpKS0+dHJhY2tXYXNBZGRlZCh0aGlzKTsKKworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBw
YXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcGFyZW50LT50cmFja1dhc0FkZGVkKHRo
aXMpOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OndpbGxSZW1vdmUoKQogewotICAgIEVs
ZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAocGFyZW50ICYmIHBhcmVu
dC0+aXNNZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVu
dCo+KHBhcmVudE5vZGUoKSktPnRyYWNrV2lsbEJlUmVtb3ZlZCh0aGlzKTsKKyAgICBpZiAoSFRN
TE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHBhcmVudC0+
dHJhY2tXaWxsQmVSZW1vdmVkKHRoaXMpOworCiAgICAgSFRNTEVsZW1lbnQ6OndpbGxSZW1vdmUo
KTsKIH0KIApAQCAtOTAsOCArOTIsOCBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQoCiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0dHItPm5h
bWUoKTsKICAgICBpZiAoYXR0ck5hbWUgPT0gc3JjQXR0cikgewotICAgICAgICBpZiAoIWdldEF0
dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgcGFyZW50Tm9kZSgpKQotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPnRyYWNrU291cmNl
Q2hhbmdlZCh0aGlzKTsKKyAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0
eSgpICYmIG1lZGlhRWxlbWVudCgpKQorICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CiAgICAg
fQogfQogCkBAIC0xMzcsNyArMTM5LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRMYWJl
bChjb25zdCBTdAogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmlzRGVmYXVsdCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGhhc0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7CisgICAgcmV0dXJuIGZhc3RI
YXNBdHRyaWJ1dGUoZGVmYXVsdEF0dHIpOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNl
dElzRGVmYXVsdChib29sIGlzRGVmYXVsdCkKQEAgLTE0NSwxMSArMTQ3LDE3IEBAIHZvaWQgSFRN
TFRyYWNrRWxlbWVudDo6c2V0SXNEZWZhdWx0KGJvb2wKICAgICBzZXRCb29sZWFuQXR0cmlidXRl
KGRlZmF1bHRBdHRyLCBpc0RlZmF1bHQpOwogfQogCi1UZXh0VHJhY2sqIEhUTUxUcmFja0VsZW1l
bnQ6OnRyYWNrKCkgY29uc3QKK0xvYWRhYmxlVGV4dFRyYWNrKiBIVE1MVHJhY2tFbGVtZW50Ojps
b2FkYWJsZVRyYWNrKCkKIHsKLSAgICBpZiAobV90cmFjaykKLSAgICAgICAgcmV0dXJuIG1fdHJh
Y2suZ2V0KCk7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX3RyYWNrKQorICAgICAgICBtX3Ry
YWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBzdGF0aWNfY2FzdDxTY3JpcHRF
eGVjdXRpb25Db250ZXh0Kj4oZG9jdW1lbnQoKSksIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygp
LCBpc0RlZmF1bHQoKSk7CisgICAgcmV0dXJuIG1fdHJhY2suZ2V0KCk7Cit9CisKK1Bhc3NSZWZQ
dHI8VGV4dFRyYWNrPiBIVE1MVHJhY2tFbGVtZW50Ojp0cmFjaygpCit7CisgICAgUmVmUHRyPFRl
eHRUcmFjaz4gdHJhY2sgPSBsb2FkYWJsZVRyYWNrKCk7CisgICAgcmV0dXJuIHRyYWNrLnJlbGVh
c2UoKTsKIH0KIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdHRyaWJ1
dGUqIGF0dHJpYnV0ZSkgY29uc3QKQEAgLTE1NywxOSArMTY1LDc5IEBAIGJvb2wgSFRNTFRyYWNr
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXQKICAgICByZXR1cm4gYXR0cmlidXRlLT5uYW1lKCkg
PT0gc3JjQXR0cjsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQpCit2b2lk
IEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiB7Ci0gICAgbV90cmFjayA9IExvYWRh
YmxlVGV4dFRyYWNrOjpjcmVhdGUodHJhY2tDbGllbnQsIHRoaXMsIGtpbmQoKSwgbGFiZWwoKSwg
c3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgaWYgKCFtZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGhhc0F0dHJpYnV0ZShzcmNBdHRyKSkKLSAgICAgICAgbV90
cmFjay0+bG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKSwgY29udGV4dCk7Cisg
ICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBsb2FkYWJsZVRyYWNrKCktPnNjaGVkdWxlTG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShz
cmNBdHRyKSk7CiB9CiAKLXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTG9hZGluZ0Nv
bXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKK2Jvb2wgSFRN
TFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwm
IHVybCkKK3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsK
KyAgICBpZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFwYXJl
bnQtPmlzU2FmZVRvTG9hZFVSTCh1cmwsIEhUTUxNZWRpYUVsZW1lbnQ6OkNvbXBsYWluKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUxvYWRF
dmVudCh1cmwuc3RyaW5nKCkpOworfQorCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWRpbmdD
b21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIGxvYWRpbmdGYWlsZWQpCiB7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGxv
YWRpbmdGYWlsZWQgPyBldmVudE5hbWVzKCkuZXJyb3JFdmVudCA6IGV2ZW50TmFtZXMoKS5sb2Fk
RXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKIH0KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBp
ZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJl
dHVybiBwYXJlbnQtPnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKHRyYWNrKTsKK30KKyAgICAK
K3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKiB0
cmFjaykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50
KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja01vZGVDaGFuZ2VkKHRyYWNrKTsK
K30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJh
Y2sqIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKQoreworICAgIGlmIChIVE1M
TWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBh
cmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3Vlcyk7Cit9CisgICAgCit2b2lkIEhUTUxU
cmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiB0cmFjaywgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCogY3VlcykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFy
ZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0Fk
ZEN1ZXModHJhY2ssIGN1ZXMpOworfQorICAgIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0
VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0cmFjaywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1
ZSkKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZSh0cmFjaywgY3VlKTsKK30K
KyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFj
ayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7CisgICAgaWYgKEhUTUxN
ZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFy
ZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Cit9CisKK0hUTUxNZWRpYUVsZW1l
bnQqIEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCgpIGNvbnN0Cit7CisgICAgRWxlbWVu
dCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5p
c01lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxl
bWVudCo+KHBhcmVudE5vZGUoKSk7CisKKyAgICByZXR1cm4gMDsKK30KIAogI2lmIEVOQUJMRShN
SUNST0RBVEEpCiBTdHJpbmcgSFRNTFRyYWNrRWxlbWVudDo6aXRlbVZhbHVlVGV4dCgpIGNvbnN0
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAkocmV2aXNpb24gOTk2
OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhU
TUxUcmFja0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgVGV4dFRyYWNrTG9h
ZGluZ0NsaWVudCB7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworCitjbGFzcyBIVE1MVHJhY2tF
bGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTQ4LDE4ICs1MCwxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRTcmNsYW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9vbCk7Ci0gICAgVGV4
dFRyYWNrKiB0cmFjaygpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaygp
OwogICAgIAotICAgIHZvaWQgbG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNr
Q2xpZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUxvYWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
TG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0Zh
aWxlZCAqLyk7CiAKIHByaXZhdGU6Ci0KLSAgICAvLyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJh
Y2sqLCBib29sKTsKLQogICAgIEhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwotICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNs
cyk7CiAKQEAgLTcyLDcgKzcyLDIwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0
ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2Vu
ZGlmCiAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdDsKKworICAg
IC8vIFRleHRUcmFja0xvYWRpbmdDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVh
ZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01v
ZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVz
KFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7
CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRy
PFRleHRUcmFja0N1ZT4pOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4
dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKworICAgIExvYWRhYmxlVGV4dFRy
YWNrKiBsb2FkYWJsZVRyYWNrKCk7CisKICAgICBSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IG1f
dHJhY2s7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKIH07
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCShy
ZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwyNiArMjksNTMgQEAKIAogI2luY2x1ZGUgIkxvYWRh
YmxlVGV4dFRyYWNrLmgiCiAKKyNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Mb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0
VHJhY2soVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVu
dCogbG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6IFRleHRUcmFj
ayh0cmFja0NsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlKQotICAgICwgbV9sb2FkaW5nQ2xp
ZW50KGxvYWRpbmdDbGllbnQpCitMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2so
SFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBs
YW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgOiBUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxh
YmVsLCBsYW5ndWFnZSkKKyAgICAsIG1fdHJhY2tFbGVtZW50KHRyYWNrKQorICAgICwgbV9sb2Fk
VGltZXIodGhpcywgJkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCkKKyAgICAsIG1f
Y29udGV4dChjb250ZXh0KQogICAgICwgbV9pc0RlZmF1bHQoaXNEZWZhdWx0KQogeworICAgIEFT
U0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogfQogCiBMb2FkYWJsZVRleHRUcmFjazo6fkxv
YWRhYmxlVGV4dFRyYWNrKCkKIHsKIH0KIAotdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bG9hZChj
b25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIExv
YWRhYmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCiB7Ci0gICAgaWYgKCFtX2xvYWRlcikKLSAg
ICAgICAgbV9sb2FkZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSh0aGlzLCBjb250ZXh0KTsK
LSAgICBtX2xvYWRlci0+bG9hZCh1cmwpOworICAgIG1fdHJhY2tFbGVtZW50ID0gMDsKKyAgICBU
ZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnNj
aGVkdWxlTG9hZChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbV91cmwgPSB1cmw7CisgICAgaWYg
KCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2xvYWRUaW1lci5zdGFydE9uZVNo
b3QoMCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKFRpbWVy
PExvYWRhYmxlVGV4dFRyYWNrPiopCit7CisgICAgc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkxP
QURJTkcpOworICAgIAorICAgIGlmIChtX2xvYWRlcikKKyAgICAgICAgbV9sb2FkZXItPmNhbmNl
bExvYWQoKTsKKworICAgIGlmICghbV90cmFja0VsZW1lbnQgfHwgIW1fdHJhY2tFbGVtZW50LT5j
YW5Mb2FkVXJsKHRoaXMsIG1fdXJsKSkgeworICAgICAgICBzZXRSZWFkeVN0YXRlKFRleHRUcmFj
azo6SFRNTF9FUlJPUik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9sb2Fk
ZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSh0aGlzLCBtX2NvbnRleHQuZ2V0KCkpOworICAg
IG1fbG9hZGVyLT5sb2FkKG1fdXJsKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6bmV3
Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2FkZXIqIGxvYWRlcikKQEAgLTgyLDggKzEwOSw4IEBA
IHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21wbGUKIAogICAgIGxvYWRpbmdG
YWlsZWQgPyBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6SFRNTF9FUlJPUikgOiBzZXRSZWFkeVN0
YXRlKFRleHRUcmFjazo6TE9BREVEKTsKIAotICAgIGlmIChtX2xvYWRpbmdDbGllbnQpCi0gICAg
ICAgIG1fbG9hZGluZ0NsaWVudC0+dGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZCh0aGlzLCBsb2Fk
aW5nRmFpbGVkKTsKKyAgICBpZiAobV90cmFja0VsZW1lbnQpCisgICAgICAgIG1fdHJhY2tFbGVt
ZW50LT5sb2FkaW5nQ29tcGxldGVkKHRoaXMsIGxvYWRpbmdGYWlsZWQpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRy
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFj
ay5oCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzksMjMgKzM5LDI1IEBAIGNsYXNzIEhUTUxUcmFj
a0VsZW1lbnQ7CiBjbGFzcyBMb2FkYWJsZVRleHRUcmFjazsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKLWNsYXNzIFRleHRUcmFja0xvYWRpbmdDbGllbnQgeworY2xhc3MgTG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQgOiBwdWJsaWMgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5UZXh0VHJhY2tMb2FkaW5nQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB+TG9h
ZGFibGVUZXh0VHJhY2tDbGllbnQoKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0Zh
aWxlZCAqLykgPSAwOworICAgIHZpcnR1YWwgYm9vbCBjYW5Mb2FkVXJsKExvYWRhYmxlVGV4dFRy
YWNrKiwgY29uc3QgS1VSTCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGxv
YWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIC8qIGxvYWRpbmdGYWlsZWQg
Ki8pIHsgfQogfTsKIAogY2xhc3MgTG9hZGFibGVUZXh0VHJhY2sgOiBwdWJsaWMgVGV4dFRyYWNr
LCBwcml2YXRlIFRleHRUcmFja0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShUZXh0VHJhY2tDbGllbnQqIHRyYWNr
Q2xpZW50LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBsb2FkaW5nQ2xpZW50LCBjb25zdCBTdHJp
bmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJv
b2wgaXNEZWZhdWx0KQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBj
cmVhdGUoSFRNTFRyYWNrRWxlbWVudCogdHJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrQ2xpZW50LCBsb2FkaW5nQ2xpZW50LCBr
aW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IExvYWRhYmxlVGV4dFRyYWNrKHRyYWNrLCBjb250ZXh0LCBraW5kLCBsYWJlbCwgbGFu
Z3VhZ2UsIGlzRGVmYXVsdCkpOwogICAgIH0KICAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRUcmFj
aygpOwogCi0gICAgdm9pZCBsb2FkKGNvbnN0IEtVUkwmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7Ci0gICAgYm9vbCBzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzY2hl
ZHVsZUxvYWQoY29uc3QgS1VSTCYpOworCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCk7
CiAKIHByaXZhdGU6CiAgICAgLy8gVGV4dFRyYWNrTG9hZGVyQ2xpZW50CkBAIC02NCwxMCArNjYs
MTUgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ1N0YXJ0ZWQoVGV4dFRy
YWNrTG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0ZWQoVGV4dFRy
YWNrTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKTsKIAotICAgIExvYWRhYmxlVGV4dFRyYWNr
KFRleHRUcmFja0NsaWVudCosIFRleHRUcmFja0xvYWRpbmdDbGllbnQqLCBjb25zdCBTdHJpbmcm
IGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wg
aXNEZWZhdWx0KTsKKyAgICBMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpOworCisgICAgdm9p
ZCBsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4qKTsKIAorICAgIEhUTUxU
cmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50OworICAgIFRpbWVyPExvYWRhYmxlVGV4dFRyYWNr
PiBtX2xvYWRUaW1lcjsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250
ZXh0OwogICAgIE93blB0cjxUZXh0VHJhY2tMb2FkZXI+IG1fbG9hZGVyOwotICAgIFRleHRUcmFj
a0xvYWRpbmdDbGllbnQqIG1fbG9hZGluZ0NsaWVudDsKKyAgICBLVVJMIG1fdXJsOwogICAgIGJv
b2wgbV9pc0RlZmF1bHQ7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDcgQEAgVGV4dFRy
YWNrOjp+VGV4dFRyYWNrKCkKIHsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50
LT50ZXh0VHJhY2tSZW1vdmVDdWVzKHRoaXMsIG1fY3Vlcy5nZXQoKSk7Ci0gICAgc2V0Q2xpZW50
KDApOworICAgIGNsZWFyQ2xpZW50KCk7CiB9CiAKIFN0cmluZyBUZXh0VHJhY2s6OmtpbmQoKSBj
b25zdApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCShyZXZpc2lvbiA5OTY5NCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2
LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJh
Y2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0
VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSA9IDA7CkBA
IC03OCwxNCArNzcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsK
ICAgICB2b2lkIG1vZGVDaGFuZ2VkKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQo
KSB7IG1fY2xpZW50ID0gMDsgfQogICAgIFRleHRUcmFja0NsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQ7IH0KLSAgICB2b2lkIHNldENsaWVudChUZXh0VHJhY2tDbGllbnQqIGNsaWVu
dCkgeyBtX2NsaWVudCA9IGNsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCByZW1vdmVDdWUoUGFzc1Jl
ZlB0cjxUZXh0VHJhY2tDdWU+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIG5ld0N1ZXNMb2FkZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZmV0Y2hOZXdlc3RDdWVzKFZl
Y3RvcjxUZXh0VHJhY2tDdWUqPiYpOworICAgIHZvaWQgbmV3Q3Vlc0xvYWRlZCgpOworICAgIHZv
aWQgZmV0Y2hOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tDdWUqPiYpOwogCiBwcm90ZWN0ZWQ6
CiAgICAgVGV4dFRyYWNrKFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHAJKHJldmlzaW9uIDk5Njk0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksOCArNjksOCBAQCB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNzUmVmUHRyPFRlCiAK
IHZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUs
IHNpemVfdCBzdGFydCwgc2l6ZV90IGVuZCkKIHsKLSAgICBBU1NFUlQoc3RhcnQgPj0gMCAmJiBz
dGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQoZW5kID49IDAgJiYgZW5kIDw9IG1f
bGlzdC5zaXplKCkpOworICAgIEFTU0VSVChzdGFydCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBB
U1NFUlQoZW5kIDw9IG1fbGlzdC5zaXplKCkpOwogCiAgICAgLy8gTWFpbnRhaW4gdGV4dCB0cmFj
ayBjdWUgb3JkZXI6CiAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBz
L2N1cnJlbnQtd29yay8jdGV4dC10cmFjay1jdWUtb3JkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShW
SURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiVHJhY2tFdmVudC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworVGV4dFRyYWNrTGlzdDo6VGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVt
ZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV9vd25lcihvd25lcikKKyAgICAsIG1fcGVuZGluZ0V2ZW50
VGltZXIodGhpcywgJlRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVkKQoreworICAg
IEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOworfQorCitUZXh0VHJhY2tMaXN0Ojp+VGV4
dFRyYWNrTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIFRleHRUcmFja0xpc3Q6Omxlbmd0aCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2tzLnNpemUoKTsKK30KKworVGV4dFRyYWNrKiBUZXh0
VHJhY2tMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIGlmIChpbmRleCA8IG1fdHJh
Y2tzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fdHJhY2tzW2luZGV4XS5nZXQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjphcHBlbmQoUGFzc1JlZlB0cjxUZXh0
VHJhY2s+IHRyYWNrKQoreworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7
CisgICAgbV90cmFja3MuYXBwZW5kKHRyYWNrUmVmKTsKKyAgICBzY2hlZHVsZUFkZFRyYWNrRXZl
bnQodHJhY2tSZWYpOworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OnJlbW92ZShQYXNzUmVmUHRy
PFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV90cmFja3MuZmluZCh0
cmFjayk7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm47CisgICAg
bV90cmFja3MucmVtb3ZlKGluZGV4KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJh
Y2tMaXN0OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvclRleHRUcmFja0xpc3Q7Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6c2No
ZWR1bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKK3sKKyAgICAv
LyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIDQu
OC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44LjEw
LjEyLjQgVGV4dCB0cmFjayBBUEkKKyAgICAvLyAuLi4gdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhbiBldmVudCB3aXRoIHRoZSBuYW1lIGFkZHRyYWNrLCB0aGF0IGRvZXMgbm90IAorICAgIC8v
IGJ1YmJsZSBhbmQgaXMgbm90IGNhbmNlbGFibGUsIGFuZCB0aGF0IHVzZXMgdGhlIFRyYWNrRXZl
bnQgaW50ZXJmYWNlLCB3aXRoIAorICAgIC8vIHRoZSB0cmFjayBhdHRyaWJ1dGUgaW5pdGlhbGl6
ZWQgdG8gdGhlIHRleHQgdHJhY2sncyBUZXh0VHJhY2sgb2JqZWN0LCBhdCAKKyAgICAvLyB0aGUg
bWVkaWEgZWxlbWVudCdzIHRleHRUcmFja3MgYXR0cmlidXRlJ3MgVGV4dFRyYWNrTGlzdCBvYmpl
Y3QuCisKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNrOworICAgIFRyYWNr
RXZlbnRJbml0IGluaXRpYWxpemVyOworICAgIGluaXRpYWxpemVyLnRyYWNrID0gdHJhY2tSZWY7
CisgICAgaW5pdGlhbGl6ZXIuYnViYmxlcyA9IGZhbHNlOworICAgIGluaXRpYWxpemVyLmNhbmNl
bGFibGUgPSBmYWxzZTsKKworICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoVHJhY2tFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBpbml0aWFsaXplcikpOworICAgIGlm
ICghbV9wZW5kaW5nRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BlbmRpbmdFdmVu
dFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0Ojphc3luY0V2
ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopCit7CisgICAgVmVjdG9yPFJlZlB0
cjxFdmVudD4gPiBwZW5kaW5nRXZlbnRzOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IAorICAgIG1fcGVuZGluZ0V2ZW50cy5zd2FwKHBlbmRpbmdFdmVudHMpOworICAgIHNpemVfdCBj
b3VudCA9IHBlbmRpbmdFdmVudHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsg
aW5kZXggPCBjb3VudDsgKytpbmRleCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChwZW5kaW5nRXZl
bnRzW2luZGV4XS5yZWxlYXNlKCksIGVjKTsKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrTGlzdF9oCisjZGVmaW5lIFRleHRU
cmFja0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50
VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBIVE1M
TWVkaWFFbGVtZW50OworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgVGV4dFRyYWNrTGlzdDsKKwor
Y2xhc3MgVGV4dFRyYWNrTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+LCBw
dWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRU
cmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBvd25lciwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dFRyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAgIH0KKyAgICB+VGV4dFRyYWNrTGlzdCgp
OworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgVGV4dFRyYWNrKiBpdGVtKHVu
c2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4pOwor
ICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisKKyAgICAvLyBFdmVudFRh
cmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OmRlcmVmOworICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFj
ayk7CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1fb3duZXIgPSAwOyB9CisgICAgSFRNTE1l
ZGlhRWxlbWVudCogb3duZXIoKSB7IHJldHVybiBtX293bmVyOyB9CisKK3ByaXZhdGU6CisgICAg
VGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVm
KCk7IH0KKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgeyBy
ZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOyB9CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQor
CisgICAgdm9pZCBzY2hlZHVsZUFkZFRyYWNrRXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsK
KyAgICB2b2lkIGFzeW5jRXZlbnRUaW1lckZpcmVkKFRpbWVyPFRleHRUcmFja0xpc3Q+Kik7CisK
KyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX2NvbnRleHQ7CisgICAgSFRNTE1lZGlhRWxl
bWVudCogbV9vd25lcjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9wZW5kaW5nRXZl
bnRzOworICAgIFRpbWVyPFRleHRUcmFja0xpc3Q+IG1fcGVuZGluZ0V2ZW50VGltZXI7CisKKyAg
ICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisgICAgVmVjdG9yPFJlZlB0cjxU
ZXh0VHJhY2s+ID4gbV90cmFja3M7CisgICAgCisgICAgaW50IG1fZGlzcGF0Y2hpbmdFdmVudHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLLAorICAgICAgICBFbmFi
bGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2ssCisgICAgICAgIEhhc0luZGV4R2V0dGVyLAor
ICAgICAgICBFdmVudFRhcmdldCwKKyAgICAgICAgQ3VzdG9tSXNSZWFjaGFibGUKKyAgICBdIFRl
eHRUcmFja0xpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBs
ZW5ndGg7CisgICAgICAgIFRleHRUcmFjayBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7CisKKyAgICAgICAg
dm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0
dXJlKTsKKyAgICAgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2dCkKKyAgICAg
ICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHJldmlzaW9uIDk5Njk0KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDYgKzY4LDE0IEBAIHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjdWVMb2FkVGltZXJGaXJl
ZCgKICAgICAgICAgbV9jbGllbnQtPmN1ZUxvYWRpbmdDb21wbGV0ZWQodGhpcywgbV9zdGF0ZSA9
PSBGYWlsZWQpOwogfQogCit2b2lkIFRleHRUcmFja0xvYWRlcjo6Y2FuY2VsTG9hZCgpCit7Cisg
ICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkgeworICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92
ZUNsaWVudCh0aGlzKTsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKKyAgICB9Cit9CisK
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNvdXJjZSog
cmVzb3VyY2UpCiB7CiAgICAgQVNTRVJUKG1fY2FjaGVkQ3VlRGF0YSA9PSByZXNvdXJjZSk7CkBA
IC0xNDIsOCArMTUwLDcgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENh
YwogICAgIGlmICghbV9jdWVMb2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9jdWVMb2Fk
VGltZXIuc3RhcnRPbmVTaG90KDApOwogICAgIAotICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3Zl
Q2xpZW50KHRoaXMpOwotICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgY2FuY2VsTG9hZCgp
OwogfQogCiBib29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1cmwpCkBAIC0x
NTEsMTAgKzE1OCw3IEBAIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtVUkwmIHUK
ICAgICBpZiAoIW1fY2xpZW50LT5zaG91bGRMb2FkQ3Vlcyh0aGlzKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAotICAgIGlmIChtX2NhY2hlZEN1ZURhdGEpIHsKLSAgICAgICAgbV9jYWNo
ZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgICAgIG1fY2FjaGVkQ3VlRGF0YSA9
IDA7Ci0gICAgfQorICAgIGNhbmNlbExvYWQoKTsKICAgICAKICAgICBBU1NFUlQobV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJKHJldmlzaW9uIDk5Njk0KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02Miw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tMb2FkZXIo
KTsKICAgICAKICAgICBib29sIGxvYWQoY29uc3QgS1VSTCYpOworICAgIHZvaWQgY2FuY2VsTG9h
ZCgpOwogICAgIHZvaWQgZ2V0TmV3Q3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYg
b3V0cHV0Q3Vlcyk7CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTYxMyw2ICs2MTMsNyBAQCBtb2R1bGUgd2luZG93IHsKICAg
ICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRU
cmFja0NvbnN0cnVjdG9yIFRleHRUcmFjazsKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRS
dW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0N1ZUNvbnN0cnVjdG9yIFRleHRUcmFj
a0N1ZTsgLy8gVXNhYmxlIHdpdGggdGhlIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUg
W0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ3VlTGlzdENvbnN0
cnVjdG9yIFRleHRUcmFja0N1ZUxpc3Q7CisgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVu
dGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNr
TGlzdDsKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJh
Y2tdIFRyYWNrRXZlbnRDb25zdHJ1Y3RvciBUcmFja0V2ZW50OwogI2VuZGlmCiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk5Njk0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMDkgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IFRleHRUcmFja0xpc3QgYW5kIHRoZSB0
ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTEyMworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRkLXRy
YWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stYWRk
LXRyYWNrLmh0bWw6IEFkZGVkLgorCiAyMDExLTExLTA5ICBSb2xhbmQgVGFrYWNzICA8dGFrYWNz
LnJvbGFuZEBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtXSzJdIG5yd3QgcGl4ZWx0ZXN0
cyBjcmFzaCB3aGlsZSB0ZXN0CkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1h
ZGQtdHJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IHRoZSAnYWRkdHJhY2snIGV2ZW50IGlzIGZp
cmVkIHdoZW4gYSBUZXh0VHJhY2sgaXMgY3JlYXRlZC4uCisKKyoqIFRlc3QgYSBUZXh0VHJhY2sg
Y3JlYXRlZCBmb3IgYSA8dHJhY2s+IGVsZW1lbnQuCitSVU4odHJhY2tFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgndHJhY2snKSkKK1JVTih2aWRlby5hcHBlbmRDaGlsZCh0cmFja0Vs
ZW1lbnQpKQorUlVOKHRyYWNrRWxlbWVudC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdl
YnZ0dC1maWxlLnZ0dCcpCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0gJzEn
KSBPSworRVhQRUNURUQgKHRyYWNrc1swXS5yZWFkeVN0YXRlID09ICcwJykgT0sKK0VWRU5UKGFk
ZHRyYWNrKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldCA9PSAnW29iamVjdCBUZXh0VHJhY2tMaXN0
XScpIE9LCitFWFBFQ1RFRCAoZXZlbnQgaW5zdGFuY2VvZiB3aW5kb3cuVHJhY2tFdmVudCA9PSAn
dHJ1ZScpIE9LCitFWFBFQ1RFRCAoZXZlbnQudHJhY2sgPT0gJ1tvYmplY3QgVGV4dFRyYWNrXScp
IE9LCisKKyoqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCB3aXRoIHZpZGVvLmFkZFRyYWNrKCku
CitSVU4odHJhY2tzLnB1c2godmlkZW8uYWRkVHJhY2soJ2NhcHRpb25zJywgJ0NhcHRpb24gVHJh
Y2snLCAnZW4nKSkpCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0gJzInKSBP
SworRVhQRUNURUQgKHRyYWNrc1sxXS5yZWFkeVN0YXRlID09ICcwJykgT0sKK0VWRU5UKGFkZHRy
YWNrKQorRVhQRUNURUQgKGV2ZW50LnRhcmdldCA9PSAnW29iamVjdCBUZXh0VHJhY2tMaXN0XScp
IE9LCitFWFBFQ1RFRCAoZXZlbnQgaW5zdGFuY2VvZiB3aW5kb3cuVHJhY2tFdmVudCA9PSAndHJ1
ZScpIE9LCitFWFBFQ1RFRCAoZXZlbnQudHJhY2sgPT0gJ1tvYmplY3QgVGV4dFRyYWNrXScpIE9L
CitFWFBFQ1RFRCAodHJhY2tzWzFdLnJlYWR5U3RhdGUgPT0gJzAnKSBPSworCitFTkQgT0YgVEVT
VAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFj
ay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8c2NyaXB0
IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0uLi92
aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorCisgICAgICAgICAgICB2
YXIgdHJhY2tzID0gW107CisgICAgICAgICAgICB2YXIgdHJhY2tFbGVtZW50OworICAgICAgICAg
ICAgZnVuY3Rpb24gdHJhY2tBZGRlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnQudHlwZSArICIpIik7CisKKyAgICAgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImV2ZW50LnRhcmdldCIsIHZpZGVvLnRleHRUcmFja3MpOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQgaW5zdGFuY2VvZiB3aW5kb3cuVHJhY2tF
dmVudCIsIHRydWUpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudHJhY2si
LCB0cmFja3NbdmlkZW8udGV4dFRyYWNrcy5sZW5ndGggLSAxXSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0gMSkgeworICAgICAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj4qKiBUZXN0IGEgVGV4dFRyYWNrIGNyZWF0ZWQgd2l0aCB2aWRl
by5hZGRUcmFjaygpLiIpOworICAgICAgICAgICAgICAgICAgICBydW4oInRyYWNrcy5wdXNoKHZp
ZGVvLmFkZFRyYWNrKCdjYXB0aW9ucycsICdDYXB0aW9uIFRyYWNrJywgJ2VuJykpIik7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCAy
KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMV0ucmVhZHlTdGF0
ZSIsIFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrc1sxXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNr
Lk5PTkUpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAg
ICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBzdGFydCgpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIqKiBUZXN0IGEgVGV4dFRyYWNrIGNyZWF0ZWQgZm9yIGEgJmx0O3RyYWNrJmd0OyBlbGVtZW50
LiIpOworICAgICAgICAgICAgICAgIHJ1bigidHJhY2tFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndHJhY2snKSIpOworICAgICAgICAgICAgICAgIHJ1bigidmlkZW8uYXBwZW5kQ2hp
bGQodHJhY2tFbGVtZW50KSIpOworICAgICAgICAgICAgICAgIHRyYWNrcy5wdXNoKHRyYWNrRWxl
bWVudC50cmFjayk7CisKKyAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciB0aGUgJ2FkZHRyYWNr
JyBsaXN0ZW5lciBhZnRlciBjcmVhdGluZyB0aGUgZWxlbWVudCB0byBtYWtlIHN1cmUgdGhlCisg
ICAgICAgICAgICAgICAgLy8gZXZlbnQgaXMgZGlzcGF0Y2ggYXN5bmNocm9ub3VzbHkuCisgICAg
ICAgICAgICAgICAgdmlkZW8udGV4dFRyYWNrcy5hZGRFdmVudExpc3RlbmVyKCJhZGR0cmFjayIs
IHRyYWNrQWRkZWQpOworCisgICAgICAgICAgICAgICAgcnVuKCJ0cmFja0VsZW1lbnQuc3JjID0g
J2NhcHRpb25zLXdlYnZ0dC90YzAwNC13ZWJ2dHQtZmlsZS52dHQnIik7CisgICAgICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIsIDEpOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzBdLnJlYWR5U3RhdGUiLCBUZXh0VHJhY2suTk9O
RSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ic3RhcnQoKSI+CisgICAgICAgIDxwPlRlc3RzIHRoYXQgdGhlICdhZGR0
cmFjaycgZXZlbnQgaXMgZmlyZWQgd2hlbiBhIFRleHRUcmFjayBpcyBjcmVhdGVkLi48L3A+Cisg
ICAgICAgIDx2aWRlbz4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="112881"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114355</attachid>
            <date>2011-11-09 13:32:23 -0800</date>
            <delta_ts>2011-11-10 14:08:07 -0800</delta_ts>
            <desc>Updated to address Sam&apos;s feedback.</desc>
            <filename>patch_tracks_array_17.txt</filename>
            <type>text/plain</type>
            <size>78900</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI2IEBACisyMDExLTExLTA5ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6IEFkZCBuZXcgZmlsZXMgZm9yIFRleHRUcmFja0xpc3QuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMuY3BwOiBEaXR0by4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4K
KyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5wcmk6IERpdHRvLgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFRhcmdldC5wcmk6IERpdHRvLgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwOiBEaXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlz
dEN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKworICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46IEFkZCBUZXh0VHJhY2tMaXN0LCBjb25kaXRpb25hbCBvbiBWSURFT19U
UkFDSy4KKworICAgICAgICAqIGh0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MQXVkaW9FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKTogVXBkYXRl
IGZvciBzY2hlZHVsZUxvYWQgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6On5IVE1MTWVkaWFF
bGVtZW50KTogVXBkYXRlIGZvciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAg
IGdlbmVyaWMgVmVjdG9yIHRvIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCk6IFVwZGF0ZSBmb3Igc2No
ZWR1bGVMb2FkIGNoYW5nZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlTG9hZCk6IEFkZCBhIHBhcmFtZXRlciBzbyBjYWxsZXIgY2FuIHNwZWNpZnkgaWYKKyAg
ICAgICAgICAgIHRoZSBtYWluIHJlc291cmNlIG9yIGEgdGV4dCB0cmFjayBzaG91bGQgYmUgbG9h
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQp
OiBVcGRhdGUgdG8gYWxsb3cgdGV4dCB0cmFjayBsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKTogRG9uJ3QgY2FsbCBsb2FkVGV4dFRyYWNr
cy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCk6
IExvZyB3aGVuIENTUCBkZW5pZXMgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXlJbnRlcm5hbCk6IFVwZGF0ZSBmb3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRyYWNrKTogVXBkYXRlIGZv
ciBtX3RleHRUcmFja3MgY2hhbmdlIGZyb20KKyAgICAgICAgICAgIGdlbmVyaWMgVmVjdG9yIHRv
IFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2spOiBOZXcsIGFkZCB0cmFjayB0byBtX3RleHRUcmFja3MgYW5kIGNvbmZpZ3VyZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3Mp
OiBOZXcsIGFkZCBjb21tZW50cyBhYm91dCB3aGF0IHRoaXMgc2hvdWxkCisgICAgICAgICAgICBk
byBldmVudHVhbGx5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrcyk6IE5ldywgcmV0dXJuIFRleHRUcmFja0xpc3QuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKTogQmFpbCBpZiBydW50aW1lIGZlYXR1cmUgaXMg
bm90IGVuYWJsZWQsIHNjaGVkdWxlCisgICAgICAgICAgICBhc3luY2hyb25vdXMgdGV4dCB0cmFj
ayBsb2FkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVS
ZW1vdmVkKTogTWlub3IgY2xlYW51cC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBj
aGFuZ2UuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkIHRleHRUcmFja3MgYXR0cmlidXRlLgorCisgICAg
ICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcDogCisgICAgICAgIChXZWJDb3JlOjpIVE1M
VHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKTogVXNlIG5ldyBtZWRpYUVsZW1lbnQoKSBt
ZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKTogV2hlbiAnc3JjJyBpcyBjaGFuZ2VkLCBjYWxsIHNjaGVkdWxlTG9hZAorICAgICAgICAg
ICAgaW5zdGVhZCBvZiBIVE1MTWVkaWFFbGVtZW50CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJh
Y2tFbGVtZW50Ojppc0RlZmF1bHQpOiBoYXNBdHRyaWJ1dGUgLT4gZmFzdEhhc0F0dHJpYnV0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKTogQWxsb2NhdGUgdHJh
Y2sgaWYgbmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6c2No
ZWR1bGVMb2FkKTogTmV3LCB0ZWxsIHRoZSB0cmFjayB0byBzY2hlZHVsZSBhIGxvYWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKTogTmV3LCBjaGVjayBz
ZWN1cml0eSBwb2xpY3kgdG8gc2VlIGlmIGl0IGlzIE9LCisgICAgICAgICAgICB0byBsb2FkIGEg
dGV4dCB0cmFjay4gSWYgc28sIGRpc3BhdGNoICdiZWZvcmVsb2FkJyBldmVudCB0byBnaXZlIGl0
IGEgY2hhbmNlIHRvIGRpc2FsbG93CisgICAgICAgICAgICBsb2FkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6IFJlbmFtZWQgZnJvbSB0ZXh0
VHJhY2tMb2FkaW5nQ29tcGxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVu
dDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOiBOZXcsIFRleHRUcmFja0xvYWRpbmdDbGll
bnQgaW50ZXJmYWNlCisgICAgICAgICAgICB1c2VkIHRvIGluZm9ybSBwYXJlbnQgb2YgVGV4dFRy
YWNrIHN0YXRlIGNoYW5nZXMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0
ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6dGV4dFRyYWNrQWRkQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3Vlcyk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRkQ3VlKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCk6IE5ldywg
cmV0dXJuIHBhcmVudCBlbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5o
OgorCisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2spOiBJbml0aWFsaXplIG5l
dyBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
azo6c2NoZWR1bGVMb2FkKTogTmV3LCBwcmltZSBhIHRpbWVyIHRvIGtpY2sgb2ZmIGxvYWRpbmcu
CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6bG9hZFRpbWVyRmlyZWQpOiBD
YW5jZWwgY3VycmVudCBsb2FkLCBpZiBhbnksIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAg
bmV3IHVybCBpcyBhbGxvd2VkIHRvIGxvYWQsIGFuZCBzdGFydCBuZXcgbG9hZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5nQ29tcGxldGVkKTogCisgICAg
ICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tDbGllbnQ6On5Mb2FkYWJsZVRleHRUcmFja0NsaWVudCk6IFRleHRUcmFja0xv
YWRpbmdDbGllbnQgLT4gTG9hZGFibGVUZXh0VHJhY2tDbGllbnQKKyAgICAgICAgKFdlYkNvcmU6
OkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50OjpjYW5Mb2FkVXJsKTogCisgICAgICAgIChXZWJDb3Jl
OjpMb2FkYWJsZVRleHRUcmFja0NsaWVudDo6bG9hZGluZ0NvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKToKKworICAgICAgICAqIGh0bWwvVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKTogc2V0
Q2xpZW50KDApIC0+IGNsZWFyQ2xpZW50KCkuCisgICAgICAgICogaHRtbC9UZXh0VHJhY2suaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6Y2xlYXJDbGllbnQpOiBSZW5hbWVkIGZyb20g
c2V0Q2xpZW50LCBiZWNhdXNlIGl0IGlzIG9ubHkgdXNlZCB0byBjbGVhciB0aGUgY2xpZW50IHBv
aW50ZXIuCisKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6YWRkKTogR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdh
cm5pbmcgdGhhdCBicmVha3MgdGhlIE9TIFggYnVpbGQuCisKKyAgICAgICAgKiBodG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwOiBBZGRlZC4gSW1wbGVtZW50IHRoZSBUZXh0VHJhY2tMaXN0IG9i
amVjdC4KKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OlRleHRUcmFja0xpc3QpOgorICAgICAgICAo
VGV4dFRyYWNrTGlzdDo6flRleHRUcmFja0xpc3QpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Oml0ZW0pOgorICAgICAgICAoVGV4dFRy
YWNrTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6OnJlbW92ZSk6CisgICAg
ICAgIChUZXh0VHJhY2tMaXN0OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFRleHRUcmFja0xp
c3Q6OnNjaGVkdWxlQWRkVHJhY2tFdmVudCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0Ojphc3lu
Y0V2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6Y2xlYXJPd25lcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tMaXN0Ojpvd25lcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tM
aXN0OjpyZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0Ojpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjplbnN1cmVFdmVu
dFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGw6IEFk
ZGVkLgorCisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQpOiBOZXcsIGNhbmNlbCBwZW5kaW5n
IG9yIGluIHByb2dyZXNzIGxvYWQgYW5kIGRlbGV0ZSBsb2FkZXIuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKTogQ2FsbCBjYW5jZWxMb2FkLgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTG9hZGVyOjpsb2FkKTogRGl0dG8uCisgICAgICAgICog
bG9hZGVyL1RleHRUcmFja0xvYWRlci5oOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDog
QWRkIFRleHRUcmFja0xpc3QuCisKIDIwMTEtMTEtMDkgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZXhjZXB0aW9uIGluIHJl
bW90ZSBmcm9udC1lbmQgbG9hZCBoYW5kbGVyIGR1ZSB0byB1bmRlZmluZWQgcmVmZXJlbmNlIHRv
IHdvcmtlck1hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA5OTY5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zMDEs
NiArMzAxLDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRtbC9jYW52YXMvVWludDMy
QXJyYXkuaWRsCiAgICAgaHRtbC9jYW52YXMvVWludDhBcnJheS5pZGwKIAorICAgIGh0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5pZGwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCiAKICAg
ICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtMjA1OCw2ICsyMDU5LDcgQEAg
SUYgKEVOQUJMRV9WSURFT19UUkFDSykKICAgICAgICAgaHRtbC9UZXh0VHJhY2tDdWUuY3BwCiAg
ICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlSW5kZXguY3BwCiAgICAgICAgIGh0bWwvVGV4dFRyYWNr
Q3VlTGlzdC5jcHAKKyAgICAgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcAogICAgICAg
ICBodG1sL3RyYWNrL1RyYWNrQmFzZS5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50
LmNwcAogICAgICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5jcHAJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNiArNDQxLDcgQEAKICNpbmNs
dWRlICJKU1RleHRUcmFjay5jcHAiCiAjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgogI2lu
Y2x1ZGUgIkpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0
LmNwcCIKICNpbmNsdWRlICJKU1RyYWNrRXZlbnQuY3BwIgogI2VuZGlmCiAjaW5jbHVkZSAiSlNU
aW1lUmFuZ2VzLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNp
b24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgVGV4dFRyYWNr
IFwKICAgICBUZXh0VHJhY2tDdWUgXAogICAgIFRleHRUcmFja0N1ZUxpc3QgXAorICAgIFRleHRU
cmFja0xpc3QgXAogICAgIFRpbWVSYW5nZXMgXAogICAgIFRvdWNoIFwKICAgICBUb3VjaEV2ZW50
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDk5Njk0KQorKysg
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3b3JraW5nIGNvcHkpCkBAIC01OTAs
NiArNTkwLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1ZJREVPX1RSQUNLPTEpIAogICAg
IGh0bWwvVGV4dFRyYWNrLmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWUuaWRsIFwKICAgICBo
dG1sL1RleHRUcmFja0N1ZUxpc3QuaWRsIFwKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsIFwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsIFwKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTUwNCw2ICs1MDQsOCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0
VHJhY2tDdWUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZUxpc3Qu
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlTGlzdC5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrTGlzdC5jcHAgXAorCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tMaXN0LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNUaW1lUmFuZ2VzLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RpbWVSYW5nZXMu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RvdWNoLmNwcCBcCkBAIC04NTAsNiArODUy
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tM
aXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUb3VjaEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAgXApAQCAt
MTk4MCw2ICsxOTgzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9o
dG1sL1RpbWVJbnB1dFR5cGUuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lUmFuZ2VzLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFz
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OTksNiArMTg5OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1hT
U0F1ZGl0b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAg
ICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCBcCisgICAgaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmggXAogICAgIGh0bWwvdHJhY2svVHJhY2tCYXNlLmggXAogICAgIGh0bWwv
dHJhY2svVHJhY2tFdmVudC5oIFwKICAgICBodG1sL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKQEAg
LTM1NjcsNiArMzU2OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0x
KSAKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKICAgICAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uaCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9q
cy9KU1RyYWNrRXZlbnRDdXN0b20uY3BwCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRU
cmFja0xpc3RDdXN0b20uY3BwCiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZp
c2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTM3Myw2ICsxMzczLDcgQEAKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFVu
aWZvcm1Mb2NhdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvY2FudmFzL1dlYkdMVmVydGV4
QXJyYXlPYmplY3RPRVMuaWRsJywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJLaXRMb3Nl
Q29udGV4dC5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwn
LAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCkBAIC0xOTM3LDYgKzE5MzgsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1RleHRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1RvdWNoQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaExpc3RD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCcs
CkBAIC01Nzg4LDYgKzU3OTAsNyBAQAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVy
RWxlbWVudHMuaCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwJywKICAgICAgICAgICAgICdo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZU
VFBhcnNlci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMSwx
MiArMTAxLDE3IEBACiAJCTA3MzVFRTZBMEY0MEM1RTQwMDRBMjYwNCAvKiBNZWRpYVBsYXllclBy
b3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzM1
RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3
ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRU
cmFjay5jcHAgKi87IH07CiAJCTA3NTM4NjAzMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLzsgfTsKLQkJMDc2
ODlENkUxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY4OUQ2RDE0NUI1MkNDMDAx
Q0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLzsgfTsKKwkJMDc2OTcwODYxNDYzQUQ4
NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwICovOyB9OworCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNr
TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2
OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBE
MEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4
MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9Owog
CQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3ODQ2MzQwMTQ1QjE1MUEwMEE1
OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovOyB9OwogCQkwNzg0NjM0MzE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzg0NjM0MTE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2ZW50LmggKi87
IH07CiAJCTA3ODQ2Mzg1MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9tLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM4NDE0NUIxQjhF
MDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovOyB9OwogCQkwN0IwMTEzRjEwMzIyNDIyMDBG
QkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjAxMTNFMTAzMjI0MjIwMEZCREMzMyAvKiBB
Y2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oICovOyB9OworCQkwN0I1QTJEQjE0NjQzMjBBMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFj
a0xpc3QuY3BwICovOyB9OworCQkwN0I1QTJEQzE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJh
Y2tMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
N0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi87IH07CisJCTA3
QjVBMzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEMxNDY4N0Q3
MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgKi87IH07CisJCTA3QkRENkVD
MTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNF
IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgKi87IH07CiAJCTA4MDZFNTdBMTI4OTMwNDUwMDdD
RUQzMiAvKiBTVkdNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4MDZFNTc5MTI4OTMwNDUwMDdDRUQzMiAvKiBTVkdNYXRyaXguaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODBFNDkyNjEyNTVG
M0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODBFNDkyMjEyNTVGM0JEMDBFRkNB
MjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi87IH07CiAJCTA4MEU0OTI4MTI1
NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjQxMjU1RjNCRDAwRUZD
QTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmggKi87IH07CkBAIC03MTE1LDcgKzcx
MjAsOCBAQAogCQkwNzM1RUU2OTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByb3h5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBD
YWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc1Mzg2
MDExNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyYWNrRXZlbnRDdXN0
b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzY5NzA4NDE0NjNBRDg3MDBG
NTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3ODQ2
MzQwMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1RyYWNrRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTcxMjQsNiArNzEzMCwxMSBAQAogCQkwNzlGNUU0QjBGM0JFQkVBMDA1RTA3
ODIgLyogTWVkaWFQbGF5ZXJQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhUGxheWVyUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
N0FGRTU5MDBGMTQ0NkJEMDA4NDE2MTcgLyogbWVkaWFDb250cm9sc1F1aWNrVGltZS5jc3MgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IG1lZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNj
ZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDdCNUEyRDkxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RleHRUcmFja0xpc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTJEQTE0NjQzMjBBMDBBODFFQ0UgLyog
SlNUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4
dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTMwNjE0Njg1
MzcxMDBBODFFQ0UgLyogVGV4dFRyYWNrTGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VGV4dFRyYWNrTGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMzBB
MTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRy
YWNrTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1RleHRUcmFja0xpc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
ODA2RTU3OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR01hdHJpeC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwODBFNDkyMTEyNTVGM0JEMDBFRkNBMjcgLyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RleHRMYXlvdXRF
bmdpbmVCYXNlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MEU0OTIy
MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzgwNyw2ICsxNzgxOCw4IEBACiAJCQkJ
MDcwNzU2RDgxNDIzOUI0QjAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlLmggKi8sCiAJCQkJMDcw
NzU2RDkxNDIzOUI0QzAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5jcHAgKi8sCiAJCQkJ
MDcwNzU2REExNDIzOUI0RTAwNDE0MTYxIC8qIEpTVGV4dFRyYWNrQ3VlTGlzdC5oICovLAorCQkJ
CTA3QjVBMkQ5MTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwICovLAorCQkJ
CTA3QjVBMkRBMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuaCAqLywKIAkJCQlF
NDQ2MTQxMjBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQlFNDQ2
MTQxMzBDRDY4MjY5MDBGQURBNzUgLyogSlNUaW1lUmFuZ2VzLmggKi8sCiAJCQkJMDc4NDYzNDAx
NDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgKi8sCkBAIC0xODQ5NSw2ICsxODUw
OCw5IEBACiAJCUIxQUQ0RTc3MTNBMTJBNzIwMDg0NkIyNyAvKiB0cmFjayAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMDc2OTcwODQxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovLAorCQkJCTA3Njk3MDg1MTQ2M0FEODcwMEY1MDJD
RiAvKiBUZXh0VHJhY2tMaXN0LmggKi8sCisJCQkJMDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8q
IFRleHRUcmFja0xpc3QuaWRsICovLAogCQkJCTA3MDMzNEQ4MTQ1QTAwNkYwMDhEOEQ0NSAvKiBU
cmFja0Jhc2UuY3BwICovLAogCQkJCTA3MDMzNEQ2MTQ1OUZGRDUwMDhEOEQ0NSAvKiBUcmFja0Jh
c2UuaCAqLywKIAkJCQkwNzAzMzREMDE0NTlGRkFDMDA4RDhENDUgLyogVHJhY2tFdmVudC5jcHAg
Ki8sCkBAIC0xOTU2OSw3ICsxOTU4NSw2IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAv
KiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CUE4NUYyMjA4MTQzMDM3N0QwMDdDQzg4NCAvKiBKU1BvcFN0YXRlRXZlbnRDdXN0b20uY3BwICov
LAogCQkJCUJDMjc1Q0IyMTFDNUU4NUMwMEM5MjA2QyAvKiBKU0FycmF5QnVmZmVyQ3VzdG9tLmNw
cCAqLywKIAkJCQk4NjI0M0QwMDExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdI
ZWxwZXIuaCAqLywKIAkJCQlCQzJFRDZCQjBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9t
LmNwcCAqLywKQEAgLTE5NjY1LDYgKzE5NjgwLDcgQEAKIAkJCQlCQ0I3NzM2MDBDMTc4NTNEMDAx
MzJCQTQgLyogSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCAqLywKIAkJCQkxQTc1MEREMzBBOTBFNzI5
MDAwRkYyMTUgLyogSlNOb2RlSXRlcmF0b3JDdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjYxMEMx
N0FBNjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCAqLywKKwkJCQlBODVGMjIwODE0
MzAzNzdEMDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlFMUFE
MTJENTEyOTVEMEJEMDBBQ0E5ODkgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3Bw
ICovLAogCQkJCTQ5OThBRUQzMTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25G
cmFtZUNhbGxiYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQk5RkEzN0VFNjExNzJGQ0YwMDBDNENENTUg
LyogSlNTY3JpcHRQcm9maWxlTm9kZUN1c3RvbS5jcHAgKi8sCkBAIC0xOTY3OCw5ICsxOTY5NCwx
MCBAQAogCQkJCTA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5j
cHAgKi8sCiAJCQkJQjJDOTZEOEMwQjNBRjJCNzAwNUU4MEVDIC8qIEpTU1ZHUGF0aFNlZ0N1c3Rv
bS5jcHAgKi8sCiAJCQkJMUEyQzQwQUEwREVCNTVBQTAwNUFGMTlFIC8qIEpTVGV4dEN1c3RvbS5j
cHAgKi8sCisJCQkJMDdCNUEzMEMxNDY4N0Q3MTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1
c3RvbS5jcHAgKi8sCiAJCQkJMDcwMzM0RTgxNDVBMUYzNTAwOEQ4RDQ1IC8qIEpTVHJhY2tDdXN0
b20uY3BwICovLAogCQkJCTA3ODQ2Mzg0MTQ1QjFCOEUwMEE1OERGMSAvKiBKU1RyYWNrQ3VzdG9t
LmggKi8sCi0JCQkJMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tFdmVudEN1c3Rv
bS5jcHAgKi8sCisJCQkJMDdCNUEzMEExNDY4N0I4NDAwQTgxRUNFIC8qIEpTVHJhY2tFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtl
ckN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzcxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDE2
QXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1Vp
bnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKQEAgLTI0NjM5LDYgKzI0NjU2LDggQEAKIAkJCQkzMTY5
Mzc5QzE0NjA5QzZDMDBDMDEzNjIgLyogRHJhZ1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNBRTlGOTEwMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1ZhbHVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzZGMzZFQjE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRy
YWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8q
IEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEzNDQ5NkUxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NEQyREE1
MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwpAQCAtMjc0OTEsNyArMjc1MTAsNiBAQAogCQkJCTA3MDMzNEQ5MTQ1QTAwNkYwMDhEOEQ0NSAv
KiBUcmFja0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwMzM0RTkxNDVBMUYzNjAwOEQ4
RDQ1IC8qIEpTVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDc4NDYzNDIxNDVC
MTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwNzY4
OUQ2RTE0NUI1MkNDMDAxQ0QxMzIgLyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOEZFQkRDMTQzRTNFRjcwMDcyNTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1h
Z2VDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDQUU5RjkwRjE0NjQ0MUYwMDBDMjQ1QjAg
LyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDk5LDYgKzI3
NTE3LDEwIEBACiAJCQkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREVBNzYzNTE0NjBCNzFBMDA4QjMxRjEgLyogQ2xvY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc2RjM2RUExNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3Vy
aXR5Q29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDc2OTcwODYxNDYzQUQ4NzAwRjUw
MkNGIC8qIFRleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisgCQkJCTA3QjVBMkRCMTQ2
NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisgCQkJ
CTA3QjVBMzBEMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisgCQkJCTA3QkRENkVDMTQ2OUI0QzIwMDlDOUY4NSAvKiBKU1RyYWNrRXZl
bnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEzNDQ5NkQxNDY5NDFCMzAwNzIwMzEy
IC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0RDJEQTQxNDZB
NTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC00MDksMTIgKzQwOSwxNSBAQCBlbmRpZgog
aWYgRU5BQkxFX1ZJREVPX1RSQUNLCiB3ZWJraXRndGtfYnVpbHRfaF9hcGkgKz0gXAogCSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrLmggXAor
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNr
TGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERP
TVRleHRUcmFja0N1ZS5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0
L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuaCBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50LmgKIHdlYmtpdGd0a19nZG9tX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2su
Y3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5o
IFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZS5oIFwK
IAlEZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmNwcCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZhdGUuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxpc3QuY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVy
RmFjdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAkocmV2aXNpb24gOTk2OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBl
ckZhY3RvcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDcgQEAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZUxp
c3RQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRleHRUcmFja0N1ZVByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrTGlzdFByaXZhdGUuaCIK
ICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01UcmFja0V2ZW50UHJpdmF0ZS5oIgogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJl
dmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0Fs
bEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBACiAjaW5jbHVkZSAi
SlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRMaXN0Q3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU1RleHRDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVGV4dFRyYWNr
TGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNUb3VjaEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNUb3VjaExpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVHJhY2tDdXN0b20uY3BwIgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RD
dXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNU
ZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNp
bmNsdWRlICJKU1RleHRUcmFja0xpc3QuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEpTVGV4dFRyYWNrTGlzdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIEpTVGV4dFRyYWNrTGlzdCoganNUZXh0VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8SlNU
ZXh0VHJhY2tMaXN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBUZXh0VHJhY2tMaXN0
KiB0ZXh0VHJhY2tMaXN0ID0gc3RhdGljX2Nhc3Q8VGV4dFRyYWNrTGlzdCo+KGpzVGV4dFRyYWNr
TGlzdC0+aW1wbCgpKTsKKworICAgIGlmICh0ZXh0VHJhY2tMaXN0LT5oYXNFdmVudExpc3RlbmVy
cygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoanNUZXh0VHJhY2tMaXN0LT5oYXND
dXN0b21Qcm9wZXJ0aWVzKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIHZp
c2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodGV4dFRyYWNrTGlzdC0+b3duZXIoKSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYg
KzIxLDcgQEAgUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRX
b3JrZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29u
ZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1T
VkcKK1RleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25k
aXRpb25hbD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBS
ZXF1ZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0Vs
ZW1lbnQ+IEhUTUxBdWRpb0VsCiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBp
ZiAoIXNyYy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAg
IGF1ZGlvLT5zY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1M
TWVkaWFFbGVtZW50OjpNZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJl
bGVhc2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMTk4LDYgKzE5OSw5IEBAIEhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICwg
bV9hdWRpb1NvdXJjZU5vZGUoMCkKICNlbmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICAsIG1fdGV4dFRyYWNrcygwKQorI2VuZGlmCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlh
RWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCIpOwogICAgIGRvY3VtZW50LT5yZWdpc3RlckZvckRv
Y3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKQEAgLTIyNSw4ICsyMjksMTIgQEAgSFRN
TE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGRvY3VtZW50KCktPnVucmVn
aXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyh0aGlzKTsKICAgICBkb2N1bWVudCgpLT51bnJl
Z2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0
VHJhY2tzLnNpemUoKTsgKytpKQotICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgw
KTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyT3du
ZXIoKTsKKyAgICBpZiAobV90ZXh0VHJhY2tzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3RleHRU
cmFja3MtPml0ZW0oaSktPmNsZWFyQ2xpZW50KCk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTI2
OCw3ICsyNzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoCiAg
ICAgaWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgLy8gVHJpZ2dlciBhIHJlbG9h
ZCwgYXMgbG9uZyBhcyB0aGUgJ3NyYycgYXR0cmlidXRlIGlzIHByZXNlbnQuCiAgICAgICAgIGlm
ICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNjaGVkdWxl
TG9hZCgpOworICAgICAgICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gY29udHJvbHNBdHRyKQogICAgICAgICBjb25maWd1cmVNZWRp
YUNvbnRyb2xzKCk7CiB9CkBAIC0zODEsMTAgKzM4OSwxMCBAQCBSZW5kZXJPYmplY3QqIEhUTUxN
ZWRpYUVsZW1lbnQ6OmNyZWF0ZVJlCiAgCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCkKIHsKLSAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50Iik7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQiKTsKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoKTsKICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbV9uZXR3
b3JrU3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAg
ICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCkKQEAgLTQyMywxNyArNDMxLDI2IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3QKICAgICAgICAgcmVuZGVyZXIoKS0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxv
YWQoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoTG9hZFR5cGUgbG9hZFR5
cGUpCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2FkIik7
CisKKyAgICBpZiAoKGxvYWRUeXBlICYgTWVkaWFSZXNvdXJjZSkgJiYgIShtX3BlbmRpbmdMb2Fk
RmxhZ3MgJiBNZWRpYVJlc291cmNlKSkgewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQotICAgIGNyZWF0ZU1lZGlhUGxheWVyUHJveHkoKTsKKyAgICAgICAgY3JlYXRlTWVkaWFQ
bGF5ZXJQcm94eSgpOwogI2VuZGlmCisgICAgICAgIAorICAgICAgICBwcmVwYXJlRm9yTG9hZCgp
OworICAgICAgICBtX3BlbmRpbmdMb2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKKyAgICB9CiAK
LSAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHBy
ZXBhcmVGb3JMb2FkKCk7Ci0gICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobG9hZFR5cGUgJiBUZXh0VHJhY2tSZXNvdXJjZSkK
KyAgICAgICAgbV9wZW5kaW5nTG9hZEZsYWdzIHw9IFRleHRUcmFja1Jlc291cmNlOworI2VuZGlm
CisKKyAgICBpZiAoIW1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbG9hZFRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU5l
eHRTb3VyY2VDaGlsZCgpCkBAIC00NzQsMTAgKzQ5MSwxOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmFzeW5jRXZlbnRUaW1lckZpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVy
RmlyZWQoVGltZXI8SFRNTE1lZGlhRWxlbWVudD4qKQogewotICAgIGlmIChtX2xvYWRTdGF0ZSA9
PSBMb2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCi0gICAgICAgIGxvYWROZXh0U291cmNlQ2hpbGQo
KTsKLSAgICBlbHNlCi0gICAgICAgIGxvYWRJbnRlcm5hbCgpOworICAgIGlmIChtX3BlbmRpbmdM
b2FkRmxhZ3MgJiBNZWRpYVJlc291cmNlKSB7CisgICAgICAgIGlmIChtX2xvYWRTdGF0ZSA9PSBM
b2FkaW5nRnJvbVNvdXJjZUVsZW1lbnQpCisgICAgICAgICAgICBsb2FkTmV4dFNvdXJjZUNoaWxk
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvYWRJbnRlcm5hbCgpOworICAgIH0KKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAobV9wZW5kaW5nTG9hZEZsYWdzICYgVGV4
dFRyYWNrUmVzb3VyY2UpCisgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKKyNlbmRpZgor
CisgICAgbV9wZW5kaW5nTG9hZEZsYWdzID0gMDsKIH0KIAogUGFzc1JlZlB0cjxNZWRpYUVycm9y
PiBIVE1MTWVkaWFFbGVtZW50OjplcnJvcigpIGNvbnN0IApAQCAtNjMzLDkgKzY1OSw2IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKICAgICByZW1vdmVCZWhhdmlvclJl
c3RyaWN0aW9uKFJlcXVpcmVQYWdlQ29uc2VudFRvTG9hZE1lZGlhUmVzdHJpY3Rpb24pOwogCiAg
ICAgc2VsZWN0TWVkaWFSZXNvdXJjZSgpOwotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBs
b2FkVGV4dFRyYWNrcygpOwotI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2Vs
ZWN0TWVkaWFSZXNvdXJjZSgpCkBAIC04MzcsMjggKzg2MCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bG9hZFJlc291cmNlKGNvbnMKIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLXZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRleHRUcmFja3MoKQotewotICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0g
bm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFj
a1RhZykpCi0gICAgICAgICAgICBsb2FkTmV4dFRleHRUcmFjayhzdGF0aWNfY2FzdDxIVE1MVHJh
Y2tFbGVtZW50Kj4obm9kZSkpOwotICAgIH0KLX0KLQotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojps
b2FkTmV4dFRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKLXsKLSAgICAvLyBGSVhN
RSg3MTEyNCk6IFRoaXMgc2hvdWxkIHNjaGVkdWxlIGFuICphc3luY2hyb25vdXMqIGxvYWQuCi0g
ICAgdHJhY2stPmxvYWQoQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IHRoaXMpOwotICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IHRyYWNrLT50cmFjaygp
OwotICAgIGlmICh0ZXh0VHJhY2spCi0gICAgICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQodGV4dFRy
YWNrLnJlbGVhc2UoKSk7Ci0gICAgCi0gICAgLy8gRklYTUUoNzExMjMpOiBTZXQgdGhlIHRleHQg
dHJhY2sgbW9kZSBhY2NvcmRpbmdseS4KLX0KLQogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKQogewogICAgIC8vIEZJWE1FKDYyODg1
KTogSW1wbGVtZW50LgpAQCAtODY5LDExICs4NzAsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja01vZGVDaGFuCiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCiB9CiAK
LXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKQotewot
ICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCop
IAogewogICAgIC8vIEZJWE1FKDYyODg1KTogSW1wbGVtZW50LgpAQCAtODk2LDcgKzg5Miw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3UKIAogI2VuZGlmCiAKLWJv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwgSW52
YWxpZFNvdXJjZUFjdGlvbiBhY3Rpb25JZkludmFsaWQpCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6
OmlzU2FmZVRvTG9hZFVSTChjb25zdCBLVVJMJiB1cmwsIEludmFsaWRVUkxBY3Rpb24gYWN0aW9u
SWZJbnZhbGlkKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSkgewogICAgICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIGJlY2F1
c2UgdXJsIGlzIGludmFsaWQiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CkBA
IC05MTEsOCArOTA3LDEwIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJM
KGMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghZG9jdW1lbnQoKS0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93TWVkaWFGcm9tU291cmNlKHVybCkpCisgICAg
aWYgKCFkb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21T
b3VyY2UodXJsKSkgeworICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1Nh
ZmVUb0xvYWRVUkwoJXMpIC0+IHJlamVjdGVkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5Iiwg
dXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xNjcwLDcgKzE2NjgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXlJbnRlcm5hbCgpCiAKICAgICAvLyA0LjguMTAuOS4gUGxh
eWluZyB0aGUgbWVkaWEgcmVzb3VyY2UKICAgICBpZiAoIW1fcGxheWVyIHx8IG1fbmV0d29ya1N0
YXRlID09IE5FVFdPUktfRU1QVFkpCi0gICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICBz
Y2hlZHVsZUxvYWQoTWVkaWFSZXNvdXJjZSk7CiAKICAgICBpZiAoZW5kZWRQbGF5YmFjaygpKSB7
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgdW51c2VkOwpAQCAtMTcwOSw3ICsxNzA3LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45LiBQ
bGF5aW5nIHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3Jr
U3RhdGUgPT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAg
IHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAgIG1fYXV0b3BsYXlpbmcgPSBmYWxz
ZTsKICAgICAKQEAgLTE5ODksNDEgKzE5ODcsMTE3IEBAIGZsb2F0IEhUTUxNZWRpYUVsZW1lbnQ6
OnBlcmNlbnRMb2FkZWQoKSAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiBQYXNzUmVmUHRyPFRl
eHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQogeworICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBGSVhNRSg3MTkxNSk6IGFkZFRyYWNrIHNob3VsZCB0aHJv
dyBhIFN5bnRheEVycm9yIGV4Y2VwdGlvbiBpZiAna2luZCcgaXMgYW4gdW5rbm93biB2YWx1ZS4K
ICAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSBUZXh0VHJhY2s6OmNyZWF0ZSh0aGlz
LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpOwotICAgIG1fdGV4dFRyYWNrcy5hcHBlbmQodGV4dFRy
YWNrKTsKKyAgICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsKICAgICByZXR1cm4gdGV4dFRyYWNr
LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2soUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQoreworICAgIGlmICghbV90ZXh0VHJhY2tz
KQorICAgICAgICBtX3RleHRUcmFja3MgPSBUZXh0VHJhY2tMaXN0OjpjcmVhdGUodGhpcywgQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIG1fdGV4dFRyYWNr
cy0+YXBwZW5kKHRyYWNrKTsKKworICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKK30KKwordm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKK3sKKyAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQg
dHJhY2tzCisgICAgCisgICAgLy8gV2hlbiBhIHRleHQgdHJhY2sgY29ycmVzcG9uZGluZyB0byBh
IHRyYWNrIGVsZW1lbnQgaXMgYWRkZWQgdG8gYSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0
IHRyYWNrcywKKyAgICAvLyB0aGUgdXNlciBhZ2VudCBtdXN0IHNldCB0aGUgdGV4dCB0cmFjayBt
b2RlIGFwcHJvcHJpYXRlbHksIGFzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgorICAgIAorICAgIC8vICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBzdWJ0aXRsZXMg
b3IgY2FwdGlvbnMgYW5kIHRoZSB1c2VyIGhhcyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2
aW5nIGEKKyAgICAvLyB0cmFjayB3aXRoIHRoaXMgdGV4dCB0cmFjayBraW5kLCB0ZXh0IHRyYWNr
IGxhbmd1YWdlLCBhbmQgdGV4dCB0cmFjayBsYWJlbCBlbmFibGVkLCBhbmQgdGhlcmUgaXMgbm8K
KyAgICAvLyBvdGhlciB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0
ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGVpdGhlciBzdWJ0aXRsZXMKKyAg
ICAvLyBvciBjYXB0aW9ucyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZworICAgIC8v
ICogSWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBkZXNjcmlwdGlvbnMgYW5kIHRoZSB1c2VyIGhh
cyBpbmRpY2F0ZWQgYW4gaW50ZXJlc3QgaW4gaGF2aW5nIHRleHQgCisgICAgLy8gZGVzY3JpcHRp
b25zIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGxhbmd1YWdlIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVu
YWJsZWQsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0IAorICAgIC8vIHRyYWNrIGluIHRoZSBt
ZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aXRoIGEgdGV4dCB0cmFjayBraW5k
IG9mIGRlc2NyaXB0aW9ucyB3aG9zZSB0ZXh0IAorICAgIC8vIHRyYWNrIG1vZGUgaXMgc2hvd2lu
ZworICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIHNob3dpbmcuCisgICAgLy8g
ICAgSWYgdGhlcmUgaXMgYSB0ZXh0IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBv
ZiB0ZXh0IHRyYWNrcyB3aG9zZSB0ZXh0IHRyYWNrIG1vZGUgaXMgc2hvd2luZyAKKyAgICAvLyAg
ICBieSBkZWZhdWx0LCB0aGUgdXNlciBhZ2VudCBtdXN0IGZ1cnRoZXJtb3JlIGNoYW5nZSB0aGF0
IHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIG1vZGUgdG8gaGlkZGVuLgorICAgIAorICAgIC8vICog
SWYgdGhlIHRleHQgdHJhY2sga2luZCBpcyBjaGFwdGVycyBhbmQgdGhlIHRleHQgdHJhY2sgbGFu
Z3VhZ2UgaXMgb25lIHRoYXQgdGhlIHVzZXIgYWdlbnQgaGFzIHJlYXNvbgorICAgIC8vIHRvIGJl
bGlldmUgaXMgYXBwcm9wcmlhdGUgZm9yIHRoZSB1c2VyLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIg
dGV4dCB0cmFjayBpbiB0aGUgbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YKKyAgICAvLyB0ZXh0IHRy
YWNrcyB3aXRoIGEgdGV4dCB0cmFjayBraW5kIG9mIGNoYXB0ZXJzIHdob3NlIHRleHQgdHJhY2sg
bW9kZSBpcyBzaG93aW5nCisgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hv
d2luZy4KKyAgICAKKyAgICAvLyAqIElmIHRoZSB0cmFjayBlbGVtZW50IGhhcyBhIGRlZmF1bHQg
YXR0cmlidXRlIHNwZWNpZmllZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgdHJhY2sgaW4g
dGhlIG1lZGlhCisgICAgLy8gZWxlbWVudCdzIGxpc3Qgb2YgdGV4dCB0cmFja3Mgd2hvc2UgdGV4
dCB0cmFjayBtb2RlIGlzIHNob3dpbmcgb3Igc2hvd2luZyBieSBkZWZhdWx0CisgICAgLy8gICAg
TGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZyBieSBkZWZhdWx0LgorICAgIAorICAg
IC8vIE90aGVyd2lzZQorICAgIC8vICAgIExldCB0aGUgdGV4dCB0cmFjayBtb2RlIGJlIGRpc2Fi
bGVkLgorICAgIAorICAgIC8vIEZJWE1FKDcxMTIzKTogVW50aWwgdGhlIGFib3ZlIGxvZ2ljIGhh
cyBiZWVuIGltcGxlbWVudGVkLCBqdXN0IHRlbGwgYWxsIHRleHQgdHJhY2tzIHRvIGxvYWQuCisg
ICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykpCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxIVE1MVHJhY2tFbGVtZW50Kj4obm9kZSktPnNjaGVkdWxl
TG9hZCgpOworICAgIH0KK30KKworVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrcygpIGNvbnN0IAogeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobV90
ZXh0VHJhY2tzKQorICAgICAgICByZXR1cm4gbV90ZXh0VHJhY2tzLmdldCgpOworCisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZChIVE1MVHJh
Y2tFbGVtZW50KiB0cmFja0VsZW1lbnQpCit7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKICNpZiAh
TE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAg
ICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsK
KyAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBL
VVJMIHVybCA9IHRyYWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0cik7
CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQgLSAn
c3JjJyBpcyAlcyIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAj
ZW5kaWYKLSAgICBsb2FkTmV4dFRleHRUcmFjayh0cmFjayk7CisKKyAgICAvLyA0LjguMTAuMTIu
MyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIFdoZW4gYSB0cmFjayBl
bGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQgdGhlIG5ldyBwYXJlbnQgaXMgYSBt
ZWRpYSBlbGVtZW50LCAKKyAgICAvLyB0aGVuIHRoZSB1c2VyIGFnZW50IG11c3QgYWRkIHRoZSB0
cmFjayBlbGVtZW50J3MgY29ycmVzcG9uZGluZyB0ZXh0IHRyYWNrIHRvIHRoZSAKKyAgICAvLyBt
ZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyAuLi4gW2NvbnRpbnVlcyBpbiBUZXh0
VHJhY2tMaXN0OjphcHBlbmRdCisgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJh
Y2tFbGVtZW50LT50cmFjaygpOworICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICByZXR1cm47
CisgICAgYWRkVGV4dFRyYWNrKHRleHRUcmFjayk7ICAgIAorICAgIHNjaGVkdWxlTG9hZChUZXh0
VHJhY2tSZXNvdXJjZSk7CiB9CiAgCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJl
UmVtb3ZlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dHJhY2tXaWxsQmVSZW1vdmVkKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKIHsKICNp
ZiAhTE9HX0RJU0FCTEVECi0gICAgaWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewot
ICAgICAgICBLVVJMIHVybCA9IHRyYWNrLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRy
KTsKKyAgICBpZiAodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAg
ICBLVVJMIHVybCA9IHRyYWNrRWxlbWVudC0+Z2V0Tm9uRW1wdHlVUkxBdHRyaWJ1dGUoc3JjQXR0
cik7CiAgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVt
b3ZlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIH0KICNlbmRpZgotfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrU291cmNlQ2hh
bmdlZChIVE1MVHJhY2tFbGVtZW50KiB0cmFjaykKLXsKLSNpZiAhTE9HX0RJU0FCTEVECi0gICAg
aWYgKHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgewotICAgICAgICBLVVJMIHVybCA9IHRy
YWNrLT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKLSAgICAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tTb3VyY2VDaGFuZ2VkIC0gJ3NyYycgaXMgJXMiLCB1
cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgfQotI2VuZGlmCi0gICAgbG9h
ZE5leHRUZXh0VHJhY2sodHJhY2spOworICAgIFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9
IHRyYWNrRWxlbWVudC0+dHJhY2soKTsKKyAgICBpZiAoIXRleHRUcmFjaykKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFj
a3MKKyAgICAvLyBXaGVuIGEgdHJhY2sgZWxlbWVudCdzIHBhcmVudCBlbGVtZW50IGNoYW5nZXMg
YW5kIHRoZSBvbGQgcGFyZW50IHdhcyBhIG1lZGlhIGVsZW1lbnQsIAorICAgIC8vIHRoZW4gdGhl
IHVzZXIgYWdlbnQgbXVzdCByZW1vdmUgdGhlIHRyYWNrIGVsZW1lbnQncyBjb3JyZXNwb25kaW5n
IHRleHQgdHJhY2sgZnJvbSB0aGUgCisgICAgLy8gbWVkaWEgZWxlbWVudCdzIGxpc3Qgb2YgdGV4
dCB0cmFja3MuCisgICAgbV90ZXh0VHJhY2tzLT5yZW1vdmUodGV4dFRyYWNrKTsKIH0KICNlbmRp
ZgogCkBAIC0yMDQyLDcgKzIxMTYsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmhhdmVQb3Rl
bnRpYWxTb3VyCiAgICAgcmV0dXJuIG5leHRVUkwuaXNWYWxpZCgpOwogfQogCi1LVVJMIEhUTUxN
ZWRpYUVsZW1lbnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5
cGUsIEludmFsaWRTb3VyY2VBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQorS1VSTCBIVE1MTWVkaWFF
bGVtZW50OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUgKmNvbnRlbnRUeXBlLCBJ
bnZhbGlkVVJMQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKIHsKICNpZiAhTE9HX0RJU0FCTEVECiAg
ICAgLy8gRG9uJ3QgbG9nIGlmIHRoaXMgd2FzIGp1c3QgY2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRo
ZXJlIGFyZSBhbnkgdmFsaWQgPHNvdXJjZT4gZWxlbWVudHMuCkBAIC0yMTU0LDcgKzIyMjgsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKEhUCiAgICAgLy8gYXR0cmli
dXRlIGFuZCB3aG9zZSBuZXR3b3JrU3RhdGUgaGFzIHRoZSB2YWx1ZSBORVRXT1JLX0VNUFRZLCB0
aGUgdXNlciBhZ2VudCBtdXN0IGludm9rZSAKICAgICAvLyB0aGUgbWVkaWEgZWxlbWVudCdzIHJl
c291cmNlIHNlbGVjdGlvbiBhbGdvcml0aG0uCiAgICAgaWYgKG5ldHdvcmtTdGF0ZSgpID09IEhU
TUxNZWRpYUVsZW1lbnQ6Ok5FVFdPUktfRU1QVFkpIHsKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7
CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRpYVJlc291cmNlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlz
aW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAgY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKIGNs
YXNzIE1lZGlhQ29udHJvbHM7CiBjbGFzcyBNZWRpYUVycm9yOwogY2xhc3MgS1VSTDsKK2NsYXNz
IFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgVWludDhBcnJheTsKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTg5LDcgKzkwLDExIEBAIHB1Ymxp
YzoKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKIAot
ICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7CisgICAgZW51bSBMb2FkVHlwZSB7CisgICAgICAgIE1l
ZGlhUmVzb3VyY2UgPSAxIDw8IDAsCisgICAgICAgIFRleHRUcmFja1Jlc291cmNlID0gMSA8PCAx
CisgICAgfTsKKyAgICB2b2lkIHNjaGVkdWxlTG9hZChMb2FkVHlwZSk7CiAgICAgCiAgICAgTWVk
aWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0OwogICAgIApAQCAt
MTgxLDkgKzE4NiwyMCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAg
UGFzc1JlZlB0cjxUZXh0VHJhY2s+IGFkZFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCA9ICIiLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlID0gIiIpOworICAgIFRl
eHRUcmFja0xpc3QqIHRleHRUcmFja3MoKSBjb25zdDsKKworICAgIHZvaWQgYWRkVGV4dFRyYWNr
KFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tXYXNBZGRl
ZChIVE1MVHJhY2tFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHRyYWNrV2lsbEJlUmVtb3Zl
ZChIVE1MVHJhY2tFbGVtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRyYWNrU291cmNlQ2hhbmdl
ZChIVE1MVHJhY2tFbGVtZW50Kik7CisKKyAgICAvLyBUZXh0VHJhY2tDbGllbnQKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmly
dHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRUcmFjayopOworICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25z
dCBUZXh0VHJhY2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShU
ZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCkBAIC0yMzAsNiAr
MjQ2LDkgQEAgcHVibGljOgogICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJv
dmlkZXIoKTsKICNlbmRpZgogCisgICAgZW51bSBJbnZhbGlkVVJMQWN0aW9uIHsgRG9Ob3RoaW5n
LCBDb21wbGFpbiB9OworICAgIGJvb2wgaXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmLCBJbnZh
bGlkVVJMQWN0aW9uKTsKKwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVu
dCgpOwpAQCAtMzQ5LDIzICszNjgsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdhaXRGb3JTb3Vy
Y2VDaGFuZ2UoKTsKICAgICB2b2lkIHByZXBhcmVUb1BsYXkoKTsKIAotICAgIGVudW0gSW52YWxp
ZFNvdXJjZUFjdGlvbiB7IERvTm90aGluZywgQ29tcGxhaW4gfTsKLSAgICBib29sIGlzU2FmZVRv
TG9hZFVSTChjb25zdCBLVVJMJiwgSW52YWxpZFNvdXJjZUFjdGlvbik7Ci0gICAgS1VSTCBzZWxl
Y3ROZXh0U291cmNlQ2hpbGQoQ29udGVudFR5cGUqLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKKyAg
ICBLVVJMIHNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIEludmFsaWRVUkxBY3Rp
b24pOwogICAgIHZvaWQgbWVkaWFMb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3Rh
dGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHZvaWQgbG9hZFRleHRUcmFja3Mo
KTsKLSAgICB2b2lkIGxvYWROZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqKTsKLQotICAg
IC8vIFRleHRUcmFja0NsaWVudAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRl
Q2hhbmdlZChUZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5n
ZWQoVGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQoVGV4dFRy
YWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29u
c3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVD
dWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVm
UHRyPFRleHRUcmFja0N1ZT4pOworICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygpOwogI2Vu
ZGlmCiAKICAgICAvLyBUaGVzZSAiaW50ZXJuYWwiIGZ1bmN0aW9ucyBkbyBub3QgY2hlY2sgdXNl
ciBnZXN0dXJlIHJlc3RyaWN0aW9ucy4KQEAgLTQ3MSw2ICs0NzgsOSBAQCBwcml2YXRlOgogICAg
IG11dGFibGUgZmxvYXQgbV9jYWNoZWRUaW1lOwogICAgIG11dGFibGUgZG91YmxlIG1fY2FjaGVk
VGltZVdhbGxDbG9ja1VwZGF0ZVRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9taW5pbXVtV2Fs
bENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWU7CisgICAgCisgICAgdHlwZWRlZiB1bnNpZ25lZCBQ
ZW5kaW5nTG9hZEZsYWdzOworICAgIFBlbmRpbmdMb2FkRmxhZ3MgbV9wZW5kaW5nTG9hZEZsYWdz
OwogCiAgICAgYm9vbCBtX3BsYXlpbmcgOiAxOwogICAgIGJvb2wgbV9pc1dhaXRpbmdVbnRpbE1l
ZGlhQ2FuU3RhcnQgOiAxOwpAQCAtNTE0LDcgKzUyNCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBt
X3RleHRUcmFja3M7CisgICAgUmVmUHRyPFRleHRUcmFja0xpc3Q+IG1fdGV4dFRyYWNrczsKICNl
bmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBtb2R1bGUgaHRtbCB7CiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RSQUNLCiAg
ICAgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrIGFkZFRyYWNr
KGluIERPTVN0cmluZyBraW5kLCBpbiBbT3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09w
dGlvbmFsXSBET01TdHJpbmcgbGFuZ3VhZ2UpOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5h
YmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tMaXN0IHRleHRUcmFja3M7
CiAjZW5kaWYKIH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNj
cmlwdEV2ZW50TGlzdGVuZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTQyLDYgKzQz
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogaW5saW5lIEhUTUxUcmFja0VsZW1l
bnQ6OkhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAg
LCBtX3RyYWNrKDApCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRy
YWNrRWxlbWVudCAtICVwIiwgdGhpcyk7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUodHJhY2tUYWcp
KTsKQEAgLTQ5LDYgKzUxLDggQEAgaW5saW5lIEhUTUxUcmFja0VsZW1lbnQ6OkhUTUxUcmFja0Vs
ZW1lbgogCiBIVE1MVHJhY2tFbGVtZW50Ojp+SFRNTFRyYWNrRWxlbWVudCgpCiB7CisgICAgaWYg
KG1fdHJhY2spCisgICAgICAgIG1fdHJhY2stPmNsZWFyQ2xpZW50KCk7CiB9CiAKIFBhc3NSZWZQ
dHI8SFRNTFRyYWNrRWxlbWVudD4gSFRNTFRyYWNrRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKQEAgLTU5LDE2ICs2MywxNiBA
QCBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IEhUTUxUcmFja0VsCiB2b2lkIEhUTUxUcmFj
a0VsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoYm9vbCBkZWVwKQogewogICAgIEhUTUxFbGVtZW50
OjppbnNlcnRlZEludG9UcmVlKGRlZXApOwotICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVs
ZW1lbnQoKTsKLSAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRpYUVsZW1lbnQoKSkKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPnRyYWNr
V2FzQWRkZWQodGhpcyk7CisKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCisgICAgICAgIHBhcmVudC0+dHJhY2tXYXNBZGRlZCh0aGlzKTsKIH0KIAog
dm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp3aWxsUmVtb3ZlKCkKIHsKLSAgICBFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFF
bGVtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnRO
b2RlKCkpLT50cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CisgICAgaWYgKEhUTUxNZWRpYUVsZW1l
bnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICBwYXJlbnQtPnRyYWNrV2lsbEJl
UmVtb3ZlZCh0aGlzKTsKKwogICAgIEhUTUxFbGVtZW50Ojp3aWxsUmVtb3ZlKCk7CiB9CiAKQEAg
LTkwLDggKzk0LDggQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKAog
CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyLT5uYW1lKCk7CiAgICAg
aWYgKGF0dHJOYW1lID09IHNyY0F0dHIpIHsKLSAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3Jj
QXR0cikuaXNFbXB0eSgpICYmIHBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpLT50cmFja1NvdXJjZUNoYW5nZWQodGhp
cyk7CisgICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0dHIpLmlzRW1wdHkoKSAmJiBtZWRp
YUVsZW1lbnQoKSkKKyAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwogICAgIH0KIH0KIApAQCAt
MTM3LDcgKzE0MSw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2V0TGFiZWwoY29uc3QgU3QK
IAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc0RlZmF1bHQoKSBjb25zdAogewotICAgIHJldHVy
biBoYXNBdHRyaWJ1dGUoZGVmYXVsdEF0dHIpOworICAgIHJldHVybiBmYXN0SGFzQXR0cmlidXRl
KGRlZmF1bHRBdHRyKTsKIH0KIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRJc0RlZmF1bHQo
Ym9vbCBpc0RlZmF1bHQpCkBAIC0xNDUsMTEgKzE0OSwxOSBAQCB2b2lkIEhUTUxUcmFja0VsZW1l
bnQ6OnNldElzRGVmYXVsdChib29sCiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShkZWZhdWx0QXR0
ciwgaXNEZWZhdWx0KTsKIH0KIAotVGV4dFRyYWNrKiBIVE1MVHJhY2tFbGVtZW50Ojp0cmFjaygp
IGNvbnN0CitMb2FkYWJsZVRleHRUcmFjayogSFRNTFRyYWNrRWxlbWVudDo6ZW5zdXJlVHJhY2so
KQogewotICAgIGlmIChtX3RyYWNrKQotICAgICAgICByZXR1cm4gbV90cmFjay5nZXQoKTsKLSAg
ICByZXR1cm4gMDsKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFtX3RyYWNrKQor
ICAgICAgICBtX3RyYWNrID0gTG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSh0aGlzLCBraW5kKCks
IGxhYmVsKCksIHNyY2xhbmcoKSwgaXNEZWZhdWx0KCkpOworICAgIHJldHVybiBtX3RyYWNrLmdl
dCgpOworfQorCitUZXh0VHJhY2sqIEhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKCkKK3sKKyAgICBy
ZXR1cm4gZW5zdXJlVHJhY2soKTsKIH0KIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojppc1VSTEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHJpYnV0ZSkgY29uc3QKQEAgLTE1NywxOSArMTY5LDc5IEBA
IGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXQKICAgICByZXR1cm4gYXR0
cmlidXRlLT5uYW1lKCkgPT0gc3JjQXR0cjsKIH0KIAotdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojps
b2FkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogdHJh
Y2tDbGllbnQpCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiB7Ci0gICAg
bV90cmFjayA9IExvYWRhYmxlVGV4dFRyYWNrOjpjcmVhdGUodHJhY2tDbGllbnQsIHRoaXMsIGtp
bmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgaWYgKCFtZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGhhc0F0dHJpYnV0ZShzcmNBdHRy
KSkKLSAgICAgICAgbV90cmFjay0+bG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRy
KSwgY29udGV4dCk7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKHNyY0F0dHIpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBlbnN1cmVUcmFjaygpLT5zY2hlZHVsZUxvYWQoZ2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cikpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRU
cmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIGxvYWRpbmdGYWls
ZWQpCitib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sq
LCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVk
aWFFbGVtZW50KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghcGFyZW50LT5pc1NhZmVUb0xvYWRVUkwodXJsLCBIVE1MTWVkaWFFbGVtZW50OjpD
b21wbGFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gZGlzcGF0
Y2hCZWZvcmVMb2FkRXZlbnQodXJsLnN0cmluZygpKTsKK30KKwordm9pZCBIVE1MVHJhY2tFbGVt
ZW50OjpkaWRDb21wbGV0ZUxvYWQoTG9hZGFibGVUZXh0VHJhY2sqLCBib29sIGxvYWRpbmdGYWls
ZWQpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGxvYWRpbmdGYWlsZWQgPyBldmVudE5hbWVzKCkuZXJyb3JFdmVudCA6IGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKIH0KKyAgICAKK3ZvaWQgSFRN
TFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKiB0cmFj
aykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKHRyYWNr
KTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTW9kZUNoYW5nZWQo
VGV4dFRyYWNrKiB0cmFjaykKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0g
bWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja01vZGVDaGFu
Z2VkKHRyYWNrKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrQWRk
Q3VlcyhUZXh0VHJhY2sqIHRyYWNrLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKQorewor
ICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0cmFjaywgY3Vlcyk7Cit9CisgICAg
Cit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiB0
cmFjaywgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcykKK3sKKyAgICBpZiAoSFRNTE1lZGlh
RWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQt
PnRleHRUcmFja0FkZEN1ZXModHJhY2ssIGN1ZXMpOworfQorICAgIAordm9pZCBIVE1MVHJhY2tF
bGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiB0cmFjaywgUGFzc1JlZlB0cjxUZXh0
VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVk
aWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRleHRUcmFja0FkZEN1ZSh0cmFj
aywgY3VlKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3Zl
Q3VlKFRleHRUcmFjayogdHJhY2ssIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUpCit7Cisg
ICAgaWYgKEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gcGFyZW50LT50ZXh0VHJhY2tSZW1vdmVDdWUodHJhY2ssIGN1ZSk7Cit9CisKK0hU
TUxNZWRpYUVsZW1lbnQqIEhUTUxUcmFja0VsZW1lbnQ6Om1lZGlhRWxlbWVudCgpIGNvbnN0Cit7
CisgICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOworICAgIGlmIChwYXJlbnQg
JiYgcGFyZW50LT5pc01lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSk7CisKKyAgICByZXR1cm4gMDsKK30KIAog
I2lmIEVOQUJMRShNSUNST0RBVEEpCiBTdHJpbmcgSFRNTFRyYWNrRWxlbWVudDo6aXRlbVZhbHVl
VGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAko
cmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEhUTUxUcmFja0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUg
VGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworCitjbGFz
cyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgVGV4dFRyYWNr
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MVHJhY2tFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKQEAgLTQ4LDE4ICs1
MCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTcmNsYW5nKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0TGFiZWwoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRJc0RlZmF1bHQoYm9v
bCk7Ci0gICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0OworICAgIFRleHRUcmFjayogdHJhY2so
KTsKICAgICAKLSAgICB2b2lkIGxvYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFj
a0NsaWVudCopOworICAgIHZvaWQgc2NoZWR1bGVMb2FkKCk7CisgICAgdmlydHVhbCBib29sIGNh
bkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbXBsZXRlTG9hZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0Zh
aWxlZCAqLyk7CiAKIHByaXZhdGU6Ci0KLSAgICAvLyBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50Ci0g
ICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0VHJh
Y2sqLCBib29sKTsKLQogICAgIEhUTUxUcmFja0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTFRyYWNrRWxlbWVudCgpOwotICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZp
cnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNs
cyk7CiAKQEAgLTcyLDYgKzcyLDE4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldEl0
ZW1WYWx1ZVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIE9WRVJSSURFOwogI2Vu
ZGlmCiAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdDsKKworICAg
IC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRl
Q2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5n
ZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4dFRy
YWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sq
LCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOworCisgICAgTG9hZGFibGVUZXh0VHJhY2sqIGVu
c3VyZVRyYWNrKCk7CisKICAgICBSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CiB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNwcAkocmV2
aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksMTMgKzI5LDE2IEBACiAKICNpbmNsdWRlICJMb2FkYWJs
ZVRleHRUcmFjay5oIgogCisjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRy
YWNrKFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIFRleHRUcmFja0xvYWRpbmdDbGllbnQq
IGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCi0gICAgOiBUZXh0VHJhY2so
dHJhY2tDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKLSAgICAsIG1fbG9hZGluZ0NsaWVu
dChsb2FkaW5nQ2xpZW50KQorTG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrLCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQorICAgIDogVGV4
dFRyYWNrKHRyYWNrLCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UpCisgICAgLCBtX3RyYWNrRWxlbWVu
dCh0cmFjaykKKyAgICAsIG1fbG9hZFRpbWVyKHRoaXMsICZMb2FkYWJsZVRleHRUcmFjazo6bG9h
ZFRpbWVyRmlyZWQpCiAgICAgLCBtX2lzRGVmYXVsdChpc0RlZmF1bHQpCiB7CiB9CkBAIC00NCwx
MSArNDcsMzMgQEAgTG9hZGFibGVUZXh0VHJhY2s6On5Mb2FkYWJsZVRleHRUcmFjaygpCiB7CiB9
CiAKLXZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWQoY29uc3QgS1VSTCYgdXJsLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQordm9pZCBMb2FkYWJsZVRleHRUcmFjazo6Y2xlYXJD
bGllbnQoKQogewotICAgIGlmICghbV9sb2FkZXIpCi0gICAgICAgIG1fbG9hZGVyID0gVGV4dFRy
YWNrTG9hZGVyOjpjcmVhdGUodGhpcywgY29udGV4dCk7Ci0gICAgbV9sb2FkZXItPmxvYWQodXJs
KTsKKyAgICBtX3RyYWNrRWxlbWVudCA9IDA7CisgICAgVGV4dFRyYWNrOjpjbGVhckNsaWVudCgp
OworfQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpzY2hlZHVsZUxvYWQoY29uc3QgS1VSTCYg
dXJsKQoreworICAgIG1fdXJsID0gdXJsOworICAgIGlmICghbV9sb2FkVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIExvYWRh
YmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4qKQor
eworICAgIHNldFJlYWR5U3RhdGUoVGV4dFRyYWNrOjpMT0FESU5HKTsKKyAgICAKKyAgICBpZiAo
bV9sb2FkZXIpCisgICAgICAgIG1fbG9hZGVyLT5jYW5jZWxMb2FkKCk7CisKKyAgICBpZiAoIW1f
dHJhY2tFbGVtZW50IHx8ICFtX3RyYWNrRWxlbWVudC0+Y2FuTG9hZFVybCh0aGlzLCBtX3VybCkp
IHsKKyAgICAgICAgc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkhUTUxfRVJST1IpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sb2FkZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0
ZSh0aGlzLCBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0Kj4obV90cmFja0VsZW1l
bnQtPmRvY3VtZW50KCkpKTsKKyAgICBtX2xvYWRlci0+bG9hZChtX3VybCk7CiB9CiAKIHZvaWQg
TG9hZGFibGVUZXh0VHJhY2s6Om5ld0N1ZXNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyKiBsb2Fk
ZXIpCkBAIC04Miw4ICsxMDcsOCBAQCB2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjdWVMb2FkaW5n
Q29tcGxlCiAKICAgICBsb2FkaW5nRmFpbGVkID8gc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkhU
TUxfRVJST1IpIDogc2V0UmVhZHlTdGF0ZShUZXh0VHJhY2s6OkxPQURFRCk7CiAKLSAgICBpZiAo
bV9sb2FkaW5nQ2xpZW50KQotICAgICAgICBtX2xvYWRpbmdDbGllbnQtPnRleHRUcmFja0xvYWRp
bmdDb21wbGV0ZWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CisgICAgaWYgKG1fdHJhY2tFbGVtZW50
KQorICAgICAgICBtX3RyYWNrRWxlbWVudC0+ZGlkQ29tcGxldGVMb2FkKHRoaXMsIGxvYWRpbmdG
YWlsZWQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzcsMjUgKzM3
LDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKIGNs
YXNzIExvYWRhYmxlVGV4dFRyYWNrOwotY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAot
Y2xhc3MgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCB7CitjbGFzcyBMb2FkYWJsZVRleHRUcmFja0Ns
aWVudCA6IHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgflRl
eHRUcmFja0xvYWRpbmdDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIH5Mb2FkYWJsZVRleHRUcmFj
a0NsaWVudCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tMb2FkaW5nQ29t
cGxldGVkKExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGNhbkxvYWRVcmwoTG9hZGFibGVUZXh0VHJhY2sqLCBjb25zdCBL
VVJMJikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZGluZ0NvbXBsZXRl
ZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgLyogbG9hZGluZ0ZhaWxlZCAqLykgeyB9CiB9Owog
CiBjbGFzcyBMb2FkYWJsZVRleHRUcmFjayA6IHB1YmxpYyBUZXh0VHJhY2ssIHByaXZhdGUgVGV4
dFRyYWNrTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2Fk
YWJsZVRleHRUcmFjaz4gY3JlYXRlKFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIFRleHRU
cmFja0xvYWRpbmdDbGllbnQqIGxvYWRpbmdDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TG9hZGFibGVUZXh0VHJhY2s+IGNyZWF0ZShIVE1MVHJh
Y2tFbGVtZW50KiB0cmFjaywgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVs
LCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2tDbGllbnQsIGxvYWRp
bmdDbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwgaXNEZWZhdWx0KSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTG9hZGFibGVUZXh0VHJhY2sodHJhY2ssIGtpbmQsIGxhYmVsLCBs
YW5ndWFnZSwgaXNEZWZhdWx0KSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRy
YWNrKCk7CiAKLSAgICB2b2lkIGxvYWQoY29uc3QgS1VSTCYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKTsKLSAgICBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNj
aGVkdWxlTG9hZChjb25zdCBLVVJMJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQo
KTsKIAogcHJpdmF0ZToKICAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQKQEAgLTY0LDEwICs2
NSwxNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nU3RhcnRlZChUZXh0
VHJhY2tMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0
VHJhY2tMb2FkZXIqLCBib29sIGxvYWRpbmdGYWlsZWQpOwogCi0gICAgTG9hZGFibGVUZXh0VHJh
Y2soVGV4dFRyYWNrQ2xpZW50KiwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCosIGNvbnN0IFN0cmlu
ZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9v
bCBpc0RlZmF1bHQpOworICAgIExvYWRhYmxlVGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqLCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgaXNEZWZhdWx0KTsKKworICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoVGltZXI8
TG9hZGFibGVUZXh0VHJhY2s+Kik7CiAKKyAgICBIVE1MVHJhY2tFbGVtZW50KiBtX3RyYWNrRWxl
bWVudDsKKyAgICBUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4gbV9sb2FkVGltZXI7CiAgICAgT3du
UHRyPFRleHRUcmFja0xvYWRlcj4gbV9sb2FkZXI7Ci0gICAgVGV4dFRyYWNrTG9hZGluZ0NsaWVu
dCogbV9sb2FkaW5nQ2xpZW50OworICAgIEtVUkwgbV91cmw7CiAgICAgYm9vbCBtX2lzRGVmYXVs
dDsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJh
Y2suY3BwCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNyBAQCBUZXh0VHJhY2s6On5UZXh0VHJh
Y2soKQogewogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1Jl
bW92ZUN1ZXModGhpcywgbV9jdWVzLmdldCgpKTsKLSAgICBzZXRDbGllbnQoMCk7CisgICAgY2xl
YXJDbGllbnQoKTsKIH0KIAogU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrLmgJKHJldmlzaW9uIDk5Njk0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9UZXh0VHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCB0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRl
eHRUcmFja0N1ZUxpc3QqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0FkZEN1ZShU
ZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pID0gMDsKQEAgLTc4LDE0ICs3Nywx
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOwogICAgIHZvaWQgbW9k
ZUNoYW5nZWQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIHsgbV9jbGllbnQg
PSAwOyB9CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsg
fQotICAgIHZvaWQgc2V0Q2xpZW50KFRleHRUcmFja0NsaWVudCogY2xpZW50KSB7IG1fY2xpZW50
ID0gY2xpZW50OyB9CiAKICAgICB2b2lkIGFkZEN1ZShQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4s
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlbW92ZUN1ZShQYXNzUmVmUHRyPFRleHRUcmFj
a0N1ZT4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xv
YWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBmZXRjaE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFj
a0N1ZSo+Jik7CisgICAgdm9pZCBuZXdDdWVzTG9hZGVkKCk7CisgICAgdm9pZCBmZXRjaE5ld2Vz
dEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jik7CiAKIHByb3RlY3RlZDoKICAgICBUZXh0VHJh
Y2soVGV4dFRyYWNrQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9U
ZXh0VHJhY2tDdWVMaXN0LmNwcAkocmV2aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw4ICs2OSw4IEBA
IHZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGUKIAogdm9pZCBUZXh0VHJh
Y2tDdWVMaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSwgc2l6ZV90IHN0YXJ0
LCBzaXplX3QgZW5kKQogewotICAgIEFTU0VSVChzdGFydCA+PSAwICYmIHN0YXJ0IDw9IG1fbGlz
dC5zaXplKCkpOwotICAgIEFTU0VSVChlbmQgPj0gMCAmJiBlbmQgPD0gbV9saXN0LnNpemUoKSk7
CisgICAgQVNTRVJUKHN0YXJ0IDw9IG1fbGlzdC5zaXplKCkpOworICAgIEFTU0VSVChlbmQgPD0g
bV9saXN0LnNpemUoKSk7CiAKICAgICAvLyBNYWludGFpbiB0ZXh0IHRyYWNrIGN1ZSBvcmRlcjoK
ICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
LyN0ZXh0LXRyYWNrLWN1ZS1vcmRlcgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0xpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQor
CisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2su
aCIKKyNpbmNsdWRlICJUcmFja0V2ZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CitUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgLCBtX293bmVyKG93bmVyKQorICAgICwgbV9wZW5kaW5nRXZlbnRUaW1lcih0aGlzLCAm
VGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVudFRpbWVyRmlyZWQpCit7CisgICAgQVNTRVJUKGNvbnRl
eHQtPmlzRG9jdW1lbnQoKSk7Cit9CisKK1RleHRUcmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KCkK
K3sKK30KKwordW5zaWduZWQgVGV4dFRyYWNrTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90cmFja3Muc2l6ZSgpOworfQorCitUZXh0VHJhY2sqIFRleHRUcmFja0xpc3Q6Oml0
ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4IDwgbV90cmFja3Muc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gbV90cmFja3NbaW5kZXhdLmdldCgpOworICAgIHJldHVybiAwOworfQor
Cit2b2lkIFRleHRUcmFja0xpc3Q6OmFwcGVuZChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2sp
Cit7CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBtX3RyYWNr
cy5hcHBlbmQodHJhY2tSZWYpOworICAgIHNjaGVkdWxlQWRkVHJhY2tFdmVudCh0cmFja1JlZik7
Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6cmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0
cmFjaykKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX3RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICBp
ZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3RyYWNrcy5yZW1v
dmUoaW5kZXgpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFRleHRUcmFja0xpc3Q6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
VGV4dFRyYWNrTGlzdDsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjpzY2hlZHVsZUFkZFRyYWNr
RXZlbnQoUGFzc1JlZlB0cjxUZXh0VHJhY2s+IHRyYWNrKQoreworICAgIC8vIDQuOC4xMC4xMi4z
IFNvdXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gNC44LjEwLjEyLjMgU291
cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyA0LjguMTAuMTIuNCBUZXh0IHRy
YWNrIEFQSQorICAgIC8vIC4uLiB0aGVuIHF1ZXVlIGEgdGFzayB0byBmaXJlIGFuIGV2ZW50IHdp
dGggdGhlIG5hbWUgYWRkdHJhY2ssIHRoYXQgZG9lcyBub3QgCisgICAgLy8gYnViYmxlIGFuZCBp
cyBub3QgY2FuY2VsYWJsZSwgYW5kIHRoYXQgdXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2Us
IHdpdGggCisgICAgLy8gdGhlIHRyYWNrIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0aGUgdGV4
dCB0cmFjaydzIFRleHRUcmFjayBvYmplY3QsIGF0IAorICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50
J3MgdGV4dFRyYWNrcyBhdHRyaWJ1dGUncyBUZXh0VHJhY2tMaXN0IG9iamVjdC4KKworICAgIFJl
ZlB0cjxUZXh0VHJhY2s+IHRyYWNrUmVmID0gdHJhY2s7CisgICAgVHJhY2tFdmVudEluaXQgaW5p
dGlhbGl6ZXI7CisgICAgaW5pdGlhbGl6ZXIudHJhY2sgPSB0cmFja1JlZjsKKyAgICBpbml0aWFs
aXplci5idWJibGVzID0gZmFsc2U7CisgICAgaW5pdGlhbGl6ZXIuY2FuY2VsYWJsZSA9IGZhbHNl
OworCisgICAgbV9wZW5kaW5nRXZlbnRzLmFwcGVuZChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmFkZHRyYWNrRXZlbnQsIGluaXRpYWxpemVyKSk7CisgICAgaWYgKCFtX3BlbmRpbmdF
dmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcGVuZGluZ0V2ZW50VGltZXIuc3RhcnRP
bmVTaG90KDApOworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OmFzeW5jRXZlbnRUaW1lckZpcmVk
KFRpbWVyPFRleHRUcmFja0xpc3Q+KikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IHBl
bmRpbmdFdmVudHM7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgCisgICAgbV9wZW5k
aW5nRXZlbnRzLnN3YXAocGVuZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGlu
Z0V2ZW50cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50
OyArK2luZGV4KQorICAgICAgICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJl
bGVhc2UoKSwgZWMpOworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBUZXh0VHJhY2tMaXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrTGlzdF9oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCisj
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CitjbGFzcyBUZXh0VHJhY2s7CitjbGFzcyBUZXh0
VHJhY2tMaXN0OworCitjbGFzcyBUZXh0VHJhY2tMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4
dFRyYWNrTGlzdD4sIHB1YmxpYyBFdmVudFRhcmdldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8VGV4dFRyYWNrTGlzdD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG93bmVyLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0VHJhY2tMaXN0KG93bmVyLCBjb250ZXh0KSk7CisgICAgfQorICAgIH5U
ZXh0VHJhY2tMaXN0KCk7CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICBUZXh0
VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8
VGV4dFRyYWNrPik7CisgICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxUZXh0VHJhY2s+KTsKKwor
ICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVy
ZmFjZU5hbWUoKSBjb25zdDsKKyAgICB1c2luZyBSZWZDb3VudGVkPFRleHRUcmFja0xpc3Q+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tMaXN0Pjo6ZGVyZWY7CisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZXh0OyB9CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGFkZHRyYWNrKTsKKworICAgIHZvaWQgY2xlYXJPd25lcigpIHsgbV9vd25lciA9IDA7
IH0KKyAgICBIVE1MTWVkaWFFbGVtZW50KiBvd25lcigpIHsgcmV0dXJuIG1fb3duZXI7IH0KKwor
cHJpdmF0ZToKKyAgICBUZXh0VHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRh
cmdldERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgeyByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRy
PFRleHRUcmFjaz4pOworICAgIHZvaWQgYXN5bmNFdmVudFRpbWVyRmlyZWQoVGltZXI8VGV4dFRy
YWNrTGlzdD4qKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKKyAg
ICBIVE1MTWVkaWFFbGVtZW50KiBtX293bmVyOworCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4g
PiBtX3BlbmRpbmdFdmVudHM7CisgICAgVGltZXI8VGV4dFRyYWNrTGlzdD4gbV9wZW5kaW5nRXZl
bnRUaW1lcjsKKworICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBW
ZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX3RyYWNrczsKKyAgICAKKyAgICBpbnQgbV9kaXNw
YXRjaGluZ0V2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0Lmlk
bAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlz
dC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGh0
bWwgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0ss
CisgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFjaywKKyAgICAgICAgSGFz
SW5kZXhHZXR0ZXIsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAgICBDdXN0b21Jc1JlYWNo
YWJsZQorICAgIF0gVGV4dFRyYWNrTGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgVGV4dFRyYWNrIGl0ZW0oaW4gdW5zaWduZWQg
bG9uZyBpbmRleCk7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFj
azsKKworICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZ0KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAkocmV2aXNp
b24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsMTQgQEAgdm9pZCBUZXh0VHJhY2tMb2FkZXI6OmN1
ZUxvYWRUaW1lckZpcmVkKAogICAgICAgICBtX2NsaWVudC0+Y3VlTG9hZGluZ0NvbXBsZXRlZCh0
aGlzLCBtX3N0YXRlID09IEZhaWxlZCk7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrTG9hZGVyOjpjYW5j
ZWxMb2FkKCkKK3sKKyAgICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7CisgICAgICAgIG1fY2FjaGVk
Q3VlRGF0YS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBtX2NhY2hlZEN1ZURhdGEgPSAw
OworICAgIH0KK30KKwogdm9pZCBUZXh0VHJhY2tMb2FkZXI6OnByb2Nlc3NOZXdDdWVEYXRhKENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQobV9jYWNoZWRDdWVEYXRhID09
IHJlc291cmNlKTsKQEAgLTE0Miw4ICsxNTAsNyBAQCB2b2lkIFRleHRUcmFja0xvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjCiAgICAgaWYgKCFtX2N1ZUxvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICBtX2N1ZUxvYWRUaW1lci5zdGFydE9uZVNob3QoMCk7CiAgICAgCi0gICAgbV9jYWNoZWRD
dWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Ci0gICAgbV9jYWNoZWRDdWVEYXRhID0gMDsKKyAg
ICBjYW5jZWxMb2FkKCk7CiB9CiAKIGJvb2wgVGV4dFRyYWNrTG9hZGVyOjpsb2FkKGNvbnN0IEtV
UkwmIHVybCkKQEAgLTE1MSwxMCArMTU4LDcgQEAgYm9vbCBUZXh0VHJhY2tMb2FkZXI6OmxvYWQo
Y29uc3QgS1VSTCYgdQogICAgIGlmICghbV9jbGllbnQtPnNob3VsZExvYWRDdWVzKHRoaXMpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWYgKG1fY2FjaGVkQ3VlRGF0YSkgewot
ICAgICAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAgICAgICAgbV9j
YWNoZWRDdWVEYXRhID0gMDsKLSAgICB9CisgICAgY2FuY2VsTG9hZCgpOwogICAgIAogICAgIEFT
U0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkocmV2
aXNpb24gOTk2OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRl
eHRUcmFja0xvYWRlcigpOwogICAgIAogICAgIGJvb2wgbG9hZChjb25zdCBLVVJMJik7CisgICAg
dm9pZCBjYW5jZWxMb2FkKCk7CiAgICAgdm9pZCBnZXROZXdDdWVzKFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA5OTY5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjEzLDYgKzYxMyw3IEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0Vmlk
ZW9UcmFja10gVGV4dFRyYWNrQ29uc3RydWN0b3IgVGV4dFRyYWNrOwogICAgICAgICBhdHRyaWJ1
dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFja10gVGV4dFRyYWNrQ3VlQ29uc3Ry
dWN0b3IgVGV4dFRyYWNrQ3VlOyAvLyBVc2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCiAgICAg
ICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJh
Y2tDdWVMaXN0Q29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlTGlzdDsKKyAgICAgICAgYXR0cmlidXRl
IFtFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0xpc3RDb25zdHJ1
Y3RvciBUZXh0VHJhY2tMaXN0OwogICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9
d2Via2l0VmlkZW9UcmFja10gVHJhY2tFdmVudENvbnN0cnVjdG9yIFRyYWNrRXZlbnQ7CiAjZW5k
aWYKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTk2OTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0xMS0wOSAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgVGV4dFRyYWNr
TGlzdCBhbmQgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9mIEhUTUxNZWRpYUVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFj
ay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90
cmFjay90cmFjay1hZGQtdHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDkgIFJvbGFuZCBU
YWthY3MgIDx0YWthY3Mucm9sYW5kQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1dLMl0g
bnJ3dCBwaXhlbHRlc3RzIGNyYXNoIHdoaWxlIHRlc3QKSW5kZXg6IExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stYWRkLXRyYWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjUgQEAKK1Rlc3RzIHRoYXQgdGhlICdhZGR0cmFj
aycgZXZlbnQgaXMgZmlyZWQgd2hlbiBhIFRleHRUcmFjayBpcyBjcmVhdGVkLi4KKworKiogVGVz
dCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhIDx0cmFjaz4gZWxlbWVudC4KK1JVTih0cmFja0Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpKQorUlVOKHZpZGVvLmFwcGVu
ZENoaWxkKHRyYWNrRWxlbWVudCkpCitSVU4odHJhY2tFbGVtZW50LnNyYyA9ICdjYXB0aW9ucy13
ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JykKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tz
Lmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzBdLnJlYWR5U3RhdGUgPT0gJzAn
KSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0
IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5U
cmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29iamVj
dCBUZXh0VHJhY2tdJykgT0sKKworKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIHdpdGggdmlk
ZW8uYWRkVHJhY2soKS4KK1JVTih0cmFja3MucHVzaCh2aWRlby5hZGRUcmFjaygnY2FwdGlvbnMn
LCAnQ2FwdGlvbiBUcmFjaycsICdlbicpKSkKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJhY2tzLmxl
bmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzFdLnJlYWR5U3RhdGUgPT0gJzAnKSBP
SworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2JqZWN0IFRl
eHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRvdy5UcmFj
a0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29iamVjdCBU
ZXh0VHJhY2tdJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAnMCcpIE9L
CisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFk
ZC10cmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNr
LWFkZC10cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2stYWRkLXRyYWNrLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisg
ICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisK
KyAgICAgICAgICAgIHZhciB0cmFja3MgPSBbXTsKKyAgICAgICAgICAgIHZhciB0cmFja0VsZW1l
bnQ7CisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0FkZGVkKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudC50eXBlICsgIikiKTsK
KworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0IiwgdmlkZW8udGV4
dFRyYWNrcyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudCBpbnN0YW5jZW9m
IHdpbmRvdy5UcmFja0V2ZW50IiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJldmVudC50cmFjayIsIHRyYWNrc1t2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCAtIDFdKTsKKwor
ICAgICAgICAgICAgICAgIGlmICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRlc3QgYSBUZXh0VHJhY2sgY3Jl
YXRlZCB3aXRoIHZpZGVvLmFkZFRyYWNrKCkuIik7CisgICAgICAgICAgICAgICAgICAgIHJ1bigi
dHJhY2tzLnB1c2godmlkZW8uYWRkVHJhY2soJ2NhcHRpb25zJywgJ0NhcHRpb24gVHJhY2snLCAn
ZW4nKSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJh
Y2tzLmxlbmd0aCIsIDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNr
c1sxXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5PTkUpOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzFdLnJlYWR5U3Rh
dGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
Iik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCBmb3IgYSAmbHQ7dHJh
Y2smZ3Q7IGVsZW1lbnQuIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFja0VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAgcnVuKCJ2
aWRlby5hcHBlbmRDaGlsZCh0cmFja0VsZW1lbnQpIik7CisgICAgICAgICAgICAgICAgdHJhY2tz
LnB1c2godHJhY2tFbGVtZW50LnRyYWNrKTsKKworICAgICAgICAgICAgICAgIC8vIFJlZ2lzdGVy
IHRoZSAnYWRkdHJhY2snIGxpc3RlbmVyIGFmdGVyIGNyZWF0aW5nIHRoZSBlbGVtZW50IHRvIG1h
a2Ugc3VyZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBldmVudCBpcyBkaXNwYXRjaCBhc3luY2hy
b25vdXNseS4KKyAgICAgICAgICAgICAgICB2aWRlby50ZXh0VHJhY2tzLmFkZEV2ZW50TGlzdGVu
ZXIoImFkZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisKKyAgICAgICAgICAgICAgICBydW4oInRyYWNr
RWxlbWVudC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0dCciKTsK
KyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVuZ3RoIiwg
MSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMF0ucmVhZHlTdGF0ZSIs
IFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdHMg
dGhhdCB0aGUgJ2FkZHRyYWNrJyBldmVudCBpcyBmaXJlZCB3aGVuIGEgVGV4dFRyYWNrIGlzIGNy
ZWF0ZWQuLjwvcD4KKyAgICAgICAgPHZpZGVvPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="112969"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114565</attachid>
            <date>2011-11-10 14:08:07 -0800</date>
            <delta_ts>2011-11-10 15:50:07 -0800</delta_ts>
            <desc>Addressing Geoff&apos;s comments.</desc>
            <filename>patch_tracks_array_19.txt</filename>
            <type>text/plain</type>
            <size>82759</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI3IEBACisyMDExLTExLTEwICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBUZXh0
VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1dGUgb2YgSFRNTE1lZGlhRWxlbWVu
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBt
ZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2suaHRtbAorICAgICAgICAgICAgICBtZWRpYS90cmFj
ay90cmFja2xpc3QtaXMtcmVhY2hhYmxlLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OiBBZGQgbmV3IGZpbGVzIGZvciBUZXh0VHJhY2tMaXN0LgorICAgICAgICAqIERlcml2ZWRTb3Vy
Y2VzLmNwcDogRGl0dG8uCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmls
ZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcDogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RD
dXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGV4dFRyYWNrTGlzdE93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisKKyAgICAgICAgKiBkb20vRXZlbnRUYXJn
ZXRGYWN0b3J5LmluOiBBZGQgVGV4dFRyYWNrTGlzdCwgY29uZGl0aW9uYWwgb24gVklERU9fVFJB
Q0suCisKKyAgICAgICAgKiBodG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEF1ZGlvRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcik6IFVwZGF0ZSBm
b3Igc2NoZWR1bGVMb2FkIGNoYW5nZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxl
bWVudCk6IFVwZGF0ZSBmb3IgbV90ZXh0VHJhY2tzIGNoYW5nZSBmcm9tCisgICAgICAgICAgICBn
ZW5lcmljIFZlY3RvciB0byBUZXh0VHJhY2tMaXN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBVcGRhdGUgZm9yIHNjaGVk
dWxlTG9hZCBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzY2hl
ZHVsZUxvYWQpOiBBZGQgYSBwYXJhbWV0ZXIgc28gY2FsbGVyIGNhbiBzcGVjaWZ5IGlmCisgICAg
ICAgICAgICB0aGUgbWFpbiByZXNvdXJjZSBvciBhIHRleHQgdHJhY2sgc2hvdWxkIGJlIGxvYWRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKTog
VXBkYXRlIHRvIGFsbG93IHRleHQgdHJhY2sgbG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6IERvbid0IGNhbGwgbG9hZFRleHRUcmFja3Mu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwpOiBM
b2cgd2hlbiBDU1AgZGVuaWVzIGxvYWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwbGF5SW50ZXJuYWwpOiBVcGRhdGUgZm9yIHNjaGVkdWxlTG9hZCBjaGFuZ2UuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXVzZUludGVybmFsKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayk6IFVwZGF0ZSBmb3Ig
bV90ZXh0VHJhY2tzIGNoYW5nZSBmcm9tCisgICAgICAgICAgICBnZW5lcmljIFZlY3RvciB0byBU
ZXh0VHJhY2tMaXN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4
dFRyYWNrKTogTmV3LCBhZGQgdHJhY2sgdG8gbV90ZXh0VHJhY2tzIGFuZCBjb25maWd1cmUuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKTog
TmV3LCBhZGQgY29tbWVudHMgYWJvdXQgd2hhdCB0aGlzIHNob3VsZAorICAgICAgICAgICAgZG8g
ZXZlbnR1YWxseS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a3MpOiBOZXcsIHJldHVybiBUZXh0VHJhY2tMaXN0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCk6IEJhaWwgaWYgcnVudGltZSBmZWF0dXJlIGlzIG5v
dCBlbmFibGVkLCBzY2hlZHVsZQorICAgICAgICAgICAgYXN5bmNocm9ub3VzIHRleHQgdHJhY2sg
bG9hZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJlUmVt
b3ZlZCk6IE1pbm9yIGNsZWFudXAuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZWxlY3ROZXh0U291cmNlQ2hpbGQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNvdXJjZVdhc0FkZGVkKTogVXBkYXRlIGZvciBzY2hlZHVsZUxvYWQgY2hh
bmdlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGw6IEFkZCB0ZXh0VHJhY2tzIGF0dHJpYnV0ZS4KKworICAgICAg
ICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
YWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZSk6IFVzZSBuZXcgbWVkaWFFbGVtZW50KCkgbWV0
aG9kLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6d2lsbFJlbW92ZSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdl
ZCk6IFdoZW4gJ3NyYycgaXMgY2hhbmdlZCwgY2FsbCBzY2hlZHVsZUxvYWQKKyAgICAgICAgICAg
IGluc3RlYWQgb2YgSFRNTE1lZGlhRWxlbWVudAorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNr
RWxlbWVudDo6aXNEZWZhdWx0KTogaGFzQXR0cmlidXRlIC0+IGZhc3RIYXNBdHRyaWJ1dGUuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp0cmFjayk6IEFsbG9jYXRlIHRyYWNr
IGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVk
dWxlTG9hZCk6IE5ldywgdGVsbCB0aGUgdHJhY2sgdG8gc2NoZWR1bGUgYSBsb2FkLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybCk6IE5ldywgY2hlY2sgc2Vj
dXJpdHkgcG9saWN5IHRvIHNlZSBpZiBpdCBpcyBPSworICAgICAgICAgICAgdG8gbG9hZCBhIHRl
eHQgdHJhY2suIElmIHNvLCBkaXNwYXRjaCAnYmVmb3JlbG9hZCcgZXZlbnQgdG8gZ2l2ZSBpdCBh
IGNoYW5jZSB0byBkaXNhbGxvdworICAgICAgICAgICAgbG9hZC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUcmFja0VsZW1lbnQ6OmxvYWRpbmdDb21wbGV0ZWQpOiBSZW5hbWVkIGZyb20gdGV4dFRy
YWNrTG9hZGluZ0NvbXBsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6
OnRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKTogTmV3LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50
IGludGVyZmFjZQorICAgICAgICAgICAgdXNlZCB0byBpbmZvcm0gcGFyZW50IG9mIFRleHRUcmFj
ayBzdGF0ZSBjaGFuZ2VzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW5nZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0Vs
ZW1lbnQ6OnRleHRUcmFja0FkZEN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmFja0VsZW1lbnQ6OnRleHRUcmFja1JlbW92ZUN1ZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0FkZEN1ZSk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjptZWRpYUVsZW1lbnQpOiBOZXcsIHJl
dHVybiBwYXJlbnQgZWxlbWVudC4KKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuaDoK
KworICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxlVGV4dFRyYWNrKTogSW5pdGlhbGl6ZSBuZXcg
aW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6
OnNjaGVkdWxlTG9hZCk6IE5ldywgcHJpbWUgYSB0aW1lciB0byBraWNrIG9mZiBsb2FkaW5nLgor
ICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWRUaW1lckZpcmVkKTogQ2Fu
Y2VsIGN1cnJlbnQgbG9hZCwgaWYgYW55LCBjaGVjayB0byBzZWUgaWYKKyAgICAgICAgICAgIG5l
dyB1cmwgaXMgYWxsb3dlZCB0byBsb2FkLCBhbmQgc3RhcnQgbmV3IGxvYWQuCisgICAgICAgIChX
ZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6Y3VlTG9hZGluZ0NvbXBsZXRlZCk6IAorICAgICAg
ICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxl
VGV4dFRyYWNrQ2xpZW50Ojp+TG9hZGFibGVUZXh0VHJhY2tDbGllbnQpOiBUZXh0VHJhY2tMb2Fk
aW5nQ2xpZW50IC0+IExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50CisgICAgICAgIChXZWJDb3JlOjpM
b2FkYWJsZVRleHRUcmFja0NsaWVudDo6Y2FuTG9hZFVybCk6IAorICAgICAgICAoV2ViQ29yZTo6
TG9hZGFibGVUZXh0VHJhY2tDbGllbnQ6OmxvYWRpbmdDb21wbGV0ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisKKyAgICAgICAgKiBodG1sL1RleHRU
cmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OlRleHRUcmFjayk6IHNldENs
aWVudCgwKSAtPiBjbGVhckNsaWVudCgpLgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KTogUmVuYW1lZCBmcm9tIHNl
dENsaWVudCwgYmVjYXVzZSBpdCBpcyBvbmx5IHVzZWQgdG8gY2xlYXIgdGhlIGNsaWVudCBwb2lu
dGVyLgorCisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFkZCk6IEdldCByaWQgb2YgYSBjb21waWxlciB3YXJu
aW5nIHRoYXQgYnJlYWtzIHRoZSBPUyBYIGJ1aWxkLgorCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2tMaXN0LmNwcDogQWRkZWQuIEltcGxlbWVudCB0aGUgVGV4dFRyYWNrTGlzdCBvYmpl
Y3QuCisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpUZXh0VHJhY2tMaXN0KToKKyAgICAgICAgKFRl
eHRUcmFja0xpc3Q6On5UZXh0VHJhY2tMaXN0KToKKyAgICAgICAgKFRleHRUcmFja0xpc3Q6Omxl
bmd0aCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjppdGVtKToKKyAgICAgICAgKFRleHRUcmFj
a0xpc3Q6OmFwcGVuZCk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoVGV4dFRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChUZXh0VHJhY2tMaXN0
OjpzY2hlZHVsZUFkZFRyYWNrRXZlbnQpOgorICAgICAgICAoVGV4dFRyYWNrTGlzdDo6YXN5bmNF
dmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xpc3Q6OmNsZWFyT3duZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrTGlzdDo6b3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlz
dDo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6ZGVy
ZWZFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tMaXN0OjpldmVudFRh
cmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrTGlzdDo6ZW5zdXJlRXZlbnRU
YXJnZXREYXRhKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsOiBBZGRl
ZC4KKworICAgICAgICAqIGxvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrTG9hZGVyOjpjYW5jZWxMb2FkKTogTmV3LCBjYW5jZWwgcGVuZGluZyBv
ciBpbiBwcm9ncmVzcyBsb2FkIGFuZCBkZWxldGUgbG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6IENhbGwgY2FuY2VsTG9hZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRUcmFja0xvYWRlcjo6bG9hZCk6IERpdHRvLgorICAgICAgICAqIGxv
YWRlci9UZXh0VHJhY2tMb2FkZXIuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6IEFk
ZCBUZXh0VHJhY2tMaXN0LgorCiAyMDExLTExLTEwICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBTaHJpbmsgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTk4NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw3IEBAIFNFVChX
ZWJDb3JlX0lETF9GSUxFUwogICAgIGh0bWwvY2FudmFzL1VpbnQzMkFycmF5LmlkbAogICAgIGh0
bWwvY2FudmFzL1VpbnQ4QXJyYXkuaWRsCiAKKyAgICBodG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aWRsCiAgICAgaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbAogCiAgICAgaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0SG9zdC5pZGwKQEAgLTIwNTksNiArMjA2MCw3IEBAIElGIChFTkFCTEVfVklERU9f
VFJBQ0spCiAgICAgICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmNwcAogICAgICAgICBodG1sL1RleHRU
cmFja0N1ZUluZGV4LmNwcAogICAgICAgICBodG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwCisgICAg
ICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAKICAgICAgICAgaHRtbC90cmFjay9UcmFj
a0Jhc2UuY3BwCiAgICAgICAgIGh0bWwvdHJhY2svVHJhY2tFdmVudC5jcHAKICAgICAgICAgaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQxLDYgKzQ0MSw3IEBACiAjaW5jbHVkZSAiSlNUZXh0VHJhY2su
Y3BwIgogI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmNwcCIKICNpbmNsdWRlICJKU1RleHRUcmFj
a0N1ZUxpc3QuY3BwIgorI2luY2x1ZGUgIkpTVGV4dFRyYWNrTGlzdC5jcHAiCiAjaW5jbHVkZSAi
SlNUcmFja0V2ZW50LmNwcCIKICNlbmRpZgogI2luY2x1ZGUgIkpTVGltZVJhbmdlcy5jcHAiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDk5ODc2KQorKysgU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYg
KzUxMCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFRleHRUcmFjayBcCiAgICAgVGV4dFRyYWNr
Q3VlIFwKICAgICBUZXh0VHJhY2tDdWVMaXN0IFwKKyAgICBUZXh0VHJhY2tMaXN0IFwKICAgICBU
aW1lUmFuZ2VzIFwKICAgICBUb3VjaCBcCiAgICAgVG91Y2hFdmVudCBcCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
RGVyaXZlZFNvdXJjZXMucHJpCShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5KQpAQCAtNTkwLDYgKzU5MCw3IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9WSURFT19UUkFDSz0xKSAKICAgICBodG1sL1RleHRUcmFjay5p
ZGwgXAogICAgIGh0bWwvVGV4dFRyYWNrQ3VlLmlkbCBcCiAgICAgaHRtbC9UZXh0VHJhY2tDdWVM
aXN0LmlkbCBcCisgICAgaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbCBcCiAgICAgaHRtbC90
cmFjay9UcmFja0V2ZW50LmlkbCBcCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gOTk4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01MDQsNiArNTA0LDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4dFRyYWNrQ3VlLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0VHJhY2tDdWVMaXN0LmNwcCBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1RleHRUcmFja0N1ZUxpc3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1RleHRUcmFja0xpc3QuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGV4
dFRyYWNrTGlzdC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVGltZVJhbmdlcy5jcHAg
XAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUaW1lUmFuZ2VzLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNUb3VjaC5jcHAgXApAQCAtODUwLDYgKzg1Miw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dEN1c3RvbS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVG91Y2hDdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RvdWNoTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVHJhY2tDdXN0b20uY3BwIFwKQEAgLTE5ODAsNiArMTk4Myw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBl
LmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvVGltZVJhbmdlcy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvVGltZVJhbmdlcy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RyYWNrRXZlbnQuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gOTk4NzYpCisr
KyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODkzLDYgKzE4
OTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmggXAogICAg
IGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAogICAgIGh0bWwvc2hhZG93L0Rl
dGFpbHNNYXJrZXJDb250cm9sLmggXAorICAgIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIFwK
ICAgICBodG1sL3RyYWNrL1RyYWNrQmFzZS5oIFwKICAgICBodG1sL3RyYWNrL1RyYWNrRXZlbnQu
aCBcCiAgICAgaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuaCBcCkBAIC0zNTcwLDYgKzM1NzEsNyBA
QCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgCiAgICAgICAgICAgICBi
aW5kaW5ncy9qcy9KU1RyYWNrQ3VzdG9tLmNwcCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9K
U1RyYWNrQ3VzdG9tLmggXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUcmFja0V2ZW50Q3Vz
dG9tLmNwcAorICAgICAgICAgICAgYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNw
cAogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTk4NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEzNzMsNiArMTM3
Myw3IEBACiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaWRs
JywKICAgICAgICAgICAgICdodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmlk
bCcsCiAgICAgICAgICAgICAnaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuaWRsJywKKyAg
ICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdo
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kSG9zdC5pZGwnLApAQCAtMTkzNyw2ICsxOTM4LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNU
ZXh0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUZXh0VHJhY2tMaXN0
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNUb3VjaEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVG91Y2hMaXN0Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNUcmFja0N1c3RvbS5jcHAnLApAQCAtNTc5Miw2ICs1Nzk0
LDcgQEAKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCcsCiAg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcCcsCiAg
ICAgICAgICAgICAnaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgnLAorICAg
ICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAnLAogICAgICAgICAgICAgJ2h0
bWwvdHJhY2svVHJhY2tCYXNlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0V2
ZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwJywKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDk5ODc2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsMTIgKzEwMSwxNyBAQAogCQkw
NzM1RUU2QTBGNDBDNUU0MDA0QTI2MDQgLyogTWVkaWFQbGF5ZXJQcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDczNUVFNjkwRjQwQzVFNDAwNEEy
NjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4
dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovOyB9Owog
CQkwNzUzODYwMzE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzUzODYwMTE0NDg5RTk4MDBC
Nzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmggKi87IH07Ci0JCTA3Njg5RDZFMTQ1QjUyQ0MwMDFD
RDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2ODlENkQxNDVCNTJDQzAwMUNEMTMyIC8qIEpTVHJhY2tF
dmVudEN1c3RvbS5jcHAgKi87IH07CisJCTA3Njk3MDg2MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0
VHJhY2tMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsK
KwkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1
MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFB
NCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsKIAkJMDc4NDYzNDIxNDVCMTUx
QTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzg0NjM0MDE0NUIxNTFBMDBBNThERjEgLyogSlNUcmFja0V2
ZW50LmNwcCAqLzsgfTsKIAkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYz
NDExNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJhY2tFdmVudC5oICovOyB9OwogCQkwNzg0NjM4NTE0
NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4NDYzODQxNDVCMUI4RTAwQTU4REYxIC8qIEpTVHJh
Y2tDdXN0b20uaCAqLzsgfTsKIAkJMDdCMDExM0YxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2li
aWxpdHlNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwN0IwMTEzRTEwMzIyNDIyMDBGQkRDMzMgLyogQWNjZXNzaWJpbGl0eU1lZGlh
Q29udHJvbHMuaCAqLzsgfTsKKwkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRy
YWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwN0I1QTJEOTE0NjQzMjBBMDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLzsgfTsK
KwkJMDdCNUEyREMxNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDdCNUEyREExNDY0MzIwQTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5oICovOyB9OworCQkwN0I1QTMwRDE0Njg3RDcxMDBB
ODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1Rl
eHRUcmFja0xpc3RDdXN0b20uY3BwICovOyB9OworCQkwN0JERDZFQzE0NjlCNEMyMDA5QzlGODUg
LyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA3QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRD
dXN0b20uY3BwICovOyB9OwogCQkwODA2RTU3QTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODA2RTU3
OTEyODkzMDQ1MDA3Q0VEMzIgLyogU1ZHTWF0cml4LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDgwRTQ5MjYxMjU1RjNCRDAwRUZDQTI3IC8qIFNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDgwRTQ5MjIxMjU1RjNCRDAwRUZDQTI3IC8qIFNWR1RleHRMYXlv
dXRFbmdpbmVCYXNlbGluZS5oICovOyB9OwogCQkwODBFNDkyODEyNTVGM0JEMDBFRkNBMjcgLyog
U1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4MEU0OTI0MTI1NUYzQkQwMEVGQ0EyNyAvKiBTVkdUZXh0TGF5
b3V0RW5naW5lU3BhY2luZy5oICovOyB9OwpAQCAtNzExNiw3ICs3MTIxLDggQEAKIAkJMDczNUVF
NjkwRjQwQzVFNDAwNEEyNjA0IC8qIE1lZGlhUGxheWVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFRleHRUcmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NTM4NjAxMTQ0ODlFOTgwMEI3ODQ1
MiAvKiBDYWNoZWRUZXh0VHJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q2FjaGVkVGV4dFRyYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3Njg5RDZE
MTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUcmFja0V2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFRyYWNr
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3Njk3MDg1MTQ2M0FEODcw
MEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc2RjBE
MDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZGMEQwQTEy
QjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzg0NjM0MDE0NUIxNTFBMDBBNThE
RjEgLyogSlNUcmFja0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTVHJhY2tFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTI1
LDYgKzcxMzEsMTEgQEAKIAkJMDc5RjVFNEIwRjNCRUJFQTAwNUUwNzgyIC8qIE1lZGlhUGxheWVy
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDdBRkU1OTAwRjE0NDZCRDAw
ODQxNjE3IC8qIG1lZGlhQ29udHJvbHNRdWlja1RpbWUuY3NzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7
IHBhdGggPSBtZWRpYUNvbnRyb2xzUXVpY2tUaW1lLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDdCMDExM0UxMDMyMjQyMjAwRkJEQzMzIC8qIEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlN
ZWRpYUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3QjVBMkQ5MTQ2
NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMDdCNUEyREExNDY0MzIwQTAwQTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1RleHRUcmFja0xpc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDdCNUEzMDYxNDY4NTM3MTAwQTgxRUNFIC8qIFRl
eHRUcmFja0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0I1QTMwQTE0Njg3Qjg0MDBBODFFQ0Ug
LyogSlNUcmFja0V2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTVHJhY2tFdmVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTA3QjVBMzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNUZXh0VHJhY2tMaXN0Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwNkU1NzkxMjg5MzA0NTAw
N0NFRDMyIC8qIFNWR01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgwRTQ5MjExMjU1RjNC
RDAwRUZDQTI3IC8qIFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODBFNDkyMjEyNTVGM0JEMDBFRkNBMjcg
LyogU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTc4MTIsNiArMTc4MjMsOCBAQAogCQkJCTA3MDc1NkQ4MTQyMzlCNEIw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZS5oICovLAogCQkJCTA3MDc1NkQ5MTQyMzlCNEMwMDQx
NDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuY3BwICovLAogCQkJCTA3MDc1NkRBMTQyMzlCNEUw
MDQxNDE2MSAvKiBKU1RleHRUcmFja0N1ZUxpc3QuaCAqLywKKwkJCQkwN0I1QTJEOTE0NjQzMjBB
MDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmNwcCAqLywKKwkJCQkwN0I1QTJEQTE0NjQzMjBB
MDBBODFFQ0UgLyogSlNUZXh0VHJhY2tMaXN0LmggKi8sCiAJCQkJRTQ0NjE0MTIwQ0Q2ODI2OTAw
RkFEQTc1IC8qIEpTVGltZVJhbmdlcy5jcHAgKi8sCiAJCQkJRTQ0NjE0MTMwQ0Q2ODI2OTAwRkFE
QTc1IC8qIEpTVGltZVJhbmdlcy5oICovLAogCQkJCTA3ODQ2MzQwMTQ1QjE1MUEwMEE1OERGMSAv
KiBKU1RyYWNrRXZlbnQuY3BwICovLApAQCAtMTg1MDAsNiArMTg1MTMsOSBAQAogCQlCMUFENEU3
NzEzQTEyQTcyMDA4NDZCMjcgLyogdHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTA3Njk3MDg0MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tM
aXN0LmNwcCAqLywKKwkJCQkwNzY5NzA4NTE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlz
dC5oICovLAorCQkJCTA3QjVBMzA2MTQ2ODUzNzEwMEE4MUVDRSAvKiBUZXh0VHJhY2tMaXN0Lmlk
bCAqLywKIAkJCQkwNzAzMzREODE0NUEwMDZGMDA4RDhENDUgLyogVHJhY2tCYXNlLmNwcCAqLywK
IAkJCQkwNzAzMzRENjE0NTlGRkQ1MDA4RDhENDUgLyogVHJhY2tCYXNlLmggKi8sCiAJCQkJMDcw
MzM0RDAxNDU5RkZBQzAwOEQ4RDQ1IC8qIFRyYWNrRXZlbnQuY3BwICovLApAQCAtMTk1NzQsNyAr
MTk1OTAsNiBAQAogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQlBODVGMjIwODE0MzAzNzdE
MDA3Q0M4ODQgLyogSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzI3NUNCMjEx
QzVFODVDMDBDOTIwNkMgLyogSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgKi8sCiAJCQkJODYyNDNE
MDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8sCiAJCQkJ
QkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZGIC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCkBAIC0xOTY3
MCw2ICsxOTY4NSw3IEBACiAJCQkJQkNCNzczNjAwQzE3ODUzRDAwMTMyQkE0IC8qIEpTTm9kZUZp
bHRlckN1c3RvbS5jcHAgKi8sCiAJCQkJMUE3NTBERDMwQTkwRTcyOTAwMEZGMjE1IC8qIEpTTm9k
ZUl0ZXJhdG9yQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIgLyog
SlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJQTg1RjIyMDgxNDMwMzc3RDAwN0NDODg0IC8q
IEpTUG9wU3RhdGVFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJRTFBRDEyRDUxMjk1RDBCRDAwQUNB
OTg5IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQk0OTk4QUVE
MzEzRkM0MTdGMDA5MEIxQUEgLyogSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja0N1c3Rv
bS5jcHAgKi8sCiAJCQkJOUZBMzdFRTYxMTcyRkNGMDAwQzRDRDU1IC8qIEpTU2NyaXB0UHJvZmls
ZU5vZGVDdXN0b20uY3BwICovLApAQCAtMTk2ODMsOSArMTk2OTksMTAgQEAKIAkJCQkwOEU0RkU0
NTBFMkJENDE0MDBGNENBRTAgLyogSlNTVkdMZW5ndGhDdXN0b20uY3BwICovLAogCQkJCUIyQzk2
RDhDMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NWR1BhdGhTZWdDdXN0b20uY3BwICovLAogCQkJCTFB
MkM0MEFBMERFQjU1QUEwMDVBRjE5RSAvKiBKU1RleHRDdXN0b20uY3BwICovLAorCQkJCTA3QjVB
MzBDMTQ2ODdENzEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3RDdXN0b20uY3BwICovLAogCQkJ
CTA3MDMzNEU4MTQ1QTFGMzUwMDhEOEQ0NSAvKiBKU1RyYWNrQ3VzdG9tLmNwcCAqLywKIAkJCQkw
Nzg0NjM4NDE0NUIxQjhFMDBBNThERjEgLyogSlNUcmFja0N1c3RvbS5oICovLAotCQkJCTA3Njg5
RDZEMTQ1QjUyQ0MwMDFDRDEzMiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAorCQkJCTA3
QjVBMzBBMTQ2ODdCODQwMEE4MUVDRSAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwICovLAogCQkJ
CTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovLAog
CQkJCTQ5RUVDRjc3MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCAq
LywKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5j
cHAgKi8sCkBAIC0yNDY0Myw2ICsyNDY2MCw4IEBACiAJCQkJMzE2OTM3OUMxNDYwOUM2QzAwQzAx
MzYyIC8qIERyYWdTZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDQUU5RjkxMDE0NjQ0MUYw
MDBDMjQ1QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2
RjM2RUIxNDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3QjVBMkRDMTQ2NDMyMEEwMEE4MUVDRSAvKiBKU1RleHRUcmFja0xpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5n
dGhDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzREMkRBNTE0NkE1MzVEMDBENTFGOEIg
LyogU2VjdXJpdHlQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxNTM3QTAxMTQ2QkQ5RDcw
MDhCRDYxNSAvKiBTVkdQYXRoRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzQ5Niw3ICsyNzUx
NSw2IEBACiAJCQkJMDcwMzM0RDkxNDVBMDA2RjAwOEQ4RDQ1IC8qIFRyYWNrQmFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwNzAzMzRFOTE0NUExRjM2MDA4RDhENDUgLyogSlNUcmFja0N1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzg0NjM0MjE0NUIxNTFBMDBBNThERjEgLyogSlNU
cmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTA3Njg5RDZFMTQ1QjUyQ0MwMDFDRDEz
MiAvKiBKU1RyYWNrRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4RkVCREMx
NDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA4Rjg1OUQ0MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUNBRTlGOTBGMTQ2NDQxRjAwMEMyNDVCMCAvKiBDU1NBc3BlY3RSYXRpb1Zh
bHVlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjc1MDQsNiArMjc1MjIsMTAgQEAKIAkJCQlDREVB
NzYzNDE0NjBCNTZGMDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUNERUE3NjM1MTQ2MEI3MUEwMDhCMzFGMSAvKiBDbG9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzZGMzZFQTE0Njg2MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmNwcCBpbiBT
b3VyY2VzICovLAorIAkJCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDdCNUEyREIxNDY0MzIwQTAwQTgxRUNFIC8qIEpT
VGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJMDdCNUEzMEQxNDY4N0Q3MTAw
QTgxRUNFIC8qIEpTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKyAJCQkJ
MDdCREQ2RUMxNDY5QjRDMjAwOUM5Rjg1IC8qIEpTVHJhY2tFdmVudEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3MTM0NDk2RDE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzREMkRBNDE0NkE1MzVEMDBENTFGOEIgLyogU2Vj
dXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA5OTg3NikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0JKHdvcmtp
bmcgY29weSkKQEAgLTQwOSwxMiArNDA5LDE1IEBAIGVuZGlmCiBpZiBFTkFCTEVfVklERU9fVFJB
Q0sKIHdlYmtpdGd0a19idWlsdF9oX2FwaSArPSBcCiAJJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2suaCBcCisJJCh0b3BfYnVpbGRkaXIpL0Rl
cml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmggXAogCSQodG9wX2J1
aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlLmggXAog
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNr
Q3VlTGlzdC5oIFwKIAkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktp
dERPTVRyYWNrRXZlbnQuaAogd2Via2l0Z3RrX2dkb21fYnVpbHRfc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTVRleHRUcmFjay5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmggXAorCURlcml2ZWRTb3VyY2Vz
L3dlYmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0L1dlYktpdERPTVRleHRUcmFja0xpc3RQcml2YXRlLmggXAogCURlcml2ZWRTb3VyY2VzL3dl
YmtpdC9XZWJLaXRET01UZXh0VHJhY2tDdWUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXQv
V2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50
V3JhcHBlckZhY3RvcnkuY3BwCShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2MSw2ICsxNjEsNyBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlTGlzdFByaXZhdGUuaCIKICNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9NVGV4dFRyYWNrQ3VlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndl
YmtpdC9XZWJLaXRET01UZXh0VHJhY2tMaXN0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9X
ZWJLaXRET01UZXh0VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0L1dlYktpdERPTVRy
YWNrRXZlbnRQcml2YXRlLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gOTk4NzYpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
VGV4dEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tMaXN0Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1RvdWNoQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoTGlzdEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNUcmFja0N1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrTGlzdEN1c3RvbS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RleHRUcmFja0xpc3RDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVGV4dFRyYWNr
TGlzdC5oIgorCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNUZXh0VHJhY2tMaXN0T3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNUZXh0VHJhY2tM
aXN0KiBqc1RleHRUcmFja0xpc3QgPSBzdGF0aWNfY2FzdDxKU1RleHRUcmFja0xpc3QqPihoYW5k
bGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIFRleHRUcmFja0xpc3QqIHRleHRUcmFja0xpc3QgPSBz
dGF0aWNfY2FzdDxUZXh0VHJhY2tMaXN0Kj4oanNUZXh0VHJhY2tMaXN0LT5pbXBsKCkpOworCisg
ICAgLy8gSWYgdGhlIGxpc3QgaXMgZmlyaW5nIGV2ZW50IGxpc3RlbmVycywgaXRzIHdyYXBwZXIg
aXMgcmVhY2hhYmxlIGJlY2F1c2UKKyAgICAvLyB0aGUgd3JhcHBlciBpcyByZXNwb25zaWJsZSBm
b3IgbWFya2luZyB0aG9zZSBldmVudCBsaXN0ZW5lcnMuCisgICAgaWYgKHRleHRUcmFja0xpc3Qt
PmlzRmlyaW5nRXZlbnRMaXN0ZW5lcnMoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAv
LyBJZiB0aGUgbGlzdCBoYXMgbm8gZXZlbnQgbGlzdGVuZXJzIGFuZCBoYXMgbm8gY3VzdG9tIHBy
b3BlcnRpZXMsIGl0IGlzIG5vdCByZWFjaGFibGUuCisgICAgaWYgKCF0ZXh0VHJhY2tMaXN0LT5o
YXNFdmVudExpc3RlbmVycygpICYmICFqc1RleHRUcmFja0xpc3QtPmhhc0N1c3RvbVByb3BlcnRp
ZXMoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSXQgaXMgcmVhY2hhYmxlIGlm
IHRoZSBtZWRpYSBlbGVtZW50IHBhcmVudCBpcyByZWFjaGFibGUuCisgICAgcmV0dXJuIHZpc2l0
b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodGV4dFRyYWNrTGlzdC0+b3duZXIoKSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIx
LDcgQEAgUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3Jr
ZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0
aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNWR0VsZW1lbnRJbnN0YW5jZSBjb25kaXRpb25hbD1TVkcK
K1RleHRUcmFja0xpc3QgY29uZGl0aW9uYWw9VklERU9fVFJBQ0sKIFdlYlNvY2tldCBjb25kaXRp
b25hbD1XRUJfU09DS0VUUwogV29ya2VyIGNvbmRpdGlvbmFsPVdPUktFUlMKIFhNTEh0dHBSZXF1
ZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5jcHAJKHJldmlz
aW9uIDk5ODc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXVkaW9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBQYXNzUmVmUHRyPEhUTUxBdWRpb0VsZW1l
bnQ+IEhUTUxBdWRpb0VsCiAgICAgYXVkaW8tPnNldFByZWxvYWQoImF1dG8iKTsKICAgICBpZiAo
IXNyYy5pc051bGwoKSkgewogICAgICAgICBhdWRpby0+c2V0U3JjKHNyYyk7Ci0gICAgICAgIGF1
ZGlvLT5zY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgYXVkaW8tPnNjaGVkdWxlTG9hZChIVE1MTWVk
aWFFbGVtZW50OjpNZWRpYVJlc291cmNlKTsKICAgICB9CiAgICAgcmV0dXJuIGF1ZGlvLnJlbGVh
c2UoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
cmV2aXNpb24gOTk4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw3IEBACiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKQpAQCAtMTczLDYgKzE3NCw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6
OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QKICAgICAsIG1fY2FjaGVkVGltZShpbnZhbGlkTWVkaWFU
aW1lKQogICAgICwgbV9jYWNoZWRUaW1lV2FsbENsb2NrVXBkYXRlVGltZSgwKQogICAgICwgbV9t
aW5pbXVtV2FsbENsb2NrVGltZVRvQ2FjaGVNZWRpYVRpbWUoMCkKKyAgICAsIG1fcGVuZGluZ0xv
YWRGbGFncygwKQogICAgICwgbV9wbGF5aW5nKGZhbHNlKQogICAgICwgbV9pc1dhaXRpbmdVbnRp
bE1lZGlhQ2FuU3RhcnQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZERlbGF5TG9hZEV2ZW50KGZhbHNl
KQpAQCAtMTk4LDYgKzIwMCw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgICwgbV9hdWRpb1NvdXJjZU5vZGUoMCkK
ICNlbmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIG1fdGV4dFRyYWNrcygwKQor
I2VuZGlmCiB7CiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxl
bWVudCIpOwogICAgIGRvY3VtZW50LT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxi
YWNrcyh0aGlzKTsKQEAgLTIyNSw4ICsyMzAsMTIgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxN
ZWRpYUVsZW1lbnQoKQogICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNh
bGxiYWNrcyh0aGlzKTsKICAgICBkb2N1bWVudCgpLT51bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKHRoaXMpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLnNpemUoKTsgKytpKQot
ICAgICAgICBtX3RleHRUcmFja3NbaV0tPnNldENsaWVudCgwKTsKKyAgICBpZiAobV90ZXh0VHJh
Y2tzKQorICAgICAgICBtX3RleHRUcmFja3MtPmNsZWFyT3duZXIoKTsKKyAgICBpZiAobV90ZXh0
VHJhY2tzKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3Mt
Pmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3RleHRUcmFja3MtPml0ZW0oaSktPmNsZWFy
Q2xpZW50KCk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAgLTI2OCw3ICsyNzcsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoCiAgICAgaWYgKGF0dHJOYW1lID09IHNy
Y0F0dHIpIHsKICAgICAgICAgLy8gVHJpZ2dlciBhIHJlbG9hZCwgYXMgbG9uZyBhcyB0aGUgJ3Ny
YycgYXR0cmlidXRlIGlzIHByZXNlbnQuCiAgICAgICAgIGlmICghZ2V0QXR0cmlidXRlKHNyY0F0
dHIpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOworICAgICAgICAgICAg
c2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0g
Y29udHJvbHNBdHRyKQogICAgICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7CiB9CkBAIC0z
ODEsMTAgKzM5MCwxMCBAQCBSZW5kZXJPYmplY3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZVJl
CiAgCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKLSAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50Iik7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQiKTsK
ICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICBpZiAoIWdldEF0
dHJpYnV0ZShzcmNBdHRyKS5pc0VtcHR5KCkgJiYgbV9uZXR3b3JrU3RhdGUgPT0gTkVUV09SS19F
TVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVkdWxlTG9hZChNZWRp
YVJlc291cmNlKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCkKQEAgLTQyMywyMiArNDMyLDMyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVj
YWxjU3R5bGUoU3QKICAgICAgICAgcmVuZGVyZXIoKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0K
IAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzY2hlZHVsZUxvYWQoTG9hZFR5cGUgbG9hZFR5cGUpCiB7CiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVMb2FkIik7CisKKyAgICBpZiAoKGxvYWRUeXBl
ICYgTWVkaWFSZXNvdXJjZSkgJiYgIShtX3BlbmRpbmdMb2FkRmxhZ3MgJiBNZWRpYVJlc291cmNl
KSkgewogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGNyZWF0ZU1lZGlh
UGxheWVyUHJveHkoKTsKKyAgICAgICAgY3JlYXRlTWVkaWFQbGF5ZXJQcm94eSgpOwogI2VuZGlm
CisgICAgICAgIAorICAgICAgICBwcmVwYXJlRm9yTG9hZCgpOworICAgICAgICBtX3BlbmRpbmdM
b2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKKyAgICB9CiAKLSAgICBpZiAobV9sb2FkVGltZXIu
aXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHByZXBhcmVGb3JMb2FkKCk7Ci0gICAg
bV9sb2FkVGltZXIuc3RhcnRPbmVTaG90KDApOworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICBpZiAobG9hZFR5cGUgJiBUZXh0VHJhY2tSZXNvdXJjZSkKKyAgICAgICAgbV9wZW5kaW5nTG9h
ZEZsYWdzIHw9IFRleHRUcmFja1Jlc291cmNlOworI2VuZGlmCisKKyAgICBpZiAoIW1fbG9hZFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fbG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0K
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZU5leHRTb3VyY2VDaGlsZCgpCiB7CiAg
ICAgLy8gU2NoZWR1bGUgdGhlIHRpbWVyIHRvIHRyeSB0aGUgbmV4dCA8c291cmNlPiBlbGVtZW50
IFdJVEhPVVQgcmVzZXR0aW5nIHN0YXRlIGFsYSBwcmVwYXJlRm9yTG9hZC4KKyAgICBtX3BlbmRp
bmdMb2FkRmxhZ3MgfD0gTWVkaWFSZXNvdXJjZTsKICAgICBtX2xvYWRUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiB9CiAKQEAgLTQ3NCwxMCArNDkzLDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YXN5bmNFdmVudFRpbWVyRmkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJl
ZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiB7Ci0gICAgaWYgKG1fbG9hZFN0YXRlID09IExv
YWRpbmdGcm9tU291cmNlRWxlbWVudCkKLSAgICAgICAgbG9hZE5leHRTb3VyY2VDaGlsZCgpOwot
ICAgIGVsc2UKLSAgICAgICAgbG9hZEludGVybmFsKCk7CisgICAgaWYgKG1fcGVuZGluZ0xvYWRG
bGFncyAmIE1lZGlhUmVzb3VyY2UpIHsKKyAgICAgICAgaWYgKG1fbG9hZFN0YXRlID09IExvYWRp
bmdGcm9tU291cmNlRWxlbWVudCkKKyAgICAgICAgICAgIGxvYWROZXh0U291cmNlQ2hpbGQoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9hZEludGVybmFsKCk7CisgICAgfQorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmIChtX3BlbmRpbmdMb2FkRmxhZ3MgJiBUZXh0VHJh
Y2tSZXNvdXJjZSkKKyAgICAgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworI2VuZGlmCisKKyAg
ICBtX3BlbmRpbmdMb2FkRmxhZ3MgPSAwOwogfQogCiBQYXNzUmVmUHRyPE1lZGlhRXJyb3I+IEhU
TUxNZWRpYUVsZW1lbnQ6OmVycm9yKCkgY29uc3QgCkBAIC02MzMsOSArNjYxLDYgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwoKQogICAgIHJlbW92ZUJlaGF2aW9yUmVzdHJp
Y3Rpb24oUmVxdWlyZVBhZ2VDb25zZW50VG9Mb2FkTWVkaWFSZXN0cmljdGlvbik7CiAKICAgICBz
ZWxlY3RNZWRpYVJlc291cmNlKCk7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGxvYWRU
ZXh0VHJhY2tzKCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RN
ZWRpYVJlc291cmNlKCkKQEAgLTgzNywyOCArODYyLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkUmVzb3VyY2UoY29ucwogfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkVGV4dFRyYWNrcygpCi17Ci0gICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFn
KSkKLSAgICAgICAgICAgIGxvYWROZXh0VGV4dFRyYWNrKHN0YXRpY19jYXN0PEhUTUxUcmFja0Vs
ZW1lbnQqPihub2RlKSk7Ci0gICAgfQotfQotCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRO
ZXh0VGV4dFRyYWNrKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQotewotICAgIC8vIEZJWE1FKDcx
MTI0KTogVGhpcyBzaG91bGQgc2NoZWR1bGUgYW4gKmFzeW5jaHJvbm91cyogbG9hZC4KLSAgICB0
cmFjay0+bG9hZChBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhp
cyk7Ci0gICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJhY2stPnRyYWNrKCk7Ci0g
ICAgaWYgKHRleHRUcmFjaykKLSAgICAgICAgbV90ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2su
cmVsZWFzZSgpKTsKLSAgICAKLSAgICAvLyBGSVhNRSg3MTEyMyk6IFNldCB0aGUgdGV4dCB0cmFj
ayBtb2RlIGFjY29yZGluZ2x5LgotfQotCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFj
a1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayopCiB7CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJ
bXBsZW1lbnQuCkBAIC04NjksMTEgKzg3Miw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrTW9kZUNoYW4KICAgICAvLyBGSVhNRSg2Mjg4NSk6IEltcGxlbWVudC4KIH0KIAotdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tDcmVhdGVkKFRleHRUcmFjayopCi17Ci0gICAg
Ly8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCi19Ci0KIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgCiB7
CiAgICAgLy8gRklYTUUoNjI4ODUpOiBJbXBsZW1lbnQuCkBAIC04OTYsNyArODk0LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdQogCiAjZW5kaWYKIAotYm9vbCBI
VE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYgdXJsLCBJbnZhbGlk
U291cmNlQWN0aW9uIGFjdGlvbklmSW52YWxpZCkKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNT
YWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFVSTEFjdGlvbiBhY3Rpb25JZklu
dmFsaWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwg
IkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVSTCglcykgLT4gRkFMU0UgYmVjYXVzZSB1
cmwgaXMgaW52YWxpZCIsIHVybEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKQEAgLTkx
MSw4ICs5MDksMTAgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc1NhZmVUb0xvYWRVUkwoYwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFkb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UodXJsKSkKKyAgICBpZiAo
IWRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJj
ZSh1cmwpKSB7CisgICAgICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRv
TG9hZFVSTCglcykgLT4gcmVqZWN0ZWQgYnkgQ29udGVudCBTZWN1cml0eSBQb2xpY3kiLCB1cmxG
b3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2NzAsNyArMTY3MCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6cGxheUludGVybmFsKCkKIAogICAgIC8vIDQuOC4xMC45LiBQbGF5aW5n
IHRoZSBtZWRpYSByZXNvdXJjZQogICAgIGlmICghbV9wbGF5ZXIgfHwgbV9uZXR3b3JrU3RhdGUg
PT0gTkVUV09SS19FTVBUWSkKLSAgICAgICAgc2NoZWR1bGVMb2FkKCk7CisgICAgICAgIHNjaGVk
dWxlTG9hZChNZWRpYVJlc291cmNlKTsKIAogICAgIGlmIChlbmRlZFBsYXliYWNrKCkpIHsKICAg
ICAgICAgRXhjZXB0aW9uQ29kZSB1bnVzZWQ7CkBAIC0xNzA5LDcgKzE3MDksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnBhdXNlSW50ZXJuYWwoKQogCiAgICAgLy8gNC44LjEwLjkuIFBsYXlp
bmcgdGhlIG1lZGlhIHJlc291cmNlCiAgICAgaWYgKCFtX3BsYXllciB8fCBtX25ldHdvcmtTdGF0
ZSA9PSBORVRXT1JLX0VNUFRZKQotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAgICAgICAgc2No
ZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogCiAgICAgbV9hdXRvcGxheWluZyA9IGZhbHNlOwog
ICAgIApAQCAtMTk4OSw0MSArMTk4OSwxMTcgQEAgZmxvYXQgSFRNTE1lZGlhRWxlbWVudDo6cGVy
Y2VudExvYWRlZCgpIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UpCiB7CisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIC8vIEZJWE1FKDcxOTE1KTogYWRkVHJhY2sgc2hvdWxkIHRocm93IGEg
U3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmICdraW5kJyBpcyBhbiB1bmtub3duIHZhbHVlLgogICAg
IFJlZlB0cjxUZXh0VHJhY2s+IHRleHRUcmFjayA9IFRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGtp
bmQsIGxhYmVsLCBsYW5ndWFnZSk7Ci0gICAgbV90ZXh0VHJhY2tzLmFwcGVuZCh0ZXh0VHJhY2sp
OworICAgIGFkZFRleHRUcmFjayh0ZXh0VHJhY2spOwogICAgIHJldHVybiB0ZXh0VHJhY2sucmVs
ZWFzZSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2FzQWRkZWQoSFRNTFRy
YWNrRWxlbWVudCogdHJhY2spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQ
YXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgaWYgKCFtX3RleHRUcmFja3MpCisg
ICAgICAgIG1fdGV4dFRyYWNrcyA9IFRleHRUcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBBY3RpdmVE
T01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgbV90ZXh0VHJhY2tzLT5h
cHBlbmQodHJhY2spOworCisgICAgY29uZmlndXJlVGV4dFRyYWNrcygpOworfQorCit2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja3MoKQoreworICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFj
a3MKKyAgICAKKyAgICAvLyBXaGVuIGEgdGV4dCB0cmFjayBjb3JyZXNwb25kaW5nIHRvIGEgdHJh
Y2sgZWxlbWVudCBpcyBhZGRlZCB0byBhIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJh
Y2tzLAorICAgIC8vIHRoZSB1c2VyIGFnZW50IG11c3Qgc2V0IHRoZSB0ZXh0IHRyYWNrIG1vZGUg
YXBwcm9wcmlhdGVseSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
CisgICAgCisgICAgLy8gKiBJZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIHN1YnRpdGxlcyBvciBj
YXB0aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGluZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcg
YQorICAgIC8vIHRyYWNrIHdpdGggdGhpcyB0ZXh0IHRyYWNrIGtpbmQsIHRleHQgdHJhY2sgbGFu
Z3VhZ2UsIGFuZCB0ZXh0IHRyYWNrIGxhYmVsIGVuYWJsZWQsIGFuZCB0aGVyZSBpcyBubworICAg
IC8vIG90aGVyIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRleHQg
dHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgZWl0aGVyIHN1YnRpdGxlcworICAgIC8v
IG9yIGNhcHRpb25zIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nCisgICAgLy8gKiBJ
ZiB0aGUgdGV4dCB0cmFjayBraW5kIGlzIGRlc2NyaXB0aW9ucyBhbmQgdGhlIHVzZXIgaGFzIGlu
ZGljYXRlZCBhbiBpbnRlcmVzdCBpbiBoYXZpbmcgdGV4dCAKKyAgICAvLyBkZXNjcmlwdGlvbnMg
d2l0aCB0aGlzIHRleHQgdHJhY2sgbGFuZ3VhZ2UgYW5kIHRleHQgdHJhY2sgbGFiZWwgZW5hYmxl
ZCwgYW5kIHRoZXJlIGlzIG5vIG90aGVyIHRleHQgCisgICAgLy8gdHJhY2sgaW4gdGhlIG1lZGlh
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2Yg
ZGVzY3JpcHRpb25zIHdob3NlIHRleHQgCisgICAgLy8gdHJhY2sgbW9kZSBpcyBzaG93aW5nCisg
ICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgc2hvd2luZy4KKyAgICAvLyAgICBJ
ZiB0aGVyZSBpcyBhIHRleHQgdHJhY2sgaW4gdGhlIG1lZGlhIGVsZW1lbnQncyBsaXN0IG9mIHRl
eHQgdHJhY2tzIHdob3NlIHRleHQgdHJhY2sgbW9kZSBpcyBzaG93aW5nIAorICAgIC8vICAgIGJ5
IGRlZmF1bHQsIHRoZSB1c2VyIGFnZW50IG11c3QgZnVydGhlcm1vcmUgY2hhbmdlIHRoYXQgdGV4
dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSB0byBoaWRkZW4uCisgICAgCisgICAgLy8gKiBJZiB0
aGUgdGV4dCB0cmFjayBraW5kIGlzIGNoYXB0ZXJzIGFuZCB0aGUgdGV4dCB0cmFjayBsYW5ndWFn
ZSBpcyBvbmUgdGhhdCB0aGUgdXNlciBhZ2VudCBoYXMgcmVhc29uCisgICAgLy8gdG8gYmVsaWV2
ZSBpcyBhcHByb3ByaWF0ZSBmb3IgdGhlIHVzZXIsIGFuZCB0aGVyZSBpcyBubyBvdGhlciB0ZXh0
IHRyYWNrIGluIHRoZSBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZgorICAgIC8vIHRleHQgdHJhY2tz
IHdpdGggYSB0ZXh0IHRyYWNrIGtpbmQgb2YgY2hhcHRlcnMgd2hvc2UgdGV4dCB0cmFjayBtb2Rl
IGlzIHNob3dpbmcKKyAgICAvLyAgICBMZXQgdGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5n
LgorICAgIAorICAgIC8vICogSWYgdGhlIHRyYWNrIGVsZW1lbnQgaGFzIGEgZGVmYXVsdCBhdHRy
aWJ1dGUgc3BlY2lmaWVkLCBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgdGV4dCB0cmFjayBpbiB0aGUg
bWVkaWEKKyAgICAvLyBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRyYWNrcyB3aG9zZSB0ZXh0IHRy
YWNrIG1vZGUgaXMgc2hvd2luZyBvciBzaG93aW5nIGJ5IGRlZmF1bHQKKyAgICAvLyAgICBMZXQg
dGhlIHRleHQgdHJhY2sgbW9kZSBiZSBzaG93aW5nIGJ5IGRlZmF1bHQuCisgICAgCisgICAgLy8g
T3RoZXJ3aXNlCisgICAgLy8gICAgTGV0IHRoZSB0ZXh0IHRyYWNrIG1vZGUgYmUgZGlzYWJsZWQu
CisgICAgCisgICAgLy8gRklYTUUoNzExMjMpOiBVbnRpbCB0aGUgYWJvdmUgbG9naWMgaGFzIGJl
ZW4gaW1wbGVtZW50ZWQsIGp1c3QgdGVsbCBhbGwgdGV4dCB0cmFja3MgdG8gbG9hZC4KKyAgICBm
b3IgKE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKSB7CisgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEhUTUxUcmFja0VsZW1lbnQqPihub2RlKS0+c2NoZWR1bGVMb2Fk
KCk7CisgICAgfQorfQorCitUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tzKCkgY29uc3QgCiB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChtX3RleHRU
cmFja3MpCisgICAgICAgIHJldHVybiBtX3RleHRUcmFja3MuZ2V0KCk7CisKKyAgICByZXR1cm4g
MDsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhUTUxUcmFja0Vs
ZW1lbnQqIHRyYWNrRWxlbWVudCkKK3sKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKwogI2lmICFMT0df
RElTQUJMRUQKLSAgICBpZiAodHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7Ci0gICAgICAg
IEtVUkwgdXJsID0gdHJhY2stPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAg
IGlmICh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7CisgICAgICAgIEtVUkwg
dXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKICAg
ICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCAtICdzcmMn
IGlzICVzIiwgdXJsRm9yTG9nZ2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICNlbmRp
ZgotICAgIGxvYWROZXh0VGV4dFRyYWNrKHRyYWNrKTsKKworICAgIC8vIDQuOC4xMC4xMi4zIFNv
dXJjaW5nIG91dC1vZi1iYW5kIHRleHQgdHJhY2tzCisgICAgLy8gV2hlbiBhIHRyYWNrIGVsZW1l
bnQncyBwYXJlbnQgZWxlbWVudCBjaGFuZ2VzIGFuZCB0aGUgbmV3IHBhcmVudCBpcyBhIG1lZGlh
IGVsZW1lbnQsIAorICAgIC8vIHRoZW4gdGhlIHVzZXIgYWdlbnQgbXVzdCBhZGQgdGhlIHRyYWNr
IGVsZW1lbnQncyBjb3JyZXNwb25kaW5nIHRleHQgdHJhY2sgdG8gdGhlIAorICAgIC8vIG1lZGlh
IGVsZW1lbnQncyBsaXN0IG9mIHRleHQgdHJhY2tzIC4uLiBbY29udGludWVzIGluIFRleHRUcmFj
a0xpc3Q6OmFwcGVuZF0KKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0ZXh0VHJhY2sgPSB0cmFja0Vs
ZW1lbnQtPnRyYWNrKCk7CisgICAgaWYgKCF0ZXh0VHJhY2spCisgICAgICAgIHJldHVybjsKKyAg
ICBhZGRUZXh0VHJhY2sodGV4dFRyYWNrKTsgICAgCisgICAgc2NoZWR1bGVMb2FkKFRleHRUcmFj
a1Jlc291cmNlKTsKIH0KICAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1v
dmVkKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFj
a1dpbGxCZVJlbW92ZWQoSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50KQogewogI2lmICFM
T0dfRElTQUJMRUQKLSAgICBpZiAodHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7Ci0gICAg
ICAgIEtVUkwgdXJsID0gdHJhY2stPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwor
ICAgIGlmICh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7CisgICAgICAgIEtV
UkwgdXJsID0gdHJhY2tFbGVtZW50LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsK
ICAgICAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1vdmVk
IC0gJ3NyYycgaXMgJXMiLCB1cmxGb3JMb2dnaW5nKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQogI2VuZGlmCi19CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tTb3VyY2VDaGFuZ2Vk
KEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQotewotI2lmICFMT0dfRElTQUJMRUQKLSAgICBpZiAo
dHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7Ci0gICAgICAgIEtVUkwgdXJsID0gdHJhY2st
PmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOwotICAgICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50Ojp0cmFja1NvdXJjZUNoYW5nZWQgLSAnc3JjJyBpcyAlcyIsIHVybEZv
ckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKLSAgICB9Ci0jZW5kaWYKLSAgICBsb2FkTmV4
dFRleHRUcmFjayh0cmFjayk7CisgICAgUmVmUHRyPFRleHRUcmFjaz4gdGV4dFRyYWNrID0gdHJh
Y2tFbGVtZW50LT50cmFjaygpOworICAgIGlmICghdGV4dFRyYWNrKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcwor
ICAgIC8vIFdoZW4gYSB0cmFjayBlbGVtZW50J3MgcGFyZW50IGVsZW1lbnQgY2hhbmdlcyBhbmQg
dGhlIG9sZCBwYXJlbnQgd2FzIGEgbWVkaWEgZWxlbWVudCwgCisgICAgLy8gdGhlbiB0aGUgdXNl
ciBhZ2VudCBtdXN0IHJlbW92ZSB0aGUgdHJhY2sgZWxlbWVudCdzIGNvcnJlc3BvbmRpbmcgdGV4
dCB0cmFjayBmcm9tIHRoZSAKKyAgICAvLyBtZWRpYSBlbGVtZW50J3MgbGlzdCBvZiB0ZXh0IHRy
YWNrcy4KKyAgICBtX3RleHRUcmFja3MtPnJlbW92ZSh0ZXh0VHJhY2spOwogfQogI2VuZGlmCiAK
QEAgLTIwNDIsNyArMjExOCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGF2ZVBvdGVudGlh
bFNvdXIKICAgICByZXR1cm4gbmV4dFVSTC5pc1ZhbGlkKCk7CiB9CiAKLUtVUkwgSFRNTE1lZGlh
RWxlbWVudDo6c2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlICpjb250ZW50VHlwZSwg
SW52YWxpZFNvdXJjZUFjdGlvbiBhY3Rpb25JZkludmFsaWQpCitLVVJMIEhUTUxNZWRpYUVsZW1l
bnQ6OnNlbGVjdE5leHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSAqY29udGVudFR5cGUsIEludmFs
aWRVUkxBY3Rpb24gYWN0aW9uSWZJbnZhbGlkKQogewogI2lmICFMT0dfRElTQUJMRUQKICAgICAv
LyBEb24ndCBsb2cgaWYgdGhpcyB3YXMganVzdCBjYWxsZWQgdG8gZmluZCBvdXQgaWYgdGhlcmUg
YXJlIGFueSB2YWxpZCA8c291cmNlPiBlbGVtZW50cy4KQEAgLTIxNTQsNyArMjIzMCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6c291cmNlV2FzQWRkZWQoSFQKICAgICAvLyBhdHRyaWJ1dGUg
YW5kIHdob3NlIG5ldHdvcmtTdGF0ZSBoYXMgdGhlIHZhbHVlIE5FVFdPUktfRU1QVFksIHRoZSB1
c2VyIGFnZW50IG11c3QgaW52b2tlIAogICAgIC8vIHRoZSBtZWRpYSBlbGVtZW50J3MgcmVzb3Vy
Y2Ugc2VsZWN0aW9uIGFsZ29yaXRobS4KICAgICBpZiAobmV0d29ya1N0YXRlKCkgPT0gSFRNTE1l
ZGlhRWxlbWVudDo6TkVUV09SS19FTVBUWSkgewotICAgICAgICBzY2hlZHVsZUxvYWQoKTsKKyAg
ICAgICAgc2NoZWR1bGVMb2FkKE1lZGlhUmVzb3VyY2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24g
OTk4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQCBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OwogY2xhc3Mg
TWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOworY2xhc3MgVGV4
dFRyYWNrTGlzdDsKIGNsYXNzIFRpbWVSYW5nZXM7CiBjbGFzcyBVaW50OEFycmF5OwogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtODksNyArOTAsMTEgQEAgcHVibGljOgog
ICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogCi0gICAg
dm9pZCBzY2hlZHVsZUxvYWQoKTsKKyAgICBlbnVtIExvYWRUeXBlIHsKKyAgICAgICAgTWVkaWFS
ZXNvdXJjZSA9IDEgPDwgMCwKKyAgICAgICAgVGV4dFRyYWNrUmVzb3VyY2UgPSAxIDw8IDEKKyAg
ICB9OworICAgIHZvaWQgc2NoZWR1bGVMb2FkKExvYWRUeXBlKTsKICAgICAKICAgICBNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Q7CiAgICAgCkBAIC0xODEs
OSArMTg2LDIwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICBQYXNz
UmVmUHRyPFRleHRUcmFjaz4gYWRkVHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsID0gIiIsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSAiIik7CisgICAgVGV4dFRy
YWNrTGlzdCogdGV4dFRyYWNrcygpIGNvbnN0OworCisgICAgdm9pZCBhZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxUZXh0VHJhY2s+KTsKKwogICAgIHZpcnR1YWwgdm9pZCB0cmFja1dhc0FkZGVkKEhU
TUxUcmFja0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhY2tXaWxsQmVSZW1vdmVkKEhU
TUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdHJhY2tTb3VyY2VDaGFuZ2VkKEhU
TUxUcmFja0VsZW1lbnQqKTsKKworICAgIC8vIFRleHRUcmFja0NsaWVudAorICAgIHZpcnR1YWwg
dm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKik7CisgICAgdmlydHVhbCB2b2lk
IHRleHRUcmFja0FkZEN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwor
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRl
eHRUcmFja0N1ZUxpc3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRU
cmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPik7CisgICAgdmlydHVhbCB2b2lkIHRleHRU
cmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKQEAgLTIzMCw2ICsyNDYs
OSBAQCBwdWJsaWM6CiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRl
cigpOwogI2VuZGlmCiAKKyAgICBlbnVtIEludmFsaWRVUkxBY3Rpb24geyBEb05vdGhpbmcsIENv
bXBsYWluIH07CisgICAgYm9vbCBpc1NhZmVUb0xvYWRVUkwoY29uc3QgS1VSTCYsIEludmFsaWRV
UkxBY3Rpb24pOworCiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7
CkBAIC0zNDksMjMgKzM2OCwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgd2FpdEZvclNvdXJjZUNo
YW5nZSgpOwogICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpOwogCi0gICAgZW51bSBJbnZhbGlkU291
cmNlQWN0aW9uIHsgRG9Ob3RoaW5nLCBDb21wbGFpbiB9OwotICAgIGJvb2wgaXNTYWZlVG9Mb2Fk
VVJMKGNvbnN0IEtVUkwmLCBJbnZhbGlkU291cmNlQWN0aW9uKTsKLSAgICBLVVJMIHNlbGVjdE5l
eHRTb3VyY2VDaGlsZChDb250ZW50VHlwZSosIEludmFsaWRTb3VyY2VBY3Rpb24pOworICAgIEtV
Ukwgc2VsZWN0TmV4dFNvdXJjZUNoaWxkKENvbnRlbnRUeXBlKiwgSW52YWxpZFVSTEFjdGlvbik7
CiAgICAgdm9pZCBtZWRpYUxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7
CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgdm9pZCBsb2FkVGV4dFRyYWNrcygpOwot
ICAgIHZvaWQgbG9hZE5leHRUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCopOwotCi0gICAgLy8g
VGV4dFRyYWNrQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFu
Z2VkKFRleHRUcmFjayopOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChU
ZXh0VHJhY2sqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBU
ZXh0VHJhY2tDdWVMaXN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMo
VGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPik7CisgICAgdm9pZCBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYK
IAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIgZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdl
c3R1cmUgcmVzdHJpY3Rpb25zLgpAQCAtNDcxLDYgKzQ3OCw5IEBAIHByaXZhdGU6CiAgICAgbXV0
YWJsZSBmbG9hdCBtX2NhY2hlZFRpbWU7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZWRUaW1l
V2FsbENsb2NrVXBkYXRlVGltZTsKICAgICBtdXRhYmxlIGRvdWJsZSBtX21pbmltdW1XYWxsQ2xv
Y2tUaW1lVG9DYWNoZU1lZGlhVGltZTsKKyAgICAKKyAgICB0eXBlZGVmIHVuc2lnbmVkIFBlbmRp
bmdMb2FkRmxhZ3M7CisgICAgUGVuZGluZ0xvYWRGbGFncyBtX3BlbmRpbmdMb2FkRmxhZ3M7CiAK
ICAgICBib29sIG1fcGxheWluZyA6IDE7CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFD
YW5TdGFydCA6IDE7CkBAIC01MTQsNyArNTI0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdGV4
dFRyYWNrczsKKyAgICBSZWZQdHI8VGV4dFRyYWNrTGlzdD4gbV90ZXh0VHJhY2tzOwogI2VuZGlm
CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDk5ODc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIG1vZHVsZSBodG1sIHsKIAogI2lm
IGRlZmluZWQoRU5BQkxFX1ZJREVPX1RSQUNLKSAmJiBFTkFCTEVfVklERU9fVFJBQ0sKICAgICBb
RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2sgYWRkVHJhY2soaW4g
RE9NU3RyaW5nIGtpbmQsIGluIFtPcHRpb25hbF0gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9u
YWxdIERPTVN0cmluZyBsYW5ndWFnZSk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVk
QXRSdW50aW1lPXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKICNl
bmRpZgogfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNw
cAkocmV2aXNpb24gOTk4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiSFRNTE1l
ZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKKyNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXZlbnRMaXN0ZW5lci5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNDIsNiArNDMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTFRyYWNrRWxlbWVudDo6
SFRNTFRyYWNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1f
dHJhY2soMCkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MVHJhY2tFbGVtZW50OjpIVE1MVHJhY2tF
bGVtZW50IC0gJXAiLCB0aGlzKTsKICAgICBBU1NFUlQoaGFzVGFnTmFtZSh0cmFja1RhZykpOwpA
QCAtNDksNiArNTEsOCBAQCBpbmxpbmUgSFRNTFRyYWNrRWxlbWVudDo6SFRNTFRyYWNrRWxlbWVu
CiAKIEhUTUxUcmFja0VsZW1lbnQ6On5IVE1MVHJhY2tFbGVtZW50KCkKIHsKKyAgICBpZiAobV90
cmFjaykKKyAgICAgICAgbV90cmFjay0+Y2xlYXJDbGllbnQoKTsKIH0KIAogUGFzc1JlZlB0cjxI
VE1MVHJhY2tFbGVtZW50PiBIVE1MVHJhY2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNTksMTYgKzYzLDE2IEBAIFBh
c3NSZWZQdHI8SFRNTFRyYWNrRWxlbWVudD4gSFRNTFRyYWNrRWwKIHZvaWQgSFRNTFRyYWNrRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29sIGRlZXApCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omlu
c2VydGVkSW50b1RyZWUoZGVlcCk7Ci0gICAgRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVu
dCgpOwotICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5pc01lZGlhRWxlbWVudCgpKQotICAgICAg
ICBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tXYXNB
ZGRlZCh0aGlzKTsKKworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVs
ZW1lbnQoKSkKKyAgICAgICAgcGFyZW50LT50cmFja1dhc0FkZGVkKHRoaXMpOwogfQogCiB2b2lk
IEhUTUxUcmFja0VsZW1lbnQ6OndpbGxSZW1vdmUoKQogewotICAgIEVsZW1lbnQqIHBhcmVudCA9
IHBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+aXNNZWRpYUVsZW1l
bnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUo
KSktPnRyYWNrV2lsbEJlUmVtb3ZlZCh0aGlzKTsKKyAgICBpZiAoSFRNTE1lZGlhRWxlbWVudCog
cGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHBhcmVudC0+dHJhY2tXaWxsQmVSZW1v
dmVkKHRoaXMpOworCiAgICAgSFRNTEVsZW1lbnQ6OndpbGxSZW1vdmUoKTsKIH0KIApAQCAtOTAs
OCArOTQsOCBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoCiAKICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSA9IGF0dHItPm5hbWUoKTsKICAgICBpZiAo
YXR0ck5hbWUgPT0gc3JjQXR0cikgewotICAgICAgICBpZiAoIWdldEF0dHJpYnV0ZShzcmNBdHRy
KS5pc0VtcHR5KCkgJiYgcGFyZW50Tm9kZSgpKQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRN
TE1lZGlhRWxlbWVudCo+KHBhcmVudE5vZGUoKSktPnRyYWNrU291cmNlQ2hhbmdlZCh0aGlzKTsK
KyAgICAgICAgaWYgKCFnZXRBdHRyaWJ1dGUoc3JjQXR0cikuaXNFbXB0eSgpICYmIG1lZGlhRWxl
bWVudCgpKQorICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CiAgICAgfQogfQogCkBAIC0xMzcs
NyArMTQxLDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRMYWJlbChjb25zdCBTdAogCiBi
b29sIEhUTUxUcmFja0VsZW1lbnQ6OmlzRGVmYXVsdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhh
c0F0dHJpYnV0ZShkZWZhdWx0QXR0cik7CisgICAgcmV0dXJuIGZhc3RIYXNBdHRyaWJ1dGUoZGVm
YXVsdEF0dHIpOwogfQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNldElzRGVmYXVsdChib29s
IGlzRGVmYXVsdCkKQEAgLTE0NSwxMSArMTQ5LDE5IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6
c2V0SXNEZWZhdWx0KGJvb2wKICAgICBzZXRCb29sZWFuQXR0cmlidXRlKGRlZmF1bHRBdHRyLCBp
c0RlZmF1bHQpOwogfQogCi1UZXh0VHJhY2sqIEhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKCkgY29u
c3QKK0xvYWRhYmxlVGV4dFRyYWNrKiBIVE1MVHJhY2tFbGVtZW50OjplbnN1cmVUcmFjaygpCiB7
Ci0gICAgaWYgKG1fdHJhY2spCi0gICAgICAgIHJldHVybiBtX3RyYWNrLmdldCgpOwotICAgIHJl
dHVybiAwOworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fdHJhY2spCisgICAg
ICAgIG1fdHJhY2sgPSBMb2FkYWJsZVRleHRUcmFjazo6Y3JlYXRlKHRoaXMsIGtpbmQoKSwgbGFi
ZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQoKSk7CisgICAgcmV0dXJuIG1fdHJhY2suZ2V0KCk7
Cit9CisKK1RleHRUcmFjayogSFRNTFRyYWNrRWxlbWVudDo6dHJhY2soKQoreworICAgIHJldHVy
biBlbnN1cmVUcmFjaygpOwogfQogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmlzVVJMQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cmlidXRlKSBjb25zdApAQCAtMTU3LDE5ICsxNjksNzkgQEAgYm9v
bCBIVE1MVHJhY2tFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShBdAogICAgIHJldHVybiBhdHRyaWJ1
dGUtPm5hbWUoKSA9PSBzcmNBdHRyIHx8IEhUTUxFbGVtZW50Ojppc1VSTEF0dHJpYnV0ZShhdHRy
aWJ1dGUpOwogfQogCi12b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmxvYWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCkKK3ZvaWQgSFRN
TFRyYWNrRWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKIHsKLSAgICBtX3RyYWNrID0gTG9hZGFibGVU
ZXh0VHJhY2s6OmNyZWF0ZSh0cmFja0NsaWVudCwgdGhpcywga2luZCgpLCBsYWJlbCgpLCBzcmNs
YW5nKCksIGlzRGVmYXVsdCgpKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaGFzQXR0cmlidXRlKHNyY0F0dHIpKQotICAgICAgICBtX3RyYWNr
LT5sb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpLCBjb250ZXh0KTsKKyAgICBp
ZiAoIWZhc3RIYXNBdHRyaWJ1dGUoc3JjQXR0cikpCisgICAgICAgIHJldHVybjsKKworICAgIGVu
c3VyZVRyYWNrKCktPnNjaGVkdWxlTG9hZChnZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRy
KSk7CiB9CiAKLXZvaWQgSFRNTFRyYWNrRWxlbWVudDo6dGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRl
ZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKK2Jvb2wgSFRNTFRyYWNr
RWxlbWVudDo6Y2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmIHVybCkK
K3sKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKTsKKyAgICBp
ZiAoIXBhcmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFwYXJlbnQtPmlz
U2FmZVRvTG9hZFVSTCh1cmwsIEhUTUxNZWRpYUVsZW1lbnQ6OkNvbXBsYWluKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1
cmwuc3RyaW5nKCkpOworfQorCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OmRpZENvbXBsZXRlTG9h
ZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wgbG9hZGluZ0ZhaWxlZCkKIHsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUobG9hZGluZ0Zh
aWxlZCA/IGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50IDogZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
ZmFsc2UsIGZhbHNlKSwgZWMpOwogfQorICAgIAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0
VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIGlmIChIVE1M
TWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBh
cmVudC0+dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQodHJhY2spOworfQorICAgIAordm9pZCBI
VE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqIHRyYWNrKQor
eworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAg
ICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodHJhY2spOworfQorICAg
IAordm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayogdHJh
Y2ssIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMpCit7CisgICAgaWYgKEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcGFyZW50LT50
ZXh0VHJhY2tBZGRDdWVzKHRyYWNrLCBjdWVzKTsKK30KKyAgICAKK3ZvaWQgSFRNTFRyYWNrRWxl
bWVudDo6dGV4dFRyYWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqIHRyYWNrLCBjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0KiBjdWVzKQoreworICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBt
ZWRpYUVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3Vlcyh0
cmFjaywgY3Vlcyk7Cit9CisgICAgCit2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnRleHRUcmFja0Fk
ZEN1ZShUZXh0VHJhY2sqIHRyYWNrLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlKQorewor
ICAgIGlmIChIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRpYUVsZW1lbnQoKSkKKyAgICAg
ICAgcmV0dXJuIHBhcmVudC0+dGV4dFRyYWNrQWRkQ3VlKHRyYWNrLCBjdWUpOworfQorICAgIAor
dm9pZCBIVE1MVHJhY2tFbGVtZW50Ojp0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiB0cmFj
aywgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSkKK3sKKyAgICBpZiAoSFRNTE1lZGlhRWxl
bWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCkpCisgICAgICAgIHJldHVybiBwYXJlbnQtPnRl
eHRUcmFja1JlbW92ZUN1ZSh0cmFjaywgY3VlKTsKK30KKworSFRNTE1lZGlhRWxlbWVudCogSFRN
TFRyYWNrRWxlbWVudDo6bWVkaWFFbGVtZW50KCkgY29uc3QKK3sKKyAgICBFbGVtZW50KiBwYXJl
bnQgPSBwYXJlbnRFbGVtZW50KCk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmlzTWVkaWFF
bGVtZW50KCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4o
cGFyZW50Tm9kZSgpKTsKKworICAgIHJldHVybiAwOworfQogCiAjaWYgRU5BQkxFKE1JQ1JPREFU
QSkKIFN0cmluZyBIVE1MVHJhY2tFbGVtZW50OjppdGVtVmFsdWVUZXh0KCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCShyZXZpc2lvbiA5OTg3NikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFRyYWNr
RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBUZXh0VHJhY2tMb2FkaW5nQ2xp
ZW50IHsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CisKK2NsYXNzIEhUTUxUcmFja0VsZW1lbnQg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDgsMTggKzUwLDE2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNyY2xhbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRMYWJlbChjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldElzRGVmYXVsdChib29sKTsKLSAgICBUZXh0VHJhY2sq
IHRyYWNrKCkgY29uc3Q7CisgICAgVGV4dFRyYWNrKiB0cmFjaygpOwogICAgIAotICAgIHZvaWQg
bG9hZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50Kik7CisgICAgdm9p
ZCBzY2hlZHVsZUxvYWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgY2FuTG9hZFVybChMb2FkYWJsZVRl
eHRUcmFjayosIGNvbnN0IEtVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVMb2Fk
KExvYWRhYmxlVGV4dFRyYWNrKiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKTsKIAogcHJpdmF0
ZToKLQotICAgIC8vIFRleHRUcmFja0xvYWRpbmdDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrTG9hZGluZ0NvbXBsZXRlZChMb2FkYWJsZVRleHRUcmFjayosIGJvb2wpOwotCiAgICAg
SFRNTFRyYWNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2
aXJ0dWFsIH5IVE1MVHJhY2tFbGVtZW50KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzKTsKIApAQCAtNzIsNiArNzIs
MTggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXRlbVZhbHVlVGV4dChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJikgT1ZFUlJJREU7CiAjZW5kaWYKIAorICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0OworCisgICAgLy8gVGV4dFRyYWNrQ2xpZW50
CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlYWR5U3RhdGVDaGFuZ2VkKFRleHRUcmFjayop
OworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0Kik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRy
YWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopOworICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJh
Y2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KTsKKyAgICB2aXJ0
dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRy
YWNrQ3VlPik7CisKKyAgICBMb2FkYWJsZVRleHRUcmFjayogZW5zdXJlVHJhY2soKTsKKwogICAg
IFJlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gbV90cmFjazsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCShyZXZpc2lvbiA5OTg3NikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSwxMyArMjksMTYgQEAKIAogI2luY2x1ZGUgIkxvYWRhYmxlVGV4dFRyYWNrLmgiCiAKKyNp
bmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1Mb2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soVGV4dFRyYWNrQ2xpZW50
KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCogbG9hZGluZ0NsaWVudCwgY29u
c3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1
YWdlLCBib29sIGlzRGVmYXVsdCkKLSAgICA6IFRleHRUcmFjayh0cmFja0NsaWVudCwga2luZCwg
bGFiZWwsIGxhbmd1YWdlKQotICAgICwgbV9sb2FkaW5nQ2xpZW50KGxvYWRpbmdDbGllbnQpCitM
b2FkYWJsZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCogdHJh
Y2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1bHQpCisgICAgOiBUZXh0VHJhY2sodHJhY2ssIGtpbmQs
IGxhYmVsLCBsYW5ndWFnZSkKKyAgICAsIG1fdHJhY2tFbGVtZW50KHRyYWNrKQorICAgICwgbV9s
b2FkVGltZXIodGhpcywgJkxvYWRhYmxlVGV4dFRyYWNrOjpsb2FkVGltZXJGaXJlZCkKICAgICAs
IG1faXNEZWZhdWx0KGlzRGVmYXVsdCkKIHsKIH0KQEAgLTQ0LDExICs0NywzMyBAQCBMb2FkYWJs
ZVRleHRUcmFjazo6fkxvYWRhYmxlVGV4dFRyYWNrKCkKIHsKIH0KIAotdm9pZCBMb2FkYWJsZVRl
eHRUcmFjazo6bG9hZChjb25zdCBLVVJMJiB1cmwsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpjbGVhckNsaWVudCgpCiB7Ci0gICAgaWYg
KCFtX2xvYWRlcikKLSAgICAgICAgbV9sb2FkZXIgPSBUZXh0VHJhY2tMb2FkZXI6OmNyZWF0ZSh0
aGlzLCBjb250ZXh0KTsKLSAgICBtX2xvYWRlci0+bG9hZCh1cmwpOworICAgIG1fdHJhY2tFbGVt
ZW50ID0gMDsKKyAgICBUZXh0VHJhY2s6OmNsZWFyQ2xpZW50KCk7Cit9CisKK3ZvaWQgTG9hZGFi
bGVUZXh0VHJhY2s6OnNjaGVkdWxlTG9hZChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgbV91cmwg
PSB1cmw7CisgICAgaWYgKCFtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2xvYWRU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmxvYWRU
aW1lckZpcmVkKFRpbWVyPExvYWRhYmxlVGV4dFRyYWNrPiopCit7CisgICAgc2V0UmVhZHlTdGF0
ZShUZXh0VHJhY2s6OkxPQURJTkcpOworICAgIAorICAgIGlmIChtX2xvYWRlcikKKyAgICAgICAg
bV9sb2FkZXItPmNhbmNlbExvYWQoKTsKKworICAgIGlmICghbV90cmFja0VsZW1lbnQgfHwgIW1f
dHJhY2tFbGVtZW50LT5jYW5Mb2FkVXJsKHRoaXMsIG1fdXJsKSkgeworICAgICAgICBzZXRSZWFk
eVN0YXRlKFRleHRUcmFjazo6SFRNTF9FUlJPUik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2xvYWRlciA9IFRleHRUcmFja0xvYWRlcjo6Y3JlYXRlKHRoaXMsIHN0YXRpY19jYXN0
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqPihtX3RyYWNrRWxlbWVudC0+ZG9jdW1lbnQoKSkpOwor
ICAgIG1fbG9hZGVyLT5sb2FkKG1fdXJsKTsKIH0KIAogdm9pZCBMb2FkYWJsZVRleHRUcmFjazo6
bmV3Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2FkZXIqIGxvYWRlcikKQEAgLTgyLDggKzEwNyw4
IEBAIHZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmN1ZUxvYWRpbmdDb21wbGUKIAogICAgIGxvYWRp
bmdGYWlsZWQgPyBzZXRSZWFkeVN0YXRlKFRleHRUcmFjazo6SFRNTF9FUlJPUikgOiBzZXRSZWFk
eVN0YXRlKFRleHRUcmFjazo6TE9BREVEKTsKIAotICAgIGlmIChtX2xvYWRpbmdDbGllbnQpCi0g
ICAgICAgIG1fbG9hZGluZ0NsaWVudC0+dGV4dFRyYWNrTG9hZGluZ0NvbXBsZXRlZCh0aGlzLCBs
b2FkaW5nRmFpbGVkKTsKKyAgICBpZiAobV90cmFja0VsZW1lbnQpCisgICAgICAgIG1fdHJhY2tF
bGVtZW50LT5kaWRDb21wbGV0ZUxvYWQodGhpcywgbG9hZGluZ0ZhaWxlZCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRy
YWNrLmgJKHJldmlzaW9uIDk5ODc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRl
eHRUcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNywyNSArMzcsMjYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBIVE1MVHJhY2tFbGVtZW50OwogY2xhc3MgTG9hZGFibGVUZXh0VHJh
Y2s7Ci1jbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCi1jbGFzcyBUZXh0VHJhY2tMb2Fk
aW5nQ2xpZW50IHsKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50IDogcHVibGljIFRleHRU
cmFja0NsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+VGV4dFRyYWNrTG9hZGluZ0NsaWVu
dCgpIHsgfQorICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrQ2xpZW50KCkgeyB9CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0xvYWRpbmdDb21wbGV0ZWQoTG9hZGFibGVUZXh0
VHJhY2sqLCBib29sIC8qIGxvYWRpbmdGYWlsZWQgKi8pID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuTG9hZFVybChMb2FkYWJsZVRleHRUcmFjayosIGNvbnN0IEtVUkwmKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBsb2FkaW5nQ29tcGxldGVkKExvYWRhYmxlVGV4dFRyYWNr
KiwgYm9vbCAvKiBsb2FkaW5nRmFpbGVkICovKSB7IH0KIH07CiAKIGNsYXNzIExvYWRhYmxlVGV4
dFRyYWNrIDogcHVibGljIFRleHRUcmFjaywgcHJpdmF0ZSBUZXh0VHJhY2tMb2FkZXJDbGllbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExvYWRhYmxlVGV4dFRyYWNrPiBjcmVh
dGUoVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgVGV4dFRyYWNrTG9hZGluZ0NsaWVudCog
bG9hZGluZ0NsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRlKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrLCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGJvb2wgaXNEZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBMb2FkYWJsZVRleHRUcmFjayh0cmFja0NsaWVudCwgbG9hZGluZ0NsaWVudCwga2luZCwgbGFi
ZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBM
b2FkYWJsZVRleHRUcmFjayh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQp
KTsKICAgICB9CiAgICAgdmlydHVhbCB+TG9hZGFibGVUZXh0VHJhY2soKTsKIAotICAgIHZvaWQg
bG9hZChjb25zdCBLVVJMJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotICAgIGJvb2wgc3Vw
cG9ydHNUeXBlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2NoZWR1bGVMb2FkKGNvbnN0IEtV
UkwmKTsKKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpOwogCiBwcml2YXRlOgogICAg
IC8vIFRleHRUcmFja0xvYWRlckNsaWVudApAQCAtNjQsMTAgKzY1LDE0IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCB2b2lkIGN1ZUxvYWRpbmdTdGFydGVkKFRleHRUcmFja0xvYWRlciopOwogICAg
IHZpcnR1YWwgdm9pZCBjdWVMb2FkaW5nQ29tcGxldGVkKFRleHRUcmFja0xvYWRlciosIGJvb2wg
bG9hZGluZ0ZhaWxlZCk7CiAKLSAgICBMb2FkYWJsZVRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQq
LCBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBib29sIGlzRGVmYXVsdCk7CisgICAg
TG9hZGFibGVUZXh0VHJhY2soSFRNTFRyYWNrRWxlbWVudCosIGNvbnN0IFN0cmluZyYga2luZCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgYm9vbCBpc0RlZmF1
bHQpOworCisgICAgdm9pZCBsb2FkVGltZXJGaXJlZChUaW1lcjxMb2FkYWJsZVRleHRUcmFjaz4q
KTsKIAorICAgIEhUTUxUcmFja0VsZW1lbnQqIG1fdHJhY2tFbGVtZW50OworICAgIFRpbWVyPExv
YWRhYmxlVGV4dFRyYWNrPiBtX2xvYWRUaW1lcjsKICAgICBPd25QdHI8VGV4dFRyYWNrTG9hZGVy
PiBtX2xvYWRlcjsKLSAgICBUZXh0VHJhY2tMb2FkaW5nQ2xpZW50KiBtX2xvYWRpbmdDbGllbnQ7
CisgICAgS1VSTCBtX3VybDsKICAgICBib29sIG1faXNEZWZhdWx0OwogfTsKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAJKHJldmlzaW9uIDk5
ODc2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw3ICs1NSw3IEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiB7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3Vlcyh0aGlzLCBtX2N1
ZXMuZ2V0KCkpOwotICAgIHNldENsaWVudCgwKTsKKyAgICBjbGVhckNsaWVudCgpOwogfQogCiBT
dHJpbmcgVGV4dFRyYWNrOjpraW5kKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2su
aAkocmV2aXNpb24gOTk4NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5UZXh0
VHJhY2tDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlTdGF0ZUNo
YW5nZWQoVGV4dFRyYWNrKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hh
bmdlZChUZXh0VHJhY2sqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQo
VGV4dFRyYWNrKikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRU
cmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRl
eHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPikgPSAwOwpAQCAtNzgsMTQgKzc3LDE0IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CiAgICAgdm9pZCBtb2RlQ2hhbmdlZCgpOwogCisgICAg
dmlydHVhbCB2b2lkIGNsZWFyQ2xpZW50KCkgeyBtX2NsaWVudCA9IDA7IH0KICAgICBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0gICAgdm9pZCBzZXRDbGll
bnQoVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KIAogICAg
IHZvaWQgYWRkQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgcmVtb3ZlQ3VlKFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBuZXdDdWVzTG9hZGVkKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRyYWNrQ3VlKj4mKTsKKyAgICB2b2lk
IG5ld0N1ZXNMb2FkZWQoKTsKKyAgICB2b2lkIGZldGNoTmV3ZXN0Q3VlcyhWZWN0b3I8VGV4dFRy
YWNrQ3VlKj4mKTsKIAogcHJvdGVjdGVkOgogICAgIFRleHRUcmFjayhUZXh0VHJhY2tDbGllbnQq
LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYg
bGFuZ3VhZ2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3Bw
CShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDggQEAgdm9pZCBUZXh0VHJhY2tDdWVM
aXN0OjphZGQoUGFzc1JlZlB0cjxUZQogCiB2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OmFkZChQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlLCBzaXplX3Qgc3RhcnQsIHNpemVfdCBlbmQpCiB7Ci0g
ICAgQVNTRVJUKHN0YXJ0ID49IDAgJiYgc3RhcnQgPD0gbV9saXN0LnNpemUoKSk7Ci0gICAgQVNT
RVJUKGVuZCA+PSAwICYmIGVuZCA8PSBtX2xpc3Quc2l6ZSgpKTsKKyAgICBBU1NFUlQoc3RhcnQg
PD0gbV9saXN0LnNpemUoKSk7CisgICAgQVNTRVJUKGVuZCA8PSBtX2xpc3Quc2l6ZSgpKTsKIAog
ICAgIC8vIE1haW50YWluIHRleHQgdHJhY2sgY3VlIG9yZGVyOgogICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RleHQtdHJhY2stY3VlLW9y
ZGVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3Qu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJh
Y2tMaXN0LmgiCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRyYWNr
RXZlbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1RleHRUcmFja0xpc3Q6OlRl
eHRUcmFja0xpc3QoSFRNTE1lZGlhRWxlbWVudCogb3duZXIsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fb3duZXIob3du
ZXIpCisgICAgLCBtX3BlbmRpbmdFdmVudFRpbWVyKHRoaXMsICZUZXh0VHJhY2tMaXN0Ojphc3lu
Y0V2ZW50VGltZXJGaXJlZCkKKyAgICAsIG1fZGlzcGF0Y2hpbmdFdmVudHMoMCkKK3sKKyAgICBB
U1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKK30KKworVGV4dFRyYWNrTGlzdDo6flRleHRU
cmFja0xpc3QoKQoreworfQorCit1bnNpZ25lZCBUZXh0VHJhY2tMaXN0OjpsZW5ndGgoKSBjb25z
dAoreworICAgIHJldHVybiBtX3RyYWNrcy5zaXplKCk7Cit9CisKK1RleHRUcmFjayogVGV4dFRy
YWNrTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCBtX3RyYWNr
cy5zaXplKCkpCisgICAgICAgIHJldHVybiBtX3RyYWNrc1tpbmRleF0uZ2V0KCk7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiB0cmFjaykKK3sKKyAgICBSZWZQdHI8VGV4dFRyYWNrPiB0cmFja1JlZiA9IHRyYWNrOwor
ICAgIG1fdHJhY2tzLmFwcGVuZCh0cmFja1JlZik7CisgICAgc2NoZWR1bGVBZGRUcmFja0V2ZW50
KHRyYWNrUmVmKTsKK30KKwordm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoUGFzc1JlZlB0cjxU
ZXh0VHJhY2s+IHRyYWNrKQoreworICAgIHNpemVfdCBpbmRleCA9IG1fdHJhY2tzLmZpbmQodHJh
Y2spOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
dHJhY2tzLnJlbW92ZShpbmRleCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNr
TGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JUZXh0VHJhY2tMaXN0OworfQorCit2b2lkIFRleHRUcmFja0xpc3Q6OnNjaGVk
dWxlQWRkVHJhY2tFdmVudChQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCit7CisgICAgLy8g
NC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKKyAgICAvLyA0Ljgu
MTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcworICAgIC8vIDQuOC4xMC4x
Mi40IFRleHQgdHJhY2sgQVBJCisgICAgLy8gLi4uIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUg
YW4gZXZlbnQgd2l0aCB0aGUgbmFtZSBhZGR0cmFjaywgdGhhdCBkb2VzIG5vdCAKKyAgICAvLyBi
dWJibGUgYW5kIGlzIG5vdCBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50
IGludGVyZmFjZSwgd2l0aCAKKyAgICAvLyB0aGUgdHJhY2sgYXR0cmlidXRlIGluaXRpYWxpemVk
IHRvIHRoZSB0ZXh0IHRyYWNrJ3MgVGV4dFRyYWNrIG9iamVjdCwgYXQgCisgICAgLy8gdGhlIG1l
ZGlhIGVsZW1lbnQncyB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSdzIFRleHRUcmFja0xpc3Qgb2JqZWN0
LgorCisgICAgUmVmUHRyPFRleHRUcmFjaz4gdHJhY2tSZWYgPSB0cmFjazsKKyAgICBUcmFja0V2
ZW50SW5pdCBpbml0aWFsaXplcjsKKyAgICBpbml0aWFsaXplci50cmFjayA9IHRyYWNrUmVmOwor
ICAgIGluaXRpYWxpemVyLmJ1YmJsZXMgPSBmYWxzZTsKKyAgICBpbml0aWFsaXplci5jYW5jZWxh
YmxlID0gZmFsc2U7CisKKyAgICBtX3BlbmRpbmdFdmVudHMuYXBwZW5kKFRyYWNrRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgaW5pdGlhbGl6ZXIpKTsKKyAgICBpZiAo
IW1fcGVuZGluZ0V2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wZW5kaW5nRXZlbnRU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVGV4dFRyYWNrTGlzdDo6YXN5bmNFdmVu
dFRpbWVyRmlyZWQoVGltZXI8VGV4dFRyYWNrTGlzdD4qKQoreworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID4gcGVuZGluZ0V2ZW50czsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAK
KyAgICArK21fZGlzcGF0Y2hpbmdFdmVudHM7CisgICAgbV9wZW5kaW5nRXZlbnRzLnN3YXAocGVu
ZGluZ0V2ZW50cyk7CisgICAgc2l6ZV90IGNvdW50ID0gcGVuZGluZ0V2ZW50cy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgICAg
ICBkaXNwYXRjaEV2ZW50KHBlbmRpbmdFdmVudHNbaW5kZXhdLnJlbGVhc2UoKSwgZWMpOworICAg
IC0tbV9kaXNwYXRjaGluZ0V2ZW50czsKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrTGlzdF9oCisjZGVmaW5lIFRleHRUcmFj
a0xpc3RfaAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiRXZlbnRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgVGV4dFRyYWNrOwor
Y2xhc3MgVGV4dFRyYWNrTGlzdDsKKworY2xhc3MgVGV4dFRyYWNrTGlzdCA6IHB1YmxpYyBSZWZD
b3VudGVkPFRleHRUcmFja0xpc3Q+LCBwdWJsaWMgRXZlbnRUYXJnZXQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja0xpc3Q+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiBvd25lciwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrTGlzdChvd25lciwgY29udGV4dCkpOworICAg
IH0KKyAgICB+VGV4dFRyYWNrTGlzdCgpOworCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7
CisgICAgVGV4dFRyYWNrKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKKyAgICB2b2lkIGFwcGVuZChQ
YXNzUmVmUHRyPFRleHRUcmFjaz4pOworICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8VGV4dFRy
YWNrPik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3Q7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJh
Y2tMaXN0Pjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrTGlzdD46OmRlcmVm
OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dDsgfQorCisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7CisKKyAgICB2b2lkIGNsZWFyT3duZXIoKSB7IG1f
b3duZXIgPSAwOyB9CisgICAgSFRNTE1lZGlhRWxlbWVudCogb3duZXIoKSB7IHJldHVybiBtX293
bmVyOyB9CisgICAgCisgICAgYm9vbCBpc0ZpcmluZ0V2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4g
bV9kaXNwYXRjaGluZ0V2ZW50czsgfQorCitwcml2YXRlOgorICAgIFRleHRUcmFja0xpc3QoSFRN
TE1lZGlhRWxlbWVudCosIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBkZXJlZigpOyB9CisgICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIHsgcmV0dXJuICZtX2V2ZW50VGFy
Z2V0RGF0YTsgfQorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdl
dERhdGEoKSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KKworICAgIHZvaWQgc2NoZWR1
bGVBZGRUcmFja0V2ZW50KFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7CisgICAgdm9pZCBhc3luY0V2
ZW50VGltZXJGaXJlZChUaW1lcjxUZXh0VHJhY2tMaXN0PiopOworCisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogbV9jb250ZXh0OworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fb3duZXI7CisK
KyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fcGVuZGluZ0V2ZW50czsKKyAgICBUaW1lcjxU
ZXh0VHJhY2tMaXN0PiBtX3BlbmRpbmdFdmVudFRpbWVyOworCisgICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOworICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IG1fdHJh
Y2tzOworICAgIAorICAgIGludCBtX2Rpc3BhdGNoaW5nRXZlbnRzOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICAgICAgRW5hYmxlZEF0UnVudGltZT13ZWJr
aXRWaWRlb1RyYWNrLAorICAgICAgICBIYXNJbmRleEdldHRlciwKKyAgICAgICAgRXZlbnRUYXJn
ZXQsCisgICAgICAgIEN1c3RvbUlzUmVhY2hhYmxlCisgICAgXSBUZXh0VHJhY2tMaXN0IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBU
ZXh0VHJhY2sgaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHRyYWNrOworCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZl
bnRFeGNlcHRpb24pOworICAgIH07CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxNCBA
QCB2b2lkIFRleHRUcmFja0xvYWRlcjo6Y3VlTG9hZFRpbWVyRmlyZWQoCiAgICAgICAgIG1fY2xp
ZW50LT5jdWVMb2FkaW5nQ29tcGxldGVkKHRoaXMsIG1fc3RhdGUgPT0gRmFpbGVkKTsKIH0KIAor
dm9pZCBUZXh0VHJhY2tMb2FkZXI6OmNhbmNlbExvYWQoKQoreworICAgIGlmIChtX2NhY2hlZEN1
ZURhdGEpIHsKKyAgICAgICAgbV9jYWNoZWRDdWVEYXRhLT5yZW1vdmVDbGllbnQodGhpcyk7Cisg
ICAgICAgIG1fY2FjaGVkQ3VlRGF0YSA9IDA7CisgICAgfQorfQorCiB2b2lkIFRleHRUcmFja0xv
YWRlcjo6cHJvY2Vzc05ld0N1ZURhdGEoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAg
IEFTU0VSVChtX2NhY2hlZEN1ZURhdGEgPT0gcmVzb3VyY2UpOwpAQCAtMTQyLDggKzE1MCw3IEBA
IHZvaWQgVGV4dFRyYWNrTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWMKICAgICBpZiAoIW1fY3Vl
TG9hZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fY3VlTG9hZFRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKICAgICAKLSAgICBtX2NhY2hlZEN1ZURhdGEtPnJlbW92ZUNsaWVudCh0aGlzKTsKLSAg
ICBtX2NhY2hlZEN1ZURhdGEgPSAwOworICAgIGNhbmNlbExvYWQoKTsKIH0KIAogYm9vbCBUZXh0
VHJhY2tMb2FkZXI6OmxvYWQoY29uc3QgS1VSTCYgdXJsKQpAQCAtMTUxLDEwICsxNTgsNyBAQCBi
b29sIFRleHRUcmFja0xvYWRlcjo6bG9hZChjb25zdCBLVVJMJiB1CiAgICAgaWYgKCFtX2NsaWVu
dC0+c2hvdWxkTG9hZEN1ZXModGhpcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAg
ICBpZiAobV9jYWNoZWRDdWVEYXRhKSB7Ci0gICAgICAgIG1fY2FjaGVkQ3VlRGF0YS0+cmVtb3Zl
Q2xpZW50KHRoaXMpOwotICAgICAgICBtX2NhY2hlZEN1ZURhdGEgPSAwOwotICAgIH0KKyAgICBj
YW5jZWxMb2FkKCk7CiAgICAgCiAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNEb2N1bWVudCgpKTsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1
bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGV4dFRyYWNrTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5oCShyZXZpc2lvbiA5OTg3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrTG9hZGVyKCk7CiAgICAgCiAgICAgYm9v
bCBsb2FkKGNvbnN0IEtVUkwmKTsKKyAgICB2b2lkIGNhbmNlbExvYWQoKTsKICAgICB2b2lkIGdl
dE5ld0N1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpOwogICAg
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJKHJldmlzaW9uIDk5
ODc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC02MTMsNiArNjEzLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUZXh0VHJhY2tDb25zdHJ1Y3RvciBU
ZXh0VHJhY2s7CiAgICAgICAgIGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRl
b1RyYWNrXSBUZXh0VHJhY2tDdWVDb25zdHJ1Y3RvciBUZXh0VHJhY2tDdWU7IC8vIFVzYWJsZSB3
aXRoIHRoZSBuZXcgb3BlcmF0b3IKICAgICAgICAgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1l
PXdlYmtpdFZpZGVvVHJhY2tdIFRleHRUcmFja0N1ZUxpc3RDb25zdHJ1Y3RvciBUZXh0VHJhY2tD
dWVMaXN0OworICAgICAgICBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9U
cmFja10gVGV4dFRyYWNrTGlzdENvbnN0cnVjdG9yIFRleHRUcmFja0xpc3Q7CiAgICAgICAgIGF0
dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrXSBUcmFja0V2ZW50Q29u
c3RydWN0b3IgVHJhY2tFdmVudDsKICNlbmRpZgogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTg3NikK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDExLTExLTEwICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBUZXh0VHJhY2tMaXN0IGFuZCB0aGUgdGV4dFRyYWNrcyBhdHRyaWJ1
dGUgb2YgSFRNTE1lZGlhRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzExMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFja2xpc3QtaXMtcmVhY2hhYmxlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2tsaXN0LWlzLXJlYWNoYWJs
ZS5odG1sOiBBZGRlZC4KKwogMjAxMS0xMS0xMCAgQW5kcmV3IFNjaGVya3VzICA8c2NoZXJrdXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZldyBtb3JlIHJlYmFzZWxpbmVzIGZvciBtZWRpYS92
aWRlby1mcmFtZS1hY2N1cmF0ZS1zZWVrLWV4cGVjdGVkLmh0bWwuCkluZGV4OiBMYXlvdXRUZXN0
cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWFkZC10cmFjay1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1hZGQtdHJhY2stZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACitUZXN0cyB0aGF0IHRoZSAn
YWRkdHJhY2snIGV2ZW50IGlzIGZpcmVkIHdoZW4gYSBUZXh0VHJhY2sgaXMgY3JlYXRlZC4KKwor
KiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIGZvciBhIDx0cmFjaz4gZWxlbWVudC4KK1JVTih0
cmFja0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpKQorUlVOKHZpZGVv
LmFwcGVuZENoaWxkKHRyYWNrRWxlbWVudCkpCitSVU4odHJhY2tFbGVtZW50LnNyYyA9ICdjYXB0
aW9ucy13ZWJ2dHQvdGMwMDQtd2VidnR0LWZpbGUudnR0JykKK0VYUEVDVEVEICh2aWRlby50ZXh0
VHJhY2tzLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzBdLnJlYWR5U3RhdGUg
PT0gJzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdb
b2JqZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdp
bmRvdy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAn
W29iamVjdCBUZXh0VHJhY2tdJykgT0sKKworKiogVGVzdCBhIFRleHRUcmFjayBjcmVhdGVkIHdp
dGggdmlkZW8uYWRkVHJhY2soKS4KK1JVTih0cmFja3MucHVzaCh2aWRlby5hZGRUcmFjaygnY2Fw
dGlvbnMnLCAnQ2FwdGlvbiBUcmFjaycsICdlbicpKSkKK0VYUEVDVEVEICh2aWRlby50ZXh0VHJh
Y2tzLmxlbmd0aCA9PSAnMicpIE9LCitFWFBFQ1RFRCAodHJhY2tzWzFdLnJlYWR5U3RhdGUgPT0g
JzAnKSBPSworRVZFTlQoYWRkdHJhY2spCitFWFBFQ1RFRCAoZXZlbnQudGFyZ2V0ID09ICdbb2Jq
ZWN0IFRleHRUcmFja0xpc3RdJykgT0sKK0VYUEVDVEVEIChldmVudCBpbnN0YW5jZW9mIHdpbmRv
dy5UcmFja0V2ZW50ID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChldmVudC50cmFjayA9PSAnW29i
amVjdCBUZXh0VHJhY2tdJykgT0sKK0VYUEVDVEVEICh0cmFja3NbMV0ucmVhZHlTdGF0ZSA9PSAn
MCcpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWFkZC10cmFjay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNr
L3RyYWNrLWFkZC10cmFjay5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEv
dHJhY2svdHJhY2stYWRkLXRyYWNrLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAt
ZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAv
PgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQgc3JjPS4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisKKyAgICAgICAgICAgIHZhciB0cmFja3MgPSBbXTsKKyAgICAgICAgICAgIHZhciB0cmFj
a0VsZW1lbnQ7CisgICAgICAgICAgICBmdW5jdGlvbiB0cmFja0FkZGVkKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudC50eXBlICsg
IikiKTsKKworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZXZlbnQudGFyZ2V0Iiwgdmlk
ZW8udGV4dFRyYWNrcyk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJldmVudCBpbnN0
YW5jZW9mIHdpbmRvdy5UcmFja0V2ZW50IiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJldmVudC50cmFjayIsIHRyYWNrc1t2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCAtIDFd
KTsKKworICAgICAgICAgICAgICAgIGlmICh2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCA9PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRlc3QgYSBUZXh0VHJh
Y2sgY3JlYXRlZCB3aXRoIHZpZGVvLmFkZFRyYWNrKCkuIik7CisgICAgICAgICAgICAgICAgICAg
IHJ1bigidHJhY2tzLnB1c2godmlkZW8uYWRkVHJhY2soJ2NhcHRpb25zJywgJ0NhcHRpb24gVHJh
Y2snLCAnZW4nKSkiKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50
ZXh0VHJhY2tzLmxlbmd0aCIsIDIpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InRyYWNrc1sxXS5yZWFkeVN0YXRlIiwgVGV4dFRyYWNrLk5PTkUpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2tzWzFdLnJl
YWR5U3RhdGUiLCBUZXh0VHJhY2suTk9ORSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVkaWFFbGVtZW50KCk7CisKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIioqIFRlc3QgYSBUZXh0VHJhY2sgY3JlYXRlZCBmb3IgYSAm
bHQ7dHJhY2smZ3Q7IGVsZW1lbnQuIik7CisgICAgICAgICAgICAgICAgcnVuKCJ0cmFja0VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cmFjaycpIik7CisgICAgICAgICAgICAgICAg
cnVuKCJ2aWRlby5hcHBlbmRDaGlsZCh0cmFja0VsZW1lbnQpIik7CisgICAgICAgICAgICAgICAg
dHJhY2tzLnB1c2godHJhY2tFbGVtZW50LnRyYWNrKTsKKworICAgICAgICAgICAgICAgIC8vIFJl
Z2lzdGVyIHRoZSAnYWRkdHJhY2snIGxpc3RlbmVyIGFmdGVyIGNyZWF0aW5nIHRoZSBlbGVtZW50
IHRvIG1ha2Ugc3VyZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBldmVudCBpcyBkaXNwYXRjaCBh
c3luY2hyb25vdXNseS4KKyAgICAgICAgICAgICAgICB2aWRlby50ZXh0VHJhY2tzLmFkZEV2ZW50
TGlzdGVuZXIoImFkZHRyYWNrIiwgdHJhY2tBZGRlZCk7CisKKyAgICAgICAgICAgICAgICBydW4o
InRyYWNrRWxlbWVudC5zcmMgPSAnY2FwdGlvbnMtd2VidnR0L3RjMDA0LXdlYnZ0dC1maWxlLnZ0
dCciKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVu
Z3RoIiwgMSk7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3NbMF0ucmVhZHlT
dGF0ZSIsIFRleHRUcmFjay5OT05FKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+
VGVzdHMgdGhhdCB0aGUgJ2FkZHRyYWNrJyBldmVudCBpcyBmaXJlZCB3aGVuIGEgVGV4dFRyYWNr
IGlzIGNyZWF0ZWQuPC9wPgorICAgICAgICA8dmlkZW8+CisgICAgICAgIDwvdmlkZW8+CisgICAg
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2tsaXN0
LWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2tsaXN0LWlzLXJlYWNoYWJsZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFja2xpc3QtaXMtcmVhY2hhYmxlLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorRW5zdXJlIHRoYXQgYSBUcmFj
a0xpc3Qgd29uJ3QgYmUgY29sbGVjdGVkIGlmIGl0IGhhcyBjdXN0b20gcHJvcGVydGllcy4KKwor
KiogQWRkIGEgY3VzdG9tIHByb3BlcnR5IHRvIGEgdHJhY2suCitFWFBFQ1RFRCAodmlkZW8udGV4
dFRyYWNrcy5sZW5ndGggPT0gJzEnKSBPSworUlVOKHZpZGVvLnRleHRUcmFja3MubXlQcm9wZXJ0
eSA9ICdjaGlja2VuIHNhbGFkIScpCitFWFBFQ1RFRCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGgg
PT0gJzEnKSBPSworRVhQRUNURUQgKHZpZGVvLnRleHRUcmFja3MubXlQcm9wZXJ0eSA9PSAnY2hp
Y2tlbiBzYWxhZCEnKSBPSworCisqKiBGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24uCitFWFBFQ1RF
RCAodmlkZW8udGV4dFRyYWNrcy5sZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQgKHZpZGVvLnRl
eHRUcmFja3MubXlQcm9wZXJ0eSA9PSAnY2hpY2tlbiBzYWxhZCEnKSBPSworCitFTkQgT0YgVEVT
VAorCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFja2xpc3QtaXMtcmVhY2hhYmxl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2tsaXN0LWlz
LXJlYWNoYWJsZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2sv
dHJhY2tsaXN0LWlzLXJlYWNoYWJsZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRw
LWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIg
Lz4KKworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorCisgICAgICAgICAgICBmdW5jdGlvbiBmb3JjZUdDKCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAod2luZG93LkdDQ29udHJvbGxlcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdDQ29udHJvbGxlci5jb2xsZWN0KCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICBmb3Ig
KHZhciBuZHggPSAwOyBuZHggPCA5OTAwMDsgbmR4KyspCisgICAgICAgICAgICAgICAgICAgIHZh
ciBzdHIgPSBuZXcgU3RyaW5nKCIxMjM0Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHN0YXJ0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaW5kTWVk
aWFFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqIEFkZCBhIGN1
c3RvbSBwcm9wZXJ0eSB0byBhIHRyYWNrLiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidmlkZW8udGV4dFRyYWNrcy5sZW5ndGgiLCAxKTsKKyAgICAgICAgICAgICAgICBydW4oInZp
ZGVvLnRleHRUcmFja3MubXlQcm9wZXJ0eSA9ICdjaGlja2VuIHNhbGFkISciKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLnRleHRUcmFja3MubGVuZ3RoIiwgMSk7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLm15UHJvcGVydHkiLCAi
Y2hpY2tlbiBzYWxhZCEiKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioq
IEZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBmb3JjZUdDKCk7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby50ZXh0VHJhY2tzLmxlbmd0aCIs
IDEpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8udGV4dFRyYWNrcy5teVBy
b3BlcnR5IiwgImNoaWNrZW4gc2FsYWQhIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4K
KyAgICAgICAgPHA+RW5zdXJlIHRoYXQgYSBUcmFja0xpc3Qgd29uJ3QgYmUgY29sbGVjdGVkIGlm
IGl0IGhhcyBjdXN0b20gcHJvcGVydGllcy48L3A+CisgICAgICAgIDx2aWRlbz4KKyAgICAgICAg
ICAgIDx0cmFjaz4KKyAgICAgICAgPC92aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="113251"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>